Merge "Rebase: deploy related patch series."
[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 | 68 ++++++++++++++++------
8  2 files changed, 61 insertions(+), 23 deletions(-)
9
10 diff --git a/nailgun/nailgun/orchestrator/base_serializers.py b/nailgun/nailgun/orchestrator/base_serializers.py
11 index 0643635..a2f43b0 100644
12 --- a/nailgun/nailgun/orchestrator/base_serializers.py
13 +++ b/nailgun/nailgun/orchestrator/base_serializers.py
14 @@ -145,12 +145,16 @@ class MuranoMetadataSerializerMixin(object):
15  
16      def inject_murano_settings(self, image_data):
17          """Adds murano metadata to the test image"""
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 6bb7990..62fb08b 100644
39 --- a/nailgun/nailgun/orchestrator/deployment_serializers.py
40 +++ b/nailgun/nailgun/orchestrator/deployment_serializers.py
41 @@ -283,6 +283,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 @@ -306,8 +309,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 @@ -322,8 +325,38 @@ class DeploymentMultinodeSerializer(object):
63              glance_properties.append('--property hypervisor_type=vmware')
64  
65          image_data['glance_properties'] = ' '.join(glance_properties)
66 +        images += [image_data]
67 +
68 +        # Now for aarch64 add also kernel and initrd because we direct
69 +        # kernel boot is used then
70 +        if arch == 'aarch64':
71 +            image_data['glance_properties'] += \
72 +                ' --property os_command_line=\'root=/dev/vda1 rw rootwait' + \
73 +                ' console=tty0 console=ttyS0 console=ttyAMA0\'' + \
74 +                ' --property hw_video_model=vga'
75 +            kernel_data = {
76 +                'container_format': 'aki',
77 +                'public': 'true',
78 +                'disk_format': 'aki',
79 +                'img_name': 'TestVM-kernel',
80 +                'img_path': '{0}cirros-{1}-kernel'.format(img_dir, arch),
81 +                'os_name': 'cirros',
82 +                'min_ram': 128,
83 +                'glance_properties': '',
84 +            }
85 +            initrd_data = {
86 +                'container_format': 'ari',
87 +                'public': 'true',
88 +                'disk_format': 'ari',
89 +                'img_name': 'TestVM-initramfs',
90 +                'img_path': '{0}cirros-{1}-initramfs'.format(img_dir, arch),
91 +                'os_name': 'cirros',
92 +                'min_ram': 128,
93 +                'glance_properties': '',
94 +            }
95 +            images += [kernel_data, initrd_data]
96  
97 -        return {'test_vm_image': image_data}
98 +        return {'test_vm_image': images}
99  
100      @classmethod
101      def get_net_provider_serializer(cls, cluster):
102 @@ -522,20 +555,21 @@ class DeploymentHASerializer61(DeploymentHASerializer,
103          images_data['test_vm_image'] = []
104          if attrs.get('editable', {}).get('common', {}). \
105             get('use_vcenter', {}).get('value') is True:
106 -            image_vmdk_data = deepcopy(image_data['test_vm_image'])
107 -            img_path = image_vmdk_data['img_path']. \
108 -                replace('x86_64-disk.img', 'i386-disk.vmdk')
109 -            image_vmdk_data.update({
110 -                'img_name': 'TestVM-VMDK',
111 -                'disk_format': 'vmdk',
112 -                'img_path': img_path,
113 -            })
114 -            image_vmdk_data['glance_properties'] = ' '.join([
115 -                '--property vmware_disktype=sparse',
116 -                '--property vmware_adaptertype=lsiLogic',
117 -                '--property hypervisor_type=vmware'])
118 -            images_data['test_vm_image'].append(image_vmdk_data)
119 -            images_data['test_vm_image'].append(image_data['test_vm_image'])
120 +            images_vmdk_data = deepcopy(image_data['test_vm_image'])
121 +            for image_vmdk_data in images_vmdk_data:
122 +                img_path = image_vmdk_data['img_path']. \
123 +                    replace('x86_64-disk.img', 'i386-disk.vmdk')
124 +                image_vmdk_data.update({
125 +                    'img_name': 'TestVM-VMDK',
126 +                    'disk_format': 'vmdk',
127 +                    'img_path': img_path,
128 +                })
129 +                image_vmdk_data['glance_properties'] = ' '.join([
130 +                    '--property vmware_disktype=sparse',
131 +                    '--property vmware_adaptertype=lsiLogic',
132 +                    '--property hypervisor_type=vmware'])
133 +                images_data['test_vm_image'] += [image_vmdk_data]
134 +            images_data['test_vm_image'] += image_data['test_vm_image']
135          else:
136              images_data = image_data
137