def main(): args = parse_arguments() LoggingHelper.configure_logging(args.logging_level) ironic_client = IronicHelper.get_ironic_client() node = IronicHelper.get_ironic_node(ironic_client, args.ip_service_tag) introspect_nodes.introspect_nodes(args.in_band, ironic_client, [node])
def main(): args = parse_arguments() LoggingHelper.configure_logging(args.logging_level) # Load the nodes into ironic logger.info("Importing {} into ironic".format(args.node_definition)) cmd = ["openstack", "baremetal", "import", "--json", args.node_definition] exit_code, stdin, stderr = Exec.execute_command(cmd) if exit_code != 0: logger.error("Failed to import nodes into ironic: {}, {}".format( stdin, stderr)) sys.exit(1) # Load the instack file try: json_file = os.path.expanduser(args.node_definition) with open(json_file, 'r') as instackenv_json: instackenv = json.load(instackenv_json) except (IOError, ValueError): logger.exception("Failed to load node definition file {}".format( args.node_definition)) sys.exit(1) nodes = instackenv["nodes"] # Loop thru the nodes for node in nodes: # Find the node in ironic ironic_client = IronicHelper.get_ironic_client() ironic_node = IronicHelper.get_ironic_node(ironic_client, node["pm_addr"]) # Set the model and service tag on the node logger.info("Setting model ({}), service tag ({}), and provisioning " "MAC ({}) on {}".format( node["model"] if "model" in node else "None", node["service_tag"], node["provisioning_mac"] if "provisioning_mac" in node else "None", node["pm_addr"])) patch = [{'op': 'add', 'value': node["service_tag"], 'path': '/properties/service_tag'}] if "model" in node: patch.append({'op': 'add', 'value': node["model"], 'path': '/properties/model'}) if "provisioning_mac" in node: patch.append({'op': 'add', 'value': node["provisioning_mac"], 'path': '/properties/provisioning_mac'}) ironic_client.node.update(ironic_node.uuid, patch)
def main(): args = parse_arguments() LoggingHelper.configure_logging(args.logging_level) # Load the nodes into ironic import_json = os.path.expanduser('~/nodes.json') content = json.load(open(args.node_definition)) for node in content['nodes']: for k in node.keys(): if k in DOWNSTREAM_ATTRS: node.pop(k) with open(import_json, 'w') as out: json.dump(content, out) logger.info("Importing {} into ironic".format(args.node_definition)) cmd = ["openstack", "overcloud", "node", "import", import_json] exit_code, stdin, stderr = Exec.execute_command(cmd) if exit_code != 0: logger.error("Failed to import nodes into ironic: {}, {}".format( stdin, stderr)) sys.exit(1) # Load the instack file try: json_file = os.path.expanduser(args.node_definition) with open(json_file, 'r') as instackenv_json: instackenv = json.load(instackenv_json) except (IOError, ValueError): logger.exception("Failed to load node definition file {}".format( args.node_definition)) sys.exit(1) nodes = instackenv["nodes"] # Loop thru the nodes for node in nodes: # Find the node in ironic ironic_client = IronicHelper.get_ironic_client() ironic_node = IronicHelper.get_ironic_node(ironic_client, node["pm_addr"]) # Set the model and service tag on the node logger.info("Setting model ({}), service tag ({}), and provisioning " "MAC ({}) on {}".format( node["model"] if "model" in node else "None", node["service_tag"], node["provisioning_mac"] if "provisioning_mac" in node else "None", node["pm_addr"])) patch = [{'op': 'add', 'value': node["service_tag"], 'path': '/properties/service_tag'}] if "model" in node: patch.append({'op': 'add', 'value': node["model"], 'path': '/properties/model'}) if "provisioning_mac" in node: patch.append({'op': 'add', 'value': node["provisioning_mac"], 'path': '/properties/provisioning_mac'}) if utils.Utils.is_enable_routed_networks(): logger.info("Adding port with physical address to node: %s", str(ironic_node.uuid)) kwargs = {'address': node["provisioning_mac"], 'physical_network': 'ctlplane', 'node_uuid': ironic_node.uuid} ironic_client.port.create(**kwargs) ironic_client.node.update(ironic_node.uuid, patch)