Esempio n. 1
0
 def deployment_create(self, values):
     deployment = models.Deployment()
     try:
         deployment.update(values)
         deployment.save()
     except db_exc.DBDuplicateEntry:
         raise exceptions.DeploymentNameExists(deployment=values["name"])
     return deployment
Esempio n. 2
0
class DeploymentAPITestCase(BaseDeploymentTestCase):
    @mock.patch("rally.objects.deploy.db.deployment_update")
    @mock.patch("rally.objects.deploy.db.deployment_create")
    @mock.patch("rally.deploy.engine.EngineFactory.validate")
    def test_create(self, mock_validate, mock_create, mock_update):
        mock_create.return_value = self.deployment
        mock_update.return_value = self.deployment
        api.Deployment.create(self.deployment_config, "fake_deployment")
        mock_create.assert_called_once_with({
            "name": "fake_deployment",
            "config": self.deployment_config,
        })
        mock_validate.assert_called_with()
        mock_update.assert_has_calls(
            [mock.call(self.deployment_uuid, self.endpoints)])

    @mock.patch("rally.objects.deploy.db.deployment_update")
    @mock.patch("rally.objects.deploy.db.deployment_create")
    @mock.patch("rally.deploy.engine.EngineFactory.validate",
                side_effect=jsonschema.ValidationError("ValidationError"))
    def test_create_validation_error(self, mock_validate, mock_create,
                                     mock_update):
        mock_create.return_value = self.deployment
        self.assertRaises(jsonschema.ValidationError, api.Deployment.create,
                          self.deployment_config, "fake_deployment")
        mock_update.assert_called_once_with(
            self.deployment_uuid,
            {"status": consts.DeployStatus.DEPLOY_FAILED})

    @mock.patch("rally.api.LOG")
    @mock.patch(
        "rally.objects.deploy.db.deployment_create",
        side_effect=exceptions.DeploymentNameExists(deployment="fake_deploy"))
    def test_create_duplication_error(self, mock_d_create, mock_log):
        self.assertRaises(exceptions.DeploymentNameExists,
                          api.Deployment.create, self.deployment_config,
                          "fake_deployment")

    @mock.patch("rally.objects.deploy.db.deployment_delete")
    @mock.patch("rally.objects.deploy.db.deployment_update")
    @mock.patch("rally.objects.deploy.db.deployment_get")
    def test_destroy(self, mock_get, mock_update, mock_delete):
        mock_get.return_value = self.deployment
        mock_update.return_value = self.deployment
        api.Deployment.destroy(self.deployment_uuid)
        mock_get.assert_called_once_with(self.deployment_uuid)
        mock_delete.assert_called_once_with(self.deployment_uuid)

    @mock.patch("rally.objects.deploy.db.deployment_update")
    @mock.patch("rally.objects.deploy.db.deployment_get")
    def test_recreate(self, mock_get, mock_update):
        mock_get.return_value = self.deployment
        mock_update.return_value = self.deployment
        api.Deployment.recreate(self.deployment_uuid)
        mock_get.assert_called_once_with(self.deployment_uuid)
        mock_update.assert_has_calls(
            [mock.call(self.deployment_uuid, self.endpoints)])
Esempio n. 3
0
File: api.py Progetto: zioc/rally
 def deployment_create(self, values):
     deployment = models.Deployment()
     try:
         # TODO(rpromyshlennikov): remove after credentials refactoring
         values.setdefault("credentials", [[
             "openstack", {
                 "admin": values.get("admin"),
                 "users": values.get("users", [])
             }
         ]])
         deployment.update(values)
         deployment.save()
     except db_exc.DBDuplicateEntry:
         raise exceptions.DeploymentNameExists(deployment=values["name"])
     return deployment
