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))
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))
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))
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))
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))