コード例 #1
0
    def test_parser_error_spellchecker(self):
        cli = DummyCli()
        main_loader = MainCommandsLoader(cli)
        cli.loader = main_loader

        cli.loader.load_command_table(None)

        parser = cli.parser_cls(cli)
        parser.load_command_table(cli.loader)

        logger_msgs = []
        choice_lists = []
        original_get_close_matches = difflib.get_close_matches

        def mock_log_error(_, msg):
            logger_msgs.append(msg)

        def mock_get_close_matches(*args, **kwargs):
            choice_lists.append(original_get_close_matches(*args, **kwargs))

        # run multiple faulty commands and save error logs, as well as close matches
        with mock.patch('logging.Logger.error', mock_log_error), \
                mock.patch('difflib.get_close_matches', mock_get_close_matches):
            faulty_cmd_args = [
                'test module1 --opt enum_1', 'test extension1 --opt enum_1',
                'test foo_bar --opt enum_3', 'test module --opt enum_3',
                'test extension --opt enum_3'
            ]
            for text in faulty_cmd_args:
                with self.assertRaises(SystemExit):
                    parser.parse_args(text.split())
        parser.parse_args('test module --opt enum_1'.split())

        # assert the right type of error msg is logged for command vs argument parsing
        self.assertEqual(len(logger_msgs), 5)
        for msg in logger_msgs[:3]:
            self.assertIn("not in the", msg)
            self.assertIn("command group", msg)
        for msg in logger_msgs[3:]:
            self.assertIn("not a valid value for '--opt'.", msg)

        # assert the right choices are matched as "close".
        # If these don't hold, matching algorithm should be deemed flawed.
        for choices in choice_lists[:2]:
            self.assertEqual(len(choices), 1)
        self.assertEqual(len(choice_lists[2]), 0)
        for choices in choice_lists[3:]:
            self.assertEqual(len(choices), 2)
            for choice in ['enum_1', 'enum_2']:
                self.assertIn(choice, choices)
コード例 #2
0
    def test_repository_show_manifests(self, mock_requests_get, mock_get_access_credentials, mock_get_registry_by_name):
        cmd = mock.MagicMock()
        cmd.cli_ctx = DummyCli()
        encoded_manifests = json.dumps({'manifests': [
            {
                'digest': 'sha256:b972dda797ef258a7ea5738eb2109778c2bac6a99d1033e6c9f9bdb4fbd196e7',
                'tags': ['testtag1', 'testtag2']
            },
            {
                'digest': 'sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7',
                'tags': ['testtag3']
            }]}).encode()

        response = mock.MagicMock()
        response.headers = {}
        response.status_code = 200
        response.content = encoded_manifests
        mock_requests_get.return_value = response

        # Show manifests using Basic auth without detail
        mock_get_registry_by_name.return_value = Registry(location='westus', sku=Sku(name='Standard')), 'testrg'
        mock_get_access_credentials.return_value = 'testregistry.azurecr.io', 'username', 'password'

        acr_repository_show_manifests(cmd, 'testregistry', 'testrepository')
        mock_requests_get.assert_called_with(
            method='get',
            url='https://testregistry.azurecr.io/v2/_acr/testrepository/manifests/list',
            headers=_get_authorization_header('username', 'password'),
            params={
                'n': 20,
                'orderby': None
            },
            json=None,
            verify=mock.ANY)

        # Show manifests using Bearer auth with detail
        mock_get_registry_by_name.return_value = Registry(location='westus', sku=Sku(name='Standard')), 'testrg'
        mock_get_access_credentials.return_value = 'testregistry.azurecr.io', None, 'password'

        acr_repository_show_manifests(cmd, 'testregistry', 'testrepository', top=10, orderby='time_desc', detail=True)
        mock_requests_get.assert_called_with(
            method='get',
            url='https://testregistry.azurecr.io/acr/v1/testrepository/_manifests',
            headers=_get_authorization_header(None, 'password'),
            params={
                'n': 10,
                'orderby': 'timedesc'
            },
            json=None,
            verify=mock.ANY)
