示例#1
0
 def test_rollback_no_args(self):
     name = "nginx"
     image1 = "nginx:1.7.9"
     image2 = "nginx:1.9.1"
     container = utils.create_container(name=name, image=image1)
     dep_name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=dep_name)
     dep.add_container(container)
     dep.desired_replicas = 3
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         self.assertEqual(image1, dep.containers[0].image)
         dep.container_image = (name, image2)
         dep.update()
         self.assertIn('deployment.kubernetes.io/revision', dep.annotations)
         rev_before = dep.get_annotation(
             'deployment.kubernetes.io/revision')
         self.assertNotEqual(image1, dep.containers[0].image)
         self.assertEqual(image2, dep.containers[0].image)
         dep.rollback()
         self.assertIn('deployment.kubernetes.io/revision', dep.annotations)
         rev_after = dep.get_annotation('deployment.kubernetes.io/revision')
         self.assertNotEqual(rev_before, rev_after)
         self.assertGreater(rev_after, rev_before)
         self.assertEqual(image1, dep.containers[0].image)
         self.assertNotEqual(image2, dep.containers[0].image)
示例#2
0
 def test_update_container_image_keep_env_vars(self):
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     cont_name = "nginx"
     cont_image = "nginx:1.7.9"
     new_image = "nginx:1.10.3"
     env_var_name = "YoVariable"
     cont = utils.create_container(name=cont_name, image=cont_image)
     cont.add_env(name=env_var_name, value=name)
     dep.add_container(container=cont)
     dep.desired_replicas = 1
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         with self.assertRaises(AlreadyExistsException):
             dep.create()
         # Change the container image
         dep.container_image = (cont_name, new_image)
         # Update the deployment
         dep.update()
         # Refresh whatever we have.
         dep.get()
         for c in dep.containers:
             self.assertIsInstance(c, K8sContainer)
             if c.name == cont_name:
                 self.assertEqual(c.image, new_image)
                 self.assertEqual(c.env[0].name, env_var_name)
                 self.assertEqual(c.env[0].value, name)
示例#3
0
 def test_get_by_name_nonexistent(self):
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     if utils.is_reachable(dep.config.api_host):
         result = K8sDeployment.get_by_name(config=dep.config, name=name)
         self.assertIsInstance(result, list)
         self.assertEqual(0, len(result))
 def test_delete_nonexistent(self):
     name = "yorc-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     if utils.is_reachable(dep.config.api_host):
         try:
             dep.delete()
             self.fail("Should not fail.")
         except Exception as err:
             self.assertIsInstance(err, NotFoundException)
示例#5
0
 def test_create_already_exists(self):
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     cont_name = "nginx"
     cont_image = "nginx:1.7.9"
     cont = utils.create_container(name=cont_name, image=cont_image)
     dep.add_container(container=cont)
     dep.desired_replicas = 1
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         with self.assertRaises(AlreadyExistsException):
             dep.create()
示例#6
0
 def test_delete(self):
     name = "yocontainer"
     container = utils.create_container(name=name)
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     dep.add_container(container)
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         utils.cleanup_deployments()
         result = dep.list()
         self.assertIsInstance(result, list)
         self.assertEqual(0, len(result))
示例#7
0
 def test_update_name_fails(self):
     name = "yocontainer"
     container = utils.create_container(name=name)
     name1 = "yodep1"
     name2 = "yodep2"
     dep = utils.create_deployment(name=name1)
     dep.add_container(container)
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         dep.name = name2
         with self.assertRaises(NotFoundException):
             dep.update()
示例#8
0
 def test_update_namespace_fails(self):
     name = "yocontainer"
     container = utils.create_container(name=name)
     name = "yorc-{0}".format(str(uuid.uuid4()))
     nspace = "yonamespace"
     dep = utils.create_deployment(name=name)
     dep.add_container(container)
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         dep.namespace = nspace
         with self.assertRaises(BadRequestException):
             dep.update()
示例#9
0
 def test_get_by_name(self):
     cont_name = "yocontainer"
     container = utils.create_container(name=cont_name)
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     dep.add_container(container)
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         result = K8sDeployment.get_by_name(config=dep.config, name=name)
         self.assertIsInstance(result, list)
         self.assertEqual(1, len(result))
         self.assertIsInstance(result[0], K8sDeployment)
         self.assertEqual(dep, result[0])
