Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
    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, {})
Exemplo n.º 4
0
    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, {})
Exemplo n.º 5
0
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)