def test_delete_service(k8s_api_client_mock: K8SAPIClient): k8s_api_client_mock.delete_service(name='fake-name', namespace=MY_FAKE_NAMESPACE) k8s_api_client_mock.v1_api_client.delete_namespaced_service.\ assert_called_once_with(name='fake-name', namespace=MY_FAKE_NAMESPACE, body=k8s_models.V1DeleteOptions())
def test_delete_ingress(mocker: MockFixture, k8s_api_client_mock: K8SAPIClient): k8s_api_client_mock.delete_ingress(name=FAKE_OBJECT_NAME, namespace=MY_FAKE_NAMESPACE) k8s_api_client_mock.extensions_v1beta1_api_client.delete_namespaced_ingress.assert_called_once_with( name=FAKE_OBJECT_NAME, namespace=MY_FAKE_NAMESPACE, body=mocker.ANY )
def test_get_deployment_raises_not_found_api_exception(mocker, k8s_api_client_mock: K8SAPIClient): mocker.patch.object(k8s_api_client_mock.apps_api_client, 'read_namespaced_deployment').side_effect = \ ApiException(status=HTTPStatus.NOT_FOUND) deployment = k8s_api_client_mock.get_deployment(name='fake-name', namespace=MY_FAKE_NAMESPACE) assert deployment is None
def test_get_pod_raises_not_found_api_exception(mocker: MockFixture, k8s_api_client_mock: K8SAPIClient): mocker.patch.object(k8s_api_client_mock.v1_api_client, 'list_namespaced_pod').side_effect = \ ApiException(status=HTTPStatus.NOT_FOUND) pod = k8s_api_client_mock.get_pod(namespace=MY_FAKE_NAMESPACE, label_selector=FAKE_LABEL_SELECTOR) assert pod is None
def k8s_api_client_mock(mocker) -> K8SAPIClient: mocker.patch('kubernetes.client.AppsV1Api') mocker.patch('kubernetes.client.ExtensionsV1beta1Api') mocker.patch('kubernetes.client.CoreV1Api') client = K8SAPIClient() return client
def test_get_deployment(mocker, k8s_api_client_mock: K8SAPIClient): fake_deployment = k8s_models.V1Deployment(metadata=k8s_models.V1ObjectMeta(name='fake-deployment')) mocker.patch.object(k8s_api_client_mock.apps_api_client, 'read_namespaced_deployment').return_value = \ fake_deployment deployment = k8s_api_client_mock.get_deployment(name='fake-name', namespace=MY_FAKE_NAMESPACE) assert deployment == fake_deployment
def test_get_pod_finds_no_pod(mocker: MockFixture, k8s_api_client_mock: K8SAPIClient): fake_pods = [] fake_pods_list = k8s_models.V1PodList(items=fake_pods) mocker.patch.object(k8s_api_client_mock.v1_api_client, 'list_namespaced_pod').return_value = fake_pods_list found_pod = k8s_api_client_mock.get_pod(namespace=MY_FAKE_NAMESPACE, label_selector=FAKE_LABEL_SELECTOR) assert found_pod is None
def test_get_pod_finds_many_pods(mocker: MockFixture, k8s_api_client_mock: K8SAPIClient): fake_pod = k8s_models.V1Pod(metadata=k8s_models.V1ObjectMeta(name=FAKE_OBJECT_NAME)) fake_second_pod = k8s_models.V1Pod(metadata=k8s_models.V1ObjectMeta(name=FAKE_OBJECT_NAME+'-2')) fake_pods = [fake_pod, fake_second_pod] fake_pods_list = k8s_models.V1PodList(items=fake_pods) mocker.patch.object(k8s_api_client_mock.v1_api_client, 'list_namespaced_pod').return_value = fake_pods_list found_pod = k8s_api_client_mock.get_pod(namespace=MY_FAKE_NAMESPACE, label_selector=FAKE_LABEL_SELECTOR) assert found_pod in (fake_pod, fake_second_pod)
def test_list_deployments(mocker, k8s_api_client_mock: K8SAPIClient): fake_deployments = [k8s_models.V1Deployment(metadata=k8s_models.V1ObjectMeta(name='fake-deployment'))] fake_deployment_list = k8s_models.V1DeploymentList(items=fake_deployments) mocker.patch.object(k8s_api_client_mock.apps_api_client, 'list_namespaced_deployment').return_value = \ fake_deployment_list deployments = k8s_api_client_mock.list_deployments(namespace=MY_FAKE_NAMESPACE) assert deployments == fake_deployments k8s_api_client_mock.apps_api_client.list_namespaced_deployment.assert_called_once_with(namespace=MY_FAKE_NAMESPACE, label_selector=None)
def incluster_init(cls): config.load_incluster_config() nauta_config = NautaPlatformConfig.incluster_init() with open("/var/run/secrets/kubernetes.io/serviceaccount/namespace", mode='r') as file: my_current_namespace = file.read() return cls(namespace=my_current_namespace, api_client=K8SAPIClient(), config=nauta_config)
def test_list_ingresses(mocker: MockFixture, k8s_api_client_mock: K8SAPIClient): fake_ingresses = [k8s_models.V1beta1Ingress(metadata=k8s_models.V1ObjectMeta(name=FAKE_OBJECT_NAME)), k8s_models.V1beta1Ingress(metadata=k8s_models.V1ObjectMeta(name=FAKE_OBJECT_NAME+'-2'))] fake_ingresses_list = k8s_models.V1beta1IngressList(items=fake_ingresses) mocker.patch.object(k8s_api_client_mock.extensions_v1beta1_api_client, 'list_namespaced_ingress').return_value = \ fake_ingresses_list ingresses = k8s_api_client_mock.list_ingresses(name='fake-name', namespace=MY_FAKE_NAMESPACE, label_selector='key=value') assert ingresses == fake_ingresses
def test_get_deployment_raises_other_api_exception(mocker, k8s_api_client_mock: K8SAPIClient): mocker.patch.object(k8s_api_client_mock.apps_api_client, 'read_namespaced_deployment').side_effect = \ ApiException(status=HTTPStatus.INTERNAL_SERVER_ERROR) with raises(ApiException): k8s_api_client_mock.get_deployment(name='fake-name', namespace=MY_FAKE_NAMESPACE)
def test_create_deployment(k8s_api_client_mock: K8SAPIClient): k8s_api_client_mock.create_deployment(namespace=MY_FAKE_NAMESPACE, body=k8s_models.V1Deployment()) k8s_api_client_mock.apps_api_client.create_namespaced_deployment.\ assert_called_once_with(namespace=MY_FAKE_NAMESPACE, body=k8s_models.V1Deployment())
def test_get_pod_raises_other_api_exception(mocker: MockFixture, k8s_api_client_mock: K8SAPIClient): mocker.patch.object(k8s_api_client_mock.v1_api_client, 'list_namespaced_pod').side_effect = \ ApiException(status=HTTPStatus.BAD_REQUEST) with raises(ApiException): k8s_api_client_mock.get_pod(namespace=MY_FAKE_NAMESPACE, label_selector=FAKE_LABEL_SELECTOR)
def test_get_service(k8s_api_client_mock: K8SAPIClient): k8s_api_client_mock.get_service(name='fake-name', namespace=MY_FAKE_NAMESPACE) k8s_api_client_mock.v1_api_client.read_namespaced_service.assert_called_once_with(name='fake-name', namespace=MY_FAKE_NAMESPACE)
def test_create_service(k8s_api_client_mock: K8SAPIClient): k8s_api_client_mock.create_service(namespace=MY_FAKE_NAMESPACE, body=k8s_models.V1Service()) k8s_api_client_mock.v1_api_client.create_namespaced_service.assert_called_once_with(namespace=MY_FAKE_NAMESPACE, body=k8s_models.V1Service())