Beispiel #1
0
def Trigger(tc):
    if len(tc.Nodes) > 0:
        n = tc.Nodes[0]
        common.SetupRemoteDhcp(n)
        common.SetNaplesModeInband_Static(n, "1.1.1.1,1.1.1.2", "1.1.1.3/24")

    return api.types.status.SUCCESS
Beispiel #2
0
def Main(step):
    policy_mode = getattr(step, "policy_Mode", None)
    fwd_mode = getattr(step, "fwd_mode", None)
    mgmt_intf = getattr(step, "mgmt_intf", "OOB")
    nw = GetNativeNetworkIpSubnet()
    controller_ip = nw[-2]  #Last address in the subnet is broadcast
    mgmt_ip = controller_ip - 1
    index = 1

    # Init Netagent
    nodes = api.GetNaplesHostnames()
    netagent_api.Init(nodes, hw=True)

    # Restore the current profile in cfg DB
    if GlobalOptions.skip_setup:
        if mgmt_intf == "IN_BAND":
            restoreBondIp(mgmt_ip)
        return netagent_api.switch_profile(fwd_mode=fwd_mode,
                                           policy_mode=policy_mode,
                                           push=False)

    req = api.Trigger_CreateExecuteCommandsRequest(serial=True)
    for n in nodes:
        if mgmt_intf == "OOB":
            ret = common.SetNaplesModeOOB_Static(n, "1.1.1.1", "1.1.1.2/24")
            if ret == None:
                api.Logger.info("Failed to change mode for node: {}".format(n))
                return api.types.status.FAILURE
        elif mgmt_intf == "IN_BAND":
            mgmt_ip_str = "%s/%s" % (mgmt_ip, nw.prefixlen)
            ret = common.SetNaplesModeInband_Static(n, str(controller_ip),
                                                    mgmt_ip_str)
            if ret == None:
                api.Logger.info("Failed to change mode for node: {}".format(n))
                return api.types.status.FAILURE
            api.SetBondIp(n, str(mgmt_ip))
            mgmt_ip -= 1
        else:
            api.Logger.error("Invalid mgmt interface type : %s" % (mgmt_intf))
            return api.types.status.FAILURE

    api.Logger.info("Switching to profile fwd_mode: %s, policy_mode : %s" %
                    (fwd_mode, policy_mode))
    ret = netagent_api.switch_profile(fwd_mode=fwd_mode,
                                      policy_mode=policy_mode)
    if ret != api.types.status.SUCCESS:
        api.Logger.error(
            "Failed to switch profile to fwd_mode: %s, policy_mode : %s" %
            (fwd_mode, policy_mode))
        return ret

    # Start SSH server on Naples
    # StartSSH()  - replaced by enable_ssh

    # Clean Up temporary files
    DeleteTmpFiles()

    return api.types.status.SUCCESS
Beispiel #3
0
def Trigger(tc):
    for n in tc.Nodes:
        for i in range(0, len(tc.venice_ips)):
            common.SetNaplesModeInband_Static(n, tc.venice_ips[i],
                                              tc.mgmt_ips[i])
            tc.mgmt_ip_res.append(common.PenctlGetNaplesMgtmIp(n))
            tc.controller_ip_pentcl.append(common.PenctlGetControllers(n)[0])
            time.sleep(5)

    return api.types.status.SUCCESS
Beispiel #4
0
def Trigger(tc):
    if len(tc.Nodes) > 0:
        n = tc.Nodes[0]

        for i in range(0, 6):
            ret = common.SetNaplesModeInband_Static(n, "2.2.2.1", "2.2.2.2/24")
            time.sleep(10)
            mode = common.PenctlGetTransitionPhaseStatus(n)
            if mode != "VENICE_UNREACHABLE":
                return api.types.status.FAILURE

    return api.types.status.SUCCESS
Beispiel #5
0
def Trigger(tc):
    if len(tc.Nodes) > 0:
        n = tc.Nodes[0]

        for i in range(0, 3):
            common.SetNaplesModeOOB_Static(n, "1.1.1.1", "2.2.2.2/24")
            common.SetNaplesModeOOB_Dynamic(n)
            common.SetNaplesModeInband_Static(n, "1.1.1.1", "2.2.2.2/24")
            common.SetNaplesModeHost(n)
            common.SetNaplesModeInband_Dynamic(n)

    return api.types.status.SUCCESS
Beispiel #6
0
def Main(step):
    res = api.types.status.SUCCESS
    workloads = api.GetLocalWorkloadPairs(True)
    naples_inband_ip = {}
    ip_offset = 100
    new_controller_ip = None
    for wl in workloads:
        w1 = wl[0]
        w2 = wl[1]

        if (w1.uplink_vlan != 0):
            continue

        if naples_inband_ip.get(w1.node_name) != None:
            continue

        ip_mask = w1.ip_prefix.split('/')[1]
        ip_addr = ip.IPv4Interface(w1.ip_prefix)

        w1_ip_intf = ip.IPv4Interface(str(w1.ip_prefix))
        #For inband collector config, agent always resolves thru first ip addr on the inband mgmt i/f.
        #so forcing to use 10.x.x.x network as inband mgmt ip for baremetal workloads
        if api.IsBareMetalWorkloadType(w1.node_name):
            if (str(w1_ip_intf.network).split('/')[0]) != "10.255.0.0":
                continue

        #chose ip_offset as the IP address for host in-band mgmt ip
        new_naples_inband_ip = ip.IPv4Interface(ip_addr.ip + ip_offset)
        ip_offset += 1
        if new_controller_ip == None:
            new_controller_ip = ip.IPv4Interface(ip_addr.ip + ip_offset)
            ip_offset += 1

        new_naples_inband_ip_str = str(
            new_naples_inband_ip.ip) + "/" + str(ip_mask)

        node = w1.node_name
        api.Logger.info(
            "Configuring Naples Inband IP {}".format(new_naples_inband_ip_str))
        ret = common.SetNaplesModeInband_Static(node,
                                                str(new_controller_ip.ip),
                                                new_naples_inband_ip_str)
        if ret == None:
            api.Logger.info("Failed to set Naples Inband mode IP: {}".format(
                new_naples_inband_ip_str))
            res = api.types.status.FAILURE
        #api.Logger.info("Naples {}".format(common.PenctlGetNaplesMgtmIp(node)))

        naples_inband_ip.update({w1.node_name: new_naples_inband_ip_str})
        #break

    return res
Beispiel #7
0
def Trigger(tc):
    if len(tc.Nodes) > 0:
        n = tc.Nodes[0]

        common.PenctlGetTransitionPhaseStatus(n)
        common.SetNaplesModeInband_Static(n, "1.1.1.1","1.1.1.2/24")

        tc.before_reboot_status = common.PenctlGetTransitionPhaseStatus(n)
        #common.PenctlGetControllersStatus(n)[0]
           
        api.Logger.info("Going for first reboot.")
        common.RebootHost(n)
        tc.after_first_reboot_status = common.PenctlGetTransitionPhaseStatus(n)
        #tc.controller_ip_penctl_after.append(common.PenctlGetControllersStatus(n)[0])

        api.Logger.info("Going for second reboot.")
        common.RebootHost(n)
        tc.after_second_reboot_status = common.PenctlGetTransitionPhaseStatus(n)

    return api.types.status.SUCCESS