コード例 #3
0
 def test_supported_api_version_max_constraint_semver(self):
     cli = DummyCli()
     cli.cloud = Cloud('TestCloud', profile='2017-01-01-profile')
     test_profile = {
         '2017-01-01-profile': {
             ResourceType.MGMT_KEYVAULT: '7.0'
         }
     }
     with mock.patch('azure.cli.core.profiles._shared.AZURE_API_PROFILES',
                     test_profile):
         self.assertTrue(
             supported_api_version(cli,
                                   ResourceType.MGMT_KEYVAULT,
                                   max_api='8.0'))
コード例 #4
0
    def test_configure_output_options(self):
        from azure.cli.core._output import AzOutputProducer
        from azure.cli.core.mock import DummyCli
        from azure.cli.command_modules.configure._consts import OUTPUT_LIST

        output_producer = AzOutputProducer(DummyCli())
        cli_output_options = set(output_producer._FORMAT_DICT.keys())
        configure_output_options = set(item["name"] for item in OUTPUT_LIST)

        self.assertEqual(
            cli_output_options, configure_output_options,
            "\n{}'s output options: {}\ndon't match az configure's output options ({})."
            .format(AzOutputProducer.__name__, cli_output_options,
                    configure_output_options))
コード例 #5
0
    def test_figure_out_storage_source(self):
        test_data = 'https://av123images.blob.core.windows.net/images/TDAZBET.vhd'
        src_blob_uri, src_disk, src_snapshot = _figure_out_storage_source(
            DummyCli(), 'tg1', test_data)
        self.assertFalse(src_disk)
        self.assertFalse(src_snapshot)
        self.assertEqual(src_blob_uri, test_data)

        test_data = '/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/JAVACSMRG6017/providers/Microsoft.Compute/disks/ex.vhd'
        src_blob_uri, src_disk, src_snapshot = _figure_out_storage_source(
            None, 'tg1', test_data)
        self.assertEqual(src_disk, test_data)
        self.assertFalse(src_snapshot)
        self.assertFalse(src_blob_uri)
コード例 #6
0
 def test_supported_api_version_min_constraint(self):
     cli = DummyCli()
     cli.cloud = Cloud('TestCloud', profile='2017-01-01-profile')
     test_profile = {
         '2017-01-01-profile': {
             ResourceType.MGMT_STORAGE: '2020-10-10'
         }
     }
     with mock.patch('azure.cli.core.profiles._shared.AZURE_API_PROFILES',
                     test_profile):
         self.assertTrue(
             supported_api_version(cli,
                                   ResourceType.MGMT_STORAGE,
                                   min_api='2000-01-01'))
コード例 #7
0
 def test_add_get_cloud_with_invalid_profile(self):
     # Cloud has profile that doesn't exist so an exception should be raised
     cli = DummyCli()
     profile = 'none-existent-profile'
     c = Cloud('MyOwnCloud', profile=profile)
     with mock.patch('azure.cli.core.cloud.CLOUD_CONFIG_FILE', tempfile.mkstemp()[1]) as\
             config_file:
         add_cloud(cli, c)
         config = configparser.ConfigParser()
         config.read(config_file)
         self.assertTrue(c.name in config.sections())
         self.assertEqual(config.get(c.name, 'profile'), profile)
         with self.assertRaises(CLIError):
             get_custom_clouds(cli)
コード例 #8
0
 def create_resource(self, name, **kwargs):
     group = self._get_resource_group(**kwargs)
     dns_name = self.id_generator()
     parameters = (
         'adminUsername=admin123 adminPassword=SecretPassword123 location=westus '
         'domainName=domain.com dnsPrefix={}').format(dns_name)
     template = 'az deployment group create --name {} -g {} --template-uri {} --parameters {}'
     execute(
         DummyCli(),
         template.format(
             'domaintemplate', group,
             'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/active-directory/active-directory-new-domain/azuredeploy.json',
             parameters))
     return {self.parameter_name: name}
コード例 #9
0
 def setUp(self):
     mock_logger = MagicMock()
     mock_cmd = MagicMock()
     mock_cmd.cli_ctx = DummyCli()
     self._client = AzureDevopsBuildInteractive(cmd=mock_cmd,
                                                logger=mock_logger,
                                                functionapp_name=None,
                                                organization_name=None,
                                                project_name=None,
                                                repository_name=None,
                                                overwrite_yaml=None,
                                                allow_force_push=None,
                                                github_pat=None,
                                                github_repository=None)
