Exemplo n.º 1
0
 def test_list_namespaces(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaces
     kl = KubeLibrary(kube_config='test/resources/k3d')
     namespaces = kl.get_namespaces()
     self.assertTrue(len(namespaces) > 0)
     self.assertEqual(['default', 'kubelib-test-test-objects-chart'],
                      namespaces)
Exemplo n.º 2
0
 def test_get_cron_job_details_in_namespace(self, mock_lnp):
     mock_lnp.side_effect = mock_read_cron_job_details_in_namespace
     kl = KubeLibrary(kube_config='test/resources/k3d')
     cron_job_details = kl.get_cron_job_details_in_namespace(
         'hello', 'default')
     self.assertEqual('mytestlabel',
                      cron_job_details.items.metadata.labels.TestLabel)
Exemplo n.º 3
0
 def test_get_daemonset_details_in_namespace(self, mock_lnp):
     mock_lnp.side_effect = mock_read_daemonset_details_in_namespace
     kl = KubeLibrary(kube_config='test/resources/k3d')
     daemonset_details = kl.get_daemonset_details_in_namespace(
         'fluentd-elasticsearch', 'default')
     self.assertEqual('mytestlabel',
                      daemonset_details.items.metadata.labels.TestLabel)
Exemplo n.º 4
0
 def test_filter_pods_containers_statuses_by_name(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_pod
     kl = KubeLibrary(kube_config='test/resources/k3d')
     pods = kl.list_namespaced_pod_by_pattern('octopus.*', 'default')
     self.assertEqual(
         0,
         kl.filter_pods_containers_statuses_by_name(pods,
                                                    '.*')[0].restart_count)
Exemplo n.º 5
0
 def test_read_namespaced_endpoints(self, mock_lnp):
     mock_lnp.side_effect = mock_read_namespaced_endpoints
     kl = KubeLibrary(kube_config='test/resources/k3d')
     endpoints = kl.read_namespaced_endpoints('.*', 'default')
     endpoints2 = kl.get_endpoints_in_namespace('.*', 'default')
     self.assertEqual(endpoints.items[0].metadata.name,
                      endpoints2.items[0].metadata.name)
     self.assertEqual('my-service', endpoints.items[0].metadata.name)
Exemplo n.º 6
0
 def test_filter_containers_images(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_pod
     kl = KubeLibrary(kube_config='test/resources/k3d')
     pods = kl.list_namespaced_pod_by_pattern('octopus.*', 'default')
     containers = kl.filter_pods_containers_by_name(pods, '.*')
     self.assertEqual(
         ['eu.gcr.io/kyma-project/incubator/develop/octopus:dc5dc284'],
         kl.filter_containers_images(containers))
Exemplo n.º 7
0
 def test_filter_containers_resources(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_pod
     kl = KubeLibrary(kube_config='test/resources/k3d')
     pods = kl.list_namespaced_pod_by_pattern('octopus.*', 'default')
     containers = kl.filter_pods_containers_by_name(pods, '.*')
     self.assertEqual(
         '100m',
         kl.filter_containers_resources(containers)[0].limits.cpu)
Exemplo n.º 8
0
 def test_evaluate_callable_from_k8s_client(self):
     configmap = KubeLibrary.evaluate_callable_from_k8s_client(
         attr_name="V1ConfigMap",
         data={"msg": "Mock"},
         api_version="v1",
         kind="ConfigMap",
         metadata=KubeLibrary.evaluate_callable_from_k8s_client(
             attr_name="V1ObjectMeta", name="Mock"))
     self.assertIsNotNone(configmap)
     self.assertEqual(configmap.metadata.name, "Mock")
Exemplo n.º 9
0
 def test_get_namespaced_exec_without_container(self, mock_stream):
     test_string = "This is test String!"
     mock_stream.return_value = test_string
     kl = KubeLibrary(kube_config='test/resources/k3d')
     stdout = kl.get_namespaced_pod_exec(
         name="pod_name",
         namespace="default",
         argv_cmd=["/bin/bash", "-c", f"echo {test_string}"])
     self.assertFalse("container" in mock_stream.call_args.kwargs.keys())
     self.assertEqual(stdout, test_string)
Exemplo n.º 10
0
 def test_read_namespaced_service(self, mock_lnp):
     mock_lnp.side_effect = mock_read_service_details_in_namespace
     kl = KubeLibrary(kube_config='test/resources/k3d')
     service_details = kl.read_namespaced_service('minimal-ingress',
                                                  'default')
     service_details2 = kl.get_service_details_in_namespace(
         'minimal-ingress', 'default')
     self.assertEqual(service_details.items.metadata.labels.Test,
                      service_details2.items.metadata.labels.Test)
     self.assertEqual('mytest', service_details.items.metadata.labels.Test)
Exemplo n.º 11
0
 def test_read_namespaced_ingress(self, mock_lnp):
     mock_lnp.side_effect = mock_read_ingress_details_in_namespace
     kl = KubeLibrary(kube_config='test/resources/k3d')
     ingress_details = kl.read_namespaced_ingress('max-ingress', 'default')
     ingress_details2 = kl.get_ingress_details_in_namespace(
         'max-ingress', 'default')
     self.assertEqual(ingress_details.items.metadata.labels.TestLabel,
                      ingress_details2.items.metadata.labels.TestLabel)
     self.assertEqual('mytestlabel',
                      ingress_details.items.metadata.labels.TestLabel)
Exemplo n.º 12
0
 def test_read_namespaced_horizontal_pod_autoscaler(self, mock_lnp):
     mock_lnp.side_effect = mock_read_hpa_details_in_namespace
     kl = KubeLibrary(kube_config='test/resources/k3d')
     hpa_details = kl.read_namespaced_horizontal_pod_autoscaler(
         'kubelib-test-test-objects-chart', 'default')
     hpa_details2 = kl.get_hpa_details_in_namespace(
         'kubelib-test-test-objects-chart', 'default')
     self.assertEqual(hpa_details.items.spec.scaleTargetRef.name,
                      hpa_details2.items.spec.scaleTargetRef.name)
     self.assertEqual('kubelib-test-test-objects-chart',
                      hpa_details.items.spec.scaleTargetRef.name)
Exemplo n.º 13
0
 def test_get_namespaced_exec_not_argv_and_list(self, mock_stream):
     test_string = "This is test String!"
     ex = f"argv_cmd parameter should be a list and contains values like " \
          f"[\"/bin/bash\", \"-c\", \"ls\"] not echo {test_string}"
     mock_stream.return_value = test_string
     kl = KubeLibrary(kube_config='test/resources/k3d')
     with self.assertRaises(TypeError) as cm:
         kl.get_namespaced_pod_exec(name="pod_name",
                                    namespace="default",
                                    container="manager",
                                    argv_cmd=f"echo {test_string}")
     self.assertEqual(str(cm.exception), ex)
Exemplo n.º 14
0
 def test_KubeLibrary_inits_with_bearer_token(self):
     kl = KubeLibrary(api_url=k8s_api_url, bearer_token=bearer_token)
     for api in TestKubeLibrary.apis:
         target = getattr(kl, api)
         self.assertEqual(kl.api_client.configuration.api_key,
                          target.api_client.configuration.api_key)
     self.assertEqual(kl.api_client.configuration.ssl_ca_cert, None)
Exemplo n.º 15
0
 def test_inits_with_bearer_token_raises_BearerTokenWithPrefixException(
         self):
     kl = KubeLibrary(api_url=k8s_api_url, bearer_token=bearer_token)
     self.assertRaises(BearerTokenWithPrefixException,
                       kl.reload_config,
                       api_url=k8s_api_url,
                       bearer_token='Bearer prefix should fail')
Exemplo n.º 16
0
 def test_KubeLibrary_inits_without_cert_validation(self):
     kl = KubeLibrary(kube_config='test/resources/k3d',
                      cert_validation=False)
     for api in TestKubeLibrary.apis:
         target = getattr(kl, api)
         self.assertEqual(
             target.api_client.rest_client.pool_manager.
             connection_pool_kw['cert_reqs'], ssl.CERT_NONE)
Exemplo n.º 17
0
 def test_KubeLibrary_inits_from_kubeconfig(self):
     responses.add("GET", "/version", status=200)
     responses.add("GET",
                   "/apis",
                   status=200,
                   body='{"groups": [], "kind": "Pod" }',
                   content_type="application/json")
     KubeLibrary(kube_config='test/resources/k3d')
Exemplo n.º 18
0
 def test_KubeLibrary_dynamic_delete(self):
     responses.add("GET", "/version", status=200)
     responses.add("GET",
                   "/apis",
                   status=200,
                   body='{"groups": [], "kind": "Pod" }',
                   content_type="application/json")
     responses.add(
         "GET",
         "/api/v1",
         status=200,
         body=
         '{"resources": [{"api_version": "v1", "kind": "Pod", "name": "Mock"}], "kind": "Pod"}',
         content_type="application/json")
     responses.add("DELETE", "/api/v1/mock/Mock", status=200)
     kl = KubeLibrary(kube_config='test/resources/k3d')
     kl.delete("v1", "Pod", name="Mock")
Exemplo n.º 19
0
 def test_list_namespaced_pod_by_pattern(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_pod
     kl = KubeLibrary(kube_config='test/resources/k3d')
     pods = kl.list_namespaced_pod_by_pattern('.*', 'default')
     pods2 = kl.get_pods_in_namespace('.*', 'default')
     pods3 = kl.get_pod_names_in_namespace('.*', 'default')
     self.assertEqual(kl.filter_names(pods), pods3)
     self.assertEqual(kl.filter_names(pods), kl.filter_pods_names(pods2))
     self.assertEqual(['octopus-0', 'grafana-5d9895c6c4-sfsn8'],
                      kl.filter_names(pods))
Exemplo n.º 20
0
 def test_list_namespaced_secret_by_pattern(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_secrets
     kl = KubeLibrary(kube_config='test/resources/k3d')
     secrets = kl.list_namespaced_secret_by_pattern('.*', 'default')
     secrets2 = kl.get_secrets_in_namespace('.*', 'default')
     self.assertEqual(kl.filter_names(secrets), kl.filter_names(secrets2))
     self.assertEqual(['grafana'], kl.filter_names(secrets))
Exemplo n.º 21
0
 def test_KubeLibrary_inits_with_context(self):
     responses.add("GET", "/version", status=200)
     responses.add("GET",
                   "/apis",
                   status=200,
                   body='{"groups": [], "kind": "Pod" }',
                   content_type="application/json")
     KubeLibrary(kube_config='test/resources/multiple_context',
                 context='k3d-k3d-cluster2')
Exemplo n.º 22
0
 def test_get_configmaps_in_namespace(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_config_map
     kl = KubeLibrary(kube_config='test/resources/k3d')
     configmaps = kl.list_namespaced_config_map_by_pattern('.*', 'default')
     configmaps2 = kl.get_configmaps_in_namespace('.*', 'default')
     self.assertEqual(kl.filter_names(configmaps),
                      kl.filter_configmap_names(configmaps2))
     self.assertEqual(['game-demo'], kl.filter_names(configmaps))
Exemplo n.º 23
0
 def test_list_namespaced_deployment_by_pattern(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_deployments
     kl = KubeLibrary(kube_config='test/resources/k3d')
     deployments = kl.list_namespaced_deployment_by_pattern('.*', 'default')
     deployments2 = kl.get_deployments_in_namespace('.*', 'default')
     self.assertEqual(kl.filter_names(deployments),
                      kl.filter_deployments_names(deployments2))
     self.assertEqual(['nginx-deployment'], kl.filter_names(deployments))
Exemplo n.º 24
0
 def test_list_namespaced_job_by_pattern(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_jobs
     kl = KubeLibrary(kube_config='test/resources/k3d')
     jobs = kl.list_namespaced_job_by_pattern('.*', 'default')
     jobs2 = kl.get_jobs_in_namespace('.*', 'default')
     self.assertEqual(kl.filter_names(jobs), kl.filter_names(jobs2))
     self.assertEqual(['octopus-0', 'octopus-1', 'octopus-2', 'octopus-3'],
                      kl.filter_names(jobs))
Exemplo n.º 25
0
 def test_inits_all_api_clients(self):
     responses.add("GET", "/version", status=200)
     responses.add("GET",
                   "/apis",
                   status=200,
                   body='{"groups": [], "kind": "Pod" }',
                   content_type="application/json")
     kl = KubeLibrary(kube_config='test/resources/k3d')
     for api in TestKubeLibrary.apis:
         self.assertIsNotNone(getattr(kl, api))
Exemplo n.º 26
0
 def test_list_namespaced_replica_set_by_pattern(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_replicasets
     kl = KubeLibrary(kube_config='test/resources/k3d')
     replicasets = kl.list_namespaced_replica_set_by_pattern(
         '.*', 'test-auto')
     replicasets2 = kl.get_replicasets_in_namespace('.*', 'test-auto')
     self.assertEqual(kl.filter_names(replicasets),
                      kl.filter_replicasets_names(replicasets2))
     self.assertEqual(['nginx-proxy'], kl.filter_names(replicasets))
Exemplo n.º 27
0
 def test_list_namespaced_service_account_by_pattern(self, mock_lnp):
     mock_lnp.side_effect = mock_list_namespaced_service_accounts
     kl = KubeLibrary(kube_config='test/resources/k3d')
     sa = kl.list_namespaced_service_account_by_pattern('.*', 'default')
     sa2 = kl.get_service_accounts_in_namespace('.*', 'default')
     self.assertEqual(kl.filter_names(sa),
                      kl.filter_service_accounts_names(sa2))
     self.assertEqual(['default', 'kubelib-test-test-objects-chart'],
                      kl.filter_names(sa))
Exemplo n.º 28
0
 def test_gather_pods_obejcts_to_pods_json(self):
     kl = KubeLibrary(kube_config='~/.kube/k3d')
     ret = kl.v1.list_namespaced_pod('default', watch=False)
     pods_str = str(ret.items).replace("'", '"') \
                              .replace('None', 'null') \
                              .replace('True', 'true') \
                              .replace('False', 'false')
     # serialize datetime into fixed timestamp
     pods = re.sub(r'datetime(.+?)\)\)', '1592598289', pods_str)
     with open('test/resources/pods.json', 'w') as outfile:
         json.dump(json.loads(pods), outfile, indent=4)
Exemplo n.º 29
0
 def test_KubeLibrary_fails_for_wrong_context(self):
     responses.add("GET", "/version", status=200)
     responses.add("GET",
                   "/apis",
                   status=200,
                   body='{"groups": [], "kind": "Pod" }',
                   content_type="application/json")
     kl = KubeLibrary(kube_config='test/resources/multiple_context')
     self.assertRaises(ConfigException,
                       kl.reload_config,
                       kube_config='test/resources/multiple_context',
                       context='k3d-k3d-cluster2-wrong')
Exemplo n.º 30
0
 def test_assert_container_has_env_vars(self):
     pod = mock_list_namespaced_pod('default').items[0]
     kl = KubeLibrary(kube_config='~/.kube/k3d')
     container = kl.filter_pods_containers_by_name([pod], '.*')[0]
     env_vars = '{}'
     self.assertTrue(kl.assert_container_has_env_vars(container, env_vars))
     env_vars = '{"SECRET_NAME":"webhook-server-secret"}'
     self.assertTrue(kl.assert_container_has_env_vars(container, env_vars))
     env_vars = '{"SECRET_NAME":"wrong"}'
     self.assertFalse(kl.assert_container_has_env_vars(container, env_vars))
     env_vars = '{"NOT_EXISTING":"wrong"}'
     self.assertFalse(kl.assert_container_has_env_vars(container, env_vars))
     env_vars = '{"badlyformatted:}'
     self.assertFalse(kl.assert_container_has_env_vars(container, env_vars))