def test_createService(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()
        client_mock.CoreV1Api.return_value.create_namespaced_service.return_value = V1Service(
            kind="unit")

        expected_body = V1Service(metadata=self._createMeta(self.name),
                                  spec=V1ServiceSpec(
                                      cluster_ip="None",
                                      ports=[
                                          V1ServicePort(name="mongod",
                                                        port=27017,
                                                        protocol="TCP")
                                      ],
                                      selector={
                                          "heritage": "mongos",
                                          "name": self.name,
                                          "operated-by":
                                          "operators.ultimaker.com"
                                      },
                                  ))
        expected_calls = [
            call.CoreV1Api().create_namespaced_service(self.namespace,
                                                       expected_body)
        ]

        result = service.createService(self.cluster_object)
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(V1Service(kind="unit"), result)
예제 #2
0
    def test_updateService(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        expected_body = V1Service(metadata=self._createMeta(self.name),
                                  spec=V1ServiceSpec(
                                      cluster_ip="None",
                                      ports=[
                                          V1ServicePort(name='mongod',
                                                        port=27017,
                                                        protocol='TCP')
                                      ],
                                      selector={
                                          'heritage': 'mongos',
                                          'name': self.name,
                                          'operated-by':
                                          'operators.ultimaker.com'
                                      },
                                  ))
        result = service.updateService(self.cluster_object)
        expected_calls = [
            call.CoreV1Api().patch_namespaced_service(self.name,
                                                      self.namespace,
                                                      expected_body)
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api().patch_namespaced_service.return_value,
            result)
예제 #3
0
    def test_updateService(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        expected_body = V1Service(metadata=self._createMeta(self.name),
                                  spec=V1ServiceSpec(
                                      cluster_ip="None",
                                      ports=[
                                          V1ServicePort(name="mongod",
                                                        port=27017,
                                                        protocol="TCP")
                                      ],
                                      selector={
                                          "heritage": "mongos",
                                          "name": self.name,
                                          "operated-by":
                                          "operators.javamachr.cz"
                                      },
                                  ))
        result = service.updateService(self.cluster_object)
        expected_calls = [
            call.CoreV1Api().patch_namespaced_service(self.name,
                                                      self.namespace,
                                                      expected_body)
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api().patch_namespaced_service.return_value,
            result)
예제 #4
0
    def test_deleteService_TypeError(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        client_mock.CoreV1Api.return_value.delete_namespaced_service.side_effect = TypeError, V1Status(
        )

        result = service.deleteService(self.name, self.namespace)
        expected_calls = [
            call.CoreV1Api().delete_namespaced_service(self.name,
                                                       self.namespace,
                                                       V1DeleteOptions()),
            call.CoreV1Api().delete_namespaced_service(self.name,
                                                       self.namespace),
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(V1Status(), result)
예제 #5
0
    def test_updateSecret(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        client_mock.CoreV1Api.return_value.read_namespaced_secret.return_value = V1Secret(
            kind="unit")

        secret_data = {"username": "******", "password": "******"}
        expected_body = V1Secret(kind="unit", string_data=secret_data)
        expected_calls = [
            call.CoreV1Api().read_namespaced_secret(self.name, self.namespace),
            call.CoreV1Api().patch_namespaced_secret(self.name, self.namespace,
                                                     expected_body),
        ]

        result = service.updateSecret(self.name, self.namespace, secret_data)
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api.return_value.patch_namespaced_secret.
            return_value, result)
예제 #6
0
    def test_getService(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        result = service.getService(self.name, self.namespace)
        expected_calls = [
            call.CoreV1Api().read_namespaced_service(self.name, self.namespace)
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api.return_value.read_namespaced_service.
            return_value, result)
예제 #7
0
    def test_deleteService(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        result = service.deleteService(self.name, self.namespace)
        expected_calls = [
            call.CoreV1Api().delete_namespaced_service(self.name,
                                                       self.namespace,
                                                       V1DeleteOptions())
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api().delete_namespaced_service.return_value,
            result)
예제 #8
0
    def test_listAllSecretsWithLabels_custom(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        labels = {"operated-by": "me", "heritage": "mongo", "name": "name"}
        result = service.listAllSecretsWithLabels(labels)
        expected_calls = [
            call.CoreV1Api().list_secret_for_all_namespaces(
                label_selector="operated-by=me,heritage=mongo,name=name")
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api().list_secret_for_all_namespaces.
            return_value, result)
예제 #9
0
    def test_listAllSecretsWithLabels_default(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        result = service.listAllSecretsWithLabels()
        expected_calls = [
            call.CoreV1Api().list_secret_for_all_namespaces(
                label_selector=
                "operated-by=operators.ultimaker.com,heritage=mongos")
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api().list_secret_for_all_namespaces.
            return_value, result)
예제 #10
0
    def test___init__(self, client_mock):
        KubernetesService()
        config = Configuration()
        config.debug = False
        expected = [
            call.ApiClient(config),
            call.CoreV1Api(client_mock.ApiClient.return_value),
            call.CustomObjectsApi(client_mock.ApiClient.return_value),
            call.ApiextensionsV1beta1Api(client_mock.ApiClient.return_value),
            call.AppsV1beta1Api(client_mock.ApiClient.return_value),
        ]

        with patch("kubernetes.client.configuration.Configuration.__eq__",
                   dict_eq):
            self.assertEqual(expected, client_mock.mock_calls)
예제 #11
0
    def test_createSecret(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()

        secret_data = {"username": "******", "password": "******"}
        expected_body = V1Secret(metadata=self._createMeta("secret-name"),
                                 string_data=secret_data)
        result = service.createSecret("secret-name", self.namespace,
                                      secret_data)

        self.assertEqual([
            call.CoreV1Api().create_namespaced_secret(self.namespace,
                                                      expected_body)
        ], client_mock.mock_calls)
        self.assertEqual(
            client_mock.CoreV1Api.return_value.create_namespaced_secret.
            return_value, result)
예제 #12
0
    def test_createSecret_exists(self, client_mock):
        service = KubernetesService()
        client_mock.reset_mock()
        client_mock.CoreV1Api.return_value.create_namespaced_secret.side_effect = ApiException(
            status=409)
        client_mock.CoreV1Api.return_value.create_namespaced_secret.side_effect.body = "{}"

        secret_data = {"username": "******", "password": "******"}
        result = service.createSecret(self.name, self.namespace, secret_data)

        expected_body = V1Secret(metadata=self._createMeta(self.name),
                                 string_data=secret_data)
        expected_calls = [
            call.CoreV1Api().create_namespaced_secret(self.namespace,
                                                      expected_body)
        ]
        self.assertEqual(expected_calls, client_mock.mock_calls)
        self.assertIsNone(result)