コード例 #10
0
 def test_supported_api_version_invalid_rt_for_profile(self):
     cli = DummyCli()
     cli.cloud = Cloud('TestCloud', profile='2017-01-01-profile')
     test_profile = {
         '2017-01-01-profile': {
             ResourceType.MGMT_STORAGE: '2020-10-10'
         }
     }
     with mock.patch('azure.cli.core.profiles._shared.AZURE_API_PROFILES',
                     test_profile):
         with self.assertRaises(APIVersionException):
             supported_api_version(cli,
                                   ResourceType.MGMT_COMPUTE,
                                   min_api='2020-01-01')
コード例 #11
0
ファイル: preparers.py プロジェクト: jaysterp/azure-cli
 def __init__(self, name_prefix='clitest-vault', parameter_name='vault_name',
              resource_group_location_parameter_name='resource_group_location',
              resource_group_parameter_name='resource_group',
              dev_setting_name='AZURE_CLI_TEST_DEV_BACKUP_ACCT_NAME', soft_delete=True):
     super(VaultPreparer, self).__init__(name_prefix, 24)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.parameter_name = parameter_name
     self.resource_group = None
     self.resource_group_parameter_name = resource_group_parameter_name
     self.location = None
     self.resource_group_location_parameter_name = resource_group_location_parameter_name
     self.dev_setting_value = os.environ.get(dev_setting_name, None)
     self.soft_delete = soft_delete
コード例 #12
0
    def test_get_raw_token(self, get_raw_token_mock):
        cmd = mock.MagicMock()
        cmd.cli_ctx = DummyCli()

        # arrange
        get_raw_token_mock.return_value = (['bearer', 'token123', {'expiresOn': '2100-01-01'}], 'sub123', 'tenant123')

        # action
        result = get_access_token(cmd)

        # assert
        get_raw_token_mock.assert_called_with(mock.ANY, 'https://management.core.windows.net/', None, None)
        expected_result = {
            'tokenType': 'bearer',
            'accessToken': 'token123',
            'expiresOn': '2100-01-01',
            'subscription': 'sub123',
            'tenant': 'tenant123'
        }
        self.assertEqual(result, expected_result)

        # assert it takes customized resource, subscription
        resource = 'https://graph.microsoft.com/'
        subscription_id = '00000001-0000-0000-0000-000000000000'
        get_raw_token_mock.return_value = (['bearer', 'token123', {'expiresOn': '2100-01-01'}], subscription_id,
                                           'tenant123')
        result = get_access_token(cmd, subscription=subscription_id, resource=resource)
        get_raw_token_mock.assert_called_with(mock.ANY, resource, subscription_id, None)
        expected_result = {
            'tokenType': 'bearer',
            'accessToken': 'token123',
            'expiresOn': '2100-01-01',
            'subscription': subscription_id,
            'tenant': 'tenant123'
        }
        self.assertEqual(result, expected_result)

        # test get token with tenant
        tenant_id = '00000000-0000-0000-0000-000000000000'
        get_raw_token_mock.return_value = (['bearer', 'token123', {'expiresOn': '2100-01-01'}], None, tenant_id)
        result = get_access_token(cmd, tenant=tenant_id)
        get_raw_token_mock.assert_called_with(mock.ANY, 'https://management.core.windows.net/', None, tenant_id)
        expected_result = {
            'tokenType': 'bearer',
            'accessToken': 'token123',
            'expiresOn': '2100-01-01',  # subscription shouldn't be present
            'tenant': tenant_id
        }
        self.assertEqual(result, expected_result)
