Ejemplo n.º 1
0
def test_config_reload_toggle_join(duthost, k8scluster):
    """
    Test case to ensure that when DUT is not joined to the master due to (unsaved) disable=true, but config is saved with disable=false, DUT joins after config reload

    Saves config with configured VIP and disable=false

    Sets disable=true without saving config, and ensure that DUT resets from master

    Performs config reload

    Ensures that DUT is joined to master after config reload

    Args:
        duthost: DUT host object
        k8scluster: shortcut fixture for getting cluster of Kubernetes master hosts
    """
    dut_cmds = ['sudo config kube server ip {}'.format(k8scluster.vip),
                'sudo config kube server disable off',
                'sudo config save -y']
    duthost.shell_cmds(cmds=dut_cmds)
  
    duthost.shell('sudo config kube server disable on')
    server_connect_exp_status = False
    server_connect_act_status = ku.check_connected(duthost)
    server_connect_status_updated = ku.poll_for_status_change(duthost, server_connect_exp_status)
    pytest_assert(server_connect_status_updated, "Unexpected k8s server connection status after setting disable=true, Expected server connected status: {}, Found server connected status: {}".format(server_connect_exp_status, server_connect_act_status))
    
    config_reload(duthost)
    wait_critical_processes(duthost)

    server_connect_exp_status = True
    server_connect_act_status = ku.check_connected(duthost)
    server_connect_status_updated = ku.poll_for_status_change(duthost, server_connect_exp_status)
    pytest_assert(server_connect_status_updated, "Unexpected k8s server connection status after config reload, Expected server connected status: {}, Found server connected status: {}".format(server_connect_exp_status, server_connect_act_status))
Ejemplo n.º 2
0
def test_disable_flag(duthost, k8scluster):
    """
    Test case to ensure that kube server disable flag works as expected when toggled

    Joins master to set baseline state (disable=false, joined to master)

    Set disable=true, ensure DUT resets from master

    Set disable=false, ensure DUT joins master

    Args:
        duthost: DUT host object
        k8scluster: shortcut fixture for getting cluster of Kubernetes master hosts
    """
    ku.join_master(duthost, k8scluster.vip)

    duthost.shell('sudo config kube server disable on')
    server_connect_exp_status = False
    server_connect_act_status = ku.check_connected(duthost)
    server_connect_status_updated = ku.poll_for_status_change(
        duthost, server_connect_exp_status)
    pytest_assert(
        server_connect_status_updated,
        "Test disable flag failed, Expected server connected status: {}, Found server connected status: {}"
        .format(server_connect_exp_status, server_connect_act_status))

    duthost.shell('sudo config kube server disable off')
    server_connect_exp_status = True
    server_connect_act_status = ku.check_connected(duthost)
    server_connect_status_updated = ku.poll_for_status_change(
        duthost, server_connect_exp_status)
    pytest_assert(
        server_connect_status_updated,
        "Test disable flag failed, Expected server connected status: {}, Found server connected status: {}"
        .format(server_connect_exp_status, server_connect_act_status))
Ejemplo n.º 3
0
def test_config_reload_toggle_reset(duthost, k8scluster):
    """
    Test case to ensure that when DUT is joined to master (disable=false, unsaved) but config is saved with disable=true, DUT resets from master after config reload

    Saves config with disable=true

    Joins master, which sets disable=false unsaved

    Performs config reload

    Ensures that DUT has reset from the master after config reload, as disable=true was saved 
    
    Args:
        duthost: DUT host object
        k8scluster: shortcut fixture for getting cluster of Kubernetes master hosts
    """
    dut_cmds = ['sudo config kube server disable on',
                'sudo config save -y']
    duthost.shell_cmds(cmds=dut_cmds)

    ku.join_master(duthost, k8scluster.vip) 

    config_reload(duthost)
    wait_critical_processes(duthost)

    server_connect_exp_status = False
    server_connect_act_status = ku.check_connected(duthost)
    server_connect_status_updated = ku.poll_for_status_change(duthost, server_connect_exp_status)
    pytest_assert(server_connect_status_updated, "Unexpected k8s server connection status after config reload, Expected server connected status: {}, Found server connected status: {}".format(server_connect_exp_status, server_connect_act_status))
Ejemplo n.º 4
0
def test_join_available_master(duthost, k8scluster):
    """
    Test case to ensure DUT properly joins Kubernetes master once VIP and API servers are both reachable

    Makes VIP unreachable

    Attempts to join DUT by configuring VIP and enabling kube server connection

    Ensures that DUT joins master once VIP is reachable

    Args:
        duthost: DUT host object
        k8scluster: shortcut fixture for getting cluster of Kubernetes master hosts
    """
    master_vip = k8scluster.get_master_vip()
    duthost.shell('sudo config kube server disable on')
    time.sleep(WAIT_FOR_SYNC)

    server_connect_exp_status = False
    server_connect_act_status = ku.check_connected(duthost)
    pytest_assert(
        server_connect_exp_status == server_connect_act_status,
        "DUT shows unexpected kubernetes server connected status, Expected server connected status: {}, Found server connected status: {}"
        .format(server_connect_exp_status, server_connect_act_status))

    ku.make_vip_unreachable(duthost, master_vip)
    duthost.shell('sudo config kube server disable off')
    duthost.shell('sudo config kube server ip {}'.format(master_vip))
    time.sleep(WAIT_FOR_SYNC)

    server_connect_exp_status = False
    server_connect_act_status = ku.check_connected(duthost)
    pytest_assert(
        server_connect_exp_status == server_connect_act_status,
        "DUT shows unexpected kubernetes server connected status, Expected server connected status: {}, Found server connected status: {}"
        .format(server_connect_exp_status, server_connect_act_status))

    ku.make_vip_reachable(duthost, master_vip)

    server_connect_exp_status = True
    server_connect_act_status = ku.check_connected(duthost)
    server_connect_status_updated = ku.poll_for_status_change(
        duthost, server_connect_exp_status)
    pytest_assert(
        server_connect_status_updated,
        "DUT join available master failed, Expected server connected status: {}, Found server connected status: {}"
        .format(server_connect_exp_status, server_connect_act_status))
Ejemplo n.º 5
0
def test_config_reload_no_toggle(duthost, k8scluster):
    """
    Test case to ensure that when DUT starts as joined to master, and config is saved with disable=false, DUT is still joined to master after config reload
    
    Joins master

    Performs config reload

    Ensures that DUT is still joined to master after config reload

    Args:
        duthost: DUT host object
        k8scluster: shortcut fixture for getting cluster of Kubernetes master hosts
    """
    ku.join_master(duthost, k8scluster.vip) # Assertion within to ensure successful join
    duthost.shell('sudo config save -y')
    config_reload(duthost)
    wait_critical_processes(duthost)

    server_connect_exp_status = True
    server_connect_act_status = ku.check_connected(duthost)
    server_connect_status_updated = ku.poll_for_status_change(duthost, server_connect_exp_status)
    pytest_assert(server_connect_status_updated, "Unexpected k8s server connection status after config reload, Expected server connected status: {}, Found server connected status: {}".format(server_connect_exp_status, server_connect_act_status))