def storage_callback(sender, instance, **kwargs): """Load Sources ready for Koku Synchronization when Sources table is updated.""" update_fields = kwargs.get("update_fields", ()) if (update_fields and "pending_update" in update_fields and instance.koku_uuid and instance.pending_update and not instance.pending_delete): update_event = {"operation": "update", "provider": instance} _log_process_queue_event(PROCESS_QUEUE, update_event) LOG.debug(f"Update Event Queued for:\n{str(instance)}") PROCESS_QUEUE.put_nowait((next(COUNT), update_event)) if instance.pending_delete: delete_event = {"operation": "destroy", "provider": instance} _log_process_queue_event(PROCESS_QUEUE, delete_event) LOG.debug(f"Delete Event Queued for:\n{str(instance)}") PROCESS_QUEUE.put_nowait((next(COUNT), delete_event)) process_event = storage.screen_and_build_provider_sync_create_event( instance) if process_event: _log_process_queue_event(PROCESS_QUEUE, process_event) LOG.debug(f"Create Event Queued for:\n{str(instance)}") PROCESS_QUEUE.put_nowait((next(COUNT), process_event)) execute_process_queue()
def storage_callback(sender, instance, **kwargs): """Load Sources ready for Koku Synchronization when Sources table is updated.""" update_fields = kwargs.get('update_fields', ()) if update_fields and 'pending_update' in update_fields: if instance.koku_uuid and instance.pending_update and not instance.pending_delete: update_event = {'operation': 'update', 'provider': instance} _log_process_queue_event(PROCESS_QUEUE, update_event) PROCESS_QUEUE.put_nowait(update_event) if instance.pending_delete: delete_event = {'operation': 'destroy', 'provider': instance} _log_process_queue_event(PROCESS_QUEUE, delete_event) PROCESS_QUEUE.put_nowait(delete_event) process_event = storage.screen_and_build_provider_sync_create_event( instance) if process_event: _log_process_queue_event(PROCESS_QUEUE, process_event) PROCESS_QUEUE.put_nowait(process_event)
def test_screen_and_build_provider_sync_create_event(self): """Tests that provider create events are generated.""" test_matrix = [{'provider': MockProvider(1, 'AWS Provider', 'AWS', {'resource_name': 'arn:fake'}, {'bucket': 'testbucket'}, 'authheader', 1), 'expected_response': {'operation': 'create', 'offset': 1}}, {'provider': MockProvider(1, 'AWS Provider', 'AWS', {'resource_name': 'arn:fake'}, None, 'authheader', 1), 'expected_response': {}}, {'provider': MockProvider(2, 'OCP Provider', 'OCP', {'resource_name': 'my-cluster-id'}, {'bucket': ''}, 'authheader', 2), 'expected_response': {'operation': 'create', 'offset': 2}}, {'provider': MockProvider(2, None, 'OCP', {'resource_name': 'my-cluster-id'}, {'bucket': ''}, 'authheader', 2), 'expected_response': {}}, {'provider': MockProvider(3, 'Azure Provider', 'AZURE', {'credentials': {'client_id': 'test_client_id', 'tenant_id': 'test_tenant_id', 'client_secret': 'test_client_secret', 'subscription_id': 'test_subscription_id'}}, {'data_source': {'resource_group': 'test_resource_group', 'storage_account': 'test_storage_account'}}, 'authheader', 3), 'expected_response': {'operation': 'create', 'offset': 3}} ] for test in test_matrix: response = storage.screen_and_build_provider_sync_create_event(test.get('provider')) if response: self.assertEqual(response.get('operation'), test.get('expected_response').get('operation')) self.assertEqual(response.get('offset'), test.get('expected_response').get('offset')) else: self.assertEqual(response, {})
def test_screen_and_build_provider_sync_create_event(self): """Tests that provider create events are generated.""" test_matrix = [ { "provider": MockProvider( 1, "AWS Provider", Provider.PROVIDER_AWS, {"role_arn": "arn:fake"}, {"bucket": "testbucket"}, "authheader", 1, False, ), "expected_response": { "operation": "create", "offset": 1 }, }, { "provider": MockProvider(1, "AWS Provider", Provider.PROVIDER_AWS, {"role_arn": "arn:fake"}, None, "authheader", 1, False), "expected_response": {}, }, { "provider": MockProvider( 2, "OCP Provider", Provider.PROVIDER_OCP, {"role_arn": "my-cluster-id"}, {"bucket": ""}, "authheader", 2, False, ), "expected_response": { "operation": "create", "offset": 2 }, }, { "provider": MockProvider( 2, "OCP Provider", Provider.PROVIDER_OCP, {"cluster_id": "my-cluster-id"}, {}, "authheader", 2, True, ), "expected_response": {}, }, { "provider": MockProvider(2, None, Provider.PROVIDER_OCP, {"cluster_id": "my-cluster-id"}, {}, "authheader", 2, False), "expected_response": {}, }, { "provider": MockProvider( 3, "Azure Provider", Provider.PROVIDER_AZURE, { "credentials": { "client_id": "test_client_id", "tenant_id": "test_tenant_id", "client_secret": "test_client_secret", "subscription_id": "test_subscription_id", } }, { "data_source": { "resource_group": "test_resource_group", "storage_account": "test_storage_account", } }, "authheader", 3, False, ), "expected_response": { "operation": "create", "offset": 3 }, }, ] for test in test_matrix: response = storage.screen_and_build_provider_sync_create_event( test.get("provider")) if response: self.assertEqual( response.get("operation"), test.get("expected_response").get("operation")) self.assertEqual(response.get("offset"), test.get("expected_response").get("offset")) else: self.assertEqual(response, {})
def storage_callback(sender, instance, **kwargs): """Load Sources ready for Koku Synchronization when Sources table is updated.""" process_event = storage.screen_and_build_provider_sync_create_event(instance) if process_event: PROCESS_QUEUE.put_nowait(process_event)