Exemplo n.º 1
0
    def create(cls, config, name):
        """Create a deployment.

        :param config: a dict with deployment configuration
        :param name: a str represents a name of the deployment
        :returns: Deployment object
        """

        try:
            deployment = objects.Deployment(name=name, config=config)
        except exceptions.DeploymentNameExists as e:
            if logging.is_debug():
                LOG.exception(e)
            raise

        deployer = deploy.EngineFactory.get_engine(
            deployment["config"]["type"], deployment)
        try:
            deployer.validate()
        except jsonschema.ValidationError:
            LOG.error(
                _("Deployment %(uuid)s: Schema validation error.") %
                {"uuid": deployment["uuid"]})
            deployment.update_status(consts.DeployStatus.DEPLOY_FAILED)
            raise

        with deployer:
            endpoints = deployer.make_deploy()
            deployment.update_endpoints(endpoints)
            return deployment
Exemplo n.º 2
0
    def test_update_endpoints(self, mock_update):
        mock_update.return_value = self.deployment
        deploy = objects.Deployment(deployment=self.deployment)
        endpoints = {
            "admin":
            objects.Endpoint("url", "user", "pwd", "tenant",
                             consts.EndpointPermission.ADMIN),
            "users": [
                objects.Endpoint("url1", "user1", "pwd1", "tenant1",
                                 consts.EndpointPermission.USER),
                objects.Endpoint("url2", "user2", "pwd2", "tenant2",
                                 consts.EndpointPermission.USER),
            ]
        }

        expected_users = [
            u.to_dict(include_permission=True) for u in endpoints["users"]
        ]

        deploy.update_endpoints(endpoints)
        mock_update.assert_called_once_with(
            self.deployment["uuid"], {
                "admin": endpoints["admin"].to_dict(include_permission=True),
                "users": expected_users
            })
Exemplo n.º 3
0
 def _deploy_node(self, config):
     deployment = objects.Deployment(config=config,
                                     parent_uuid=self.deployment['uuid'])
     deployer = engine.EngineFactory.get_engine(config['type'], deployment)
     with deployer:
         endpoints = deployer.make_deploy()
     return deployer, endpoints
Exemplo n.º 4
0
 def test_update_name(self, mock_update):
     mock_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.update_name('new_name')
     mock_update.assert_called_once_with(
         self.deployment['uuid'],
         {'name': 'new_name'},
     )
Exemplo n.º 5
0
 def test_update_empty_endpoints(self, mock_update):
     mock_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.update_endpoints({})
     mock_update.assert_called_once_with(self.deployment["uuid"], {
         "admin": {},
         "users": []
     })
Exemplo n.º 6
0
 def test_update_name(self, mock_deployment_update):
     mock_deployment_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.update_name("new_name")
     mock_deployment_update.assert_called_once_with(
         self.deployment["uuid"],
         {"name": "new_name"},
     )
Exemplo n.º 7
0
 def test_update(self, mock_create, mock_update):
     mock_create.return_value = self.deployment
     mock_update.return_value = {'opt': 'val2'}
     deploy = objects.Deployment(opt='val1')
     deploy._update({'opt': 'val2'})
     mock_update.assert_called_once_with(self.deployment['uuid'],
                                         {'opt': 'val2'})
     self.assertEqual(deploy['opt'], 'val2')
Exemplo n.º 8
0
 def test_update_status(self, mock_update):
     mock_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.update_status(consts.DeployStatus.DEPLOY_FAILED)
     mock_update.assert_called_once_with(
         self.deployment['uuid'],
         {'status': consts.DeployStatus.DEPLOY_FAILED},
     )
Exemplo n.º 9
0
 def test_update(self, mock_deployment_create, mock_deployment_update):
     mock_deployment_create.return_value = self.deployment
     mock_deployment_update.return_value = {"opt": "val2"}
     deploy = objects.Deployment(opt="val1")
     deploy._update({"opt": "val2"})
     mock_deployment_update.assert_called_once_with(self.deployment["uuid"],
                                                    {"opt": "val2"})
     self.assertEqual(deploy["opt"], "val2")
Exemplo n.º 10
0
 def test_update_config(self, mock_update):
     mock_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.update_config({'opt': 'val'})
     mock_update.assert_called_once_with(
         self.deployment['uuid'],
         {'config': {
             'opt': 'val'
         }},
     )
Exemplo n.º 11
0
 def test_update_config(self, mock_deployment_update):
     mock_deployment_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.update_config({"opt": "val"})
     mock_deployment_update.assert_called_once_with(
         self.deployment["uuid"],
         {"config": {
             "opt": "val"
         }},
     )
Exemplo n.º 12
0
 def test_update_set_completed(self, mock_deployment_update, mock_datetime):
     mock_datetime.now = mock.Mock(return_value="fake_time")
     mock_deployment_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.set_completed()
     mock_deployment_update.assert_called_once_with(
         self.deployment["uuid"], {
             "completed_at": "fake_time",
             "status": consts.DeployStatus.DEPLOY_FINISHED
         })
Exemplo n.º 13
0
 def test_update_set_completed(self, mock_update, mock_datetime):
     mock_datetime.now = mock.Mock(return_value='fake_time')
     mock_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     deploy.set_completed()
     mock_update.assert_called_once_with(
         self.deployment['uuid'], {
             'completed_at': 'fake_time',
             'status': consts.DeployStatus.DEPLOY_FINISHED
         })
Exemplo n.º 14
0
 def test_update_endpoints(self, mock_update):
     mock_update.return_value = self.deployment
     deploy = objects.Deployment(deployment=self.deployment)
     endpoints = [
         objects.Endpoint("url", "user", "pwd", "tenant",
                          consts.EndpointPermission.ADMIN)
     ]
     deploy.update_endpoints(endpoints)
     mock_update.assert_called_once_with(
         self.deployment["uuid"],
         {"endpoints": [endpoints[0].to_dict(include_permission=True)]})