Esempio n. 4
0
class DeploymentAPITestCase(BaseDeploymentTestCase):
    @mock.patch("rally.common.objects.deploy.db.deployment_update")
    @mock.patch("rally.common.objects.deploy.db.deployment_create")
    @mock.patch("rally.deployment.engine.Engine.validate")
    def test_create(self, mock_engine_validate, mock_deployment_create,
                    mock_deployment_update):
        mock_deployment_create.return_value = self.deployment
        mock_deployment_update.return_value = self.deployment
        api.Deployment.create(self.deployment_config, "fake_deployment")
        mock_deployment_create.assert_called_once_with({
            "name":
            "fake_deployment",
            "config":
            self.deployment_config,
        })
        mock_engine_validate.assert_called_with()
        mock_deployment_update.assert_has_calls(
            [mock.call(self.deployment_uuid, self.credentials)])

    @mock.patch("rally.common.objects.deploy.db.deployment_update")
    @mock.patch("rally.common.objects.deploy.db.deployment_create")
    @mock.patch("rally.deployment.engine.Engine.validate",
                side_effect=jsonschema.ValidationError("ValidationError"))
    def test_create_validation_error(self, mock_engine_validate,
                                     mock_deployment_create,
                                     mock_deployment_update):
        mock_deployment_create.return_value = self.deployment
        self.assertRaises(jsonschema.ValidationError, api.Deployment.create,
                          self.deployment_config, "fake_deployment")
        mock_deployment_update.assert_called_once_with(
            self.deployment_uuid,
            {"status": consts.DeployStatus.DEPLOY_FAILED})

    @mock.patch("rally.api.LOG")
    @mock.patch(
        "rally.common.objects.deploy.db.deployment_create",
        side_effect=exceptions.DeploymentNameExists(deployment="fake_deploy"))
    def test_create_duplication_error(self, mock_deployment_create, mock_log):
        self.assertRaises(exceptions.DeploymentNameExists,
                          api.Deployment.create, self.deployment_config,
                          "fake_deployment")

    @mock.patch("rally.common.objects.deploy.db.deployment_delete")
    @mock.patch("rally.common.objects.deploy.db.deployment_update")
    @mock.patch("rally.common.objects.deploy.db.deployment_get")
    def test_destroy(self, mock_deployment_get, mock_deployment_update,
                     mock_deployment_delete):
        mock_deployment_get.return_value = self.deployment
        mock_deployment_update.return_value = self.deployment
        api.Deployment.destroy(self.deployment_uuid)
        mock_deployment_get.assert_called_once_with(self.deployment_uuid)
        mock_deployment_delete.assert_called_once_with(self.deployment_uuid)

    @mock.patch("rally.common.objects.deploy.db.deployment_update")
    @mock.patch("rally.common.objects.deploy.db.deployment_get")
    def test_recreate(self, mock_deployment_get, mock_deployment_update):
        mock_deployment_get.return_value = self.deployment
        mock_deployment_update.return_value = self.deployment
        api.Deployment.recreate(self.deployment_uuid)
        mock_deployment_get.assert_called_once_with(self.deployment_uuid)
        mock_deployment_update.assert_has_calls(
            [mock.call(self.deployment_uuid, self.credentials)])

    @mock.patch("rally.common.objects.deploy.db.deployment_get")
    def test_get(self, mock_deployment_get):
        deployment_id = "aaaa-bbbb-cccc-dddd"
        mock_deployment_get.return_value = self.deployment
        ret = api.Deployment.get(deployment_id)
        for key in self.deployment:
            self.assertEqual(ret[key], self.deployment[key])

    @mock.patch("rally.common.objects.Deployment.list")
    def test_list(self, mock_deployment_list):
        mock_deployment_list.return_value = self.deployment
        ret = api.Deployment.list()
        for key in self.deployment:
            self.assertEqual(ret[key], self.deployment[key])

    @mock.patch("rally.osclients.Keystone.create_client")
    def test_deployment_check(self, mock_keystone_create_client):
        sample_credential = objects.Credential("http://192.168.1.1:5000/v2.0/",
                                               "admin", "adminpass").to_dict()
        deployment = {"admin": sample_credential, "users": [sample_credential]}
        api.Deployment.check(deployment)
        mock_keystone_create_client.assert_called_with()

    def test_deployment_check_raise(self):
        sample_credential = objects.Credential("http://192.168.1.1:5000/v2.0/",
                                               "admin", "adminpass").to_dict()
        sample_credential["not-exist-key"] = "error"
        deployment = {"admin": sample_credential}
        self.assertRaises(TypeError, api.Deployment.check, deployment)

    @mock.patch("rally.osclients.Clients.services")
    def test_deployment_check_connect_failed(self, mock_clients_services):
        sample_credential = objects.Credential("http://192.168.1.1:5000/v2.0/",
                                               "admin", "adminpass").to_dict()
        deployment = {"admin": sample_credential}
        refused = keystone_exceptions.ConnectionRefused()
        mock_clients_services.side_effect = refused
        self.assertRaises(keystone_exceptions.ConnectionRefused,
                          api.Deployment.check, deployment)