コード例 #13
0
    def test_monitor_resource_id(self):
        from azure.cli.command_modules.monitor.validators import get_target_resource_validator
        from azure.cli.core.mock import DummyCli

        cmd = mock.MagicMock()
        cmd.cli_ctx = DummyCli()
        validator = get_target_resource_validator('name_or_id', True)

        id = '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Compute/' \
             'virtualMachines/vm1'

        # must supply name or ID
        ns = self._build_namespace()
        with self.assertRaises(CLIError):
            validator(cmd, ns)

        # must only supply ID or name parameters
        ns = self._build_namespace(id, 'my-rg', 'blahblah', 'stuff')
        with self.assertRaises(CLIError):
            validator(cmd, ns)

        # error on invalid ID
        ns = self._build_namespace('bad-id')
        with self.assertRaises(CLIError):
            validator(cmd, ns)

        # allow Provider/Type syntax (same as resource commands)
        ns = self._build_namespace('vm1', 'my-rg', None, None, 'Microsoft.Compute/virtualMachines')
        validator(cmd, ns)
        self.assertEqual(ns.name_or_id, id)

        # allow Provider and Type separate
        ns = self._build_namespace('vm1', 'my-rg', 'Microsoft.Compute', None, 'virtualMachines')
        validator(cmd, ns)
        self.assertEqual(ns.name_or_id, id)

        # verify works with parent
        id = '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Compute/' \
             'fakeType/type1/anotherFakeType/type2/virtualMachines/vm1'
        ns = self._build_namespace('vm1', 'my-rg', 'Microsoft.Compute', 'fakeType/type1/anotherFakeType/type2',
                                   'virtualMachines')
        validator(cmd, ns)
        self.assertEqual(ns.name_or_id, id)

        # verify extra parameters are removed
        self.assertFalse(hasattr(ns, 'resource_name'))
        self.assertFalse(hasattr(ns, 'namespace'))
        self.assertFalse(hasattr(ns, 'parent'))
        self.assertFalse(hasattr(ns, 'resource_type'))
コード例 #14
0
ファイル: test_parser.py プロジェクト: yanjuna/azure-cli
    def test_parser_failure_recovery_recommendations(self):
        cli = DummyCli()
        main_loader = MainCommandsLoader(cli)
        cli.loader = main_loader

        cli.loader.load_command_table(None)

        parser = cli.parser_cls(cli)
        parser.load_command_table(cli.loader)

        recommendation_provider_parameters = []

        version = cli.get_cli_version()
        expected_recommendation_provider_parameters = [
            # version, command, parameters, extension
            ExpectedParameters(version, 'test module1', ['--opt'], False),
            ExpectedParameters(version, 'test extension1', ['--opt'], False),
            ExpectedParameters(version, 'foo_bar', ['--opt'], False),
            ExpectedParameters(version, 'test module', ['--opt'], False),
            ExpectedParameters(version, 'test extension', ['--opt'], True)
        ]

        def mock_recommendation_provider(*args):
            recommendation_provider_parameters.append(tuple(args))
            return []

        AzCliCommandParser.recommendation_provider = mock_recommendation_provider

        faulty_cmd_args = [
            'test module1 --opt enum_1', 'test extension1 --opt enum_1',
            'test foo_bar --opt enum_3', 'test module --opt enum_3',
            'test extension --opt enum_3'
        ]

        for text in faulty_cmd_args:
            with self.assertRaises(SystemExit):
                parser.parse_args(text.split())

        for i, parameters in enumerate(recommendation_provider_parameters):
            version, command, parameters, extension = parameters
            expected = expected_recommendation_provider_parameters[i]
            self.assertEqual(expected.version, version)
            self.assertIn(expected.command, command)
            self.assertEqual(expected.parameters, parameters)

            if expected.has_extension:
                self.assertIsNotNone(extension)
            else:
                self.assertIsNone(extension)
コード例 #15
0
    def test_helm_show(self, mock_requests_get, mock_get_access_credentials):
        cmd = mock.MagicMock()
        cmd.cli_ctx = DummyCli()
        encoded_charts = json.dumps({
            'mychart1': [{
                'name': 'mychart1',
                'version': '0.2.1'
            }, {
                'name': 'mychart1',
                'version': '0.1.2'
            }]
        }).encode()

        response = mock.MagicMock()
        response.headers = {}
        response.status_code = 200
        response.content = encoded_charts
        mock_requests_get.return_value = response

        mock_get_access_credentials.return_value = 'testregistry.azurecr.io', EMPTY_GUID, 'password'

        # Show all versions of a chart
        acr_helm_show(cmd,
                      'testregistry',
                      'mychart1',
                      repository='testrepository')
        mock_requests_get.assert_called_with(
            method='get',
            url=
            'https://testregistry.azurecr.io/helm/v1/testrepository/_charts/mychart1',
            headers=get_authorization_header(EMPTY_GUID, 'password'),
            params=None,
            json=None,
            verify=mock.ANY)

        # Show one version of a chart
        acr_helm_show(cmd,
                      'testregistry',
                      'mychart1',
                      version='0.2.1',
                      repository='testrepository')
        mock_requests_get.assert_called_with(
            method='get',
            url=
            'https://testregistry.azurecr.io/helm/v1/testrepository/_charts/mychart1/0.2.1',
            headers=get_authorization_header(EMPTY_GUID, 'password'),
            params=None,
            json=None,
            verify=mock.ANY)
