github.com/SUSE/skuba@v1.4.17/ci/infra/testrunner/tests/test_upgrade_apply_user_lock.py (about)

     1  import pytest
     2  
     3  from tests.utils import PREVIOUS_VERSION, node_is_ready, node_is_upgraded, wait
     4  
     5  
     6  @pytest.mark.disruptive
     7  def test_upgrade_apply_user_lock(provision, platform, kubectl, skuba):
     8      """
     9      Starting from an outdated cluster, check what node upgrade apply reports.
    10      """
    11  
    12      # lock kured
    13      kubectl_cmd = (
    14          "-n kube-system annotate ds kured weave.works/kured-node-lock="
    15          "'{\"nodeID\":\"manual\"}'")
    16      kubectl.run_kubectl(kubectl_cmd)
    17  
    18      for role in ("master", "worker"):
    19          num_nodes = platform.get_num_nodes(role)
    20          for n in range(0, num_nodes):
    21              # disable skuba-update.timer
    22              platform.ssh_run(role, n, "sudo systemctl disable --now skuba-update.timer")
    23              assert node_is_ready(platform, kubectl, role, n)
    24              result = skuba.node_upgrade("apply", role, n)
    25              assert result.find("successfully upgraded") != -1
    26              assert node_is_upgraded(kubectl, platform, role, n)
    27              ssh_cmd = "sudo systemctl is-enabled skuba-update.timer || :"
    28              assert platform.ssh_run(role, n, ssh_cmd).find("disabled") != -1
    29  
    30      kubectl_cmd = (r"-n kube-system get ds/kured -o jsonpath="
    31                     r"'{.metadata.annotations.weave\.works/kured-node-lock}'")
    32      result = wait(kubectl.run_kubectl,
    33                    kubectl_cmd,
    34                    wait_backoff=30,
    35                    wait_retries=3,
    36                    wait_allow=(RuntimeError))
    37      assert result.find("manual") != -1