def test_get_queue_client_expired_token(self):
        """
        Exception handler should deal with a bad token by clearing
        cache and retrying.  So if we provide a bad token followed
        by a real one in our mock, we expect it to end up getting
        the real token.
        """
        real_token = StorageUtilities.get_storage_token(self.session)

        with patch('c7n_azure.storage_utils.QueueService.create_queue'
                   ) as create_mock:
            with patch(
                    'c7n_azure.storage_utils.StorageUtilities.get_storage_token'
            ) as token_mock:
                error = AzureHttpError('', 403)
                error.error_code = 'AuthenticationFailed'

                # Two side effects: one with a bad token and an error,
                # and one with a good token and no error
                create_mock.side_effect = [error, None]
                token_mock.side_effect = [TokenCredential('fake'), real_token]

                url = "https://fake.queue.core.windows.net/testcc"
                queue_service, queue_name = \
                    StorageUtilities.get_queue_client_by_uri(url, self.session)

                # We end up with the real token (after a retry)
                self.assertEqual(real_token, queue_service.authentication)
Example #2
0
    def test_disable_retention_log_settings(self):
        p = self.load_policy({
            'name': 'test-azure-storage',
            'resource': 'azure.storage',
            'filters': [
                {'type': 'value',
                 'key': 'name',
                 'op': 'glob',
                 'value_type': 'normalize',
                 'value': 'cclgstorage*'}],
            'actions': [
                {
                    'type': 'set-log-settings',
                    'storage-types': ['blob', 'queue', 'table'],
                    'retention': 0,
                    'log': ['read', 'write', 'delete']
                }
            ]
        }, validate=True)

        resources = p.run()
        session = local_session(p.session_factory)
        token = StorageUtilities.get_storage_token(session)
        blob_settings = StorageSettingsUtilities.get_settings(
            BLOB_TYPE, resources[0], token=token)
        queue_settings = StorageSettingsUtilities.get_settings(
            QUEUE_TYPE, resources[0], token=token)
        table_settings = StorageSettingsUtilities.get_settings(
            TABLE_TYPE, resources[0], session=session)

        # assert retention policy is disabled
        self.assertFalse(blob_settings.logging.retention_policy.enabled)
        self.assertFalse(queue_settings.logging.retention_policy.enabled)
        self.assertFalse(table_settings.logging.retention_policy.enabled)
    def test_enable_log_settings(self):
        p = self.load_policy(
            {
                'name':
                'test-azure-storage',
                'resource':
                'azure.storage',
                'filters': [{
                    'type': 'value',
                    'key': 'name',
                    'op': 'glob',
                    'value_type': 'normalize',
                    'value': 'cclgstorage*'
                }],
                'actions': [{
                    'type': 'set-log-settings',
                    'storage-types': ['blob', 'queue', 'table'],
                    'retention': 5,
                    'log': ['read', 'write', 'delete']
                }]
            },
            validate=True)

        resources = p.run()

        self.sleep_in_live_mode(30)

        session = local_session(p.session_factory)
        token = StorageUtilities.get_storage_token(session)
        blob_settings = StorageSettingsUtilities.get_settings(BLOB_TYPE,
                                                              resources[0],
                                                              token=token)
        queue_settings = StorageSettingsUtilities.get_settings(QUEUE_TYPE,
                                                               resources[0],
                                                               token=token)
        table_settings = StorageSettingsUtilities.get_settings(TABLE_TYPE,
                                                               resources[0],
                                                               session=session)

        # assert all logging settings are enabled
        self.assertTrue(blob_settings.logging.delete
                        and blob_settings.logging.read
                        and blob_settings.logging.write)
        self.assertTrue(queue_settings.logging.delete
                        and queue_settings.logging.read
                        and queue_settings.logging.write)
        self.assertTrue(table_settings.logging.delete
                        and table_settings.logging.read
                        and table_settings.logging.write)

        # assert retention policy is enabled
        self.assertTrue(blob_settings.logging.retention_policy.enabled)
        self.assertTrue(queue_settings.logging.retention_policy.enabled)
        self.assertTrue(table_settings.logging.retention_policy.enabled)

        # assert retention days is set to 5
        self.assertEqual(blob_settings.logging.retention_policy.days, 5)
        self.assertEqual(table_settings.logging.retention_policy.days, 5)
        self.assertEqual(queue_settings.logging.retention_policy.days, 5)
Example #4
0
 def process(self, resources, event=None):
     session = local_session(self.manager.session_factory)
     token = StorageUtilities.get_storage_token(session)
     result, errors = ThreadHelper.execute_in_parallel(
         resources=resources,
         event=event,
         execution_method=self.process_resource_set,
         executor_factory=self.executor_factory,
         log=self.log,
         session=session,
         token=token)
     return result
 def test_get_storage_token(self):
     token = StorageUtilities.get_storage_token(self.session)
     self.assertIsNotNone(token.token)
 def test_get_storage_token(self):
     token = StorageUtilities.get_storage_token(self.session)
     self.assertIsNotNone(token.token)
Example #7
0
 def process_in_parallel(self, resources, event):
     self.token = StorageUtilities.get_storage_token(self.session)
     return super(SetLogSettingsAction,
                  self).process_in_parallel(resources, event)