From: Stanislaw Kardach Date: Tue, 15 Mar 2016 15:01:51 +0100 Subject: [PATCH] direct kernel boot for cirros --- nailgun/nailgun/orchestrator/base_serializers.py | 16 +++-- .../nailgun/orchestrator/deployment_serializers.py | 68 ++++++++++++++++------ 2 files changed, 61 insertions(+), 23 deletions(-) diff --git a/nailgun/nailgun/orchestrator/base_serializers.py b/nailgun/nailgun/orchestrator/base_serializers.py index 0643635..a2f43b0 100644 --- a/nailgun/nailgun/orchestrator/base_serializers.py +++ b/nailgun/nailgun/orchestrator/base_serializers.py @@ -145,12 +145,16 @@ class MuranoMetadataSerializerMixin(object): def inject_murano_settings(self, image_data): """Adds murano metadata to the test image""" - test_vm_image = image_data['test_vm_image'] - existing_properties = test_vm_image['glance_properties'] - murano_data = ' '.join(["""--property murano_image_info='{"title":""" - """ "Murano Demo", "type": "cirros.demo"}'"""]) - test_vm_image['glance_properties'] = existing_properties + murano_data - return {'test_vm_image': test_vm_image} + test_vm_images = [] + for test_vm_image in image_data['test_vm_image']: + existing_properties = test_vm_image['glance_properties'] + murano_data = ' '.join( + ["""--property murano_image_info='{"title":""" + """ "Murano Demo", "type": "cirros.demo"}'"""]) + test_vm_image['glance_properties'] = existing_properties + \ + murano_data + test_vm_images += [test_vm_image] + return {'test_vm_image': test_vm_images} class VmwareDeploymentSerializerMixin(object): diff --git a/nailgun/nailgun/orchestrator/deployment_serializers.py b/nailgun/nailgun/orchestrator/deployment_serializers.py index 6bb7990..62fb08b 100644 --- a/nailgun/nailgun/orchestrator/deployment_serializers.py +++ b/nailgun/nailgun/orchestrator/deployment_serializers.py @@ -283,6 +283,9 @@ class DeploymentMultinodeSerializer(object): return {'glance': {'image_cache_max_size': image_cache_max_size}} def generate_test_vm_image_data(self, node): + images = [] + # By default always prepare the disk image + # Instantiate all default values in dict. image_data = { 'container_format': 'bare', @@ -306,8 +309,8 @@ class DeploymentMultinodeSerializer(object): arch = "x86_64" elif arch == "arm64": arch = "aarch64" - image_data['img_path'] = '{0}cirros-{1}-disk.img'.format(img_dir, - arch) + image_data['img_path'] = \ + '{0}cirros-{1}-disk.img'.format(img_dir, arch) glance_properties = [] @@ -322,8 +325,38 @@ class DeploymentMultinodeSerializer(object): glance_properties.append('--property hypervisor_type=vmware') image_data['glance_properties'] = ' '.join(glance_properties) + images += [image_data] + + # Now for aarch64 add also kernel and initrd because we direct + # kernel boot is used then + if arch == 'aarch64': + image_data['glance_properties'] += \ + ' --property os_command_line=\'root=/dev/vda1 rw rootwait' + \ + ' console=tty0 console=ttyS0 console=ttyAMA0\'' + \ + ' --property hw_video_model=vga' + kernel_data = { + 'container_format': 'aki', + 'public': 'true', + 'disk_format': 'aki', + 'img_name': 'TestVM-kernel', + 'img_path': '{0}cirros-{1}-kernel'.format(img_dir, arch), + 'os_name': 'cirros', + 'min_ram': 128, + 'glance_properties': '', + } + initrd_data = { + 'container_format': 'ari', + 'public': 'true', + 'disk_format': 'ari', + 'img_name': 'TestVM-initramfs', + 'img_path': '{0}cirros-{1}-initramfs'.format(img_dir, arch), + 'os_name': 'cirros', + 'min_ram': 128, + 'glance_properties': '', + } + images += [kernel_data, initrd_data] - return {'test_vm_image': image_data} + return {'test_vm_image': images} @classmethod def get_net_provider_serializer(cls, cluster): @@ -522,20 +555,21 @@ class DeploymentHASerializer61(DeploymentHASerializer, images_data['test_vm_image'] = [] if attrs.get('editable', {}).get('common', {}). \ get('use_vcenter', {}).get('value') is True: - image_vmdk_data = deepcopy(image_data['test_vm_image']) - img_path = image_vmdk_data['img_path']. \ - replace('x86_64-disk.img', 'i386-disk.vmdk') - image_vmdk_data.update({ - 'img_name': 'TestVM-VMDK', - 'disk_format': 'vmdk', - 'img_path': img_path, - }) - image_vmdk_data['glance_properties'] = ' '.join([ - '--property vmware_disktype=sparse', - '--property vmware_adaptertype=lsiLogic', - '--property hypervisor_type=vmware']) - images_data['test_vm_image'].append(image_vmdk_data) - images_data['test_vm_image'].append(image_data['test_vm_image']) + images_vmdk_data = deepcopy(image_data['test_vm_image']) + for image_vmdk_data in images_vmdk_data: + img_path = image_vmdk_data['img_path']. \ + replace('x86_64-disk.img', 'i386-disk.vmdk') + image_vmdk_data.update({ + 'img_name': 'TestVM-VMDK', + 'disk_format': 'vmdk', + 'img_path': img_path, + }) + image_vmdk_data['glance_properties'] = ' '.join([ + '--property vmware_disktype=sparse', + '--property vmware_adaptertype=lsiLogic', + '--property hypervisor_type=vmware']) + images_data['test_vm_image'] += [image_vmdk_data] + images_data['test_vm_image'] += image_data['test_vm_image'] else: images_data = image_data