コード例 #16
0
ファイル: test_help.py プロジェクト: yiliaomsft/azure-cli
    def test_help_loads(self):
        from azure.cli.core.commands.arm import add_id_parameters
        import knack.events as events

        cli = DummyCli()
        parser_dict = {}
        cli = DummyCli()
        help_ctx = cli.help_cls(cli)
        try:
            cli.invoke(['-h'])
        except SystemExit:
            pass
        cmd_tbl = cli.invocation.commands_loader.command_table
        cli.invocation.parser.load_command_table(
            cli.invocation.commands_loader)
        for cmd in cmd_tbl:
            try:
                cmd_tbl[cmd].loader.command_name = cmd
                cmd_tbl[cmd].loader.load_arguments(cmd)
            except KeyError:
                pass
        cli.register_event(events.EVENT_INVOKER_POST_CMD_TBL_CREATE,
                           add_id_parameters)
        cli.raise_event(events.EVENT_INVOKER_CMD_TBL_LOADED,
                        command_table=cmd_tbl)
        cli.invocation.parser.load_command_table(
            cli.invocation.commands_loader)
        _store_parsers(cli.invocation.parser, parser_dict)

        for name, parser in parser_dict.items():
            try:
                help_file = GroupHelpFile(help_ctx, name, parser) if _is_group(parser) \
                    else CliCommandHelpFile(help_ctx, name, parser)
                help_file.load(parser)
            except Exception as ex:
                raise HelpAuthoringException('{}, {}'.format(name, ex))
コード例 #17
0
ファイル: preparers.py プロジェクト: zined/azure-cli
 def __init__(self,
              name_prefix='clitest-item',
              parameter_name='policy_name',
              vault_parameter_name='vault_name',
              resource_group_parameter_name='resource_group',
              dev_setting_name='AZURE_CLI_TEST_DEV_BACKUP_POLICY_NAME'):
     super(PolicyPreparer, self).__init__(name_prefix, 24)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.parameter_name = parameter_name
     self.resource_group = None
     self.resource_group_parameter_name = resource_group_parameter_name
     self.vault = None
     self.vault_parameter_name = vault_parameter_name
     self.dev_setting_value = os.environ.get(dev_setting_name, None)
コード例 #18
0
    def test_list_only_enabled_one(self, logger_mock, load_subscription_mock):
        cmd = mock.MagicMock()
        cmd.cli_ctx = DummyCli()
        sub1 = {'state': 'Enabled'}
        sub2 = {'state': 'Overdued'}
        load_subscription_mock.return_value = [sub1, sub2]

        # list all
        self.assertEqual(2, len(list_subscriptions(cmd, all=True)))
        self.assertTrue(not logger_mock.warning.called)
        # list only enabled one
        result = list_subscriptions(cmd)
        self.assertEqual(1, len(result))
        self.assertEqual('Enabled', result[0]['state'])
        logger_mock.warning.assert_called_once_with(mock.ANY)
コード例 #19
0
def mock_echo_args(command_name, parameters):
    from azure.cli.core.mock import DummyCli
    try:
        # TODO: continue work on this...
        argv = ' '.join((command_name, parameters)).split()
        cli = DummyCli()
        cli.invoke(argv)
        command_table = cli.invocation.commands_loader.command_table
        prefunc = command_table[command_name].handler
        command_table[command_name].handler = lambda args: args
        cli.invoke(argv)
        parsed_namespace = None  # continue this too...
        return parsed_namespace
    finally:
        command_table[command_name].handler = prefunc
コード例 #20
0
ファイル: preparers.py プロジェクト: ymasaoka/azure-cli
 def __init__(self,
              name_prefix='clitest-item',
              parameter_name='policy_name',
              vault_parameter_name='vault_name',
              resource_group_parameter_name='resource_group',
              instant_rp_days=None):
     super(AFSPolicyPreparer, self).__init__(name_prefix, 24)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.parameter_name = parameter_name
     self.resource_group = None
     self.resource_group_parameter_name = resource_group_parameter_name
     self.vault = None
     self.vault_parameter_name = vault_parameter_name
     self.instant_rp_days = instant_rp_days
