def unassign_configuration(self, flavor, configuration_id): LOG.debug("Unassigning the configuration from the instance %s" % self.id) LOG.debug("Unassigning the configuration id %s" % self.configuration.id) def _find_item(items, item_name): LOG.debug("items: %s" % items) LOG.debug("item_name: %s" % item_name) # find the item in the list for i in items: if i[0] == item_name: return i def _convert_value(value): # split the value and the size e.g. 512M=['512','M'] pattern = re.compile('(\d+)(\w+)') split = pattern.findall(value) if len(split) < 2: return value digits, size = split conversions = { 'K': 1024, 'M': 1024 ** 2, 'G': 1024 ** 3, } return str(int(digits) * conversions[size]) default_config = self._render_config_dict(flavor) args = { "ds_manager": self.ds_version.manager, "config": default_config, } LOG.debug("default %(ds_manager)s section: %(config)s" % args) LOG.debug("self.configuration: %s" % self.configuration.__dict__) overrides = {} config_items = KSC_Configuration.load_items(self.context, configuration_id) for item in config_items: LOG.debug("finding item(%s)" % item.__dict__) try: key, val = _find_item(default_config, item.configuration_key) except TypeError: val = None #restart_required = inst_models.InstanceTasks.RESTART_REQUIRED #self.update_db(task_status=restart_required) if val: overrides[item.configuration_key] = _convert_value(val) LOG.debug("setting the default variables in dict: %s" % overrides) self.update_overrides(overrides, remove=True) self.update_db(configuration_id=None) config_group = KSC_Configuration.load(self.context , configuration_id) KSC_Configuration.delete(self.context, config_group)