From 3f72e81e8be470870c431b6e434b73a5efcdcf1f Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Tue, 22 Jun 2021 17:14:33 +0800 Subject: [PATCH 1/3] cae support --- autorest/codegen/__init__.py | 18 +++++++++--------- autorest/codegen/models/code_model.py | 2 +- .../codegen/serializers/general_serializer.py | 8 +++++--- .../codegen/serializers/metadata_serializer.py | 2 +- autorest/codegen/templates/config.py.jinja2 | 4 ++-- .../templates/multiapi_config.py.jinja2 | 4 ++-- 6 files changed, 20 insertions(+), 18 deletions(-) diff --git a/autorest/codegen/__init__.py b/autorest/codegen/__init__.py index defd861456f..8703b65c778 100644 --- a/autorest/codegen/__init__.py +++ b/autorest/codegen/__init__.py @@ -19,7 +19,7 @@ def _get_credential_default_policy_type_has_async_version(credential_default_policy_type: str) -> bool: mapping = { - "BearerTokenCredentialPolicy": True, + "ARMChallengeAuthenticationPolicy": True, "AzureKeyCredentialPolicy": False } return mapping[credential_default_policy_type] @@ -142,7 +142,7 @@ def _get_credential_param(self, azure_arm, credential, credential_default_policy credential_scopes = self._get_credential_scopes(credential) credential_key_header_name = self._autorestapi.get_value('credential-key-header-name') - if credential_default_policy_type == "BearerTokenCredentialPolicy": + if credential_default_policy_type == "ARMChallengeAuthenticationPolicy": if not credential_scopes: if azure_arm: credential_scopes = ["https://management.azure.com/.default"] @@ -150,7 +150,7 @@ def _get_credential_param(self, azure_arm, credential, credential_default_policy # If add-credential is specified, we still want to add a credential_scopes variable. # Will make it an empty list so we can differentiate between this case and None _LOGGER.warning( - "You have default credential policy BearerTokenCredentialPolicy" + "You have default credential policy ARMChallengeAuthenticationPolicy" "but not the --credential-scopes flag set while generating non-management plane code. " "This is not recommend because it forces the customer to pass credential scopes " "through kwargs if they want to authenticate." @@ -159,7 +159,7 @@ def _get_credential_param(self, azure_arm, credential, credential_default_policy if credential_key_header_name: raise ValueError( "You have passed in a credential key header name with default credential policy type " - "BearerTokenCredentialPolicy. This is not allowed, since credential key header name is tied with " + "ARMChallengeAuthenticationPolicy. This is not allowed, since credential key header name is tied with " "AzureKeyCredentialPolicy. Instead, with this policy it is recommend you pass in " "--credential-scopes." ) @@ -169,7 +169,7 @@ def _get_credential_param(self, azure_arm, credential, credential_default_policy raise ValueError( "You have passed in credential scopes with default credential policy type " "AzureKeyCredentialPolicy. This is not allowed, since credential scopes is tied with " - "BearerTokenCredentialPolicy. Instead, with this policy you must pass in " + "ARMChallengeAuthenticationPolicy. Instead, with this policy you must pass in " "--credential-key-header-name." ) if not credential_key_header_name: @@ -182,11 +182,11 @@ def _get_credential_param(self, azure_arm, credential, credential_default_policy def _handle_default_authentication_policy(self, azure_arm, credential): passed_in_credential_default_policy_type = ( - self._autorestapi.get_value("credential-default-policy-type") or "BearerTokenCredentialPolicy" + self._autorestapi.get_value("credential-default-policy-type") or "ARMChallengeAuthenticationPolicy" ) - # right now, we only allow BearerTokenCredentialPolicy and AzureKeyCredentialPolicy - allowed_policies = ["BearerTokenCredentialPolicy", "AzureKeyCredentialPolicy"] + # right now, we only allow ARMChallengeAuthenticationPolicy and AzureKeyCredentialPolicy + allowed_policies = ["ARMChallengeAuthenticationPolicy", "AzureKeyCredentialPolicy"] try: credential_default_policy_type = [ cp for cp in allowed_policies if cp.lower() == passed_in_credential_default_policy_type.lower() @@ -194,7 +194,7 @@ def _handle_default_authentication_policy(self, azure_arm, credential): except IndexError: raise ValueError( "The credential you pass in with --credential-default-policy-type must be either " - "BearerTokenCredentialPolicy or AzureKeyCredentialPolicy" + "ARMChallengeAuthenticationPolicy or AzureKeyCredentialPolicy" ) credential_scopes, credential_key_header_name = self._get_credential_param( diff --git a/autorest/codegen/models/code_model.py b/autorest/codegen/models/code_model.py index 3956580bada..27b56426575 100644 --- a/autorest/codegen/models/code_model.py +++ b/autorest/codegen/models/code_model.py @@ -125,7 +125,7 @@ def add_credential_global_parameter(self) -> None: :rtype: None """ credential_schema: Union[AzureKeyCredentialSchema, TokenCredentialSchema] - if self.options["credential_default_policy_type"] == "BearerTokenCredentialPolicy": + if self.options["credential_default_policy_type"] == "ARMChallengeAuthenticationPolicy": credential_schema = TokenCredentialSchema(async_mode=False) else: credential_schema = AzureKeyCredentialSchema() diff --git a/autorest/codegen/serializers/general_serializer.py b/autorest/codegen/serializers/general_serializer.py index b6b03da4748..e6393ddf38e 100644 --- a/autorest/codegen/serializers/general_serializer.py +++ b/autorest/codegen/serializers/general_serializer.py @@ -18,7 +18,9 @@ def config_imports(code_model, global_parameters: ParameterList, async_mode: boo for gp in global_parameters: file_import.merge(gp.imports()) if code_model.options["azure_arm"]: - file_import.add_from_import("azure.mgmt.core.policies", "ARMHttpLoggingPolicy", ImportType.AZURECORE) + async_policy = "ARMHttpLoggingPolicy, AsyncARMChallengeAuthenticationPolicy" + policy = "ARMHttpLoggingPolicy, ARMChallengeAuthenticationPolicy" + file_import.add_from_import("azure.mgmt.core.policies", async_policy if async_mode else policy, ImportType.AZURECORE) return file_import @@ -53,7 +55,7 @@ def _service_client_imports() -> FileImport: if ( self.code_model.options['credential'] and - self.code_model.options['credential_default_policy_type'] == "BearerTokenCredentialPolicy" + self.code_model.options['credential_default_policy_type'] == "ARMChallengeAuthenticationPolicy" ): self._correct_credential_parameter() @@ -75,7 +77,7 @@ def serialize_config_file(self) -> str: if ( self.code_model.options['credential'] and - self.code_model.options['credential_default_policy_type'] == "BearerTokenCredentialPolicy" + self.code_model.options['credential_default_policy_type'] == "ARMChallengeAuthenticationPolicy" ): self._correct_credential_parameter() diff --git a/autorest/codegen/serializers/metadata_serializer.py b/autorest/codegen/serializers/metadata_serializer.py index f94fa4c3865..7580730ceb2 100644 --- a/autorest/codegen/serializers/metadata_serializer.py +++ b/autorest/codegen/serializers/metadata_serializer.py @@ -143,7 +143,7 @@ def _is_paging(operation): async_global_parameters = self.code_model.global_parameters if ( self.code_model.options['credential'] and - self.code_model.options['credential_default_policy_type'] == "BearerTokenCredentialPolicy" + self.code_model.options['credential_default_policy_type'] == "ARMChallengeAuthenticationPolicy" ): # this ensures that the TokenCredentialSchema showing up in the list of code model's global parameters # is sync. This way we only have to make a copy for an async_credential diff --git a/autorest/codegen/templates/config.py.jinja2 b/autorest/codegen/templates/config.py.jinja2 index 84b58885286..3edb3f2873f 100644 --- a/autorest/codegen/templates/config.py.jinja2 +++ b/autorest/codegen/templates/config.py.jinja2 @@ -80,6 +80,6 @@ class {{ code_model.class_name }}Configuration(Configuration): {% endif %} if self.credential and not self.authentication_policy: {% set credential_default_policy_type = ("Async" if (async_mode and code_model.options['credential_default_policy_type_has_async_version']) else "") + code_model.options['credential_default_policy_type'] %} - {% set credential_param_type = ("'" + code_model.options['credential_key_header_name'] + "', ") if code_model.options['credential_key_header_name'] else ("*self.credential_scopes, " if "BearerTokenCredentialPolicy" in credential_default_policy_type else "") %} - self.authentication_policy = policies.{{ credential_default_policy_type }}(self.credential, {{ credential_param_type if credential_param_type }}**kwargs) + {% set credential_param_type = ("'" + code_model.options['credential_key_header_name'] + "', ") if code_model.options['credential_key_header_name'] else ("*self.credential_scopes, " if "ARMChallengeAuthenticationPolicy" in credential_default_policy_type else "") %} + self.authentication_policy = {{ credential_default_policy_type }}(self.credential, {{ credential_param_type if credential_param_type }}**kwargs) {% endif %} diff --git a/autorest/multiapi/templates/multiapi_config.py.jinja2 b/autorest/multiapi/templates/multiapi_config.py.jinja2 index 468036058e4..b32c7acc87f 100644 --- a/autorest/multiapi/templates/multiapi_config.py.jinja2 +++ b/autorest/multiapi/templates/multiapi_config.py.jinja2 @@ -92,6 +92,6 @@ class {{ code_model.service_client.name }}Configuration(Configuration): {% endif %} if self.credential and not self.authentication_policy: {% set credential_default_policy_type = ("Async" if (async_mode and code_model.config.credential_default_policy_type_has_async_version) else "") + code_model.config.credential_default_policy_type %} - {% set credential_param_type = ("'" + code_model.config.credential_key_header_name + "', ") if code_model.config.credential_key_header_name else ("*self.credential_scopes, " if "BearerTokenCredentialPolicy" in credential_default_policy_type else "") %} - self.authentication_policy = policies.{{ credential_default_policy_type }}(self.credential, {{ credential_param_type if credential_param_type }}**kwargs) + {% set credential_param_type = ("'" + code_model.config.credential_key_header_name + "', ") if code_model.config.credential_key_header_name else ("*self.credential_scopes, " if "ARMChallengeAuthenticationPolicy" in credential_default_policy_type else "") %} + self.authentication_policy = {{ credential_default_policy_type }}(self.credential, {{ credential_param_type if credential_param_type }}**kwargs) {% endif %} From 82c9dbcbbbf291ba68e4ce4bf5b74b393a888cd6 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Tue, 29 Jun 2021 10:03:47 +0800 Subject: [PATCH 2/3] pylint --- autorest/codegen/serializers/general_serializer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/autorest/codegen/serializers/general_serializer.py b/autorest/codegen/serializers/general_serializer.py index e6393ddf38e..9116bd97523 100644 --- a/autorest/codegen/serializers/general_serializer.py +++ b/autorest/codegen/serializers/general_serializer.py @@ -20,7 +20,8 @@ def config_imports(code_model, global_parameters: ParameterList, async_mode: boo if code_model.options["azure_arm"]: async_policy = "ARMHttpLoggingPolicy, AsyncARMChallengeAuthenticationPolicy" policy = "ARMHttpLoggingPolicy, ARMChallengeAuthenticationPolicy" - file_import.add_from_import("azure.mgmt.core.policies", async_policy if async_mode else policy, ImportType.AZURECORE) + file_import.add_from_import("azure.mgmt.core.policies", async_policy if async_mode else policy, + ImportType.AZURECORE) return file_import From a6fa00184a595574b764c0d62151413aeaac18cc Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Tue, 29 Jun 2021 11:07:12 +0800 Subject: [PATCH 3/3] pylint --- autorest/codegen/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autorest/codegen/__init__.py b/autorest/codegen/__init__.py index 8703b65c778..99370e47919 100644 --- a/autorest/codegen/__init__.py +++ b/autorest/codegen/__init__.py @@ -159,8 +159,8 @@ def _get_credential_param(self, azure_arm, credential, credential_default_policy if credential_key_header_name: raise ValueError( "You have passed in a credential key header name with default credential policy type " - "ARMChallengeAuthenticationPolicy. This is not allowed, since credential key header name is tied with " - "AzureKeyCredentialPolicy. Instead, with this policy it is recommend you pass in " + "ARMChallengeAuthenticationPolicy. This is not allowed, since credential key header name is tied " + "with AzureKeyCredentialPolicy. Instead, with this policy it is recommend you pass in " "--credential-scopes." ) else: