Merge "Add copyright header to patch files"
[armband.git] / patches / opnfv-fuel / upstream-backports / 0004-Fuel-rework-for-multiple-libvirt.patch
1 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2 : Copyright (c) 2017 Enea AB and others.
3 :
4 : All rights reserved. This program and the accompanying materials
5 : are made available under the terms of the Apache License, Version 2.0
6 : which accompanies this distribution, and is available at
7 : http://www.apache.org/licenses/LICENSE-2.0
8 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
9 From: cristinapauna <cristina.pauna@enea.com>
10 Date: Fri, 25 Nov 2016 16:38:46 +0200
11 Subject: [PATCH] Fuel rework for multiple libvirt
12
13 The current fuel arhitecture assumes that all the VMs
14 (Jenkins slave, Fuel master and Target nodes) are all on
15 the same server. There is code that allows the Fuel master
16 to be on a different machine, but nothing for the Target nodes.
17 In Enea-Arm lab we have a different server for each.
18
19 This commit also adds specific templates for a virtual pod in
20 the Enea-Arm lab.
21
22 Therefore, the following changes are done:
23 - The default libvirt URI is the machine on which the Target nodes are
24 - The parameter libvirtUri was added in the dha.yaml file for fuel master
25 - All virsh calls have "-c" option to explicitly specify the uri; this parameter
26   is set only when libvirtUri is explicitly set in the yaml file
27 - The scenarios dha override now point to the arm template files
28 - The network templates are not needed for ARM, as the network infra is provided
29   by the server on which the Target node VMs reside; the folder is added here
30   just for consistency
31 - The target nodes are created with virsh rather than quemu when the nodes are
32   not on the same machine as Jenkins slave (similar logic to what is done for
33   remote Fuel master)
34
35 Initially only ha scenarios were successfully deployed on virtual pods
36 The default configuration is for ha scenarios and those have 5 target nodes
37 while on the noha scenarios there are 4. The noha scenarios failed because
38 it was trying to parse one extra node.
39
40 The dea and dha files need to be modified for each noha scenario so that the
41 nodes are properly configured.
42
43 Signed-off-by: cristinapauna <cristina.pauna@enea.com>
44 ---
45  deploy/dha_adapters/hardware_adapter.py            |  5 ++
46  deploy/dha_adapters/libvirt_adapter.py             | 42 ++++-----
47  deploy/environments/execution_environment.py       | 19 +++--
48  deploy/environments/libvirt_environment.py         | 59 ++++++++++++-
49  deploy/environments/virtual_fuel.py                |  8 +-
50  deploy/install_fuel_master.py                      |  2 +-
51  deploy/scenario/ha_heat_ceilometer_scenario.yaml   | 13 +--
52  .../ha_nfv-kvm_heat_ceilometer_scenario.yaml       | 13 +--
53  .../ha_nfv-ovs_heat_ceilometer_scenario.yaml       | 13 +--
54  deploy/scenario/ha_odl-bgpvpn_scenario.yaml        | 13 +--
55  .../ha_odl-l2_heat_ceilometer_scenario.yaml        | 13 +--
56  .../ha_odl-l2_sfc_heat_ceilometer_scenario.yaml    | 13 +--
57  .../ha_odl-l3_heat_ceilometer_scenario.yaml        | 13 +--
58  ...ha_onos_nofeature_heat_ceilometer_scenario.yaml | 13 +--
59  .../ha_onos_sfc_heat_ceilometer_scenario.yaml      | 13 +--
60  .../scenario/ha_vlan_heat_ceilometer_scenario.yaml | 13 +--
61  .../scenario/no-ha_heat_ceilometer_scenario.yaml   | 25 ++++++
62  .../no-ha_nfv-kvm_heat_ceilometer_scenario.yaml    | 25 ++++++
63  ...a_nfv-kvm_nfv-ovs_heat_ceilometer_scenario.yaml | 25 ++++++
64  .../no-ha_nfv-ovs_heat_ceilometer_scenario.yaml    | 26 +++++-
65  deploy/scenario/no-ha_odl-bgpvpn_scenario.yaml     | 25 ++++++
66  .../no-ha_odl-l2_heat_ceilometer_scenario.yaml     | 25 ++++++
67  .../no-ha_odl-l2_sfc_heat_ceilometer_scenario.yaml | 25 ++++++
68  .../no-ha_odl-l3_heat_ceilometer_scenario.yaml     | 25 ++++++
69  ...ha_onos_nofeature_heat_ceilometer_scenario.yaml | 26 ++++++
70  .../no-ha_onos_sfc_heat_ceilometer_scenario.yaml   | 25 ++++++
71  .../no-ha_vlan_heat_ceilometer_scenario.yaml       | 25 ++++++
72  .../arm/virtual_environment/networks/.gitkeep      |  0
73  .../arm/virtual_environment/vms/compute.xml        | 57 +++++++++++++
74  .../arm/virtual_environment/vms/controller.xml     | 57 +++++++++++++
75  .../templates/arm/virtual_environment/vms/fuel.xml | 99 ++++++++++++++++++++++
76  31 files changed, 658 insertions(+), 97 deletions(-)
77  create mode 100644 deploy/templates/arm/virtual_environment/networks/.gitkeep
78  create mode 100644 deploy/templates/arm/virtual_environment/vms/compute.xml
79  create mode 100644 deploy/templates/arm/virtual_environment/vms/controller.xml
80  create mode 100644 deploy/templates/arm/virtual_environment/vms/fuel.xml
81
82 diff --git a/deploy/dha_adapters/hardware_adapter.py b/deploy/dha_adapters/hardware_adapter.py
83 index aa59581..cf3d77a 100644
84 --- a/deploy/dha_adapters/hardware_adapter.py
85 +++ b/deploy/dha_adapters/hardware_adapter.py
86 @@ -63,3 +63,8 @@ class HardwareAdapter(object):
87          vm_definition = self.dha_struct.get('define_vms')
88          if vm_definition:
89              return vm_definition.get(role)
90 +    def get_node_uri(self, node_id):
91 +        vm_libvirt_uri = self.get_node_property(node_id, 'libvirtUri')
92 +        if vm_libvirt_uri:
93 +            return '-c %s' % vm_libvirt_uri
94 +        return ''
95 diff --git a/deploy/dha_adapters/libvirt_adapter.py b/deploy/dha_adapters/libvirt_adapter.py
96 index a00f091..34535d1 100644
97 --- a/deploy/dha_adapters/libvirt_adapter.py
98 +++ b/deploy/dha_adapters/libvirt_adapter.py
99 @@ -43,21 +43,21 @@ class LibvirtAdapter(HardwareAdapter):
100      def node_power_off(self, node_id):
101          vm_name = self.get_node_property(node_id, 'libvirtName')
102          log('Power OFF Node %s' % vm_name)
103 -        state = exec_cmd('virsh domstate %s' % vm_name)
104 +        state = exec_cmd('virsh %s domstate %s' % (self.get_node_uri(node_id), vm_name))
105          if state == 'running':
106 -            exec_cmd('virsh destroy %s' % vm_name, False)
107 +            exec_cmd('virsh %s destroy %s' % (self.get_node_uri(node_id), vm_name), False)
108  
109      def node_power_on(self, node_id):
110          vm_name = self.get_node_property(node_id, 'libvirtName')
111          log('Power ON Node %s' % vm_name)
112 -        state = exec_cmd('virsh domstate %s' % vm_name)
113 +        state = exec_cmd('virsh %s domstate %s' % (self.get_node_uri(node_id), vm_name))
114          if state == 'shut off':
115 -            exec_cmd('virsh start %s' % vm_name)
116 +            exec_cmd('virsh %s start %s' % (self.get_node_uri(node_id), vm_name))
117  
118      def node_reset(self, node_id):
119          vm_name = self.get_node_property(node_id, 'libvirtName')
120          log('Reset Node %s' % vm_name)
121 -        exec_cmd('virsh reset %s' % vm_name)
122 +        exec_cmd('virsh %s reset %s' % (self.get_node_uri(node_id), vm_name))
123  
124      def translate(self, boot_order_list):
125          translated = []
126 @@ -73,7 +73,7 @@ class LibvirtAdapter(HardwareAdapter):
127          vm_name = self.get_node_property(node_id, 'libvirtName')
128          temp_dir = tempfile.mkdtemp()
129          log('Set boot order %s on Node %s' % (boot_order_list, vm_name))
130 -        resp = exec_cmd('virsh dumpxml %s' % vm_name)
131 +        resp = exec_cmd('virsh %s dumpxml %s' % (self.get_node_uri(node_id), vm_name))
132          xml_dump = etree.fromstring(resp, self.parser)
133          os = xml_dump.xpath('/domain/os')
134          for o in os:
135 @@ -92,12 +92,12 @@ class LibvirtAdapter(HardwareAdapter):
136          xml_file = temp_dir + '/%s.xml' % vm_name
137          with open(xml_file, 'w') as f:
138              tree.write(f, pretty_print=True, xml_declaration=True)
139 -        exec_cmd('virsh define %s' % xml_file)
140 +        exec_cmd('virsh %s define %s' % (self.get_node_uri(node_id), xml_file))
141          delete(temp_dir)
142  
143      def node_zero_mbr(self, node_id):
144          vm_name = self.get_node_property(node_id, 'libvirtName')
145 -        resp = exec_cmd('virsh dumpxml %s' % vm_name)
146 +        resp = exec_cmd('virsh %s dumpxml %s' % (self.get_node_uri(node_id), vm_name))
147          xml_dump = etree.fromstring(resp)
148          disks = xml_dump.xpath('/domain/devices/disk')
149          for disk in disks:
150 @@ -114,20 +114,20 @@ class LibvirtAdapter(HardwareAdapter):
151  
152      def node_eject_iso(self, node_id):
153          vm_name = self.get_node_property(node_id, 'libvirtName')
154 -        device = self.get_name_of_device(vm_name, 'cdrom')
155 -        exec_cmd('virsh change-media %s --eject %s --config --live'
156 -                 % (vm_name, device), False)
157 +        device = self.get_name_of_device(vm_name, 'cdrom', node_id)
158 +        exec_cmd('virsh %s change-media %s --eject %s --config --live'
159 +                 % (self.get_node_uri(node_id), vm_name, device), False)
160  
161      def node_insert_iso(self, node_id, iso_file):
162          vm_name = self.get_node_property(node_id, 'libvirtName')
163 -        device = self.get_name_of_device(vm_name, 'cdrom')
164 -        exec_cmd('virsh change-media %s --insert %s %s'
165 -                 % (vm_name, device, iso_file))
166 +        device = self.get_name_of_device(vm_name, 'cdrom', node_id)
167 +        exec_cmd('virsh %s change-media %s --insert %s %s'
168 +                 % (self.get_node_uri(node_id), vm_name, device, iso_file))
169  
170      def get_node_pxe_mac(self, node_id):
171          mac_list = []
172          vm_name = self.get_node_property(node_id, 'libvirtName')
173 -        resp = exec_cmd('virsh dumpxml %s' % vm_name)
174 +        resp = exec_cmd('virsh %s dumpxml %s' % (self.get_node_uri(node_id), vm_name))
175          xml_dump = etree.fromstring(resp)
176          interfaces = xml_dump.xpath('/domain/devices/interface')
177          for interface in interfaces:
178 @@ -136,8 +136,8 @@ class LibvirtAdapter(HardwareAdapter):
179                  mac_list.append(mac.get('address').lower())
180          return mac_list
181  
182 -    def get_name_of_device(self, vm_name, device_type):
183 -        resp = exec_cmd('virsh dumpxml %s' % vm_name)
184 +    def get_name_of_device(self, vm_name, device_type, node_id):
185 +        resp = exec_cmd('virsh %s dumpxml %s' % (self.get_node_uri(node_id), vm_name))
186          xml_dump = etree.fromstring(resp)
187          disks = xml_dump.xpath('/domain/devices/disk')
188          for disk in disks:
189 @@ -151,7 +151,7 @@ class LibvirtAdapter(HardwareAdapter):
190      def get_virt_net_conf_dir(self):
191          return self.dha_struct['virtNetConfDir']
192  
193 -    def upload_iso(self, iso_file):
194 +    def upload_iso(self, node_id, iso_file):
195          size = os.path.getsize(iso_file)
196          vol_name = os.path.basename(iso_file)
197          vol_xml = VOL_XML_TEMPLATE.format(name=vol_name, unit='bytes',
198 @@ -162,10 +162,10 @@ class LibvirtAdapter(HardwareAdapter):
199  
200          log(vol_xml)
201          pool = DEFAULT_POOL # FIXME
202 -        exec_cmd('virsh vol-create --pool %s %s' % (pool, fname))
203 -        vol_path = exec_cmd('virsh vol-path --pool %s %s' % (pool, vol_name))
204 +        exec_cmd('virsh %s vol-create --pool %s %s' % (self.get_node_uri(node_id), pool, fname))
205 +        vol_path = exec_cmd('virsh %s vol-path --pool %s %s' % (self.get_node_uri(node_id), pool, vol_name))
206  
207 -        exec_cmd('virsh vol-upload %s %s' % (vol_path, iso_file),
208 +        exec_cmd('virsh %s vol-upload %s %s' % (self.get_node_uri(node_id), vol_path, iso_file),
209                   attempts=5, delay=10, verbose=True)
210  
211          delete(fname)
212 diff --git a/deploy/environments/execution_environment.py b/deploy/environments/execution_environment.py
213 index 7a0b474..db25229 100644
214 --- a/deploy/environments/execution_environment.py
215 +++ b/deploy/environments/execution_environment.py
216 @@ -29,12 +29,12 @@ class ExecutionEnvironment(object):
217  
218      def delete_vm(self, node_id):
219          vm_name = self.dha.get_node_property(node_id, 'libvirtName')
220 -        r, c = exec_cmd('virsh dumpxml %s' % vm_name, False)
221 +        r, c = exec_cmd('virsh %s dumpxml %s' % (self.dha.get_node_uri(node_id), vm_name), False)
222          if c:
223              return
224 -        self.undefine_vm_delete_disk(r, vm_name)
225 +        self.undefine_vm_delete_disk(r, vm_name, node_id)
226  
227 -    def undefine_vm_delete_disk(self, printout, vm_name):
228 +    def undefine_vm_delete_disk(self, printout, vm_name, node_id):
229          disk_files = []
230          xml_dump = etree.fromstring(printout, self.parser)
231          disks = xml_dump.xpath('/domain/devices/disk')
232 @@ -45,8 +45,13 @@ class ExecutionEnvironment(object):
233                  if source_file:
234                      disk_files.append(source_file)
235          log('Deleting VM %s with disks %s' % (vm_name, disk_files))
236 -        exec_cmd('virsh destroy %s' % vm_name, False)
237 -        exec_cmd('virsh undefine --managed-save --remove-all-storage %s' % vm_name, False)
238 +        exec_cmd('virsh %s destroy %s' % (self.dha.get_node_uri(node_id), vm_name), False)
239 +        r, c = exec_cmd('virsh %s undefine --managed-save --remove-all-storage %s' %
240 +                        (self.dha.get_node_uri(node_id), vm_name), False)
241 +        if c:
242 +            exec_cmd('virsh %s undefine --managed-save --remove-all-storage --nvram %s' %
243 +                     (self.dha.get_node_uri(node_id), vm_name), False)
244 +
245          for file in disk_files:
246              delete(file)
247  
248 @@ -75,7 +80,7 @@ class ExecutionEnvironment(object):
249                  self.overwrite_xml(xml_element, value)
250  
251      def define_vm(self, vm_name, temp_vm_file, disk_path,
252 -                  vm_definition_overwrite):
253 +                  vm_definition_overwrite, node_id):
254          log('Creating VM %s with disks %s' % (vm_name, disk_path))
255          with open(temp_vm_file) as f:
256              vm_xml = etree.parse(f)
257 @@ -99,4 +104,4 @@ class ExecutionEnvironment(object):
258                  disk.append(source)
259          with open(temp_vm_file, 'w') as f:
260              vm_xml.write(f, pretty_print=True, xml_declaration=True)
261 -        exec_cmd('virsh define %s' % temp_vm_file)
262 +        exec_cmd('virsh %s define %s' % (self.dha.get_node_uri(node_id), temp_vm_file))
263 diff --git a/deploy/environments/libvirt_environment.py b/deploy/environments/libvirt_environment.py
264 index 07a47fd..08d669b 100644
265 --- a/deploy/environments/libvirt_environment.py
266 +++ b/deploy/environments/libvirt_environment.py
267 @@ -12,6 +12,9 @@ from lxml import etree
268  import glob
269  from execution_environment import ExecutionEnvironment
270  import tempfile
271 +import os
272 +import re
273 +import time
274  
275  from common import (
276      exec_cmd,
277 @@ -21,6 +24,25 @@ from common import (
278      delete,
279  )
280  
281 +VOL_XML_TEMPLATE = '''<volume type='file'>
282 +  <name>{name}</name>
283 +  <capacity unit='{unit}'>{size!s}</capacity>
284 +  <target>
285 +    <format type='{format_type}'/>
286 +  </target>
287 +</volume>'''
288 +
289 +DEFAULT_POOL = 'jenkins'
290 +
291 +def get_size_and_unit(s):
292 +    p = re.compile('^(\d+)\s*(\D+)')
293 +    m = p.match(s)
294 +    if m == None:
295 +        return None, None
296 +    size = m.groups()[0]
297 +    unit = m.groups()[1]
298 +    return size, unit
299 +
300  
301  class LibvirtEnvironment(ExecutionEnvironment):
302  
303 @@ -33,10 +55,39 @@ class LibvirtEnvironment(ExecutionEnvironment):
304          self.node_ids = self.dha.get_all_node_ids()
305          self.net_names = self.collect_net_names()
306  
307 -    def create_storage(self, node_id, disk_path, disk_sizes):
308 +    def create_volume(self, pool, name, su, node_id, temp_dir, img_type='raw'):
309 +        log('Creating image using Libvirt volumes in pool %s, name: %s, uri: %s' %
310 +            (pool, name, self.dha.get_node_uri(node_id)))
311 +        size, unit = get_size_and_unit(su)
312 +        if size == None:
313 +            err('Could not determine size and unit of %s' % s)
314 +
315 +        vol_xml = VOL_XML_TEMPLATE.format(name=name, unit=unit, size=size,
316 +                                          format_type=img_type)
317 +        fname = os.path.join(temp_dir, '%s_vol.xml' % name)
318 +        with file(fname, 'w') as f:
319 +            f.write(vol_xml)
320 +
321 +        exec_cmd('virsh %s vol-create --pool %s %s' %
322 +                 (self.dha.get_node_uri(node_id), pool, fname))
323 +        vol_path = exec_cmd('virsh %s vol-path --pool %s %s' %
324 +                            (self.dha.get_node_uri(node_id), pool, name))
325 +
326 +        delete(fname)
327 +        return vol_path
328 +
329 +
330 +    def create_storage(self, node_id, disk_path, disk_sizes, temp_dir):
331          role = self.dea.get_node_main_role(node_id, self.fuel_node_id)
332          disk_size = disk_sizes[role]
333 -        exec_cmd('qemu-img create -f raw %s %s' % (disk_path, disk_size))
334 +        if os.environ.get('LIBVIRT_DEFAULT_URI') == None:
335 +            exec_cmd('qemu-img create -f raw %s %s' % (disk_path, disk_size))
336 +        else:
337 +            pool = DEFAULT_POOL # FIXME
338 +            name = os.path.basename(disk_path)
339 +            disk_path = self.create_volume(pool, name, disk_size, node_id, temp_dir)
340 +        return disk_path
341 +
342  
343      def create_vms(self):
344          temp_dir = tempfile.mkdtemp()
345 @@ -48,13 +99,13 @@ class LibvirtEnvironment(ExecutionEnvironment):
346                                           node_id, 'libvirtTemplate'))
347              check_file_exists(vm_template)
348              disk_path = '%s/%s.raw' % (self.storage_dir, vm_name)
349 -            self.create_storage(node_id, disk_path, disk_sizes)
350 +            disk_path = self.create_storage(node_id, disk_path, disk_sizes, temp_dir)
351              temp_vm_file = '%s/%s' % (temp_dir, vm_name)
352              exec_cmd('cp %s %s' % (vm_template, temp_vm_file))
353              vm_definition_overwrite = self.dha.get_vm_definition(
354                   self.dea.get_node_main_role(node_id, self.fuel_node_id))
355              self.define_vm(vm_name, temp_vm_file, disk_path,
356 -                           vm_definition_overwrite)
357 +                           vm_definition_overwrite, node_id)
358          delete(temp_dir)
359  
360      def start_vms(self):
361 diff --git a/deploy/environments/virtual_fuel.py b/deploy/environments/virtual_fuel.py
362 index fcfa532..5f50f40 100644
363 --- a/deploy/environments/virtual_fuel.py
364 +++ b/deploy/environments/virtual_fuel.py
365 @@ -99,8 +99,10 @@ class VirtualFuel(ExecutionEnvironment):
366          with file(fname, 'w') as f:
367              f.write(vol_xml)
368  
369 -        exec_cmd('virsh vol-create --pool %s %s' % (pool, fname))
370 -        vol_path = exec_cmd('virsh vol-path --pool %s %s' % (pool, name))
371 +        exec_cmd('virsh %s vol-create --pool %s %s' %
372 +                 (self.dha.get_node_uri(self.fuel_node_id), pool, fname))
373 +        vol_path = exec_cmd('virsh %s vol-path --pool %s %s' %
374 +                            (self.dha.get_node_uri(self.fuel_node_id), pool, name))
375  
376          delete(fname)
377  
378 @@ -131,7 +133,7 @@ class VirtualFuel(ExecutionEnvironment):
379          vm_definition_overwrite = self.dha.get_vm_definition('fuel')
380  
381          self.define_vm(self.vm_name, self.temp_vm_file, disk_path,
382 -                       vm_definition_overwrite)
383 +                       vm_definition_overwrite, self.fuel_node_id)
384  
385      def setup_environment(self):
386          self.cleanup_environment()
387 diff --git a/deploy/install_fuel_master.py b/deploy/install_fuel_master.py
388 index 2d89c8e..2615818 100644
389 --- a/deploy/install_fuel_master.py
390 +++ b/deploy/install_fuel_master.py
391 @@ -59,7 +59,7 @@ class InstallFuelMaster(object):
392  
393          if os.environ.get('LIBVIRT_DEFAULT_URI'):
394              log('Upload ISO to pool')
395 -            self.iso_file = self.dha.upload_iso(self.iso_file)
396 +            self.iso_file = self.dha.upload_iso(self.fuel_node_id, self.iso_file)
397          else:
398              log('Zero the MBR')
399              self.dha.node_zero_mbr(self.fuel_node_id)
400 diff --git a/deploy/scenario/ha_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_heat_ceilometer_scenario.yaml
401 index 4051c47..78fa80d 100644
402 --- a/deploy/scenario/ha_heat_ceilometer_scenario.yaml
403 +++ b/deploy/scenario/ha_heat_ceilometer_scenario.yaml
404 @@ -58,22 +58,23 @@ dha-override-config:
405    nodes:
406    - id: 1
407      libvirtName: controller1
408 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
409 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
410    - id: 2
411      libvirtName: controller2
412 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
413 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
414    - id: 3
415      libvirtName: controller3
416 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
417 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
418    - id: 4
419      libvirtName: compute1
420 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
421 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
422    - id: 5
423      libvirtName: compute2
424 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
425 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
426    - id: 6
427      libvirtName: fuel-master
428 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
429 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
430 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
431      isFuel: yes
432      username: root
433      password: r00tme
434 diff --git a/deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario.yaml
435 index 1217f72..bcdda61 100644
436 --- a/deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario.yaml
437 +++ b/deploy/scenario/ha_nfv-kvm_heat_ceilometer_scenario.yaml
438 @@ -145,22 +145,23 @@ dha-override-config:
439    nodes:
440    - id: 1
441      libvirtName: controller1
442 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
443 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
444    - id: 2
445      libvirtName: controller2
446 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
447 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
448    - id: 3
449      libvirtName: controller3
450 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
451 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
452    - id: 4
453      libvirtName: compute1
454 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
455 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
456    - id: 5
457      libvirtName: compute2
458 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
459 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
460    - id: 6
461      libvirtName: fuel-master
462 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
463 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
464 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
465      isFuel: yes
466      username: root
467      password: r00tme
468 diff --git a/deploy/scenario/ha_nfv-ovs_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_nfv-ovs_heat_ceilometer_scenario.yaml
469 index 51deb4e..bee2d1a 100644
470 --- a/deploy/scenario/ha_nfv-ovs_heat_ceilometer_scenario.yaml
471 +++ b/deploy/scenario/ha_nfv-ovs_heat_ceilometer_scenario.yaml
472 @@ -107,22 +107,23 @@ dha-override-config:
473    nodes:
474    - id: 1
475      libvirtName: controller1
476 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
477 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
478    - id: 2
479      libvirtName: controller2
480 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
481 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
482    - id: 3
483      libvirtName: controller3
484 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
485 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
486    - id: 4
487      libvirtName: compute1
488 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
489 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
490    - id: 5
491      libvirtName: compute2
492 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
493 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
494    - id: 6
495      libvirtName: fuel-master
496 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
497 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
498 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
499      isFuel: yes
500      username: root
501      password: r00tme
502 diff --git a/deploy/scenario/ha_odl-bgpvpn_scenario.yaml b/deploy/scenario/ha_odl-bgpvpn_scenario.yaml
503 index 7d52e77..46efc4b 100644
504 --- a/deploy/scenario/ha_odl-bgpvpn_scenario.yaml
505 +++ b/deploy/scenario/ha_odl-bgpvpn_scenario.yaml
506 @@ -77,22 +77,23 @@ dha-override-config:
507    nodes:
508    - id: 1
509      libvirtName: controller1
510 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
511 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
512    - id: 2
513      libvirtName: controller2
514 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
515 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
516    - id: 3
517      libvirtName: controller3
518 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
519 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
520    - id: 4
521      libvirtName: compute1
522 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
523 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
524    - id: 5
525      libvirtName: compute2
526 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
527 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
528    - id: 6
529      libvirtName: fuel-master
530 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
531 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
532 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
533      isFuel: yes
534      username: root
535      password: r00tme
536 diff --git a/deploy/scenario/ha_odl-l2_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_odl-l2_heat_ceilometer_scenario.yaml
537 index 90c89ae..50dde30 100644
538 --- a/deploy/scenario/ha_odl-l2_heat_ceilometer_scenario.yaml
539 +++ b/deploy/scenario/ha_odl-l2_heat_ceilometer_scenario.yaml
540 @@ -77,22 +77,23 @@ dha-override-config:
541    nodes:
542    - id: 1
543      libvirtName: controller1
544 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
545 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
546    - id: 2
547      libvirtName: controller2
548 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
549 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
550    - id: 3
551      libvirtName: controller3
552 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
553 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
554    - id: 4
555      libvirtName: compute1
556 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
557 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
558    - id: 5
559      libvirtName: compute2
560 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
561 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
562    - id: 6
563      libvirtName: fuel-master
564 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
565 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
566 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
567      isFuel: yes
568      username: root
569      password: r00tme
570 diff --git a/deploy/scenario/ha_odl-l2_sfc_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_odl-l2_sfc_heat_ceilometer_scenario.yaml
571 index c478948..e20ec1a 100644
572 --- a/deploy/scenario/ha_odl-l2_sfc_heat_ceilometer_scenario.yaml
573 +++ b/deploy/scenario/ha_odl-l2_sfc_heat_ceilometer_scenario.yaml
574 @@ -95,22 +95,23 @@ dha-override-config:
575    nodes:
576    - id: 1
577      libvirtName: controller1
578 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
579 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
580    - id: 2
581      libvirtName: controller2
582 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
583 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
584    - id: 3
585      libvirtName: controller3
586 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
587 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
588    - id: 4
589      libvirtName: compute1
590 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
591 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
592    - id: 5
593      libvirtName: compute2
594 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
595 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
596    - id: 6
597      libvirtName: fuel-master
598 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
599 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
600 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
601      isFuel: yes
602      username: root
603      password: r00tme
604 diff --git a/deploy/scenario/ha_odl-l3_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_odl-l3_heat_ceilometer_scenario.yaml
605 index 967e7d2..322dd27 100644
606 --- a/deploy/scenario/ha_odl-l3_heat_ceilometer_scenario.yaml
607 +++ b/deploy/scenario/ha_odl-l3_heat_ceilometer_scenario.yaml
608 @@ -93,22 +93,23 @@ dha-override-config:
609    nodes:
610    - id: 1
611      libvirtName: controller1
612 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
613 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
614    - id: 2
615      libvirtName: controller2
616 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
617 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
618    - id: 3
619      libvirtName: controller3
620 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
621 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
622    - id: 4
623      libvirtName: compute1
624 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
625 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
626    - id: 5
627      libvirtName: compute2
628 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
629 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
630    - id: 6
631      libvirtName: fuel-master
632 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
633 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
634 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
635      isFuel: yes
636      username: root
637      password: r00tme
638 diff --git a/deploy/scenario/ha_onos_nofeature_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_onos_nofeature_heat_ceilometer_scenario.yaml
639 index f813458..88b8f6b 100644
640 --- a/deploy/scenario/ha_onos_nofeature_heat_ceilometer_scenario.yaml
641 +++ b/deploy/scenario/ha_onos_nofeature_heat_ceilometer_scenario.yaml
642 @@ -88,22 +88,23 @@ dha-override-config:
643    nodes:
644    - id: 1
645      libvirtName: controller1
646 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
647 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
648    - id: 2
649      libvirtName: controller2
650 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
651 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
652    - id: 3
653      libvirtName: controller3
654 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
655 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
656    - id: 4
657      libvirtName: compute1
658 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
659 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
660    - id: 5
661      libvirtName: compute2
662 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
663 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
664    - id: 6
665      libvirtName: fuel-master
666 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
667 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
668 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
669      isFuel: yes
670      username: root
671      password: r00tme
672 diff --git a/deploy/scenario/ha_onos_sfc_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_onos_sfc_heat_ceilometer_scenario.yaml
673 index 32fbfcf..c390172 100644
674 --- a/deploy/scenario/ha_onos_sfc_heat_ceilometer_scenario.yaml
675 +++ b/deploy/scenario/ha_onos_sfc_heat_ceilometer_scenario.yaml
676 @@ -68,22 +68,23 @@ dha-override-config:
677    nodes:
678    - id: 1
679      libvirtName: controller1
680 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
681 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
682    - id: 2
683      libvirtName: controller2
684 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
685 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
686    - id: 3
687      libvirtName: controller3
688 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
689 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
690    - id: 4
691      libvirtName: compute1
692 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
693 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
694    - id: 5
695      libvirtName: compute2
696 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
697 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
698    - id: 6
699      libvirtName: fuel-master
700 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
701 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
702 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
703      isFuel: yes
704      username: root
705      password: r00tme
706 diff --git a/deploy/scenario/ha_vlan_heat_ceilometer_scenario.yaml b/deploy/scenario/ha_vlan_heat_ceilometer_scenario.yaml
707 index d1d5191..65b8b20 100644
708 --- a/deploy/scenario/ha_vlan_heat_ceilometer_scenario.yaml
709 +++ b/deploy/scenario/ha_vlan_heat_ceilometer_scenario.yaml
710 @@ -102,22 +102,23 @@ dha-override-config:
711    nodes:
712    - id: 1
713      libvirtName: controller1
714 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
715 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
716    - id: 2
717      libvirtName: controller2
718 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
719 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
720    - id: 3
721      libvirtName: controller3
722 -    libvirtTemplate: templates/virtual_environment/vms/controller.xml
723 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
724    - id: 4
725      libvirtName: compute1
726 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
727 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
728    - id: 5
729      libvirtName: compute2
730 -    libvirtTemplate: templates/virtual_environment/vms/compute.xml
731 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
732    - id: 6
733      libvirtName: fuel-master
734 -    libvirtTemplate: templates/virtual_environment/vms/fuel.xml
735 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
736 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
737      isFuel: yes
738      username: root
739      password: r00tme
740 diff --git a/deploy/scenario/no-ha_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_heat_ceilometer_scenario.yaml
741 index 3dd5f84..d738154 100644
742 --- a/deploy/scenario/no-ha_heat_ceilometer_scenario.yaml
743 +++ b/deploy/scenario/no-ha_heat_ceilometer_scenario.yaml
744 @@ -41,17 +41,42 @@ dea-override-config:
745    - id: 1
746      interfaces: interfaces_1
747      role: mongo,controller,congress
748 +    transformations: transformations_1
749    - id: 2
750      interfaces: interfaces_1
751      role: ceph-osd,compute
752 +    transformations: transformations_2
753    - id: 3
754      interfaces: interfaces_1
755      role: ceph-osd,compute
756 +    transformations: transformations_2
757    - id: 4
758      interfaces: interfaces_1
759      role: ceph-osd,compute
760 +    transformations: transformations_2
761  
762  dha-override-config:
763 + nodes:
764 +  - id: 1
765 +    libvirtName: controller1
766 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
767 +  - id: 2
768 +    libvirtName: compute1
769 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
770 +  - id: 3
771 +    libvirtName: compute2
772 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
773 +  - id: 4
774 +    libvirtName: compute3
775 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
776 +  - id: 5
777 +    libvirtName: fuel-master
778 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
779 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
780 +    isFuel: yes
781 +    username: root
782 +    password: r00tme
783 +
784  #  disks:
785  #    contrail: 500G
786  
787 diff --git a/deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario.yaml
788 index 4661a26..7ade095 100644
789 --- a/deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario.yaml
790 +++ b/deploy/scenario/no-ha_nfv-kvm_heat_ceilometer_scenario.yaml
791 @@ -48,15 +48,19 @@ dea-override-config:
792    - id: 1
793      interfaces: interfaces_1
794      role: mongo,controller
795 +    transformations: transformations_1
796    - id: 2
797      interfaces: interfaces_1
798      role: ceph-osd
799 +    transformations: transformations_2
800    - id: 3
801      interfaces: interfaces_1
802      role: compute
803 +    transformations: transformations_2
804    - id: 4
805      interfaces: interfaces_1
806      role: compute
807 +    transformations: transformations_2
808  
809    settings:
810      editable:
811 @@ -141,6 +145,27 @@ dea-override-config:
812            weight: 10
813  
814  dha-override-config:
815 + nodes:
816 +  - id: 1
817 +    libvirtName: controller1
818 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
819 +  - id: 2
820 +    libvirtName: compute1
821 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
822 +  - id: 3
823 +    libvirtName: compute2
824 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
825 +  - id: 4
826 +    libvirtName: compute3
827 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
828 +  - id: 5
829 +    libvirtName: fuel-master
830 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
831 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
832 +    isFuel: yes
833 +    username: root
834 +    password: r00tme
835 +
836  #  disks:
837  #    contrail: 500G
838  
839 diff --git a/deploy/scenario/no-ha_nfv-kvm_nfv-ovs_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_nfv-kvm_nfv-ovs_heat_ceilometer_scenario.yaml
840 index 87364e8..a3f0864 100644
841 --- a/deploy/scenario/no-ha_nfv-kvm_nfv-ovs_heat_ceilometer_scenario.yaml
842 +++ b/deploy/scenario/no-ha_nfv-kvm_nfv-ovs_heat_ceilometer_scenario.yaml
843 @@ -55,15 +55,19 @@ dea-override-config:
844    - id: 1
845      interfaces: interfaces_1
846      role: mongo,controller
847 +    transformations: transformations_1
848    - id: 2
849      interfaces: interfaces_1
850      role: ceph-osd,compute
851 +    transformations: transformations_2
852    - id: 3
853      interfaces: interfaces_1
854      role: ceph-osd,compute
855 +    transformations: transformations_2
856    - id: 4
857      interfaces: interfaces_1
858      role: ceph-osd,compute
859 +    transformations: transformations_2
860    settings:
861      editable:
862        additional_components:
863 @@ -104,6 +108,27 @@ dea-override-config:
864            weight: 30
865  
866  dha-override-config:
867 + nodes:
868 +  - id: 1
869 +    libvirtName: controller1
870 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
871 +  - id: 2
872 +    libvirtName: compute1
873 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
874 +  - id: 3
875 +    libvirtName: compute2
876 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
877 +  - id: 4
878 +    libvirtName: compute3
879 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
880 +  - id: 5
881 +    libvirtName: fuel-master
882 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
883 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
884 +    isFuel: yes
885 +    username: root
886 +    password: r00tme
887 +
888  #  disks:
889  #    contrail: 500G
890  
891 diff --git a/deploy/scenario/no-ha_nfv-ovs_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_nfv-ovs_heat_ceilometer_scenario.yaml
892 index 7ab76cb..f4e0adc 100644
893 --- a/deploy/scenario/no-ha_nfv-ovs_heat_ceilometer_scenario.yaml
894 +++ b/deploy/scenario/no-ha_nfv-ovs_heat_ceilometer_scenario.yaml
895 @@ -56,19 +56,22 @@ dea-override-config:
896    - id: 1
897      interfaces: interfaces_vlan
898      role: mongo,controller
899 +    transformations: transformations_1
900    - id: 2
901      interfaces: interfaces_dpdk
902      role: ceph-osd,compute
903      attributes: attributes_1
904 +    transformations: transformations_2
905    - id: 3
906      interfaces: interfaces_dpdk
907      role: ceph-osd,compute
908      attributes: attributes_1
909 +    transformations: transformations_2
910    - id: 4
911      interfaces: interfaces_dpdk
912      role: ceph-osd,compute
913      attributes: attributes_1
914 -
915 +    transformations: transformations_2
916    attributes_1:
917      hugepages:
918        dpdk:
919 @@ -102,6 +105,27 @@ dea-override-config:
920        vlan_start: null
921  
922  dha-override-config:
923 + nodes:
924 +  - id: 1
925 +    libvirtName: controller1
926 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
927 +  - id: 2
928 +    libvirtName: compute1
929 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
930 +  - id: 3
931 +    libvirtName: compute2
932 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
933 +  - id: 4
934 +    libvirtName: compute3
935 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
936 +  - id: 5
937 +    libvirtName: fuel-master
938 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
939 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
940 +    isFuel: yes
941 +    username: root
942 +    password: r00tme
943 +
944  #  disks:
945  #    contrail: 500G
946  
947 diff --git a/deploy/scenario/no-ha_odl-bgpvpn_scenario.yaml b/deploy/scenario/no-ha_odl-bgpvpn_scenario.yaml
948 index 6f21ea2..e92a741 100644
949 --- a/deploy/scenario/no-ha_odl-bgpvpn_scenario.yaml
950 +++ b/deploy/scenario/no-ha_odl-bgpvpn_scenario.yaml
951 @@ -60,22 +60,47 @@ dea-override-config:
952    - id: 1
953      interfaces: interfaces_1
954      role: mongo,controller
955 +    transformations: transformations_1
956    - id: 2
957      interfaces: interfaces_1
958      role: ceph-osd,opendaylight
959 +    transformations: transformations_2
960    - id: 3
961      interfaces: interfaces_1
962      role: ceph-osd,compute
963 +    transformations: transformations_2
964    - id: 4
965      interfaces: interfaces_1
966      role: ceph-osd,compute
967 +    transformations: transformations_2
968    settings:
969      editable:
970        public_network_assignment:
971          assign_to_all_nodes:
972            value: true
973  
974  dha-override-config:
975 + nodes:
976 +  - id: 1
977 +    libvirtName: controller1
978 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
979 +  - id: 2
980 +    libvirtName: compute1
981 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
982 +  - id: 3
983 +    libvirtName: compute2
984 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
985 +  - id: 4
986 +    libvirtName: compute3
987 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
988 +  - id: 5
989 +    libvirtName: fuel-master
990 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
991 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
992 +    isFuel: yes
993 +    username: root
994 +    password: r00tme
995 +
996  #  disks:
997  #    contrail: 500G
998  
999 diff --git a/deploy/scenario/no-ha_odl-l2_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_odl-l2_heat_ceilometer_scenario.yaml
1000 index f8787d7..1efa89a 100644
1001 --- a/deploy/scenario/no-ha_odl-l2_heat_ceilometer_scenario.yaml
1002 +++ b/deploy/scenario/no-ha_odl-l2_heat_ceilometer_scenario.yaml
1003 @@ -61,17 +61,42 @@ dea-override-config:
1004    - id: 1
1005      interfaces: interfaces_1
1006      role: mongo,controller
1007 +    transformations: transformations_1
1008    - id: 2
1009      interfaces: interfaces_1
1010      role: ceph-osd,opendaylight
1011 +    transformations: transformations_2
1012    - id: 3
1013      interfaces: interfaces_1
1014      role: ceph-osd,compute
1015 +    transformations: transformations_2
1016    - id: 4
1017      interfaces: interfaces_1
1018      role: ceph-osd,compute
1019 +    transformations: transformations_2
1020  
1021  dha-override-config:
1022 + nodes:
1023 +  - id: 1
1024 +    libvirtName: controller1
1025 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
1026 +  - id: 2
1027 +    libvirtName: compute1
1028 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1029 +  - id: 3
1030 +    libvirtName: compute2
1031 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1032 +  - id: 4
1033 +    libvirtName: compute3
1034 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1035 +  - id: 5
1036 +    libvirtName: fuel-master
1037 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
1038 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
1039 +    isFuel: yes
1040 +    username: root
1041 +    password: r00tme
1042 +
1043  #  disks:
1044  #    contrail: 500G
1045  
1046 diff --git a/deploy/scenario/no-ha_odl-l2_sfc_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_odl-l2_sfc_heat_ceilometer_scenario.yaml
1047 index 90a45d5..b1fe773 100644
1048 --- a/deploy/scenario/no-ha_odl-l2_sfc_heat_ceilometer_scenario.yaml
1049 +++ b/deploy/scenario/no-ha_odl-l2_sfc_heat_ceilometer_scenario.yaml
1050 @@ -80,17 +80,42 @@ dea-override-config:
1051    - id: 1
1052      interfaces: interfaces_1
1053      role: mongo,controller,tacker
1054 +    transformations: transformations_1
1055    - id: 2
1056      interfaces: interfaces_1
1057      role: ceph-osd,opendaylight
1058 +    transformations: transformations_2
1059    - id: 3
1060      interfaces: interfaces_1
1061      role: ceph-osd,compute
1062 +    transformations: transformations_2
1063    - id: 4
1064      interfaces: interfaces_1
1065      role: ceph-osd,compute
1066 +    transformations: transformations_2
1067  
1068  dha-override-config:
1069 + nodes:
1070 +  - id: 1
1071 +    libvirtName: controller1
1072 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
1073 +  - id: 2
1074 +    libvirtName: compute1
1075 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1076 +  - id: 3
1077 +    libvirtName: compute2
1078 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1079 +  - id: 4
1080 +    libvirtName: compute3
1081 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1082 +  - id: 5
1083 +    libvirtName: fuel-master
1084 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
1085 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
1086 +    isFuel: yes
1087 +    username: root
1088 +    password: r00tme
1089 +
1090  #  disks:
1091  #    contrail: 500G
1092  
1093 diff --git a/deploy/scenario/no-ha_odl-l3_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_odl-l3_heat_ceilometer_scenario.yaml
1094 index 0c8415f..b59a049 100644
1095 --- a/deploy/scenario/no-ha_odl-l3_heat_ceilometer_scenario.yaml
1096 +++ b/deploy/scenario/no-ha_odl-l3_heat_ceilometer_scenario.yaml
1097 @@ -71,15 +71,19 @@ dea-override-config:
1098    - id: 1
1099      interfaces: interfaces_1
1100      role: mongo,controller
1101 +    transformations: transformations_1
1102    - id: 2
1103      interfaces: interfaces_1
1104      role: ceph-osd,opendaylight
1105 +    transformations: transformations_2
1106    - id: 3
1107      interfaces: interfaces_1
1108      role: ceph-osd,compute
1109 +    transformations: transformations_2
1110    - id: 4
1111      interfaces: interfaces_1
1112      role: ceph-osd,compute
1113 +    transformations: transformations_2
1114    settings:
1115      editable:
1116        public_network_assignment:
1117 @@ -87,6 +91,27 @@ dea-override-config:
1118            value: true
1119  
1120  dha-override-config:
1121 + nodes:
1122 +  - id: 1
1123 +    libvirtName: controller1
1124 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
1125 +  - id: 2
1126 +    libvirtName: compute1
1127 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1128 +  - id: 3
1129 +    libvirtName: compute2
1130 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1131 +  - id: 4
1132 +    libvirtName: compute3
1133 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1134 +  - id: 5
1135 +    libvirtName: fuel-master
1136 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
1137 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
1138 +    isFuel: yes
1139 +    username: root
1140 +    password: r00tme
1141 +
1142  #  disks:
1143  #    contrail: 500G
1144  
1145 diff --git a/deploy/scenario/no-ha_onos_nofeature_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_onos_nofeature_heat_ceilometer_scenario.yaml
1146 index f5c00f0..e51dd56 100644
1147 --- a/deploy/scenario/no-ha_onos_nofeature_heat_ceilometer_scenario.yaml
1148 +++ b/deploy/scenario/no-ha_onos_nofeature_heat_ceilometer_scenario.yaml
1149 @@ -68,21 +68,47 @@ dea-override-config:
1150    - id: 1
1151      interfaces: interfaces_1
1152      role: mongo,controller,onos
1153 +    transformations: transformations_1
1154    - id: 2
1155      interfaces: interfaces_1
1156      role: ceph-osd,compute
1157 +    transformations: transformations_2
1158    - id: 3
1159      interfaces: interfaces_1
1160      role: ceph-osd,compute
1161 +    transformations: transformations_2
1162    - id: 4
1163      interfaces: interfaces_1
1164      role: ceph-osd,compute
1165 +    transformations: transformations_2
1166    settings:
1167      editable:
1168        public_network_assignment:
1169          assign_to_all_nodes:
1170            value: true
1171 +
1172  dha-override-config:
1173 + nodes:
1174 +  - id: 1
1175 +    libvirtName: controller1
1176 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
1177 +  - id: 2
1178 +    libvirtName: compute1
1179 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1180 +  - id: 3
1181 +    libvirtName: compute2
1182 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1183 +  - id: 4
1184 +    libvirtName: compute3
1185 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1186 +  - id: 5
1187 +    libvirtName: fuel-master
1188 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
1189 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
1190 +    isFuel: yes
1191 +    username: root
1192 +    password: r00tme
1193 +
1194  #  disks:
1195  #    contrail: 500G
1196  
1197 diff --git a/deploy/scenario/no-ha_onos_sfc_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_onos_sfc_heat_ceilometer_scenario.yaml
1198 index 587346e..21a2be2 100644
1199 --- a/deploy/scenario/no-ha_onos_sfc_heat_ceilometer_scenario.yaml
1200 +++ b/deploy/scenario/no-ha_onos_sfc_heat_ceilometer_scenario.yaml
1201 @@ -48,21 +48,46 @@ dea-override-config:
1202    - id: 1
1203      interfaces: interfaces_1
1204      role: mongo,controller,onos
1205 +    transformations: transformations_1
1206    - id: 2
1207      interfaces: interfaces_1
1208      role: ceph-osd,compute
1209 +    transformations: transformations_2
1210    - id: 3
1211      interfaces: interfaces_1
1212      role: ceph-osd,compute
1213 +    transformations: transformations_2
1214    - id: 4
1215      interfaces: interfaces_1
1216      role: ceph-osd,compute
1217 +    transformations: transformations_2
1218    settings:
1219      editable:
1220        public_network_assignment:
1221          assign_to_all_nodes:
1222            value: true
1223  dha-override-config:
1224 + nodes:
1225 +  - id: 1
1226 +    libvirtName: controller1
1227 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
1228 +  - id: 2
1229 +    libvirtName: compute1
1230 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1231 +  - id: 3
1232 +    libvirtName: compute2
1233 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1234 +  - id: 4
1235 +    libvirtName: compute3
1236 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1237 +  - id: 5
1238 +    libvirtName: fuel-master
1239 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
1240 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
1241 +    isFuel: yes
1242 +    username: root
1243 +    password: r00tme
1244 +
1245  #  disks:
1246  #    contrail: 500G
1247  
1248 diff --git a/deploy/scenario/no-ha_vlan_heat_ceilometer_scenario.yaml b/deploy/scenario/no-ha_vlan_heat_ceilometer_scenario.yaml
1249 index 567ea98..ada5b7e 100644
1250 --- a/deploy/scenario/no-ha_vlan_heat_ceilometer_scenario.yaml
1251 +++ b/deploy/scenario/no-ha_vlan_heat_ceilometer_scenario.yaml
1252 @@ -45,15 +45,19 @@ dea-override-config:
1253    - id: 1
1254      interfaces: interfaces_1
1255      role: mongo,controller
1256 +    transformations: transformations_1
1257    - id: 2
1258      interfaces: interfaces_1
1259      role: ceph-osd,compute
1260 +    transformations: transformations_2
1261    - id: 3
1262      interfaces: interfaces_1
1263      role: ceph-osd,compute
1264 +    transformations: transformations_2
1265    - id: 4
1266      interfaces: interfaces_1
1267      role: ceph-osd,compute
1268 +    transformations: transformations_2
1269    settings:
1270      editable:
1271        additional_components:
1272 @@ -94,6 +98,27 @@ dea-override-config:
1273            weight: 30
1274  
1275  dha-override-config:
1276 + nodes:
1277 +  - id: 1
1278 +    libvirtName: controller1
1279 +    libvirtTemplate: templates/arm/virtual_environment/vms/controller.xml
1280 +  - id: 2
1281 +    libvirtName: compute1
1282 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1283 +  - id: 3
1284 +    libvirtName: compute2
1285 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1286 +  - id: 4
1287 +    libvirtName: compute3
1288 +    libvirtTemplate: templates/arm/virtual_environment/vms/compute.xml
1289 +  - id: 5
1290 +    libvirtName: fuel-master
1291 +    libvirtTemplate: templates/arm/virtual_environment/vms/fuel.xml
1292 +    libvirtUri: qemu+ssh://jenkins@10.0.2.5/system
1293 +    isFuel: yes
1294 +    username: root
1295 +    password: r00tme
1296 +
1297  # These overrides only take effect for virtual deployment scenarios
1298  
1299  ##############################################################################
1300 diff --git a/deploy/templates/arm/virtual_environment/networks/.gitkeep b/deploy/templates/arm/virtual_environment/networks/.gitkeep
1301 new file mode 100644
1302 index 0000000..e69de29
1303 diff --git a/deploy/templates/arm/virtual_environment/vms/compute.xml b/deploy/templates/arm/virtual_environment/vms/compute.xml
1304 new file mode 100644
1305 index 0000000..db3ba29
1306 --- /dev/null
1307 +++ b/deploy/templates/arm/virtual_environment/vms/compute.xml
1308 @@ -0,0 +1,57 @@
1309 +<domain type='kvm'>
1310 +  <name>compute</name>
1311 +  <memory unit='KiB'>8392704</memory>
1312 +  <currentMemory unit='KiB'>8392704</currentMemory>
1313 +  <vcpu placement='static'>6</vcpu>
1314 +  <os>
1315 +    <type arch='aarch64' machine='virt-2.6'>hvm</type>
1316 +    <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
1317 +  </os>
1318 +  <features>
1319 +    <gic version='3'/>
1320 +  </features>
1321 +  <cpu mode='host-model'>
1322 +    <model fallback='allow'/>
1323 +  </cpu>
1324 +  <clock offset='utc'/>
1325 +  <on_poweroff>destroy</on_poweroff>
1326 +  <on_reboot>restart</on_reboot>
1327 +  <on_crash>restart</on_crash>
1328 +  <devices>
1329 +    <emulator>/usr/bin/kvm</emulator>
1330 +    <disk type='file' device='disk'>
1331 +      <driver name='qemu' type='raw' cache='none' io='native'/>
1332 +      <source file='disk.raw'/>
1333 +      <target dev='vda' bus='virtio'/>
1334 +      <boot order='2'/>
1335 +      <address type='virtio-mmio'/>
1336 +    </disk>
1337 +    <controller type='scsi' index='0' model='virtio-scsi'>
1338 +      <address type='virtio-mmio'/>
1339 +    </controller>
1340 +    <controller type='pci' index='0' model='pcie-root'/>
1341 +    <interface type='bridge'>
1342 +      <source bridge='admin8_br'/>
1343 +      <model type='virtio'/>
1344 +      <boot order='1'/>
1345 +      <address type='virtio-mmio'/>
1346 +    </interface>
1347 +    <interface type='bridge'>
1348 +      <source bridge='public8_br'/>
1349 +      <model type='virtio'/>
1350 +      <address type='virtio-mmio'/>
1351 +    </interface>
1352 +    <interface type='bridge'>
1353 +      <source bridge='trunk8_br'/>
1354 +      <model type='virtio'/>
1355 +      <address type='virtio-mmio'/>
1356 +    </interface>
1357 +    <serial type='pty'>
1358 +      <target port='0'/>
1359 +    </serial>
1360 +    <console type='pty'>
1361 +      <target type='serial' port='0'/>
1362 +    </console>
1363 +  </devices>
1364 +</domain>
1365 +
1366 diff --git a/deploy/templates/arm/virtual_environment/vms/controller.xml b/deploy/templates/arm/virtual_environment/vms/controller.xml
1367 new file mode 100644
1368 index 0000000..6bd0385
1369 --- /dev/null
1370 +++ b/deploy/templates/arm/virtual_environment/vms/controller.xml
1371 @@ -0,0 +1,57 @@
1372 +<domain type='kvm'>
1373 +  <name>controller</name>
1374 +  <memory unit='KiB'>8392704</memory>
1375 +  <currentMemory unit='KiB'>8392704</currentMemory>
1376 +  <vcpu placement='static'>6</vcpu>
1377 +  <os>
1378 +    <type arch='aarch64' machine='virt-2.6'>hvm</type>
1379 +    <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
1380 +  </os>
1381 +  <features>
1382 +    <gic version='3'/>
1383 +  </features>
1384 +  <cpu mode='host-model'>
1385 +    <model fallback='allow'/>
1386 +  </cpu>
1387 +  <clock offset='utc'/>
1388 +  <on_poweroff>destroy</on_poweroff>
1389 +  <on_reboot>restart</on_reboot>
1390 +  <on_crash>restart</on_crash>
1391 +  <devices>
1392 +    <emulator>/usr/bin/kvm</emulator>
1393 +    <disk type='file' device='disk'>
1394 +      <driver name='qemu' type='raw' cache='none' io='native'/>
1395 +      <source file='disk.raw'/>
1396 +      <target dev='vda' bus='virtio'/>
1397 +      <boot order='2'/>
1398 +      <address type='virtio-mmio'/>
1399 +    </disk>
1400 +    <controller type='scsi' index='0' model='virtio-scsi'>
1401 +      <address type='virtio-mmio'/>
1402 +    </controller>
1403 +    <controller type='pci' index='0' model='pcie-root'/>
1404 +    <interface type='bridge'>
1405 +      <source bridge='admin8_br'/>
1406 +      <model type='virtio'/>
1407 +      <boot order='1'/>
1408 +      <address type='virtio-mmio'/>
1409 +    </interface>
1410 +    <interface type='bridge'>
1411 +      <source bridge='public8_br'/>
1412 +      <model type='virtio'/>
1413 +      <address type='virtio-mmio'/>
1414 +    </interface>
1415 +    <interface type='bridge'>
1416 +      <source bridge='trunk8_br'/>
1417 +      <model type='virtio'/>
1418 +      <address type='virtio-mmio'/>
1419 +    </interface>
1420 +    <serial type='pty'>
1421 +      <target port='0'/>
1422 +    </serial>
1423 +    <console type='pty'>
1424 +      <target type='serial' port='0'/>
1425 +    </console>
1426 +  </devices>
1427 +</domain>
1428 +
1429 diff --git a/deploy/templates/arm/virtual_environment/vms/fuel.xml b/deploy/templates/arm/virtual_environment/vms/fuel.xml
1430 new file mode 100644
1431 index 0000000..ad7c67f
1432 --- /dev/null
1433 +++ b/deploy/templates/arm/virtual_environment/vms/fuel.xml
1434 @@ -0,0 +1,99 @@
1435 +<domain type='kvm'>
1436 +  <name>fuel</name>
1437 +  <memory unit='KiB'>8290304</memory>
1438 +  <currentMemory unit='KiB'>8290304</currentMemory>
1439 +  <vcpu placement='static'>4</vcpu>
1440 +  <resource>
1441 +    <partition>/machine</partition>
1442 +  </resource>
1443 +  <os>
1444 +    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
1445 +    <boot dev='hd'/>
1446 +    <boot dev='cdrom'/>
1447 +    <bootmenu enable='no'/>
1448 +  </os>
1449 +  <features>
1450 +    <acpi/>
1451 +    <apic/>
1452 +    <pae/>
1453 +  </features>
1454 +  <cpu mode='host-model'>
1455 +    <model fallback='allow'/>
1456 +  </cpu>
1457 +  <clock offset='utc'>
1458 +    <timer name='rtc' tickpolicy='catchup'/>
1459 +    <timer name='pit' tickpolicy='delay'/>
1460 +    <timer name='hpet' present='no'/>
1461 +  </clock>
1462 +  <on_poweroff>destroy</on_poweroff>
1463 +  <on_reboot>restart</on_reboot>
1464 +  <on_crash>restart</on_crash>
1465 +  <pm>
1466 +    <suspend-to-mem enabled='no'/>
1467 +    <suspend-to-disk enabled='no'/>
1468 +  </pm>
1469 +  <devices>
1470 +    <emulator>/usr/libexec/qemu-kvm</emulator>
1471 +    <disk type='block' device='cdrom'>
1472 +      <driver name='qemu' type='raw'/>
1473 +      <target dev='hdc' bus='ide'/>
1474 +      <readonly/>
1475 +    </disk>
1476 +    <disk type='file' device='disk'>
1477 +      <driver name='qemu' type='raw' cache='none' io='native'/>
1478 +      <source file='disk.raw'/>
1479 +      <target dev='vda' bus='virtio'/>
1480 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
1481 +    </disk>
1482 +    <controller type='usb' index='0' model='ich9-ehci1'>
1483 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
1484 +    </controller>
1485 +    <controller type='usb' index='0' model='ich9-uhci1'>
1486 +      <master startport='0'/>
1487 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
1488 +    </controller>
1489 +    <controller type='usb' index='0' model='ich9-uhci2'>
1490 +      <master startport='2'/>
1491 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
1492 +    </controller>
1493 +    <controller type='usb' index='0' model='ich9-uhci3'>
1494 +      <master startport='4'/>
1495 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
1496 +    </controller>
1497 +    <controller type='pci' index='0' model='pci-root'/>
1498 +    <controller type='ide' index='0'>
1499 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
1500 +    </controller>
1501 +    <controller type='virtio-serial' index='0'>
1502 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
1503 +    </controller>
1504 +    <interface type='bridge'>
1505 +      <source bridge='admin8_br0'/>
1506 +      <model type='virtio'/>
1507 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
1508 +    </interface>
1509 +    <interface type='bridge'>
1510 +      <source bridge='public8_br0'/>
1511 +      <model type='virtio'/>
1512 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
1513 +    </interface>
1514 +    <serial type='pty'>
1515 +      <target port='0'/>
1516 +    </serial>
1517 +    <console type='pty'>
1518 +      <target type='serial' port='0'/>
1519 +    </console>
1520 +    <input type='mouse' bus='ps2'/>
1521 +    <input type='keyboard' bus='ps2'/>
1522 +    <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
1523 +      <listen type='address' address='127.0.0.1'/>
1524 +    </graphics>
1525 +    <video>
1526 +      <model type='vga' vram='16384' heads='1'/>
1527 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
1528 +    </video>
1529 +    <memballoon model='virtio'>
1530 +      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
1531 +    </memballoon>
1532 +  </devices>
1533 +</domain>