예제 #1
0
    def test_parse_url(self):
        self.assertEqual(
            dict(
                utils.parse_url_config(
                    'aws://target?format=json&region=us-west-2')),
            dict(url='aws://target?format=json&region=us-west-2',
                 netloc='target',
                 path='',
                 scheme='aws',
                 region='us-west-2',
                 format='json'))

        self.assertEqual(dict(utils.parse_url_config('')), {
            'netloc': '',
            'path': '',
            'scheme': '',
            'url': ''
        })

        self.assertEqual(dict(utils.parse_url_config('aws')), {
            'path': '',
            'scheme': 'aws',
            'netloc': '',
            'url': 'aws://'
        })

        self.assertEqual(dict(utils.parse_url_config('aws://')), {
            'path': '',
            'scheme': 'aws',
            'netloc': '',
            'url': 'aws://'
        })
예제 #2
0
 def __init__(self, ctx, config):
     self.ctx = ctx
     # we allow format strings in output urls so reparse config
     # post interpolation.
     self.config = parse_url_config(self.get_output_path(config['url']))
     self.bucket = self.config.netloc
     self.key_prefix = self.config.path.strip('/')
     self.root_dir = tempfile.mkdtemp()
예제 #3
0
    def initialize(self, options):
        """
        """
        _default_region(options)
        _default_account_id(options)
        if options.tracer and options.tracer.startswith('xray') and HAVE_XRAY:
            XrayTracer.initialize(utils.parse_url_config(options.tracer))

        return options
예제 #4
0
def get_log_output(request, output_url):
    log = StackDriverLogging(
        ExecutionContext(lambda assume=False: mock.MagicMock(),
                         Bag(name="xyz",
                             provider_name="gcp",
                             resource_type='gcp.function'),
                         Config.empty(account_id='custodian-test')),
        parse_url_config(output_url))
    request.addfinalizer(reset_session_cache)
    return log
예제 #5
0
 def select(self, selector, ctx):
     if not selector:
         return self['default'](ctx, {'url': selector})
     if self.default_protocol and '://' not in selector:
         selector = "{}://{}".format(self.default_protocol, selector)
     for k in self.keys():
         if selector.startswith(k):
             return self[k](ctx, parse_url_config(selector))
     raise InvalidOutputConfig("Invalid %s: %s" %
                               (self.plugin_type, selector))
예제 #6
0
 def select(self, selector, ctx):
     if not selector:
         return self['default'](ctx, {'url': selector})
     if self.default_protocol and '://' not in selector:
         selector = "{}://{}".format(
             self.default_protocol, selector)
     for k in self.keys():
         if selector.startswith(k):
             return self[k](ctx, parse_url_config(selector))
     raise InvalidOutputConfig("Invalid %s: %s" % (
         self.plugin_type,
         selector))
예제 #7
0
    def test_parse_url(self):
        self.assertEqual(
            dict(utils.parse_url_config('aws://target?format=json&region=us-west-2')),
            dict(url='aws://target?format=json&region=us-west-2',
                 netloc='target',
                 path='',
                 scheme='aws',
                 region='us-west-2',
                 format='json'))

        self.assertEqual(
            dict(utils.parse_url_config('')),
            {'netloc': '', 'path': '', 'scheme': '', 'url': ''})

        self.assertEqual(
            dict(utils.parse_url_config('aws')),
            {'path': '', 'scheme': 'aws', 'netloc': '', 'url': 'aws://'})

        self.assertEqual(
            dict(utils.parse_url_config('aws://')),
            {'path': '', 'scheme': 'aws', 'netloc': '', 'url': 'aws://'})
예제 #8
0
def get_blob_output(request, output_url=None, cleanup=True):
    if output_url is None:
        output_url = "gs://cloud-custodian/policies"
    output = GCPStorageOutput(
        ExecutionContext(lambda assume=False: mock.MagicMock(),
                         Bag(name="xyz", provider_name="gcp"),
                         Config.empty(output_dir=output_url,
                                      account_id='custodian-test')),
        parse_url_config(output_url))

    if cleanup:
        request.addfinalizer(lambda: shutil.rmtree(output.root_dir))  # noqa
    request.addfinalizer(reset_session_cache)
    return output