示例#10
0
    def test_list(self):
        name = "yodep-{0}".format(str(uuid.uuid4()))
        dep = utils.create_deployment(name=name)
        cont_name = "redis"
        cont_image = "redis:3.2.3"
        cont = utils.create_container(name=cont_name, image=cont_image)
        dep.add_container(container=cont)

        if utils.is_reachable(dep.config.api_host):
            d = dep.create()
            objs = dep.list()
            for x in objs:
                self.assertIsInstance(x, K8sDeployment)
示例#11
0
 def test_update_pod_labels(self):
     name = "nginx"
     image = "nginx:1.7.9"
     container = utils.create_container(name=name, image=image)
     dep_name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=dep_name)
     dep.add_container(container)
     dep.desired_replicas = 3
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         labels = dep.pod_labels
         labels['newkey'] = 'newvalue'
         dep.pod_labels = labels
         updated = dep.update()
         self.assertEqual(labels, updated.pod_labels)
示例#12
0
 def test_create_one_replica(self):
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     cont_name = "nginx"
     cont_image = "nginx:1.7.9"
     cont = utils.create_container(name=cont_name, image=cont_image)
     dep.add_container(container=cont)
     dep.desired_replicas = 1
     if utils.is_reachable(dep.config.api_host):
         d = dep.create()
         self.assertIsNotNone(d)
         self.assertIsInstance(d, K8sDeployment)
         self.assertEqual(d, dep)
         self.assertEqual(1, d.desired_replicas)
         self.assertEqual(1, d.available_replicas)
         self.assertEqual(1, d.updated_replicas)
示例#13
0
 def test_scale(self):
     cont_name = "yocontainer"
     container = utils.create_container(name=cont_name)
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     dep.add_container(container)
     dep.desired_replicas = 3
     if utils.is_reachable(dep.config.api_host):
         dep.create()
         self.assertEqual(3, dep.desired_replicas)
         self.assertEqual(3, dep.updated_replicas)
         self.assertEqual(3, dep.available_replicas)
         dep.scale(5)
         self.assertEqual(5, dep.desired_replicas)
         self.assertEqual(5, dep.updated_replicas)
         self.assertEqual(5, dep.available_replicas)
示例#14
0
 def test_create_zero_replicas(self):
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     cont_name = "redis"
     cont_image = "redis:3.2.3"
     cont = utils.create_container(name=cont_name, image=cont_image)
     dep.add_container(container=cont)
     if utils.is_reachable(dep.config.api_host):
         d = dep.create()
         self.assertIsNotNone(d)
         self.assertIsInstance(d, K8sDeployment)
         self.assertEqual(d, dep)
         self.assertEqual(0, d.desired_replicas)
         self.assertIsNone(d.available_replicas)
         self.assertIsNone(d.current_replicas)
         self.assertIsNone(d.unavailable_replicas)
         self.assertIsNone(d.updated_replicas)
示例#15
0
    def test_list_multiple(self):
        name = "yocontainer"
        container = utils.create_container(name=name)
        config = K8sConfig(kubeconfig=utils.kubeconfig_fallback)
        deployments = []
        count = 3
        objs = []

        if utils.is_reachable(config.api_host):
            for i in range(0, count):
                name = "yodep-{0}".format(str(uuid.uuid4()))
                dep = utils.create_deployment(config, name)
                dep.add_container(container)
                result = dep.create()
                self.assertIsInstance(result, K8sDeployment)
                self.assertEqual(dep, result)
                deployments.append(dep)
                objs = dep.list()
            self.assertEqual(count, len(deployments))
            self.assertEqual(count, len(objs))
示例#16
0
 def test_create_no_args(self):
     name = "yodep-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     if utils.is_reachable(dep.config.api_host):
         with self.assertRaises(UnprocessableEntityException):
             dep.create()
示例#17
0
 def test_init_with_name(self):
     name = "yomama"
     dep = utils.create_deployment(name=name)
     self.assertIsNotNone(dep)
     self.assertIsInstance(dep, K8sDeployment)
     self.assertEqual(dep.name, name)
示例#18
0
 def test_delete_nonexistent(self):
     name = "yorc-{0}".format(str(uuid.uuid4()))
     dep = utils.create_deployment(name=name)
     if utils.is_reachable(dep.config.api_host):
         with self.assertRaises(NotFoundException):
             dep.delete()