Rebase: p/opnfv-fuel: Allow Fuel commit override.
[armband.git] / patches / fuel-web / 0004-direct-kernel-boot-for-cirros.patch
1 From: Stanislaw Kardach <stanislaw.kardach@caviumnetworks.com>
2 Date: Tue, 15 Mar 2016 15:01:51 +0100
3 Subject: [PATCH] direct kernel boot for cirros
4
5 ---
6  nailgun/nailgun/orchestrator/base_serializers.py   | 16 +++--
7  .../nailgun/orchestrator/deployment_serializers.py | 70 ++++++++++++++++------
8  2 files changed, 62 insertions(+), 24 deletions(-)
9
10 diff --git a/nailgun/nailgun/orchestrator/base_serializers.py b/nailgun/nailgun/orchestrator/base_serializers.py
11 index 16dc3fa..23d6589 100644
12 --- a/nailgun/nailgun/orchestrator/base_serializers.py
13 +++ b/nailgun/nailgun/orchestrator/base_serializers.py
14 @@ -36,12 +36,16 @@ class MuranoMetadataSerializerMixin(object):
15              self).generate_test_vm_image_data(node)
16  
17          # Add default Glance property for Murano.
18 -        test_vm_image = image_data['test_vm_image']
19 -        existing_properties = test_vm_image['glance_properties']
20 -        murano_data = ' '.join(["""--property murano_image_info='{"title":"""
21 -                               """ "Murano Demo", "type": "cirros.demo"}'"""])
22 -        test_vm_image['glance_properties'] = existing_properties + murano_data
23 -        return {'test_vm_image': test_vm_image}
24 +        test_vm_images = []
25 +        for test_vm_image in image_data['test_vm_image']:
26 +            existing_properties = test_vm_image['glance_properties']
27 +            murano_data = ' '.join(
28 +                ["""--property murano_image_info='{"title":"""
29 +                    """ "Murano Demo", "type": "cirros.demo"}'"""])
30 +            test_vm_image['glance_properties'] = existing_properties + \
31 +                murano_data
32 +            test_vm_images += [test_vm_image]
33 +        return {'test_vm_image': test_vm_images}
34  
35  
36  class VmwareDeploymentSerializerMixin(object):
37 diff --git a/nailgun/nailgun/orchestrator/deployment_serializers.py b/nailgun/nailgun/orchestrator/deployment_serializers.py
38 index b8b38e2..d3d03ec 100644
39 --- a/nailgun/nailgun/orchestrator/deployment_serializers.py
40 +++ b/nailgun/nailgun/orchestrator/deployment_serializers.py
41 @@ -274,6 +274,9 @@ class DeploymentMultinodeSerializer(object):
42          return {'glance': {'image_cache_max_size': image_cache_max_size}}
43  
44      def generate_test_vm_image_data(self, node):
45 +        images = []
46 +        # By default always prepare the disk image
47 +
48          # Instantiate all default values in dict.
49          image_data = {
50              'container_format': 'bare',
51 @@ -297,8 +300,8 @@ class DeploymentMultinodeSerializer(object):
52              arch = "x86_64"
53          elif arch == "arm64":
54              arch = "aarch64"
55 -        image_data['img_path'] = '{0}cirros-{1}-disk.img'.format(img_dir,
56 -            arch)
57 +        image_data['img_path'] = \
58 +            '{0}cirros-{1}-disk.img'.format(img_dir, arch)
59  
60          glance_properties = []
61  
62 @@ -313,8 +316,38 @@ class DeploymentMultinodeSerializer(object):
63              glance_properties.append('--property hypervisor_type=vmware')
64  
65          image_data['glance_properties'] = ' '.join(glance_properties)
66 -
67 -        return {'test_vm_image': image_data}
68 +        images += [image_data]
69 +
70 +        # Now for aarch64 add also kernel and initrd because we direct
71 +        # kernel boot is used then
72 +        if arch == 'aarch64':
73 +            image_data['glance_properties'] += \
74 +                ' --property os_command_line=\'root=/dev/vda1 rw rootwait' + \
75 +                ' console=tty0 console=ttyS0 console=ttyAMA0\'' + \
76 +                ' --property hw_video_model=vga'
77 +            kernel_data = {
78 +                'container_format': 'aki',
79 +                'public': 'true',
80 +                'disk_format': 'aki',
81 +                'img_name': 'TestVM-kernel',
82 +                'img_path': '{0}cirros-{1}-kernel'.format(img_dir, arch),
83 +                'os_name': 'cirros',
84 +                'min_ram': 128,
85 +                'glance_properties': '',
86 +            }
87 +            initrd_data = {
88 +                'container_format': 'ari',
89 +                'public': 'true',
90 +                'disk_format': 'ari',
91 +                'img_name': 'TestVM-initramfs',
92 +                'img_path': '{0}cirros-{1}-initramfs'.format(img_dir, arch),
93 +                'os_name': 'cirros',
94 +                'min_ram': 128,
95 +                'glance_properties': '',
96 +            }
97 +            images += [kernel_data, initrd_data]
98 +
99 +        return {'test_vm_image': images}
100  
101      @classmethod
102      def get_net_provider_serializer(cls, cluster):
103 @@ -495,20 +528,21 @@ class DeploymentHASerializer61(DeploymentHASerializer,
104          images_data['test_vm_image'] = []
105          if attrs.get('editable', {}).get('common', {}). \
106             get('use_vcenter', {}).get('value') is True:
107 -            image_vmdk_data = deepcopy(image_data['test_vm_image'])
108 -            img_path = image_vmdk_data['img_path']. \
109 -                replace('x86_64-disk.img', 'i386-disk.vmdk')
110 -            image_vmdk_data.update({
111 -                'img_name': 'TestVM-VMDK',
112 -                'disk_format': 'vmdk',
113 -                'img_path': img_path,
114 -            })
115 -            image_vmdk_data['glance_properties'] = ' '.join([
116 -                '--property vmware_disktype=sparse',
117 -                '--property vmware_adaptertype=lsiLogic',
118 -                '--property hypervisor_type=vmware'])
119 -            images_data['test_vm_image'].append(image_vmdk_data)
120 -            images_data['test_vm_image'].append(image_data['test_vm_image'])
121 +            images_vmdk_data = deepcopy(image_data['test_vm_image'])
122 +            for image_vmdk_data in images_vmdk_data:
123 +                img_path = image_vmdk_data['img_path']. \
124 +                    replace('x86_64-disk.img', 'i386-disk.vmdk')
125 +                image_vmdk_data.update({
126 +                    'img_name': 'TestVM-VMDK',
127 +                    'disk_format': 'vmdk',
128 +                    'img_path': img_path,
129 +                })
130 +                image_vmdk_data['glance_properties'] = ' '.join([
131 +                    '--property vmware_disktype=sparse',
132 +                    '--property vmware_adaptertype=lsiLogic',
133 +                    '--property hypervisor_type=vmware'])
134 +                images_data['test_vm_image'] += [image_vmdk_data]
135 +            images_data['test_vm_image'] += image_data['test_vm_image']
136          else:
137              images_data = image_data
138