def test_update_provider_error(self): """Test to update a provider with a koku server error.""" client = ProviderBuilder(auth_header=Config.SOURCES_FAKE_HEADER) with patch.object(ProviderAccessor, "cost_usage_source_ready", returns=True): client.create_provider_from_source(self.mock_source) with self.assertRaises(ValidationError): new_name = "Aws Test" self.mock_source.name = new_name client.update_provider_from_source(self.mock_source)
def test_update_provider(self): """Test to update a provider.""" client = ProviderBuilder(auth_header=Config.SOURCES_FAKE_HEADER) with patch.object(ProviderAccessor, "cost_usage_source_ready", returns=True): provider = client.create_provider_from_source(self.mock_source) new_name = "Aws Test" self.mock_source.name = new_name updated_provider = client.update_provider_from_source( self.mock_source) self.assertEqual(updated_provider.uuid, provider.uuid) self.assertEqual(updated_provider.name, new_name)
def test_update_provider_pause(self): """Test to update a provider for pause/unpause.""" client = ProviderBuilder(auth_header=Config.SOURCES_FAKE_HEADER) with patch.object(ProviderAccessor, "cost_usage_source_ready", returns=True): provider = client.create_provider_from_source(self.mock_source) self.assertFalse(provider.paused) for test in [True, False]: with self.subTest(paused=test): self.mock_source.paused = test updated_provider = client.update_provider_from_source( self.mock_source) self.assertEqual(updated_provider.paused, test)
class SourcesProviderCoordinator: """Coordinator to control source and provider operations.""" def __init__(self, source_id, auth_header): """Initialize the client.""" header = {"x-rh-identity": auth_header, "sources-client": "True"} self._source_id = source_id self._identity_header = header self._provider_builder = ProviderBuilder(self._identity_header) def create_account(self, source): """Call to create provider.""" try: LOG.info( f"Creating Provider for Source ID: {str(self._source_id)}") provider = self._provider_builder.create_provider_from_source( source) add_provider_koku_uuid(self._source_id, provider.uuid) except ProviderBuilderError as provider_err: raise SourcesProviderCoordinatorError(str(provider_err)) return provider def update_account(self, source): """Call to update provider.""" try: LOG.info( f"Updating Provider for Source ID: {str(self._source_id)}") provider = self._provider_builder.update_provider_from_source( source) except ProviderBuilderError as provider_err: raise SourcesProviderCoordinatorError(str(provider_err)) return provider def destroy_account(self, koku_uuid): """Call to destroy provider.""" try: self._provider_builder.destroy_provider(koku_uuid) destroy_source_event(self._source_id) except ProviderBuilderError as provider_err: LOG.error(f"Failed to remove provider. Error: {str(provider_err)}")
def test_update_provider_exception(self): """Test to update a provider with a connection error.""" client = ProviderBuilder(auth_header=Config.SOURCES_FAKE_HEADER) with self.assertRaises(Provider.DoesNotExist): client.update_provider_from_source(self.mock_source)