コード例 #21
0
    def test_repository_list(self, mock_requests_get,
                             mock_get_access_credentials,
                             mock_get_registry_by_name):
        cmd = mock.MagicMock()
        cmd.cli_ctx = DummyCli()
        encoded_repositories = json.dumps({
            'repositories': ['testrepo1', 'testrepo2']
        }).encode()

        response = mock.MagicMock()
        response.headers = {}
        response.status_code = 200
        response.content = encoded_repositories
        mock_requests_get.return_value = response

        # List repositories using Basic auth on a classic registry
        mock_get_registry_by_name.return_value = Registry(
            location='westus', sku=Sku(name='Classic')), 'testrg'
        mock_get_access_credentials.return_value = 'testregistry.azurecr.io', 'username', 'password'
        acr_repository_list(cmd, 'testregistry')
        mock_requests_get.assert_called_with(
            method='get',
            url='https://testregistry.azurecr.io/v2/_catalog',
            headers=get_authorization_header('username', 'password'),
            params={
                'n': 100,
                'orderby': None
            },
            json=None,
            data=None,
            verify=mock.ANY)

        # List repositories using Bearer auth on a managed registry
        mock_get_registry_by_name.return_value = Registry(
            location='westus', sku=Sku(name='Standard')), 'testrg'
        mock_get_access_credentials.return_value = 'testregistry.azurecr.io', EMPTY_GUID, 'password'
        acr_repository_list(cmd, 'testregistry', top=10)
        mock_requests_get.assert_called_with(
            method='get',
            url='https://testregistry.azurecr.io/acr/v1/_catalog',
            headers=get_authorization_header(EMPTY_GUID, 'password'),
            params={
                'n': 10,
                'orderby': None
            },
            json=None,
            data=None,
            verify=mock.ANY)
コード例 #22
0
ファイル: preparers.py プロジェクト: ymasaoka/azure-cli
 def __init__(
         self,
         name_prefix='clitest-vm',
         parameter_name='vm_name',
         resource_group_location_parameter_name='resource_group_location',
         resource_group_parameter_name='resource_group',
         dev_setting_name='AZURE_CLI_TEST_DEV_BACKUP_VM_NAME'):
     super(VMPreparer, self).__init__(name_prefix, 15)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.parameter_name = parameter_name
     self.resource_group = None
     self.resource_group_parameter_name = resource_group_parameter_name
     self.location = None
     self.resource_group_location_parameter_name = resource_group_location_parameter_name
     self.dev_setting_value = os.environ.get(dev_setting_name, None)
コード例 #23
0
ファイル: preparers.py プロジェクト: ymasaoka/azure-cli
 def __init__(self,
              name_prefix='clitest-item',
              storage_account_parameter_name='storage_account',
              resource_group_parameter_name='resource_group',
              vault_parameter_name='vault_name',
              parameter_name='rp_name',
              afs_parameter_name='afs_name'):
     super(AFSRPPreparer, self).__init__(name_prefix, 24)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.parameter_name = parameter_name
     self.resource_group = None
     self.resource_group_parameter_name = resource_group_parameter_name
     self.storage_account_parameter_name = storage_account_parameter_name
     self.vault_parameter_name = vault_parameter_name
     self.afs_parameter_name = afs_parameter_name
コード例 #24
0
ファイル: preparers.py プロジェクト: ymasaoka/azure-cli
 def __init__(self,
              name_prefix='clitest-item',
              storage_account_parameter_name='storage_account',
              resource_group_parameter_name='resource_group',
              file_parameter_name=None,
              parameter_name='afs_name',
              file_upload=False):
     super(FileSharePreparer, self).__init__(name_prefix, 24)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.parameter_name = parameter_name
     self.resource_group = None
     self.resource_group_parameter_name = resource_group_parameter_name
     self.storage_account_parameter_name = storage_account_parameter_name
     self.file_parameter_name = file_parameter_name
     self.file_upload = file_upload
