def reset_task_status(self): with mock.patch.object(MgmtInstance, 'load') as mock_load: mock_load.return_value = self.instance req, body = self._make_request(context=self.context) self.controller = MgmtInstanceController() resp = self.controller.action(req, body, self.tenant_id, self.db_info.id) mock_load.assert_called_once_with(context=self.context, id=self.db_info.id) return resp
def reset_task_status(self): self.mock.StubOutWithMock(MgmtInstance, 'load') MgmtInstance.load(context=self.context, id=self.db_info.id).AndReturn(self.instance) self.mock.ReplayAll() req, body = self._make_request(context=self.context) self.controller = MgmtInstanceController() resp = self.controller.action(req, body, self.tenant_id, self.db_info.id) self.mock.UnsetStubs() self.mock.VerifyAll() return resp
def get_resources(self): resources = [] instances = extensions.ResourceExtension('{tenant_id}/mgmt/instances', MgmtInstanceController(), member_actions={ 'root': 'GET', 'diagnostics': 'GET', 'hwinfo': 'GET', 'rpc_ping': 'GET', 'action': 'POST' }) resources.append(instances) clusters = extensions.ResourceExtension( '{tenant_id}/mgmt/clusters', ClusterController(), member_actions={'action': 'POST'}) resources.append(clusters) hosts = extensions.ResourceExtension('{tenant_id}/mgmt/hosts', HostController(), member_actions={}) resources.append(hosts) quota = extensions.ResourceExtension('{tenant_id}/mgmt/quotas', QuotaController(), member_actions={}) resources.append(quota) storage = extensions.ResourceExtension('{tenant_id}/mgmt/storage', StorageController(), member_actions={}) resources.append(storage) host_instances = extensions.ResourceExtension( 'instances', hostservice.HostInstanceController(), parent={ 'member_name': 'host', 'collection_name': '{tenant_id}/mgmt/hosts' }, collection_actions={'action': 'POST'}) resources.append(host_instances) upgrade = extensions.ResourceExtension( '{tenant_id}/mgmt/instances/{instance_id}/upgrade', UpgradeController(), member_actions={}) resources.append(upgrade) datastore_configuration_parameters = extensions.ResourceExtension( '{tenant_id}/mgmt/datastores/versions/{version_id}/parameters', conf_service.ConfigurationsParameterController(), member_actions={}) resources.append(datastore_configuration_parameters) return resources
def get_resources(self): resources = [] serializer = wsgi.TroveResponseSerializer( body_serializers={ 'application/xml': wsgi.TroveXMLDictSerializer() }) instances = extensions.ResourceExtension( '{tenant_id}/mgmt/instances', MgmtInstanceController(), deserializer=wsgi.TroveRequestDeserializer(), serializer=serializer, member_actions={ 'root': 'GET', 'diagnostics': 'GET', 'hwinfo': 'GET', 'action': 'POST' }) resources.append(instances) hosts = extensions.ResourceExtension( '{tenant_id}/mgmt/hosts', HostController(), deserializer=wsgi.RequestDeserializer(), serializer=serializer, member_actions={}) resources.append(hosts) quota = extensions.ResourceExtension( '{tenant_id}/mgmt/quotas', QuotaController(), deserializer=wsgi.RequestDeserializer(), serializer=serializer, member_actions={}) resources.append(quota) storage = extensions.ResourceExtension( '{tenant_id}/mgmt/storage', StorageController(), deserializer=wsgi.RequestDeserializer(), serializer=serializer, member_actions={}) resources.append(storage) host_instances = extensions.ResourceExtension( 'instances', hostservice.HostInstanceController(), parent={ 'member_name': 'host', 'collection_name': '{tenant_id}/mgmt/hosts' }, deserializer=wsgi.RequestDeserializer(), serializer=serializer, collection_actions={'action': 'POST'}) resources.append(host_instances) return resources
def reset_task_status(self): self.mock.StubOutWithMock(MgmtInstance, "load") MgmtInstance.load(context=self.context, id=self.db_info.id).AndReturn(self.instance) self.mock.ReplayAll() req, body = self._make_request(context=self.context) self.controller = MgmtInstanceController() resp = self.controller.action(req, body, self.tenant_id, self.db_info.id) self.mock.UnsetStubs() self.mock.VerifyAll() return resp
def get_resources(self): resources = [] instances = extensions.ResourceExtension( '{tenant_id}/mgmt/instances', MgmtInstanceController(), member_actions={'root': 'GET', 'diagnostics': 'GET', 'hwinfo': 'GET', 'rpc_ping': 'GET', 'action': 'POST'}) resources.append(instances) clusters = extensions.ResourceExtension( '{tenant_id}/mgmt/clusters', MgmtClusterController(), member_actions={'action': 'POST'}) resources.append(clusters) quota = extensions.ResourceExtension( '{tenant_id}/mgmt/quotas', QuotaController(), member_actions={}) resources.append(quota) upgrade = extensions.ResourceExtension( '{tenant_id}/mgmt/instances/{instance_id}/upgrade', UpgradeController(), member_actions={}) resources.append(upgrade) datastore_configuration_parameters = extensions.ResourceExtension( '{tenant_id}/mgmt/datastores/versions/{version_id}/parameters', conf_service.ConfigurationsParameterController(), member_actions={}) resources.append(datastore_configuration_parameters) datastore_version = extensions.ResourceExtension( '{tenant_id}/mgmt/datastore-versions', DatastoreVersionController(), member_actions={}) resources.append(datastore_version) return resources
def get_resources(self): resources = [] instances = extensions.ResourceExtension('{tenant_id}/mgmt/instances', MgmtInstanceController(), member_actions={ 'root': 'GET', 'diagnostics': 'GET', 'hwinfo': 'GET', 'action': 'POST' }) resources.append(instances) hosts = extensions.ResourceExtension('{tenant_id}/mgmt/hosts', HostController(), member_actions={}) resources.append(hosts) quota = extensions.ResourceExtension('{tenant_id}/mgmt/quotas', QuotaController(), member_actions={}) resources.append(quota) storage = extensions.ResourceExtension('{tenant_id}/mgmt/storage', StorageController(), member_actions={}) resources.append(storage) host_instances = extensions.ResourceExtension( 'instances', hostservice.HostInstanceController(), parent={ 'member_name': 'host', 'collection_name': '{tenant_id}/mgmt/hosts' }, collection_actions={'action': 'POST'}) resources.append(host_instances) return resources
class RestartTaskStatusTests(MgmtInstanceBase): @before_class def setUp(self): super(RestartTaskStatusTests, self).setUp() self.backups_to_clear = [] @after_class def tearDown(self): super(RestartTaskStatusTests, self).tearDown() def _change_task_status_to(self, new_task_status): self.db_info.task_status = new_task_status self.db_info.save() def _make_request(self, path='/', context=None, **kwargs): req = super(RestartTaskStatusTests, self)._make_request(path, context, **kwargs) req.method = 'POST' body = {'reset-task-status': {}} return req, body def reset_task_status(self): self.mock.StubOutWithMock(MgmtInstance, 'load') MgmtInstance.load(context=self.context, id=self.db_info.id).AndReturn(self.instance) self.mock.ReplayAll() req, body = self._make_request(context=self.context) self.controller = MgmtInstanceController() resp = self.controller.action(req, body, self.tenant_id, self.db_info.id) self.mock.UnsetStubs() self.mock.VerifyAll() return resp @test def mgmt_restart_task_requires_admin_account(self): context = TroveContext(is_admin=False) req, body = self._make_request(context=context) self.controller = MgmtInstanceController() assert_raises(exception.Forbidden, self.controller.action, req, body, self.tenant_id, self.db_info.id) @test def mgmt_restart_task_returns_json(self): resp = self.reset_task_status() out = resp.data("application/json") assert_equal(out, None) @test def mgmt_restart_task_returns_xml(self): resp = self.reset_task_status() out = resp.data("application/xml") assert_equal(out, None) @test def mgmt_restart_task_changes_status_to_none(self): self._change_task_status_to(InstanceTasks.BUILDING) self.reset_task_status() self._reload_db_info() assert_equal(self.db_info.task_status, InstanceTasks.NONE) @test def mgmt_reset_task_status_clears_backups(self): self.reset_task_status() self._reload_db_info() assert_equal(self.db_info.task_status, InstanceTasks.NONE) user = test_config.users.find_user(Requirements(is_admin=False)) dbaas = create_dbaas_client(user) result = dbaas.instances.backups(self.db_info.id) assert_equal(0, len(result)) # Create some backups. backup_models.DBBackup.create( name="forever_new", description="forever new", tenant_id=self.tenant_id, state=backup_models.BackupState.NEW, instance_id=self.db_info.id, deleted=False) backup_models.DBBackup.create( name="forever_build", description="forever build", tenant_id=self.tenant_id, state=backup_models.BackupState.BUILDING, instance_id=self.db_info.id, deleted=False) backup_models.DBBackup.create( name="forever_completed", description="forever completed", tenant_id=self.tenant_id, state=backup_models.BackupState.COMPLETED, instance_id=self.db_info.id, deleted=False) # List the backups for this instance. There ought to be three! result = dbaas.instances.backups(self.db_info.id) assert_equal(3, len(result)) self.backups_to_clear = result # Reset the task status. self.reset_task_status() self._reload_db_info() result = dbaas.instances.backups(self.db_info.id) assert_equal(3, len(result)) for backup in result: if backup.name == 'forever_completed': assert_equal(backup.status, backup_models.BackupState.COMPLETED) else: assert_equal(backup.status, backup_models.BackupState.FAILED) @test(runs_after=[mgmt_reset_task_status_clears_backups]) def clear_test_backups(self): for backup in self.backups_to_clear: found_backup = backup_models.DBBackup.find_by(id=backup.id) found_backup.delete() user = test_config.users.find_user(Requirements(is_admin=False)) dbaas = create_dbaas_client(user) result = dbaas.instances.backups(self.db_info.id) assert_equal(0, len(result))
def mgmt_restart_task_requires_admin_account(self): context = TroveContext(is_admin=False) req, body = self._make_request(context=context) self.controller = MgmtInstanceController() assert_raises(exception.Forbidden, self.controller.action, req, body, self.tenant_id, self.db_info.id)
class RestartTaskStatusTests(MgmtInstanceBase): @before_class def setUp(self): super(RestartTaskStatusTests, self).setUp() @after_class def tearDown(self): super(RestartTaskStatusTests, self).tearDown() def _change_task_status_to(self, new_task_status): self.db_info.task_status = new_task_status self.db_info.save() def _make_request(self, path='/', context=None, **kwargs): req = super(RestartTaskStatusTests, self)._make_request(path, context, **kwargs) req.method = 'POST' body = {'reset-task-status': {}} return req, body def reset_task_status(self): self.mock.StubOutWithMock(MgmtInstance, 'load') MgmtInstance.load(context=self.context, id=self.db_info.id).AndReturn(self.instance) self.mock.ReplayAll() req, body = self._make_request(context=self.context) self.controller = MgmtInstanceController() resp = self.controller.action(req, body, self.tenant_id, self.db_info.id) self.mock.UnsetStubs() self.mock.VerifyAll() return resp @test def mgmt_restart_task_requires_admin_account(self): context = TroveContext(is_admin=False) req, body = self._make_request(context=context) self.controller = MgmtInstanceController() assert_raises(exception.Forbidden, self.controller.action, req, body, self.tenant_id, self.db_info.id) @test def mgmt_restart_task_returns_json(self): resp = self.reset_task_status() out = resp.data("application/json") assert_equal(out, None) @test def mgmt_restart_task_returns_xml(self): resp = self.reset_task_status() out = resp.data("application/xml") assert_equal(out, None) @test def mgmt_restart_task_changes_status_to_none(self): self._change_task_status_to(InstanceTasks.BUILDING) self.reset_task_status() self._reload_db_info() assert_equal(self.db_info.task_status, InstanceTasks.NONE)
class RestartTaskStatusTests(MgmtInstanceBase): @before_class def setUp(self): super(RestartTaskStatusTests, self).setUp() self.backups_to_clear = [] @after_class def tearDown(self): super(RestartTaskStatusTests, self).tearDown() def _change_task_status_to(self, new_task_status): self.db_info.task_status = new_task_status self.db_info.save() def _make_request(self, path='/', context=None, **kwargs): req = super(RestartTaskStatusTests, self)._make_request(path, context, **kwargs) req.method = 'POST' body = {'reset-task-status': {}} return req, body def reset_task_status(self): self.mock.StubOutWithMock(MgmtInstance, 'load') MgmtInstance.load(context=self.context, id=self.db_info.id).AndReturn(self.instance) self.mock.ReplayAll() req, body = self._make_request(context=self.context) self.controller = MgmtInstanceController() resp = self.controller.action(req, body, self.tenant_id, self.db_info.id) self.mock.UnsetStubs() self.mock.VerifyAll() return resp @test def mgmt_restart_task_requires_admin_account(self): context = TroveContext(is_admin=False) req, body = self._make_request(context=context) self.controller = MgmtInstanceController() assert_raises(exception.Forbidden, self.controller.action, req, body, self.tenant_id, self.db_info.id) @test def mgmt_restart_task_returns_json(self): resp = self.reset_task_status() out = resp.data("application/json") assert_equal(out, None) @test def mgmt_restart_task_changes_status_to_none(self): self._change_task_status_to(InstanceTasks.BUILDING) self.reset_task_status() self._reload_db_info() assert_equal(self.db_info.task_status, InstanceTasks.NONE) @test def mgmt_reset_task_status_clears_backups(self): if CONFIG.fake_mode: raise SkipTest("Test requires an instance.") self.reset_task_status() self._reload_db_info() assert_equal(self.db_info.task_status, InstanceTasks.NONE) user = test_config.users.find_user(Requirements(is_admin=False)) dbaas = create_dbaas_client(user) admin = test_config.users.find_user(Requirements(is_admin=True)) admin_dbaas = create_dbaas_client(admin) result = dbaas.instances.backups(self.db_info.id) assert_equal(0, len(result)) # Create some backups. backup_models.DBBackup.create(name="forever_new", description="forever new", tenant_id=self.tenant_id, state=state.BackupState.NEW, instance_id=self.db_info.id, deleted=False) backup_models.DBBackup.create(name="forever_build", description="forever build", tenant_id=self.tenant_id, state=state.BackupState.BUILDING, instance_id=self.db_info.id, deleted=False) backup_models.DBBackup.create(name="forever_completed", description="forever completed", tenant_id=self.tenant_id, state=state.BackupState.COMPLETED, instance_id=self.db_info.id, deleted=False) # List the backups for this instance. # There ought to be three in the admin tenant, but # none in a different user's tenant. result = dbaas.instances.backups(self.db_info.id) assert_equal(0, len(result)) result = admin_dbaas.instances.backups(self.db_info.id) assert_equal(3, len(result)) self.backups_to_clear = result # Reset the task status. self.reset_task_status() self._reload_db_info() result = admin_dbaas.instances.backups(self.db_info.id) assert_equal(3, len(result)) for backup in result: if backup.name == 'forever_completed': assert_equal(backup.status, state.BackupState.COMPLETED) else: assert_equal(backup.status, state.BackupState.FAILED) @test(runs_after=[mgmt_reset_task_status_clears_backups]) def clear_test_backups(self): for backup in self.backups_to_clear: found_backup = backup_models.DBBackup.find_by(id=backup.id) found_backup.delete() admin = test_config.users.find_user(Requirements(is_admin=True)) admin_dbaas = create_dbaas_client(admin) if not CONFIG.fake_mode: result = admin_dbaas.instances.backups(self.db_info.id) assert_equal(0, len(result))
def setUp(self): self.mock = mox.Mox() self._create_instance() self.controller = MgmtInstanceController()