Exemplo n.º 15
0
def create_deploy(config, name):
    """Create a deployment.

    :param config: a dict with deployment configuration
    :param name: a str represents a name of the deployment
    """
    deployment = objects.Deployment(name=name, config=config)
    deployer = deploy.EngineFactory.get_engine(deployment['config']['type'],
                                               deployment)
    with deployer:
        endpoints = deployer.make_deploy()
        deployment.update_endpoints(endpoints)
        return deployment
Exemplo n.º 16
0
 def _deploy_first(self, lxc_host, name, distribution, release):
     lxc_host.prepare()
     lxc_host.create_container(name, distribution, release)
     lxc_host.start_containers()
     items = lxc_host.get_server_object(name).get_credentials().iteritems()
     # filter out all keys where value is None
     credentials = dict(filter(lambda x: x[1] is not None, items))
     engine_config = self.config['engine'].copy()
     engine_config['provider'] = {'type': 'DummyProvider',
                                  'credentials': [credentials]}
     deployment = objects.Deployment(config=engine_config,
                                     parent_uuid=self.deployment['uuid'])
     deployer = engine.EngineFactory.get_engine(engine_config['name'],
                                                deployment)
     deployer.deploy()
     lxc_host.stop_containers()
Exemplo n.º 17
0
 def _deploy_first(self, lxc_host, name, distribution, release):
     lxc_host.prepare()
     lxc_host.create_container(name, distribution, release)
     lxc_host.start_containers()
     items = six.iteritems(
         lxc_host.get_server_object(name).get_credentials())
     # filter out all keys where value is None
     credentials = dict(filter(lambda x: x[1] is not None, items))
     engine_config = self.config["engine"].copy()
     engine_config["provider"] = {"type": "DummyProvider",
                                  "credentials": [credentials]}
     deployment = objects.Deployment(config=engine_config,
                                     parent_uuid=self.deployment["uuid"])
     deployer = engine.EngineFactory.get_engine(engine_config["name"],
                                                deployment)
     deployer.deploy()
     lxc_host.stop_containers()
Exemplo n.º 18
0
 def test_add_resource(self, mock_resource_create):
     mock_resource_create.return_value = self.resource
     deploy = objects.Deployment(deployment=self.deployment)
     resource = deploy.add_resource("provider",
                                    type="some",
                                    info={"key": "value"})
     self.assertEqual(resource["id"], self.resource["id"])
     mock_resource_create.assert_called_once_with({
         "deployment_uuid":
         self.deployment["uuid"],
         "provider_name":
         "provider",
         "type":
         "some",
         "info": {
             "key": "value"
         },
     })
Exemplo n.º 19
0
 def test_add_resource(self, mock_create):
     mock_create.return_value = self.resource
     deploy = objects.Deployment(deployment=self.deployment)
     resource = deploy.add_resource('provider',
                                    type='some',
                                    info={'key': 'value'})
     self.assertEqual(resource['id'], self.resource['id'])
     mock_create.assert_called_once_with({
         'deployment_uuid':
         self.deployment['uuid'],
         'provider_name':
         'provider',
         'type':
         'some',
         'info': {
             'key': 'value'
         },
     })
Exemplo n.º 20
0
def create_deploy(config, name):
    """Create a deployment.

    :param config: a dict with deployment configuration
    :param name: a str represents a name of the deployment
    """
    deployment = objects.Deployment(name=name, config=config)
    deployer = deploy.EngineFactory.get_engine(deployment['config']['type'],
                                               deployment)
    try:
        deployer.validate()
    except jsonschema.ValidationError:
        LOG.error(
            _('Deployment %(uuid)s: Schema validation error.') %
            {'uuid': deployment['uuid']})
        deployment.update_status(consts.DeployStatus.DEPLOY_FAILED)
        raise

    with deployer:
        endpoints = deployer.make_deploy()
        deployment.update_endpoints(endpoints)
        return deployment
Exemplo n.º 21
0
 def test_get_resources(self, mock_resource_get_all):
     mock_resource_get_all.return_value = [self.resource]
     deploy = objects.Deployment(deployment=self.deployment)
     resources = deploy.get_resources(provider_name="provider", type="some")
     self.assertEqual(len(resources), 1)
     self.assertEqual(resources[0]["id"], self.resource["id"])
Exemplo n.º 22
0
 def test_create_and_delete(self, mock_create, mock_delete):
     mock_create.return_value = self.deployment
     deploy = objects.Deployment()
     deploy.delete()
     mock_delete.assert_called_once_with(self.deployment['uuid'])
Exemplo n.º 23
0
 def test_init_without_create(self, mock_create):
     deploy = objects.Deployment(deployment=self.deployment)
     self.assertFalse(mock_create.called)
     self.assertEqual(deploy['uuid'], self.deployment['uuid'])
Exemplo n.º 24
0
 def test_init_with_create(self, mock_create):
     mock_create.return_value = self.deployment
     deploy = objects.Deployment()
     mock_create.assert_called_once_with({})
     self.assertEqual(deploy['uuid'], self.deployment['uuid'])
Exemplo n.º 25
0
 def test_get_resources(self, mock_get_all):
     mock_get_all.return_value = [self.resource]
     deploy = objects.Deployment(deployment=self.deployment)
     resources = deploy.get_resources(provider_name='provider', type='some')
     self.assertEqual(len(resources), 1)
     self.assertEqual(resources[0]['id'], self.resource['id'])