Exemplo n.º 1
0
def test_clusterinit_update_pod_with_init_container():
    pod_passed = k8sclient.V1Pod(
        metadata=k8sclient.V1ObjectMeta(annotations={}),
        spec=k8sclient.V1PodSpec(
            containers=[k8sclient.V1Container(name="cmk")]),
        status=k8sclient.V1PodStatus()).to_dict()
    cmd = "cmd"
    cmk_img = "cmk_img"
    cmk_img_pol = "policy"
    args = "argument"
    clusterinit.update_pod_with_init_container(pod_passed, cmd, cmk_img,
                                               cmk_img_pol, args)
    pods = json.loads(pod_passed["metadata"]["annotations"]
                      ["pod.beta.kubernetes.io/init-containers"])
    assert len(pods) == 1
    assert pods[0]["name"] == cmd
    assert pods[0]["image"] == cmk_img
    assert pods[0]["imagePullPolicy"] == cmk_img_pol
    assert args in pods[0]["args"]

    second_cmd = "cmd2"
    second_img = cmk_img
    second_img_pol = "Always"
    second_args = ["arg1", "arg2"]
    clusterinit.update_pod_with_init_container(pod_passed, second_cmd,
                                               second_img, second_img_pol,
                                               second_args)

    pods = json.loads(pod_passed["metadata"]["annotations"]
                      ["pod.beta.kubernetes.io/init-containers"])
    assert len(pods) == 2
    def test_pod_containers_pod_without_node(self) -> None:
        pod = client.V1Pod(
            status=client.V1PodStatus(container_statuses=None, ))

        container_info_api_list = pod_containers(pod)

        self.assertEqual(container_info_api_list, {})
Exemplo n.º 3
0
def create_pod_object(name: str = "default",
                      imagename: str = None,
                      labels: {} = None,
                      state: str = "running",
                      namespace: str = "default",
                      node_name='node1') -> k8sClient.V1Pod:
    container_state = k8sClient.V1ContainerState(running=MagicMock())
    if state == "terminated":
        container_state = k8sClient.V1ContainerState(terminated=MagicMock())

    image = k8sClient.V1ContainerImage(names=[imagename])
    container_status = k8sClient.V1ContainerStatus(state=container_state,
                                                   image=image,
                                                   image_id="fakeimage",
                                                   name="fakename",
                                                   ready="True",
                                                   restart_count=0)

    condition = k8sClient.V1PodCondition(type="Ready",
                                         status=[container_status])
    status = k8sClient.V1PodStatus(conditions=[condition],
                                   container_statuses=[container_status])
    container = k8sClient.V1Container(image=image, name="fakename1")
    spec = k8sClient.V1PodSpec(containers=[container], node_name=node_name)

    metadata = k8sClient.V1ObjectMeta(name=name,
                                      labels=labels,
                                      namespace=namespace)
    node = k8sClient.V1Pod(status=status, spec=spec, metadata=metadata)
    return node
Exemplo n.º 4
0
def test_pod_status_evicted_pod() -> None:
    client_pod_status = client.V1PodStatus(
        conditions=None,
        container_statuses=None,
        ephemeral_container_statuses=None,
        host_ip=None,
        init_container_statuses=None,
        message="The node was low on resource: ephemeral-storage. Container "
        "grafana-sc-dashboard was using 4864Ki, which exceeds its request "
        "of 0. Container grafana was using 2112Ki, which exceeds its "
        "request of 0. Container grafana-sc-datasources was using 1280Ki, "
        "which exceeds its request of 0. ",
        nominated_node_name=None,
        phase="Failed",
        pod_i_ps=None,
        pod_ip=None,
        qos_class=None,
        reason="Evicted",
        start_time=datetime.datetime(2022, 5, 23, 5, 43, 57, tzinfo=tzutc()),
    )
    client_pod = client.V1Pod(status=client_pod_status)
    assert pod_status(client_pod) == api.PodStatus(
        conditions=None,
        phase=api.Phase.FAILED,
        start_time=api.Timestamp(1653284637.0),
        host_ip=None,
        pod_ip=None,
        qos_class=None,
    )
Exemplo n.º 5
0
 def test_filterIpedWorkers(self):
     status = client.V1PodStatus(host_ip="1.2.3.4", pod_ip='6.7.8.9')
     metadata = client.V1ObjectMeta(name='notipedworker-myname')
     spec = client.V1PodSpec(node_name='sardcloudXX', containers=[])
     pods = [client.V1Pod(status=status, metadata=metadata, spec=spec)]
     podList = client.V1PodList(items=pods)
     workers: List[IPEDWorker] = _listWorkers(podList)
     self.assertEqual(len(workers), 0)
Exemplo n.º 6
0
 def _generate_pod(name, labels, phase=PodPhases.succeeded):
     terminated_container_state = client.V1ContainerStateTerminated(
         finished_at=datetime.now(timezone.utc), exit_code=0
     )
     container_state = client.V1ContainerState(terminated=terminated_container_state)
     container_status = client.V1ContainerStatus(
         state=container_state,
         image="must/provide:image",
         image_id="must-provide-image-id",
         name="must-provide-name",
         ready=True,
         restart_count=0,
     )
     status = client.V1PodStatus(phase=phase, container_statuses=[container_status])
     metadata = client.V1ObjectMeta(
         name=name, labels=labels, namespace=get_k8s().resolve_namespace()
     )
     pod = client.V1Pod(metadata=metadata, status=status)
     return pod
    def test_parse_pod_info_pod_without_node(self) -> None:
        pod = client.V1Pod(
            spec=client.V1PodSpec(
                host_network=None,
                node_name=None,
                containers=[
                    client.V1Container(name="non_scheduled_container", ),
                ],
            ),
            status=client.V1PodStatus(
                host_ip=None,
                pod_ip=None,
                qos_class="BestEffort",
            ),
        )
        pod_spec_api = parse_pod_info(pod)

        assert pod_spec_api.pod_ip is None
        assert pod_spec_api.node is None
