From 046822837b5d90501959f3c7c33cebd9149dd539 Mon Sep 17 00:00:00 2001
From: cristinapauna <cristina.pauna@enea.com>
Date: Fri, 25 Nov 2016 18:26:36 +0200
Subject: Add a virtual POD for ARM

Define the DHA, DEA-override and local_env file for
new POD arm-virtual1

JIRA: ARMBAND-123

Change-Id: I083cb198f30748aafdd5eca7138f876314ee0a00
Signed-off-by: cristinapauna <cristina.pauna@enea.com>
---
 labs/arm/virtual1/local_env                        |    3 +
 .../virtual_kvm/fuel/config/dea-pod-override.yaml  | 1100 ++++++++++++++++++++
 labs/arm/virtual_kvm/fuel/config/dha.yaml          |   68 ++
 3 files changed, 1171 insertions(+)
 create mode 100644 labs/arm/virtual1/local_env
 create mode 100755 labs/arm/virtual_kvm/fuel/config/dea-pod-override.yaml
 create mode 100755 labs/arm/virtual_kvm/fuel/config/dha.yaml

diff --git a/labs/arm/virtual1/local_env b/labs/arm/virtual1/local_env
new file mode 100644
index 0000000..5befecd
--- /dev/null
+++ b/labs/arm/virtual1/local_env
@@ -0,0 +1,3 @@
+export LIBVIRT_DEFAULT_URI=qemu+ssh://jenkins@10.0.9.5/system
+export DEFAULT_BRIDGE=admin8_br0,public8_br0
+export DEPLOY_TIMEOUT=360
diff --git a/labs/arm/virtual_kvm/fuel/config/dea-pod-override.yaml b/labs/arm/virtual_kvm/fuel/config/dea-pod-override.yaml
new file mode 100755
index 0000000..54db2e1
--- /dev/null
+++ b/labs/arm/virtual_kvm/fuel/config/dea-pod-override.yaml
@@ -0,0 +1,1100 @@
+dea-pod-override-config-metadata:
+  title: 'Deployment Environment Adapter POD override for Enea Armband virtual PODs'
+  version: '1.1'
+  created: Wed Nov 16 21:13:19 2016
+  comment: 'Created for Enea Armband Lab'
+  public_bridge: 'public8_br0'
+environment:
+  name: armband_opnfv_virt
+  net_segment_type: tun
+wanted_release: Mitaka on Ubuntu 14.04 (aarch64)
+nodes:
+- id: 1
+  interfaces: interfaces_1
+  role: controller
+  transformations: transformations_1
+- id: 2
+  interfaces: interfaces_1
+  role: controller
+  transformations: transformations_1
+- id: 3
+  interfaces: interfaces_1
+  role: controller
+  transformations: transformations_1
+- id: 4
+  interfaces: interfaces_1
+  role: compute
+  transformations: transformations_2
+- id: 5
+  interfaces: interfaces_1
+  role: compute
+  transformations: transformations_2
+interfaces_1:
+  eth0:
+  - management
+  - storage
+  - private
+  eth1:
+  - public
+  eth2:
+  - fuelweb_admin
+transformations_1:
+  transformations:
+  - action: add-br
+    name: br-fw-admin
+  - action: add-br
+    name: br-mgmt
+  - action: add-br
+    name: br-storage
+  - action: add-br
+    name: br-ex
+  - action: add-br
+    name: br-floating
+    provider: ovs
+  - action: add-patch
+    bridges:
+    - br-floating
+    - br-ex
+    mtu: 65000
+    provider: ovs
+  - action: add-br
+    name: br-mesh
+  - action: add-port
+    bridge: br-mgmt
+    name: eth0.2203
+  - action: add-port
+    bridge: br-storage
+    name: eth0.2204
+  - action: add-port
+    bridge: br-mesh
+    name: eth0.2205
+  - action: add-port
+    bridge: br-ex
+    name: eth1
+  - action: add-port
+    bridge: br-fw-admin
+    name: eth2
+transformations_2:
+  transformations:
+  - action: add-br
+    name: br-fw-admin
+  - action: add-br
+    name: br-mgmt
+  - action: add-br
+    name: br-storage
+  - action: add-br
+    name: br-mesh
+  - action: add-port
+    bridge: br-mgmt
+    name: eth0.2203
+  - action: add-port
+    bridge: br-storage
+    name: eth0.2204
+  - action: add-port
+    bridge: br-mesh
+    name: eth0.2205
+  - action: add-port
+    bridge: br-fw-admin
+    name: eth2
+fuel:
+  ADMIN_NETWORK:
+    dhcp_pool_end: 10.20.0.254
+    dhcp_pool_start: 10.20.0.3
+    ipaddress: 10.20.0.2
+    netmask: 255.255.255.0
+    ssh_network: 10.20.0.0/24
+  DNS_DOMAIN: domain.tld
+  DNS_SEARCH: domain.tld
+  DNS_UPSTREAM: 8.8.8.8
+  FUEL_ACCESS:
+    password: admin
+    user: admin
+  HOSTNAME: fuel
+  IFCFG_ETH1:
+    device: eth1
+    gateway: 10.0.9.254
+    ipaddress: 10.0.9.10
+    netmask: 255.255.255.0
+  NTP1: 0.pool.ntp.org
+  NTP2: 1.pool.ntp.org
+  NTP3: 2.pool.ntp.org
+network:
+  networking_parameters:
+    base_mac: fa:16:3e:00:00:00
+    configuration_template: null
+    dns_nameservers:
+    - 8.8.4.4
+    - 8.8.8.8
+    floating_name: admin_floating_net
+    floating_ranges:
+    - - 10.0.9.101
+      - 10.0.9.200
+    gre_id_range:
+    - 2
+    - 65535
+    internal_cidr: 192.168.111.0/24
+    internal_gateway: 192.168.111.1
+    internal_name: admin_internal_net
+    net_l23_provider: ovs
+    segmentation_type: tun
+    vlan_range:
+    - 1000
+    - 1030
+  networks:
+  - cidr: 10.0.9.0/24
+    gateway: 10.0.9.254
+    ip_ranges:
+    - - 10.0.9.40
+      - 10.0.9.100
+    meta:
+      cidr: 172.16.0.0/24
+      configurable: true
+      floating_range_var: floating_ranges
+      ip_range:
+      - 172.16.0.2
+      - 172.16.0.126
+      map_priority: 1
+      name: public
+      notation: ip_ranges
+      render_addr_mask: public
+      render_type: null
+      use_gateway: true
+      vips:
+      - haproxy
+      - vrouter
+      vlan_start: null
+    name: public
+    vlan_start: null
+  - cidr: 192.168.1.0/24
+    gateway: null
+    ip_ranges:
+    - - 192.168.1.1
+      - 192.168.1.254
+    meta:
+      cidr: 192.168.1.0/24
+      configurable: true
+      map_priority: 2
+      name: storage
+      notation: cidr
+      render_addr_mask: storage
+      render_type: cidr
+      use_gateway: false
+      vlan_start: 102
+    name: storage
+    vlan_start: 2204
+  - cidr: 192.168.0.0/24
+    gateway: null
+    ip_ranges:
+    - - 192.168.0.1
+      - 192.168.0.254
+    meta:
+      cidr: 192.168.0.0/24
+      configurable: true
+      map_priority: 2
+      name: management
+      notation: cidr
+      render_addr_mask: internal
+      render_type: cidr
+      use_gateway: false
+      vips:
+      - haproxy
+      - vrouter
+      vlan_start: 101
+    name: management
+    vlan_start: 2203
+  - cidr: 192.168.2.0/24
+    gateway: null
+    ip_ranges:
+    - - 192.168.2.1
+      - 192.168.2.254
+    meta:
+      cidr: 192.168.2.0/24
+      configurable: true
+      map_priority: 2
+      name: private
+      notation: cidr
+      render_addr_mask: null
+      render_type: cidr
+      seg_type: tun
+      use_gateway: false
+      vlan_start: 103
+    name: private
+    vlan_start: 2205
+  - cidr: 10.20.0.0/24
+    gateway: 10.20.0.2
+    ip_ranges:
+    - - 10.20.0.3
+      - 10.20.0.254
+    meta:
+      configurable: false
+      map_priority: 0
+      notation: ip_ranges
+      render_addr_mask: null
+      render_type: null
+      unmovable: true
+      use_gateway: true
+    name: fuelweb_admin
+    vlan_start: null
+settings:
+  editable:
+    access:
+      email:
+        description: Email address for Administrator
+        label: Email
+        regex:
+          error: Invalid email
+          source: ^\S+@\S+$
+        type: text
+        value: admin@localhost
+        weight: 40
+      metadata:
+        group: general
+        label: OpenStack Access
+        weight: 10
+      password:
+        description: Password for Administrator
+        label: Password
+        regex:
+          error: Empty password
+          source: \S
+        type: password
+        value: admin
+        weight: 20
+      tenant:
+        description: Tenant (project) name for Administrator
+        label: Tenant
+        regex:
+          error: Invalid tenant name
+          source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?!ironic$)(?![Gg]uest$)(?!.*
+            +.*$).+
+        type: text
+        value: admin
+        weight: 30
+      user:
+        description: Username for Administrator
+        label: Username
+        regex:
+          error: Invalid username
+          source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?!ironic$)(?![Gg]uest$)(?!.*
+            +.*$).+
+        type: text
+        value: admin
+        weight: 10
+    additional_components:
+      ceilometer:
+        description: If selected, Ceilometer and Aodh components will be installed
+        label: Install Ceilometer and Aodh
+        type: checkbox
+        value: true
+        weight: 60
+      heat:
+        description: ''
+        label: ''
+        type: hidden
+        value: true
+        weight: 50
+      ironic:
+        description: If selected, Ironic component will be installed
+        label: Install Ironic
+        restrictions:
+        - cluster:net_provider != 'neutron' or networking_parameters:segmentation_type != 'vlan': Ironic
+            requires Neutron with VLAN segmentation.
+        - settings:storage.images_ceph.value == true and settings:storage.objects_ceph.value == false: Ironic
+            requires Swift or RadosGW for Glance images.
+        type: checkbox
+        value: false
+        weight: 80
+      metadata:
+        group: openstack_services
+        label: Additional Components
+        weight: 10
+      mongo:
+        description: If selected, You can use external Mongo DB as ceilometer backend
+        label: Use external Mongo DB
+        restrictions:
+        - settings:additional_components.ceilometer.value == false: External Mongo
+            aims to be an external backend for Ceilometer. Without Ceilometer enabled,
+            External Mongo is useless and should not be installed.
+        type: checkbox
+        value: false
+        weight: 70
+      murano:
+        description: If selected, Murano component will be installed
+        label: Install Murano
+        type: checkbox
+        value: false
+        weight: 20
+      murano-cfapi:
+        description: If selected, Murano service broker will be installed
+        label: Install Murano service broker for Cloud Foundry
+        restrictions:
+        - condition: settings:additional_components.murano.value == false
+          message: Murano should be enabled
+        - action: hide
+          condition: not ('experimental' in version:feature_groups)
+        type: checkbox
+        value: false
+        weight: 30
+      sahara:
+        description: If selected, Sahara component will be installed
+        label: Install Sahara
+        type: checkbox
+        value: false
+        weight: 10
+    cgroups:
+      metadata:
+        always_editable: true
+        group: general
+        label: Cgroups conguration for services
+        restrictions:
+        - action: hide
+          condition: 'true'
+        weight: 90
+    common:
+      auth_key:
+        group: security
+        type: hidden
+        value: ''
+        weight: 70
+      auto_assign_floating_ip:
+        description: If selected, OpenStack will automatically assign a floating IP
+          to a new instance
+        group: network
+        label: Auto assign floating IP
+        restrictions:
+        - action: hide
+          condition: cluster:net_provider == 'neutron'
+        type: checkbox
+        value: false
+        weight: 40
+      debug:
+        description: Debug logging mode provides more information, but requires more
+          disk space.
+        group: logging
+        label: OpenStack debug logging
+        type: checkbox
+        value: false
+        weight: 20
+      libvirt_type:
+        group: compute
+        label: Hypervisor type
+        type: radio
+        value: qemu
+        values:
+        - data: kvm
+          description: Choose this type of hypervisor if you run OpenStack on hardware
+          label: KVM
+        - data: qemu
+          description: Choose this type of hypervisor if you run OpenStack on virtual
+            hosts.
+          label: QEMU
+        weight: 30
+      metadata:
+        label: Common
+        weight: 10
+      nova_quota:
+        description: Quotas are used to limit CPU and memory usage for tenants. Enabling
+          quotas will increase load on the Nova database.
+        group: compute
+        label: Nova quotas
+        type: checkbox
+        value: false
+        weight: 30
+      propagate_task_deploy:
+        type: hidden
+        value: false
+        weight: 12
+      puppet_debug:
+        description: Debug puppet logging mode provides more information, but requires
+          more disk space.
+        group: logging
+        label: Puppet debug logging
+        type: checkbox
+        value: true
+        weight: 20
+      resume_guests_state_on_host_boot:
+        description: Whether to resume previous guests state when the host reboots.
+          If enabled, this option causes guests assigned to the host to resume their
+          previous state. If the guest was running a restart will be attempted when
+          nova-compute starts. If the guest was not running previously, a restart
+          will not be attempted.
+        group: compute
+        label: Resume guests state on host boot
+        type: checkbox
+        value: true
+        weight: 50
+      task_deploy:
+        type: hidden
+        value: true
+        weight: 11
+      use_cow_images:
+        description: For most cases you will want qcow format. If it's disabled, raw
+          image format will be used to run VMs. OpenStack with raw format currently
+          does not support snapshotting.
+        group: storage
+        label: Use qcow format for images
+        type: checkbox
+        value: true
+        weight: 60
+      use_vcenter:
+        type: hidden
+        value: false
+        weight: 30
+    corosync:
+      group:
+        description: ''
+        label: Group
+        type: text
+        value: 226.94.1.1
+        weight: 10
+      metadata:
+        group: general
+        label: Corosync
+        restrictions:
+        - action: hide
+          condition: 'true'
+        weight: 50
+      port:
+        description: ''
+        label: Port
+        type: text
+        value: '12000'
+        weight: 20
+      verified:
+        description: Set True only if multicast is configured correctly on router.
+        label: Need to pass network verification.
+        type: checkbox
+        value: false
+        weight: 10
+    external_dns:
+      dns_list:
+        description: List of upstream DNS servers
+        label: DNS list
+        max: 3
+        regex:
+          error: Invalid IP address
+          source: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
+        type: text_list
+        value:
+        - 8.8.8.8
+        weight: 10
+      metadata:
+        group: network
+        label: Host OS DNS Servers
+        weight: 30
+    external_mongo:
+      hosts_ip:
+        description: IP Addresses of MongoDB. Use comma to split IPs
+        label: MongoDB hosts IP
+        regex:
+          error: Invalid hosts ip sequence
+          source: ^(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?),)*((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+        type: text
+        value: ''
+        weight: 30
+      metadata:
+        group: openstack_services
+        label: External MongoDB
+        restrictions:
+        - action: hide
+          condition: settings:additional_components.mongo.value == false
+          message: Ceilometer and MongoDB are not enabled on the Additional Components
+            section
+        weight: 30
+      mongo_db_name:
+        description: Mongo database name
+        label: Database name
+        regex:
+          error: Invalid database name
+          source: ^\w+$
+        type: text
+        value: ceilometer
+        weight: 30
+      mongo_password:
+        description: Mongo database password
+        label: Password
+        regex:
+          error: Password contains spaces
+          source: ^\S*$
+        type: password
+        value: ceilometer
+        weight: 30
+      mongo_replset:
+        description: Name for Mongo replication set
+        label: Replset
+        type: text
+        value: ''
+        weight: 30
+      mongo_user:
+        description: Mongo database username
+        label: Username
+        regex:
+          error: Empty username
+          source: ^\w+$
+        type: text
+        value: ceilometer
+        weight: 30
+    external_ntp:
+      metadata:
+        group: network
+        label: Host OS NTP Servers
+        weight: 40
+      ntp_list:
+        description: List of upstream NTP servers
+        label: NTP server list
+        regex:
+          error: Invalid NTP server
+          source: ^[a-zA-Z\d]+[-\.\da-zA-Z]*$
+        type: text_list
+        value:
+        - 0.pool.ntp.org
+        - 1.pool.ntp.org
+        - 2.pool.ntp.org
+        weight: 10
+    kernel_params:
+      kernel:
+        description: Default kernel parameters
+        label: Initial parameters
+        type: text
+        value: console=ttyAMA0,115200 console=ttyS0,115200 net.ifnames=1 biosdevname=0
+          rootdelay=90 nomodeset
+      metadata:
+        group: general
+        label: Kernel parameters
+        weight: 60
+    murano_settings:
+      metadata:
+        group: openstack_services
+        label: Murano Settings
+        restrictions:
+        - action: hide
+          condition: settings:additional_components.murano.value == false
+          message: Murano is not enabled on the Additional Components section
+        weight: 20
+      murano_glance_artifacts_plugin:
+        description: If selected glance artifact repository will be enabled
+        label: Enable glance artifact repository
+        type: checkbox
+        value: true
+        weight: 40
+      murano_repo_url:
+        description: ''
+        label: Murano Repository URL
+        type: text
+        value: http://storage.apps.openstack.org/
+        weight: 10
+    mysql_wsrep:
+      metadata:
+        group: openstack_services
+        label: Database configuration
+        weight: 15
+      wsrep_method:
+        description: This setting changes the wsrep_sst_method switch in the MySQL
+          Galera cluster configuration.
+        label: WSREP SST provider
+        type: radio
+        value: xtrabackup-v2
+        values:
+        - data: xtrabackup-v2
+          description: Use Percona xtrabackup v2 provider. This is broken on some
+            ARM64 platforms due to outdated MySQL/InnoDB code used by xtrabackup.
+          label: xtrabackup-v2
+        - data: rsync
+          description: Use rsync provider. Use if xtrabackup is broken on your platform.
+          label: rsync
+        - data: mysqldump
+          description: Use mysqldump provider (untested).
+          label: mysqldump
+        weight: 10
+    neutron_advanced_configuration:
+      metadata:
+        group: network
+        label: Neutron Advanced Configuration
+        restrictions:
+        - action: hide
+          condition: cluster:net_provider != 'neutron'
+        weight: 20
+      neutron_dvr:
+        description: Enable Distributed Virtual Routers in Neutron
+        label: Neutron DVR
+        restrictions:
+        - ? networking_parameters:segmentation_type != 'vlan' and settings:neutron_advanced_configuration.neutron_l2_pop.value
+            == false
+          : DVR requires L2 population to be enabled.
+        type: checkbox
+        value: false
+        weight: 20
+      neutron_l2_pop:
+        description: Enable L2 population mechanism in Neutron
+        label: Neutron L2 population
+        restrictions:
+        - action: hide
+          condition: networking_parameters:segmentation_type == 'vlan'
+        type: checkbox
+        value: false
+        weight: 10
+      neutron_l3_ha:
+        description: 'Enable High Availability features for Virtual Routers in Neutron
+
+          Requires at least 2 Controller nodes to function properly
+
+          '
+        label: Neutron L3 HA
+        restrictions:
+        - condition: settings:neutron_advanced_configuration.neutron_dvr.value ==
+            true
+          message: Neutron DVR must be disabled in order to use Neutron L3 HA
+        type: checkbox
+        value: false
+        weight: 30
+      neutron_qos:
+        description: Enable Neutron QoS advanced service plug-in
+        label: Neutron QoS
+        type: checkbox
+        value: false
+        weight: 40
+    operator_user:
+      authkeys:
+        description: Public SSH keys to include to operator user's authorized keys,
+          one per line.
+        label: Authorized SSH keys
+        type: textarea
+        value: ''
+        weight: 80
+      homedir:
+        description: Home directory for operator user
+        label: Home directory
+        regex:
+          error: Invalid path
+          source: ^/\S
+        type: text
+        value: /home/fueladmin
+        weight: 70
+      metadata:
+        group: general
+        label: Operating System Access
+        weight: 15
+      name:
+        description: Username for operator user
+        label: Username
+        regex:
+          error: Empty username
+          source: \S
+        type: text
+        value: fueladmin
+        weight: 50
+      password:
+        description: Password for operator user
+        label: Password
+        regex:
+          error: Empty password
+          source: \S
+        type: password
+        value: UdHm0fNfN1LWPPTZyMm5SaE3
+        weight: 60
+      sudo:
+        description: Sudoers configuration directives for operator user, one per line.
+        label: Sudoers configuration
+        type: textarea
+        value: 'ALL=(ALL) NOPASSWD: ALL'
+        weight: 90
+    provision:
+      metadata:
+        group: general
+        label: Provision
+        restrictions:
+        - action: hide
+          condition: 'false'
+        weight: 80
+      method:
+        type: hidden
+        value: image
+      packages:
+        label: Initial packages
+        type: textarea
+        value: 'acl
+
+          anacron
+
+          bash-completion
+
+          bridge-utils
+
+          bsdmainutils
+
+          build-essential
+
+          cloud-init
+
+          curl
+
+          daemonize
+
+          debconf-utils
+
+          gdisk
+
+          grub-efi-arm64
+
+          hpsa-dkms
+
+          hwloc
+
+          i40e-dkms
+
+          linux-firmware
+
+          linux-firmware-nonfree
+
+          linux-headers-generic-lts-xenial
+
+          linux-image-generic-lts-xenial
+
+          lvm2
+
+          mcollective
+
+          mdadm
+
+          multipath-tools
+
+          multipath-tools-boot
+
+          nailgun-agent
+
+          nailgun-mcagents
+
+          network-checker
+
+          ntp
+
+          openssh-client
+
+          openssh-server
+
+          puppet
+
+          python-amqp
+
+          ruby-augeas
+
+          ruby-ipaddress
+
+          ruby-json
+
+          ruby-netaddr
+
+          ruby-openstack
+
+          ruby-shadow
+
+          ruby-stomp
+
+          telnet
+
+          ubuntu-minimal
+
+          ubuntu-standard
+
+          uuid-runtime
+
+          vim
+
+          virt-what
+
+          vlan
+
+          '
+        weight: 10
+    public_network_assignment:
+      assign_to_all_nodes:
+        description: When disabled, public network will be assigned to controllers
+          only
+        label: Assign public network to all nodes
+        type: checkbox
+        value: false
+        weight: 10
+      metadata:
+        group: network
+        label: Public network assignment
+        restrictions:
+        - action: hide
+          condition: cluster:net_provider != 'neutron'
+        weight: 10
+    public_ssl:
+      cert_data:
+        description: Certificate and private key data, concatenated into a single
+          file
+        label: Certificate
+        restrictions:
+        - action: hide
+          condition: (settings:public_ssl.cert_source.value != 'user_uploaded') or
+            (settings:public_ssl.horizon.value == false and settings:public_ssl.services.value
+            == false)
+        type: file
+        value: ''
+        weight: 40
+      cert_source:
+        description: From where we'll get certificate and private key
+        label: Select source for certificate
+        restrictions:
+        - action: hide
+          condition: settings:public_ssl.horizon.value == false and settings:public_ssl.services.value
+            == false
+        type: radio
+        value: self_signed
+        values:
+        - data: self_signed
+          description: Generate private key and certificate that will be signed by
+            this key
+          label: Self-signed
+        - data: user_uploaded
+          description: Use pre-generated key and certificate
+          label: I have my own keypair with certificate
+        weight: 30
+      horizon:
+        description: Secure access to Horizon enabling HTTPS instead of HTTP
+        label: HTTPS for Horizon
+        restrictions:
+        - settings:public_ssl.services.value == false: TLS for OpenStack public endpoints
+            should be enabled
+        type: checkbox
+        value: false
+        weight: 20
+      hostname:
+        description: Your DNS entries should point to this name. Self-signed certificates
+          also will use this hostname
+        label: DNS hostname for public TLS endpoints
+        restrictions:
+        - action: hide
+          condition: settings:public_ssl.horizon.value == false and settings:public_ssl.services.value
+            == false
+        type: text
+        value: public.fuel.local
+        weight: 50
+      metadata:
+        group: security
+        label: Public TLS
+        weight: 110
+      services:
+        description: Enable TLS termination on HAProxy for OpenStack services
+        label: TLS for OpenStack public endpoints
+        type: checkbox
+        value: false
+        weight: 10
+    repo_setup:
+      metadata:
+        always_editable: true
+        group: general
+        label: Repositories
+        weight: 50
+      repos:
+        description: 'Please note: the first repository will be considered the operating
+          system mirror that will be used during node provisioning.
+
+          To create a local repository mirror on the Fuel master node, please follow
+          the instructions provided by running "fuel-createmirror --help" on the Fuel
+          master node.
+
+          Please make sure your Fuel master node has Internet access to the repository
+          before attempting to create a mirror.
+
+          For more details, please refer to the documentation (https://docs.mirantis.com/openstack/fuel/fuel-9.0/operations.html#external-ubuntu-ops).
+
+          '
+        extra_priority: null
+        type: custom_repo_configuration
+        value:
+        - name: ubuntu
+          priority: null
+          section: main
+          suite: trusty
+          type: deb
+          uri: http://10.20.0.2:8080/mirrors/ubuntu/
+        - name: mos
+          priority: 1050
+          section: main restricted
+          suite: mos9.0
+          type: deb
+          uri: http://10.20.0.2:8080/mitaka-9.0/ubuntu/x86_64
+        - name: Auxiliary
+          priority: 1150
+          section: main restricted
+          suite: auxiliary
+          type: deb
+          uri: http://10.20.0.2:8080/mitaka-9.0/ubuntu/auxiliary
+    service_user:
+      homedir:
+        type: hidden
+        value: /var/lib/fuel
+      metadata:
+        group: general
+        label: Service user account
+        restrictions:
+        - action: hide
+          condition: 'true'
+        weight: 10
+      name:
+        type: hidden
+        value: fuel
+      password:
+        type: hidden
+        value: kilAO7NY7dgMjTrDg9kdIo9b
+      root_password:
+        type: hidden
+        value: r00tme
+      sudo:
+        type: hidden
+        value: 'ALL=(ALL) NOPASSWD: ALL'
+    storage:
+      admin_key:
+        type: hidden
+        value: AQDIVCxYAAAAABAA/kSG1ZawmmdDihU/IMdvzg==
+      bootstrap_osd_key:
+        type: hidden
+        value: AQDIVCxYAAAAABAAuq5YfYCWlrlwdRWPOHIbTw==
+      ephemeral_ceph:
+        description: Configures Nova to store ephemeral volumes in RBD. This works
+          best if Ceph is enabled for volumes and images, too. Enables live migration
+          of all types of Ceph backed VMs (without this option, live migration will
+          only work with VMs launched from Cinder volumes).
+        label: Ceph RBD for ephemeral volumes (Nova)
+        type: checkbox
+        value: false
+        weight: 75
+      fsid:
+        type: hidden
+        value: 858a6b38-bcf6-4cea-80a5-2a840c9ba69b
+      images_ceph:
+        description: Configures Glance to use the Ceph RBD backend to store images.
+          If enabled, this option will prevent Swift from installing.
+        label: Ceph RBD for images (Glance)
+        restrictions:
+        - settings:storage.images_vcenter.value == true: Only one Glance backend could
+            be selected.
+        type: checkbox
+        value: false
+        weight: 30
+      images_vcenter:
+        description: Configures Glance to use the vCenter/ESXi backend to store images.
+          If enabled, this option will prevent Swift from installing.
+        label: VMware vCenter/ESXi datastore for images (Glance)
+        restrictions:
+        - action: hide
+          condition: settings:common.use_vcenter.value != true
+        - condition: settings:storage.images_ceph.value == true
+          message: Only one Glance backend could be selected.
+        type: checkbox
+        value: false
+        weight: 35
+      metadata:
+        group: storage
+        label: Storage Backends
+        weight: 60
+      mon_key:
+        type: hidden
+        value: AQDIVCxYAAAAABAA305QoYZkPKtKtoH25etW5w==
+      objects_ceph:
+        description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
+          Swift API Interfaces. If enabled, this option will prevent Swift from installing.
+        label: Ceph RadosGW for objects (Swift API)
+        type: checkbox
+        value: false
+        weight: 80
+      osd_pool_size:
+        description: Configures the default number of object replicas in Ceph. This
+          number must be equal to or lower than the number of deployed 'Ceph OSD'
+          nodes.
+        label: Ceph object replication factor
+        regex:
+          error: Invalid number
+          source: ^[1-9]\d*$
+        type: text
+        value: '3'
+        weight: 85
+      radosgw_key:
+        type: hidden
+        value: AQDIVCxYAAAAABAAosGXOhXGTKuPXtyhzBa4sw==
+      volumes_block_device:
+        description: High performance block device storage. It is recommended to have
+          at least one Cinder Block Device
+        label: Cinder Block device driver
+        restrictions:
+        - settings:storage.volumes_ceph.value == true
+        type: checkbox
+        value: false
+        weight: 15
+      volumes_ceph:
+        description: Configures Cinder to store volumes in Ceph RBD images.
+        label: Ceph RBD for volumes (Cinder)
+        restrictions:
+        - settings:storage.volumes_lvm.value == true or settings:storage.volumes_block_device.value
+          == true
+        type: checkbox
+        value: true
+        weight: 20
+      volumes_lvm:
+        description: It is recommended to have at least one Cinder node.
+        label: Cinder LVM over iSCSI for volumes
+        restrictions:
+        - settings:storage.volumes_ceph.value == true
+        type: checkbox
+        value: false
+        weight: 10
+    syslog:
+      metadata:
+        enabled: false
+        group: logging
+        label: Syslog
+        toggleable: true
+        weight: 50
+      syslog_port:
+        description: Remote syslog port
+        label: Port
+        regex:
+          error: Invalid syslog port
+          source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
+        type: text
+        value: '514'
+        weight: 20
+      syslog_server:
+        description: Remote syslog hostname
+        label: Hostname
+        regex:
+          error: Invalid hostname
+          source: ^[a-zA-Z\d]+[-\.\da-zA-Z]*$
+        type: text
+        value: ''
+        weight: 10
+      syslog_transport:
+        label: Syslog transport protocol
+        type: radio
+        value: tcp
+        values:
+        - data: udp
+          description: ''
+          label: UDP
+        - data: tcp
+          description: ''
+          label: TCP
+        weight: 30
+    workloads_collector:
+      enabled:
+        type: hidden
+        value: true
+      metadata:
+        group: general
+        label: Workloads Collector User
+        restrictions:
+        - action: hide
+          condition: 'true'
+        weight: 10
+      password:
+        type: password
+        value: 9KRjRN7x9TahWmtLh4cSxTrD
+      tenant:
+        type: text
+        value: services
+      user:
+        type: text
+        value: fuel_stats_user
diff --git a/labs/arm/virtual_kvm/fuel/config/dha.yaml b/labs/arm/virtual_kvm/fuel/config/dha.yaml
new file mode 100755
index 0000000..2f5659b
--- /dev/null
+++ b/labs/arm/virtual_kvm/fuel/config/dha.yaml
@@ -0,0 +1,68 @@
+dha-pod-config-metadata:
+  title: Deployment Hardware Adapter (DHA) for ARM Lab, virtual-kvm environment
+  version: 1.1
+  created: Wed Nov 16 21:13:19 2016
+  comment: Config for Enea Armband Lab, virtual-kvm environment
+
+# Adapter to use for this definition
+adapter: libvirt
+
+# Node list.
+# Mandatory property is id, all other properties are adapter specific.
+
+nodes:
+- id: 1
+  libvirtName: controller1
+  libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
+- id: 2
+  libvirtName: controller2
+  libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
+- id: 3
+  libvirtName: controller3
+  libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
+- id: 4
+  libvirtName: compute1
+  libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
+- id: 5
+  libvirtName: compute2
+  libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
+- id: 6
+  libvirtName: fuel-master
+  libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
+  libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
+  isFuel: yes
+  username: root
+  password: r00tme
+
+virtNetConfDir: templates/arm/virtual_environment/networks
+
+disks:
+  fuel: 100G
+  controller: 100G
+  compute: 100G
+
+# Here the infrastructure VMs can be defined.
+# The entries are not mandatory! If it is left empty
+# the default defined in deploy/templates will
+# be used.
+define_vms:
+  controller:
+    vcpu:
+      value: 8
+    memory:
+      attribute_equlas:
+        unit: KiB
+      value: 12582912
+    currentMemory:
+      attribute_equlas:
+        unit: KiB
+      value: 12582912
+  compute:
+    memory:
+      attribute_equlas:
+        unit: KiB
+      value: 6291456
+    currentMemory:
+      attribute_equlas:
+        unit: KiB
+      value: 6291456
-- 
cgit