def __GetWorkloadPairs(iftype, remote=False): pairs = [] for w1 in api.GetNaplesWorkloads(iftype): for w2 in api.GetNaplesWorkloads(iftype): if id(w1) == id(w2): continue if (not remote and w1.node_name == w2.node_name) or \ (remote and w1.node_name != w2.node_name): pairs.append((w1, w2)) return pairs
def AddNaplesWorkloads(target_node=None): req = topo_svc.WorkloadMsg() req.workload_op = topo_svc.ADD wloads = api.GetNaplesWorkloads() for wl in wloads: if wl.SkipNodePush() or (target_node and target_node != wl.node_name): api.Logger.debug("Skipping add workload for node %s" % wl.node_name) continue wl_msg = req.workloads.add() intf = wl_msg.interfaces.add() wl_msg.workload_name = wl.workload_name wl_msg.node_name = wl.node_name intf.ip_prefix = wl.ip_address + "/" + '24' #wl_msg.ipv6_prefix = __prepare_ipv6_address_str_for_endpoint(ep) intf.interface = wl.interface intf.parent_interface = wl.interface intf.interface_type = topo_svc.INTERFACE_TYPE_VSS intf.device_name = wl.device_name wl_msg.workload_type = topo_svc.WorkloadType.Value( 'WORKLOAD_TYPE_BARE_METAL') if len(req.workloads): resp = api.AddWorkloads(req, skip_store=True) if resp is None: return api.types.status.FAILURE return api.types.status.SUCCESS
def GetUpgLog(nodes, log_dir): nodes = nodes if nodes else api.GetNaplesWorkloads() file_name = f"{log_dir}/{__upg_log_fname}" for node in nodes: if __dhcp_oob_mnic0([node]) != api.types.status.SUCCESS: return api.types.status.FAILURE api.CopyFromNaples(node, [__upg_log_path], log_dir, via_oob=True) if os.path.exists(file_name): os.rename(file_name, __get_upg_log_fname_from_node(node, log_dir)) else: api.Logger.error( f"Upgrade logs for {node} not found @ {file_name}") return api.types.status.FAILURE return api.types.status.SUCCESS
def ResetUpgLog(nodes): nodes = nodes if nodes else api.GetNaplesWorkloads() req = api.Trigger_CreateExecuteCommandsRequest(serial=False) for node in nodes: cmd = f":>{__upg_log_path}" api.Trigger_AddNaplesCommand(req, node, cmd) resp = api.Trigger(req) for cmd in resp.commands: api.PrintCommandResults(cmd) if cmd.exit_code != 0: api.Logger.error(f"Failed to reset upgrade log on {cmd.node_name}") return api.types.status.FAILURE return api.types.status.SUCCESS
def __dhcp_oob_mnic0(nodes): nodes = nodes if nodes else api.GetNaplesWorkloads() dhclient_cmd = "dhclient oob_mnic0" req = api.Trigger_CreateExecuteCommandsRequest(serial=False) for node in nodes: api.Trigger_AddNaplesCommand(req, node, dhclient_cmd) resp = api.Trigger(req) for cmd in resp.commands: api.PrintCommandResults(cmd) if cmd.exit_code != 0: api.Logger.error(f"Failed to run dhclient on {cmd.node_name}") return api.types.status.FAILURE return api.types.status.SUCCESS
def __GetWorkloads(iftype): wloads = [] for w1 in api.GetNaplesWorkloads(iftype): wloads.append(w1) return wloads