def execute_clean_step(self, task, step): """Execute a clean step asynchronously on the agent. :param task: a TaskManager object containing the node :param step: a clean step dictionary to execute :returns: states.CLEANWAIT to signify the step will be completed async """ return deploy_utils.agent_execute_clean_step(task, step)
def execute_clean_step(self, task, step): """Execute a clean step asynchronously on the agent. :param task: a TaskManager object containing the node :param step: a clean step dictionary to execute :returns: states.CLEANING to signify the step will be completed async """ return deploy_utils.agent_execute_clean_step(task, step)
def delete_configuration(self, task): """Deletes RAID configuration on the given node. :param task: a TaskManager instance. :returns: states.CLEANWAIT if operation was successfully invoked """ LOG.debug("Agent RAID delete_configuration invoked for node %s.", task.node.uuid) step = task.node.clean_step return deploy_utils.agent_execute_clean_step(task, step)
def execute_clean_step(self, task, step): """Execute a clean step asynchronously on the agent. :param task: a TaskManager object containing the node :param step: a clean step dictionary to execute :raises: NodeCleaningFailure if the agent does not return a command status :returns: states.CLEANWAIT to signify the step will be completed async """ return deploy_utils.agent_execute_clean_step(task, step)
def execute_clean_step(self, task, step): """Execute a clean step asynchronously on the agent. :param task: a TaskManager object containing the node :param step: a clean step dictionary to execute :raises: NodeCleaningFailure if the agent does not return a command status :returns: states.CLEANING to signify the step will be completed async """ return deploy_utils.agent_execute_clean_step(task, step)
def create_configuration(self, task, create_root_volume=True, create_nonroot_volumes=True): """Create a RAID configuration on a bare metal using agent ramdisk. This method creates a RAID configuration on the given node. :param task: a TaskManager instance. :param create_root_volume: If True, a root volume is created during RAID configuration. Otherwise, no root volume is created. Default is True. :param create_nonroot_volumes: If True, non-root volumes are created. If False, no non-root volumes are created. Default is True. :returns: states.CLEANWAIT if operation was successfully invoked. :raises: MissingParameterValue, if node.target_raid_config is missing or was found to be empty after skipping root volume and/or non-root volumes. """ node = task.node LOG.debug( "Agent RAID create_configuration invoked for node %(node)s " "with create_root_volume=%(create_root_volume)s and " "create_nonroot_volumes=%(create_nonroot_volumes)s with the " "following target_raid_config: %(target_raid_config)s.", { 'node': node.uuid, 'create_root_volume': create_root_volume, 'create_nonroot_volumes': create_nonroot_volumes, 'target_raid_config': node.target_raid_config }) target_raid_config = raid.filter_target_raid_config( node, create_root_volume=create_root_volume, create_nonroot_volumes=create_nonroot_volumes) # Rewrite it back to the node object, but no need to save it as # we need to just send this to the agent ramdisk. node.driver_internal_info['target_raid_config'] = target_raid_config LOG.debug( "Calling agent RAID create_configuration for node %(node)s " "with the following target RAID configuration: %(target)s", { 'node': node.uuid, 'target': target_raid_config }) step = node.clean_step return deploy_utils.agent_execute_clean_step(task, step)
def update_firmware_sum(self, task, **kwargs): """Updates the firmware using Smart Update Manager (SUM). :param task: a TaskManager object. :raises: NodeCleaningFailure, on failure to execute step. """ node = task.node # The arguments are validated and sent to the ProliantHardwareManager # to perform SUM based firmware update clean step. firmware_processor.get_and_validate_firmware_image_info(kwargs, 'sum') url = kwargs['url'] if urlparse.urlparse(url).scheme == 'swift': url = firmware_processor.get_swift_url(urlparse.urlparse(url)) node.clean_step['args']['url'] = url step = node.clean_step return deploy_utils.agent_execute_clean_step(task, step)
def create_configuration(self, task, create_root_volume=True, create_nonroot_volumes=True): """Create a RAID configuration on a bare metal using agent ramdisk. This method creates a RAID configuration on the given node. :param task: a TaskManager instance. :param create_root_volume: If True, a root volume is created during RAID configuration. Otherwise, no root volume is created. Default is True. :param create_nonroot_volumes: If True, non-root volumes are created. If False, no non-root volumes are created. Default is True. :returns: states.CLEANWAIT if operation was successfully invoked. :raises: MissingParameterValue, if node.target_raid_config is missing or was found to be empty after skipping root volume and/or non-root volumes. """ node = task.node LOG.debug( "Agent RAID create_configuration invoked for node %(node)s " "with create_root_volume=%(create_root_volume)s and " "create_nonroot_volumes=%(create_nonroot_volumes)s with the " "following target_raid_config: %(target_raid_config)s.", { 'node': node.uuid, 'create_root_volume': create_root_volume, 'create_nonroot_volumes': create_nonroot_volumes, 'target_raid_config': node.target_raid_config }) if not node.target_raid_config: raise exception.MissingParameterValue( _("Node %s has no target RAID configuration.") % node.uuid) target_raid_config = node.target_raid_config.copy() error_msg_list = [] if not create_root_volume: target_raid_config['logical_disks'] = [ x for x in target_raid_config['logical_disks'] if not x.get('is_root_volume') ] error_msg_list.append(_("skipping root volume")) if not create_nonroot_volumes: error_msg_list.append(_("skipping non-root volumes")) target_raid_config['logical_disks'] = [ x for x in target_raid_config['logical_disks'] if x.get('is_root_volume') ] if not target_raid_config['logical_disks']: error_msg = _(' and ').join(error_msg_list) raise exception.MissingParameterValue( _("Node %(node)s has empty target RAID configuration " "after %(msg)s.") % { 'node': node.uuid, 'msg': error_msg }) # Rewrite it back to the node object, but no need to save it as # we need to just send this to the agent ramdisk. node.driver_internal_info['target_raid_config'] = target_raid_config LOG.debug( "Calling agent RAID create_configuration for node %(node)s " "with the following target RAID configuration: %(target)s", { 'node': node.uuid, 'target': target_raid_config }) step = node.clean_step return deploy_utils.agent_execute_clean_step(task, step)
def create_configuration(self, task, create_root_volume=True, create_nonroot_volumes=True): """Create a RAID configuration on a bare metal using agent ramdisk. This method creates a RAID configuration on the given node. :param task: a TaskManager instance. :param create_root_volume: If True, a root volume is created during RAID configuration. Otherwise, no root volume is created. Default is True. :param create_nonroot_volumes: If True, non-root volumes are created. If False, no non-root volumes are created. Default is True. :returns: states.CLEANWAIT if operation was successfully invoked. :raises: MissingParameterValue, if node.target_raid_config is missing or was found to be empty after skipping root volume and/or non-root volumes. """ node = task.node LOG.debug("Agent RAID create_configuration invoked for node %(node)s " "with create_root_volume=%(create_root_volume)s and " "create_nonroot_volumes=%(create_nonroot_volumes)s with the " "following target_raid_config: %(target_raid_config)s.", {'node': node.uuid, 'create_root_volume': create_root_volume, 'create_nonroot_volumes': create_nonroot_volumes, 'target_raid_config': node.target_raid_config}) if not node.target_raid_config: raise exception.MissingParameterValue( _("Node %s has no target RAID configuration.") % node.uuid) target_raid_config = node.target_raid_config.copy() error_msg_list = [] if not create_root_volume: target_raid_config['logical_disks'] = [ x for x in target_raid_config['logical_disks'] if not x.get('is_root_volume')] error_msg_list.append(_("skipping root volume")) if not create_nonroot_volumes: error_msg_list.append(_("skipping non-root volumes")) target_raid_config['logical_disks'] = [ x for x in target_raid_config['logical_disks'] if x.get('is_root_volume')] if not target_raid_config['logical_disks']: error_msg = _(' and ').join(error_msg_list) raise exception.MissingParameterValue( _("Node %(node)s has empty target RAID configuration " "after %(msg)s.") % {'node': node.uuid, 'msg': error_msg}) # Rewrite it back to the node object, but no need to save it as # we need to just send this to the agent ramdisk. node.driver_internal_info['target_raid_config'] = target_raid_config LOG.debug("Calling agent RAID create_configuration for node %(node)s " "with the following target RAID configuration: %(target)s", {'node': node.uuid, 'target': target_raid_config}) step = node.clean_step return deploy_utils.agent_execute_clean_step(task, step)