From f91248d54630994d622dc1c2f772e88c046d3091 Mon Sep 17 00:00:00 2001 From: Vladimir Khlyunev Date: Fri, 29 Mar 2019 13:13:36 +0400 Subject: [PATCH] Add ability to disable bootmenu parameter Right now there are some kind of bug that prevents VM from booting when running at virtualized slave on latest xenial qemu packages & kernel. Disabling whole bootmenu parameter hepls. Change-Id: I838ee5cb69babc37f19093b2a378e984fcc0b958 --- devops/migrations/0002_add_field_created.py | 2 ++ devops/models/environment.py | 10 +++++++--- devops/models/node.py | 13 +++++++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/devops/migrations/0002_add_field_created.py b/devops/migrations/0002_add_field_created.py index 87557f7e..b0ccb9d9 100644 --- a/devops/migrations/0002_add_field_created.py +++ b/devops/migrations/0002_add_field_created.py @@ -138,6 +138,8 @@ class Migration(SchemaMigration): 'environment': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['devops.Environment']", 'null': 'True'}), + 'enable_bootmenu': ('django.db.models.fields.BooleanField', [], + {'default': 'True'}), 'has_vnc': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'hypervisor': ('django.db.models.fields.CharField', [], diff --git a/devops/models/environment.py b/devops/models/environment.py index 383a6f33..50a3b3ab 100644 --- a/devops/models/environment.py +++ b/devops/models/environment.py @@ -86,14 +86,16 @@ class Environment(DriverModel): def get_nodes(self, *args, **kwargs): return self.node_set.filter(*args, **kwargs) - def add_node(self, memory, name, vcpu=1, boot=None, role='fuel_slave'): + def add_node(self, memory, name, vcpu=1, boot=None, role='fuel_slave', + enable_bootmenu=True): return Node.node_create( name=name, memory=memory, vcpu=vcpu, environment=self, role=role, - boot=boot) + boot=boot, + enable_bootmenu=enable_bootmenu) def add_empty_volume(self, node, name, capacity, device='disk', bus='virtio', format='qcow2', multipath_count=0): @@ -378,7 +380,9 @@ class Environment(DriverModel): role=config_node['role'], memory=int(node_params['memory']), vcpu=int(node_params['vcpu']), - boot=node_params['boot']) + boot=node_params['boot'], + enable_bootmenu=node_params.get('enable_bootmenu', True) + ) self.create_interfaces(node_params['interfaces'], node) diff --git a/devops/models/node.py b/devops/models/node.py index fcbaf772..e301781a 100644 --- a/devops/models/node.py +++ b/devops/models/node.py @@ -49,6 +49,7 @@ class Node(DriverModel): os_type = choices('hvm') architecture = choices('x86_64', 'i686') boot = models.CharField(max_length=255, null=False, default=json.dumps([])) + enable_bootmenu = models.BooleanField(null=False, default=True) metadata = models.CharField(max_length=255, null=True) role = models.CharField(max_length=255, null=True) vcpu = models.PositiveSmallIntegerField(null=False, default=1) @@ -98,8 +99,10 @@ class Node(DriverModel): :returns: Boolean """ - return (self.is_admin and self.disk_devices.filter(bus='usb')) or \ - (self.is_slave and not self.pxe_boot_interface_is_eth0) + return self.enable_bootmenu and ( + (self.is_admin and self.disk_devices.filter(bus='usb')) or + (self.is_slave and not self.pxe_boot_interface_is_eth0) + ) @property def on_second_admin_network(self): @@ -516,7 +519,8 @@ class Node(DriverModel): @classmethod def node_create(cls, name, environment=None, role=None, vcpu=1, memory=1024, has_vnc=True, metadata=None, hypervisor='kvm', - os_type='hvm', architecture='x86_64', boot=None): + os_type='hvm', architecture='x86_64', boot=None, + enable_bootmenu=True): """Create node :rtype : Node @@ -527,6 +531,7 @@ class Node(DriverModel): name=name, environment=environment, role=role, vcpu=vcpu, memory=memory, has_vnc=has_vnc, metadata=metadata, hypervisor=hypervisor, - os_type=os_type, architecture=architecture, boot=json.dumps(boot) + os_type=os_type, architecture=architecture, boot=json.dumps(boot), + enable_bootmenu=enable_bootmenu ) return node