Exemplo n.º 8
0
 def _generate_pod(namespace, pod):
     terminated_container_state = client.V1ContainerStateTerminated(
         finished_at=datetime.now(timezone.utc), exit_code=0)
     container_state = client.V1ContainerState(
         terminated=terminated_container_state)
     container_status = client.V1ContainerStatus(
         state=container_state,
         image=self.image_name,
         image_id="must-provide-image-id",
         name=self.name,
         ready=True,
         restart_count=0,
     )
     status = client.V1PodStatus(phase=PodPhases.succeeded,
                                 container_statuses=[container_status])
     response_pod = deepcopy(pod)
     response_pod.status = status
     response_pod.metadata.name = "test-pod"
     response_pod.metadata.namespace = namespace
     return response_pod
Exemplo n.º 9
0
 def test_list1IpedWorker(self):
     state = client.V1ContainerState(running=None)
     containerStatus = client.V1ContainerStatus(image='image',
                                                image_id='1',
                                                name='2',
                                                ready=True,
                                                restart_count=0,
                                                state=state)
     status = client.V1PodStatus(host_ip="1.2.3.4",
                                 pod_ip='6.7.8.9',
                                 container_statuses=[containerStatus])
     metadata = client.V1ObjectMeta(name='ipedworker-myname')
     spec = client.V1PodSpec(node_name='sardcloudXX', containers=[])
     pods = [client.V1Pod(status=status, metadata=metadata, spec=spec)]
     podList = client.V1PodList(items=pods)
     workers: List[IPEDWorker] = _listWorkers(podList)
     self.assertEqual(len(workers), 1)
     w0: IPEDWorker = workers[0]
     self.assertEqual(w0.name, "ipedworker-myname")
     self.assertEqual(w0.host_ip, "1.2.3.4")
     self.assertEqual(w0.pod_ip, "6.7.8.9")
     self.assertEqual(w0.node_name, "sardcloudXX")
     self.assertEqual(w0.ready, True)
     self.assertEqual(w0.image, 'image')
 def test_pod_containers_start_up(self) -> None:
     """
     In this specific instance all of the fields expect for the scheduled field are missing.
     """
     pod = client.V1Pod(status=client.V1PodStatus(container_statuses=[
         client.V1ContainerStatus(
             name="unready_container",
             ready=False,
             restart_count=0,
             container_id=None,
             image="gcr.io/kuar-demo/kuard-amd64:blue",
             image_id="",
             state=client.V1ContainerState(
                 running=None,
                 terminated=None,
                 waiting=client.V1ContainerStateWaiting(
                     message=None, reason="ContainerCreating"),
             ),
         )
     ], ), )
     self.assertEqual(
         pod_containers(pod),
         {
             "unready_container":
             api.ContainerInfo(
                 id=None,
                 name="unready_container",
                 image="gcr.io/kuar-demo/kuard-amd64:blue",
                 ready=False,
                 state=api.ContainerWaitingState(type="waiting",
                                                 reason="ContainerCreating",
                                                 detail=None),
                 restart_count=0,
             )
         },
     )
Exemplo n.º 11
0
 def _mock_executor_pod(self, phase):
     return client.V1Pod(status=client.V1PodStatus(phase=phase))
Exemplo n.º 12
0
        assert hasattr(service.spec, 'ports')
        assert isinstance(service.spec.ports, list)
        assert len(service.spec.ports) == 2

        assert isinstance(service.spec.ports[0], client.V1ServicePort)
        assert service.spec.ports[0].name == 'memcached'
        assert service.spec.ports[0].port == 11211
        assert service.spec.ports[0].protocol == 'TCP'

        assert isinstance(service.spec.ports[1], client.V1ServicePort)
        assert service.spec.ports[1].name == 'metrics'
        assert service.spec.ports[1].port == 9150
        assert service.spec.ports[1].protocol == 'TCP'


TEST_POD_1 = client.V1Pod(status=client.V1PodStatus(pod_ip='1.1.1.1'))
TEST_POD_2 = client.V1Pod(status=client.V1PodStatus(pod_ip='2.2.2.2'))
TEST_SERVER_LIST = [TEST_POD_1, TEST_POD_2]


class TestGetMemcachedDeploymentObject():
    def setUp(self):
        self.name = 'testname123'
        self.namespace = 'testnamespace456'
        self.cluster_object = {'metadata': {'name': self.name,
                                            'namespace': self.namespace}}

    def test_returns_v1beta1_deployment(self):
        deployment = get_memcached_deployment_object(self.cluster_object)
        assert isinstance(deployment, client.AppsV1beta1Deployment)
Exemplo n.º 13
0
def fake_pod_error():
    return client.V1Pod(api_version='v1',
                        kind='Pod',
                        metadata=client.V1ObjectMeta(name='curry-test001',
                                                     namespace='curryns'),
                        status=client.V1PodStatus(phase='Terminated', ))