def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if parsed_args.no_deploy_image: deploy_kernel = None deploy_ramdisk = None else: deploy_kernel = 'bm-deploy-kernel' deploy_ramdisk = 'bm-deploy-ramdisk' credentials = [list(x.split(':', 1)) for x in parsed_args.credentials] kwargs = {} # Leave it up to the workflow to figure out the defaults if parsed_args.port: kwargs['ports'] = parsed_args.port nodes = baremetal.discover_and_enroll( self.app.client_manager, ip_addresses=parsed_args.ip_addresses, credentials=credentials, kernel_name=deploy_kernel, ramdisk_name=deploy_ramdisk, instance_boot_option=parsed_args.instance_boot_option, **kwargs) nodes_uuids = [node['uuid'] for node in nodes] if parsed_args.introspect: baremetal.introspect(self.app.client_manager, node_uuids=nodes_uuids, run_validations=parsed_args.run_validations, concurrency=parsed_args.concurrency) if parsed_args.provide: baremetal.provide(self.app.client_manager, node_uuids=nodes_uuids)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) nodes_config = oooutils.parse_env_file(parsed_args.env_file) parsed_args.env_file.close() if parsed_args.validate_only: return baremetal.validate_nodes(self.app.client_manager, nodes_json=nodes_config) # Look for *specific* deploy images and update the node data if # one is found. if not parsed_args.no_deploy_image: oooutils.update_nodes_deploy_data(nodes_config, http_boot=parsed_args.http_boot) nodes = baremetal.register_or_update( self.app.client_manager, nodes_json=nodes_config, instance_boot_option=parsed_args.instance_boot_option) nodes_uuids = [node['uuid'] for node in nodes] if parsed_args.introspect: baremetal.introspect(self.app.client_manager, node_uuids=nodes_uuids, run_validations=parsed_args.run_validations, concurrency=parsed_args.concurrency) if parsed_args.provide: baremetal.provide( self.app.client_manager, node_uuids=nodes_uuids, )
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if parsed_args.all_manageable: baremetal.introspect_manageable_nodes( self.app.client_manager, run_validations=parsed_args.run_validations, concurrency=parsed_args.concurrency, verbosity=oooutils.playbook_verbosity(self=self) ) else: baremetal.introspect( self.app.client_manager, node_uuids=parsed_args.node_uuids, run_validations=parsed_args.run_validations, concurrency=parsed_args.concurrency, verbosity=oooutils.playbook_verbosity(self=self) ) # NOTE(cloudnull): This is using the old provide function, in a future # release this may be ported to a standalone playbook if parsed_args.provide: if parsed_args.node_uuids: baremetal.provide( self.app.client_manager, node_uuids=parsed_args.node_uuids, ) else: baremetal.provide_manageable_nodes( clients=self.app.client_manager, verbosity=oooutils.playbook_verbosity(self=self) )
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) nodes_config = oooutils.parse_env_file(parsed_args.env_file) if parsed_args.validate_only: return baremetal.validate_nodes(self.app.client_manager, nodes_json=nodes_config) if parsed_args.no_deploy_image: deploy_kernel = None deploy_ramdisk = None else: deploy_kernel = 'bm-deploy-kernel' deploy_ramdisk = 'bm-deploy-ramdisk' nodes = baremetal.register_or_update( self.app.client_manager, nodes_json=nodes_config, kernel_name=deploy_kernel, ramdisk_name=deploy_ramdisk, instance_boot_option=parsed_args.instance_boot_option) nodes_uuids = [node['uuid'] for node in nodes] if parsed_args.introspect: baremetal.introspect(self.app.client_manager, node_uuids=nodes_uuids, run_validations=parsed_args.run_validations) if parsed_args.provide: baremetal.provide( self.app.client_manager, node_uuids=nodes_uuids, )
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) nodes_config = oooutils.parse_env_file(parsed_args.env_file) queue_name = str(uuid.uuid4()) if parsed_args.no_deploy_image: deploy_kernel = None deploy_ramdisk = None else: deploy_kernel = 'bm-deploy-kernel' deploy_ramdisk = 'bm-deploy-ramdisk' nodes = baremetal.register_or_update( self.app.client_manager, nodes_json=nodes_config, queue_name=queue_name, kernel_name=deploy_kernel, ramdisk_name=deploy_ramdisk, instance_boot_option=parsed_args.instance_boot_option ) nodes_uuids = [node['uuid'] for node in nodes] if parsed_args.introspect: baremetal.introspect(self.app.client_manager, node_uuids=nodes_uuids, queue_name=queue_name) if parsed_args.provide: baremetal.provide(self.app.client_manager, node_uuids=nodes_uuids, queue_name=queue_name)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if parsed_args.node_uuids: baremetal.provide(self.app.client_manager, node_uuids=parsed_args.node_uuids) else: baremetal.provide_manageable_nodes(self.app.client_manager)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if parsed_args.json or parsed_args.file_in.name.endswith('.json'): nodes_config = json.load(parsed_args.file_in) elif parsed_args.csv or parsed_args.file_in.name.endswith('.csv'): nodes_config = _csv_to_nodes_dict(parsed_args.file_in) elif parsed_args.file_in.name.endswith('.yaml'): nodes_config = yaml.safe_load(parsed_args.file_in) else: raise exceptions.InvalidConfiguration( _("Invalid file extension for %s, must be json, yaml or csv") % parsed_args.file_in.name) if 'nodes' in nodes_config: nodes_config = nodes_config['nodes'] client = self.app.client_manager.baremetal if parsed_args.initial_state == "enroll": api_version = client.http_client.os_ironic_api_version if [int(part) for part in api_version.split('.')] < [1, 11]: raise exceptions.InvalidConfiguration( _("OS_BAREMETAL_API_VERSION must be >=1.11 for use of " "'enroll' provision state; currently %s") % api_version) # NOTE (dprince) move this to tripleo-common? for node in nodes_config: caps = node.get('capabilities', {}) if not isinstance(caps, dict): caps = utils.capabilities_to_dict(caps) caps.setdefault('boot_option', parsed_args.instance_boot_option) node['capabilities'] = caps queue_name = str(uuid.uuid4()) if parsed_args.no_deploy_image: deploy_kernel = None deploy_ramdisk = None else: deploy_kernel = parsed_args.deploy_kernel deploy_ramdisk = parsed_args.deploy_ramdisk nodes = baremetal.register_or_update(self.app.client_manager, nodes_json=nodes_config, queue_name=queue_name, kernel_name=deploy_kernel, ramdisk_name=deploy_ramdisk) node_uuids = [node['uuid'] for node in nodes] if parsed_args.initial_state == "available": baremetal.provide(self.app.client_manager, node_uuids=node_uuids, queue_name=queue_name)
def test_provide_success(self): self.websocket.wait_for_messages.return_value = self.message_success baremetal.provide(self.app.client_manager, node_uuids=[]) self.workflow.executions.create.assert_called_once_with( 'tripleo.baremetal.v1.provide', workflow_input={ 'node_uuids': [], })
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) queue_name = str(uuid.uuid4()) if parsed_args.node_uuids: baremetal.provide(self.app.client_manager, node_uuids=parsed_args.node_uuids, queue_name=queue_name) else: baremetal.provide_manageable_nodes(self.app.client_manager, queue_name=queue_name)
def test_provide_success(self): self.websocket.wait_for_message.return_value = { "status": "SUCCESS", } baremetal.provide(self.app.client_manager, node_uuids=[], queue_name="QUEUE_NAME") self.workflow.executions.create.assert_called_once_with( 'tripleo.baremetal.v1.provide', workflow_input={ 'node_uuids': [], 'queue_name': "QUEUE_NAME" })
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) file_type = None if parsed_args.json: file_type = 'json' elif parsed_args.csv: file_type = 'csv' nodes_config = utils.parse_env_file(parsed_args.file_in, file_type) client = self.app.client_manager.baremetal if parsed_args.initial_state == "enroll": api_version = client.http_client.os_ironic_api_version if [int(part) for part in api_version.split('.')] < [1, 11]: raise exceptions.InvalidConfiguration( _("OS_BAREMETAL_API_VERSION must be >=1.11 for use of " "'enroll' provision state; currently %s") % api_version) queue_name = str(uuid.uuid4()) if parsed_args.no_deploy_image: deploy_kernel = None deploy_ramdisk = None else: deploy_kernel = parsed_args.deploy_kernel deploy_ramdisk = parsed_args.deploy_ramdisk nodes = baremetal.register_or_update( self.app.client_manager, nodes_json=nodes_config, queue_name=queue_name, kernel_name=deploy_kernel, ramdisk_name=deploy_ramdisk, instance_boot_option=parsed_args.instance_boot_option ) if parsed_args.initial_state == "available": # NOTE(dtantsur): newly enrolled nodes state is reported as # "enroll" from the workflow even though it's actually "manageable" # because the node list is built before "manage" action is run. node_uuids = [node['uuid'] for node in nodes if node['provision_state'] in {'manageable', 'enroll'}] baremetal.provide(self.app.client_manager, node_uuids=node_uuids, queue_name=queue_name)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) nodes_config = oooutils.parse_env_file(parsed_args.env_file) parsed_args.env_file.close() if parsed_args.validate_only: return baremetal.validate_nodes(self.app.client_manager, nodes_json=nodes_config) # Look for *specific* deploy images and update the node data if # one is found. if not parsed_args.no_deploy_image: oooutils.update_nodes_deploy_data(nodes_config, http_boot=parsed_args.http_boot) nodes = baremetal.register_or_update( self.app.client_manager, nodes_json=nodes_config, instance_boot_option=parsed_args.instance_boot_option ) nodes_uuids = [node.uuid for node in nodes] if parsed_args.introspect: extra_vars = { "node_uuids": nodes_uuids, "run_validations": parsed_args.run_validations, "concurrency": parsed_args.concurrency, } with oooutils.TempDirs() as tmp: oooutils.run_ansible_playbook( playbook='cli-baremetal-introspect.yaml', inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, verbosity=oooutils.playbook_verbosity(self=self), extra_vars=extra_vars ) if parsed_args.provide: baremetal.provide( verbosity=oooutils.playbook_verbosity(self=self), node_uuids=nodes_uuids )
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) file_type = None if parsed_args.json: file_type = 'json' elif parsed_args.csv: file_type = 'csv' nodes_config = utils.parse_env_file(parsed_args.file_in, file_type) client = self.app.client_manager.baremetal if parsed_args.initial_state == "enroll": api_version = client.http_client.os_ironic_api_version if [int(part) for part in api_version.split('.')] < [1, 11]: raise exceptions.InvalidConfiguration( _("OS_BAREMETAL_API_VERSION must be >=1.11 for use of " "'enroll' provision state; currently %s") % api_version) queue_name = str(uuid.uuid4()) if parsed_args.no_deploy_image: deploy_kernel = None deploy_ramdisk = None else: deploy_kernel = parsed_args.deploy_kernel deploy_ramdisk = parsed_args.deploy_ramdisk nodes = baremetal.register_or_update( self.app.client_manager, nodes_json=nodes_config, queue_name=queue_name, kernel_name=deploy_kernel, ramdisk_name=deploy_ramdisk, instance_boot_option=parsed_args.instance_boot_option) node_uuids = [node['uuid'] for node in nodes] if parsed_args.initial_state == "available": baremetal.provide(self.app.client_manager, node_uuids=node_uuids, queue_name=queue_name)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) nodes = parsed_args.node_uuids if nodes: baremetal.clean_nodes( node_uuids=parsed_args.node_uuids, verbosity=oooutils.playbook_verbosity(self=self)) else: baremetal.clean_manageable_nodes( clients=self.app.client_manager, verbosity=oooutils.playbook_verbosity(self=self)) if parsed_args.provide: if nodes: baremetal.provide( self.app.client_manager, node_uuids=nodes, ) else: baremetal.provide_manageable_nodes(self.app.client_manager)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) nodes_config = oooutils.parse_env_file(parsed_args.env_file) if parsed_args.validate_only: return baremetal.validate_nodes(self.app.client_manager, nodes_json=nodes_config) if parsed_args.no_deploy_image: deploy_kernel = None deploy_ramdisk = None else: deploy_kernel = oooutils.deploy_kernel()[0] deploy_ramdisk = oooutils.deploy_ramdisk()[0] # Look for *specific* deploy images and update the node data if # one is found. oooutils.update_nodes_deploy_data(self.app.client_manager.image, nodes_config) nodes = baremetal.register_or_update( self.app.client_manager, nodes_json=nodes_config, kernel_name=deploy_kernel, ramdisk_name=deploy_ramdisk, instance_boot_option=parsed_args.instance_boot_option) nodes_uuids = [node['uuid'] for node in nodes] if parsed_args.introspect: baremetal.introspect(self.app.client_manager, node_uuids=nodes_uuids, run_validations=parsed_args.run_validations) if parsed_args.provide: baremetal.provide( self.app.client_manager, node_uuids=nodes_uuids, )
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) nodes = parsed_args.node_uuids if nodes: baremetal.introspect(self.app.client_manager, node_uuids=nodes, run_validations=parsed_args.run_validations) else: baremetal.introspect_manageable_nodes( self.app.client_manager, run_validations=parsed_args.run_validations) if parsed_args.provide: if nodes: baremetal.provide( self.app.client_manager, node_uuids=nodes, ) else: baremetal.provide_manageable_nodes(self.app.client_manager)
def test_provide_success(self): baremetal.provide(self.app.client_manager, node_uuids=[])