Пример #1
0
def _build_cloud(cli_ctx, cloud_name, cloud_config=None, cloud_args=None):
    from msrestazure.azure_cloud import _populate_from_metadata_endpoint, MetadataEndpointError
    from azure.cli.core.cloud import CloudEndpointNotSetException
    if cloud_config:
        # Using JSON format so convert the keys to snake case
        cloud_args = {to_snake_case(k): v for k, v in cloud_config.items()}
    c = Cloud(cloud_name)
    c.profile = cloud_args.get('profile', None)
    try:
        endpoints = cloud_args['endpoints']
        for arg in endpoints:
            setattr(c.endpoints, to_snake_case(arg), endpoints[arg])
    except KeyError:
        pass
    try:
        suffixes = cloud_args['suffixes']
        for arg in suffixes:
            setattr(c.suffixes, to_snake_case(arg), suffixes[arg])
    except KeyError:
        pass

    for arg in cloud_args:
        if arg.startswith('endpoint_') and cloud_args[arg] is not None:
            setattr(c.endpoints, arg.replace('endpoint_', ''), cloud_args[arg])
        elif arg.startswith('suffix_') and cloud_args[arg] is not None:
            setattr(c.suffixes, arg.replace('suffix_', ''), cloud_args[arg])

    try:
        arm_endpoint = c.endpoints.resource_manager
    except CloudEndpointNotSetException:
        arm_endpoint = None
    try:
        _populate_from_metadata_endpoint(c, arm_endpoint)
    except MetadataEndpointError as err:
        raise CLIError(err)
    required_endpoints = {
        'resource_manager':
        '--endpoint-resource-manager',
        'active_directory':
        '--endpoint-active-directory',
        'active_directory_resource_id':
        '--endpoint-active-directory-resource-id',
        'active_directory_graph_resource_id':
        '--endpoint-active-directory-graph-resource-id'
    }
    missing_endpoints = [
        e_param for e_name, e_param in required_endpoints.items()
        if not c.endpoints.has_endpoint_set(e_name)
    ]
    if missing_endpoints and not cloud_is_registered(cli_ctx, cloud_name):
        raise CLIError(
            "The following endpoints are required for the CLI to function and were not specified on the "
            "command line, in the cloud config or could not be autodetected.\n"
            "Specify them on the command line or through the cloud config file:\n"
            "{}".format(', '.join(missing_endpoints)))
    return c
Пример #2
0
def _build_cloud(cli_ctx, cloud_name, cloud_config=None, cloud_args=None):
    from msrestazure.azure_cloud import _populate_from_metadata_endpoint, MetadataEndpointError

    if cloud_config:
        # Using JSON format so convert the keys to snake case
        for key in cloud_config:
            cloud_config[to_snake_case(key)] = cloud_config.pop(key)
        cloud_args = cloud_config
    c = Cloud(cloud_name)
    c.profile = cloud_args.get('profile', None)
    for arg in cloud_args:
        if arg.startswith('endpoint_') and cloud_args[arg] is not None:
            setattr(c.endpoints, arg.replace('endpoint_', ''), cloud_args[arg])
        elif arg.startswith('suffix_') and cloud_args[arg] is not None:
            setattr(c.suffixes, arg.replace('suffix_', ''), cloud_args[arg])
    arm_endpoint = cloud_args.get('endpoint_resource_manager', None)
    try:
        _populate_from_metadata_endpoint(c, arm_endpoint)
    except MetadataEndpointError as err:
        raise CLIError(err)
    required_endpoints = {'resource_manager': '--endpoint-resource-manager',
                          'active_directory': '--endpoint-active-directory',
                          'active_directory_resource_id': '--endpoint-active-directory-resource-id',
                          'active_directory_graph_resource_id': '--endpoint-active-directory-graph-resource-id'}
    missing_endpoints = [e_param for e_name, e_param in required_endpoints.items()
                         if not c.endpoints.has_endpoint_set(e_name)]
    if missing_endpoints and not cloud_is_registered(cli_ctx, cloud_name):
        raise CLIError("The following endpoints are required for the CLI to function and were not specified on the "
                       "command line, in the cloud config or could not be autodetected.\n"
                       "Specify them on the command line or through the cloud config file:\n"
                       "{}".format(', '.join(missing_endpoints)))
    return c
Пример #3
0
 def _convert_to_snake_case(item):
     if isinstance(item, dict):
         new_item = {}
         for key, val in item.items():
             new_item[to_snake_case(key)] = _convert_to_snake_case(val)
         return new_item
     if isinstance(item, list):
         return [_convert_to_snake_case(x) for x in item]
     return item
Пример #4
0
 def _convert_to_snake_case(item):
     if isinstance(item, dict):
         new_item = {}
         for key, val in item.items():
             new_item[to_snake_case(key)] = _convert_to_snake_case(val)
         return new_item
     if isinstance(item, list):
         return [_convert_to_snake_case(x) for x in item]
     return item
Пример #5
0
 def test_to_snake_case_already_snake(self):
     the_input = 'this_is_snake_cased'
     expected = 'this_is_snake_cased'
     actual = to_snake_case(the_input)
     self.assertEqual(expected, actual)
Пример #6
0
 def test_to_snake_case_empty(self):
     the_input = ''
     expected = ''
     actual = to_snake_case(the_input)
     self.assertEqual(expected, actual)
Пример #7
0
 def test_to_snake_case_from_camel(self):
     the_input = 'thisIsCamelCase'
     expected = 'this_is_camel_case'
     actual = to_snake_case(the_input)
     self.assertEqual(expected, actual)