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
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)])
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
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)