def _update_boot_option(self, instance): try: domain = self._compute_driver._lookup_by_name(instance['name']) except exception.NotFound: LOG.error("instance %s disappeared while update boot option" % instance['uuid']) return xml = domain.XMLDesc(0) root = etree.fromstring(xml) metadata = instance.get('metadata', None) if metadata is None: self._compute_driver.disable_boot_order_options(root, domain) self._compute_driver.set_default_boot_order(root, domain) return boot_option = None if isinstance(metadata, dict): boot_option = metadata.get('__bootDev', None) else: for item in metadata: if item['key'] == '__bootDev': boot_option = item['value'] break if boot_option is None: self._compute_driver.disable_boot_order_options(root, domain) self._compute_driver.set_default_boot_order(root, domain) return if not hw_utils.is_valid_boot_option(boot_option): return boot_option_list = boot_option.split(',') self._compute_driver.disable_boot_order_options(root, domain) self._compute_driver.update_boot_order_option(root, domain, boot_option_list)
def _update_boot_option(self, instance): try: domain = self._compute_driver._lookup_by_name(instance['name']) except exception.NotFound: LOG.error( "instance %s disappeared while update boot option" % instance['uuid']) return xml = domain.XMLDesc(0) root = etree.fromstring(xml) metadata = instance.get('metadata', None) if metadata is None: self._compute_driver.disable_boot_order_options(root, domain) self._compute_driver.set_default_boot_order(root, domain) return boot_option = None if isinstance(metadata, dict): boot_option = metadata.get('__bootDev', None) else: for item in metadata: if item['key'] == '__bootDev': boot_option = item['value'] break if boot_option is None: self._compute_driver.disable_boot_order_options(root, domain) self._compute_driver.set_default_boot_order(root, domain) return if not hw_utils.is_valid_boot_option(boot_option): return boot_option_list = boot_option.split(',') self._compute_driver.disable_boot_order_options(root, domain) self._compute_driver.update_boot_order_option(root, domain, boot_option_list)
def _update_boot_option(xml, metadata): root = etree.fromstring(xml) remove_boot_dev_options(root) remove_boot_order_options(root) set_default_boot_order(root) if metadata is None: return etree.tostring(root, pretty_print=True) boot_option = None if isinstance(metadata, dict): boot_option = metadata.get('__bootDev', None) else: for item in metadata: if item['key'] == '__bootDev': boot_option = item['value'] break if boot_option is None or not hw_utils.is_valid_boot_option(boot_option): return etree.tostring(root, pretty_print=True) boot_option_list = boot_option.split(',') remove_boot_order_options(root) update_boot_order_option(root, boot_option_list) return etree.tostring(root, pretty_print=True)