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
This commit is contained in:
Vladimir Khlyunev 2019-03-29 13:13:36 +04:00
parent 17b805acaf
commit db04c122fd
4 changed files with 15 additions and 6 deletions

View File

@ -313,7 +313,7 @@ class LibvirtXMLBuilder(object):
if self.driver.reboot_timeout: if self.driver.reboot_timeout:
node_xml.bios(rebootTimeout='{0}'.format( node_xml.bios(rebootTimeout='{0}'.format(
self.driver.reboot_timeout)) self.driver.reboot_timeout))
if node.should_enable_boot_menu: if node.enable_bootmenu and node.should_enable_boot_menu:
node_xml.bootmenu(enable='yes', timeout='3000') node_xml.bootmenu(enable='yes', timeout='3000')
with node_xml.devices: with node_xml.devices:

View File

@ -138,6 +138,8 @@ class Migration(SchemaMigration):
'environment': ('django.db.models.fields.related.ForeignKey', [], 'environment': ('django.db.models.fields.related.ForeignKey', [],
{'to': u"orm['devops.Environment']", {'to': u"orm['devops.Environment']",
'null': 'True'}), 'null': 'True'}),
'enable_bootmenu': ('django.db.models.fields.BooleanField', [],
{'default': 'True'}),
'has_vnc': ('django.db.models.fields.BooleanField', [], 'has_vnc': ('django.db.models.fields.BooleanField', [],
{'default': 'True'}), {'default': 'True'}),
'hypervisor': ('django.db.models.fields.CharField', [], 'hypervisor': ('django.db.models.fields.CharField', [],

View File

@ -86,14 +86,16 @@ class Environment(DriverModel):
def get_nodes(self, *args, **kwargs): def get_nodes(self, *args, **kwargs):
return self.node_set.filter(*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( return Node.node_create(
name=name, name=name,
memory=memory, memory=memory,
vcpu=vcpu, vcpu=vcpu,
environment=self, environment=self,
role=role, role=role,
boot=boot) boot=boot,
enable_bootmenu=enable_bootmenu)
def add_empty_volume(self, node, name, capacity, device='disk', def add_empty_volume(self, node, name, capacity, device='disk',
bus='virtio', format='qcow2', multipath_count=0): bus='virtio', format='qcow2', multipath_count=0):
@ -378,7 +380,9 @@ class Environment(DriverModel):
role=config_node['role'], role=config_node['role'],
memory=int(node_params['memory']), memory=int(node_params['memory']),
vcpu=int(node_params['vcpu']), 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) self.create_interfaces(node_params['interfaces'], node)

View File

@ -49,6 +49,7 @@ class Node(DriverModel):
os_type = choices('hvm') os_type = choices('hvm')
architecture = choices('x86_64', 'i686') architecture = choices('x86_64', 'i686')
boot = models.CharField(max_length=255, null=False, default=json.dumps([])) 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) metadata = models.CharField(max_length=255, null=True)
role = models.CharField(max_length=255, null=True) role = models.CharField(max_length=255, null=True)
vcpu = models.PositiveSmallIntegerField(null=False, default=1) vcpu = models.PositiveSmallIntegerField(null=False, default=1)
@ -516,7 +517,8 @@ class Node(DriverModel):
@classmethod @classmethod
def node_create(cls, name, environment=None, role=None, vcpu=1, def node_create(cls, name, environment=None, role=None, vcpu=1,
memory=1024, has_vnc=True, metadata=None, hypervisor='kvm', 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 """Create node
:rtype : Node :rtype : Node
@ -527,6 +529,7 @@ class Node(DriverModel):
name=name, environment=environment, name=name, environment=environment,
role=role, vcpu=vcpu, memory=memory, role=role, vcpu=vcpu, memory=memory,
has_vnc=has_vnc, metadata=metadata, hypervisor=hypervisor, 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 return node