コード例 #25
0
 def test_get_clouds_concurrent(self):
     with mock.patch('azure.cli.core.cloud.CLOUD_CONFIG_FILE', tempfile.mkstemp()[1]) as config_file:
         # Max pool_size is 61, otherwise exception will be thrown on Python 3.8 Windows:
         #     File "...Python38\lib\multiprocessing\connection.py", line 810, in _exhaustive_wait
         #       res = _winapi.WaitForMultipleObjects(L, False, timeout)
         #   ValueError: need at most 63 handles, got a sequence of length 102
         pool_size = 20
         p = multiprocessing.Pool(pool_size)
         p.map(_helper_get_clouds, range(pool_size))
         p.close()
         p.join()
         # Check we can read the file with no exceptions
         cli = DummyCli()
         configparser.ConfigParser().read(config_file)
         for kc in KNOWN_CLOUDS:
             get_cloud(cli, kc.name)
コード例 #26
0
    def test_source_storage_account_err_case(self):
        np = mock.MagicMock()
        cmd = mock.MagicMock()
        cmd.cli_ctx = DummyCli()
        np._cmd = cmd
        np.source_storage_account_id = '/subscriptions/123/resourceGroups/ygsrc/providers/Microsoft.Storage/storageAccounts/s123'
        np.source = '/subscriptions/123/resourceGroups/yugangw/providers/Microsoft.Compute/disks/d2'

        # action (should throw)
        kwargs = {'namespace': np}
        with self.assertRaises(CLIError):
            process_disk_or_snapshot_create_namespace(cmd, **kwargs)

        # with blob uri, should be fine
        np.source = 'https://s1.blob.core.windows.net/vhds/s1.vhd'
        process_disk_or_snapshot_create_namespace(cmd, **kwargs)
コード例 #27
0
    def test_register_command_from_extension(self):

        from azure.cli.core.commands import _load_command_loader
        cli = DummyCli()
        main_loader = MainCommandsLoader(cli)
        cli.loader = main_loader

        cmd_tbl = cli.loader.load_command_table(None)
        ext1 = cmd_tbl['hello noodle']
        ext2 = cmd_tbl['hello world']

        self.assertTrue(isinstance(ext1.command_source, ExtensionCommandSource))
        self.assertFalse(ext1.command_source.overrides_command)

        self.assertTrue(isinstance(ext2.command_source, ExtensionCommandSource))
        self.assertTrue(ext2.command_source.overrides_command)
コード例 #28
0
 def test_local_context(self, get_username):
     get_username.return_value = 'core_test_user'
     local_context = AzCLILocalContext(DummyCli())
     self.assertFalse(local_context.is_on)
     local_context.turn_on()
     self.assertTrue(local_context.is_on)
     local_context.set(['all'], 'resource_group_name', 'test_rg')
     self.assertEqual('test_rg', local_context.get('all', 'resource_group_name'))
     self.assertEqual('test_rg', local_context.get_value(['resource_group_name'])['all']['resource_group_name'])
     local_context.delete(['resource_group_name'])
     local_context.initialize()  # reload local context file
     self.assertNotEqual('test_rg', local_context.get('all', 'resource_group_name'))
     local_context.clear()
     local_context.delete_file()
     local_context.turn_off()
     self.assertFalse(local_context.is_on)
コード例 #29
0
 def __init__(self,
              engine_type,
              location,
              engine_parameter_name='database_engine',
              name_prefix=SERVER_NAME_PREFIX,
              parameter_name='server',
              resource_group_parameter_name='resource_group'):
     super(ServerPreparer, self).__init__(name_prefix,
                                          SERVER_NAME_MAX_LENGTH)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.engine_type = engine_type
     self.engine_parameter_name = engine_parameter_name
     self.location = location
     self.parameter_name = parameter_name
     self.resource_group_parameter_name = resource_group_parameter_name
コード例 #30
0
 def __init__(self,
              name_prefix='clibatch',
              parameter_name='batch_account_name',
              location='westus',
              resource_group_parameter_name='resource_group',
              skip_delete=True,
              dev_setting_name='AZURE_CLI_TEST_DEV_BATCH_ACCT_NAME'):
     super(BatchAccountPreparer, self).__init__(name_prefix, 24)
     from azure.cli.core.mock import DummyCli
     self.cli_ctx = DummyCli()
     self.parameter_name = parameter_name
     self.resource_group = None
     self.resource_group_parameter_name = resource_group_parameter_name
     self.skip_delete = skip_delete
     self.location = location
     self.dev_setting_value = os.environ.get(dev_setting_name, None)