# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------
# pylint: disable=too-many-lines
# pylint: disable=too-many-statements
# pylint: disable=line-too-long

from azure.cli.core.commands.parameters import (
    get_three_state_flag,
    get_enum_type,
    resource_group_name_type
)
from azure.cli.core.commands.validators import validate_file_or_dict
from azext_providerhub.action import (
    AddCanary,
    AddProviderAuthentication,
    AddProviderAuthorizations,
    AddResourceProviderAuthentication,
    AddCapabilities,
    AddSkipRegions,
    AddTemplateDeploymentOptions,
    AddServiceTreeInfos,
    AddResourceTypeEndpointProperties,
    AddProviderHubMetadataProviderAuthorizations,
    AddAuthorizations,
    AddSwaggerSpecifications,
    AddAuthorizationActionMappings,
    AddLinkedAccessChecks,
    AddThrottlingRules,
    AddIdentityManagement,
    AddCheckNameAvailabilitySpecifications,
    AddResourcetyperegistrationServiceTreeInfos,
    AddSubscriptionStateRules,
    AddExtendedLocations,
    AddResourceMovePolicy,
    AddRequiredFeatures,
    AddResourceCreationBegin,
    AddResourcePatchBegin,
    AddLoggingRules,
)


def load_arguments(self, _):

    with self.argument_context('providerhub custom-rollout list') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')

    with self.argument_context('providerhub custom-rollout show') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('rollout_name', type=str,
                   help='The rollout name.', id_part='child_name_1')

    with self.argument_context('providerhub custom-rollout create') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')
        c.argument('rollout_name', type=str, help='The rollout name.')
        c.argument('canary', action=AddCanary, nargs='+',
                   help='The canary regions to apply the manifest.')

    with self.argument_context('providerhub custom-rollout update') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('rollout_name', type=str,
                   help='The rollout name.', id_part='child_name_1')
        c.argument('canary', action=AddCanary, nargs='+',
                   help='The canary regions to apply the manifest.')

    with self.argument_context('providerhub default-rollout list') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')

    with self.argument_context('providerhub default-rollout show') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('rollout_name', type=str,
                   help='The rollout name.', id_part='child_name_1')

    with self.argument_context('providerhub default-rollout create') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')
        c.argument('rollout_name', type=str, help='The rollout name.')
        c.argument('row2_wait_duration', type=str, help='The wait duration before the rollout '
                   'begins in rest of the world two.')
        c.argument('skip_regions', action=AddSkipRegions,
                   nargs='*', help='The canary regions to skip.')

    with self.argument_context('providerhub default-rollout update') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')
        c.argument('rollout_name', type=str, help='The rollout name.')
        c.argument('row2_wait_duration', type=str, help='The wait duration before the rollout begins '
                   'in rest of the world two.')
        c.argument('skip_regions', action=AddSkipRegions,
                   nargs='*', help='The canary regions to skip.')

    with self.argument_context('providerhub default-rollout delete') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('rollout_name', type=str,
                   help='The rollout name.', id_part='child_name_1')

    with self.argument_context('providerhub default-rollout stop') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('rollout_name', type=str,
                   help='The rollout name.', id_part='child_name_1')

    with self.argument_context('providerhub default-rollout wait') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('rollout_name', type=str,
                   help='The rollout name.', id_part='child_name_1')

    with self.argument_context('providerhub manifest checkin') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('environment', type=str, help='The environment supplied to the checkin manifest '
                   'operation.')
        c.argument('arm_manifest_location', type=str, help='The baseline ARM manifest location supplied to '
                   'the checkin manifest operation.')

    with self.argument_context('providerhub manifest generate') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')

    with self.argument_context('providerhub provider-registration list') as c:
        c.argument('resource_group_name', resource_group_name_type)

    with self.argument_context('providerhub provider-registration show') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')

    with self.argument_context('providerhub provider-registration create') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')
        c.argument('provider_authentication', action=AddProviderAuthentication, nargs='+',
                   help='Used to set alternative "audiences or resources" that ARM should accept from the token while authenticating requests for the provider. Only available to tenant level providers.')
        c.argument('provider_authorizations', action=AddProviderAuthorizations,
                   nargs='+', help='The resource provider authorizations.')
        c.argument('provider_version', type=str,
                   help='The provider version. 2.0 is the only supported version.')
        c.argument('provider_type', arg_type=get_enum_type(['NotSpecified', 'Internal', 'External', 'Hidden',
                                                            'RegistrationFree', 'LegacyRegistrationRequired',
                                                            'TenantOnly', 'AuthorizationFree']), help='Value can be "Internal", "External", "Hidden", "RegistrationFree", "TenantOnly" or "LegacyRegistrationRequired". RegistrationFree is for providers that do not need subscriptions to explicitly register to use the provider. Hidden flag ensures that discovery APIs (GET /Providers) will not show the provider, however a user can still write to the provider explicitly. TenantOnly will not appear in Get /Providers and will not allow registration from users. LegacyRegistrationRequired is for legacy providers that need RDFE registration in addition to ARM registration.')
        c.argument('capabilities', action=AddCapabilities, nargs='+', help='Allow the access to the resource provider from a restrictive subscription quota (DreamSpark_2015-02-01 and CSP_2015-05-01​). The required​Features array is optional, if specified the subscription should meet the quota ​and at least one of the features. If no capabilities is specified the provider will be available to every subscription but the restrictive quotas. New providers are required to allow CSP_2015-05-01​​')
        c.argument('metadata', type=validate_file_or_dict,
                   help='The metadata.')
        c.argument('template_deployment_options', action=AddTemplateDeploymentOptions,
                   nargs='+', help='The field for preflight options.')
        c.argument('schema_owners', nargs='+',
                   help='Specifies an array of needed ACIS claims to modify the resource provider schema via ACIS.', arg_group='Management')
        c.argument('manifest_owners', nargs='+',
                   help='Specifies an array of required ACIS claims to modify the resource provider\'s manifest content via ACIS.', arg_group='Management')
        c.argument('incident_routing_service', type=str,
                   help='The Service in IcM when creating or transferring incidents to the RP.', arg_group='Management')
        c.argument('incident_routing_team', type=str,
                   help='The Team in IcM when creating or transferring incidents to the RP.', arg_group='Management')
        c.argument('incident_contact_email', type=str,
                   help='The email address of contacts for incidents related to the RP.', arg_group='Management')
        c.argument('service_tree_infos', action=AddServiceTreeInfos, nargs='+', help='The ServiceTree information for the resource provider.',
                   arg_group='Management')
        c.argument('resource_access_policy', arg_type=get_enum_type(['NotSpecified', 'AcisReadAllowed',
                                                                     'AcisActionAllowed']), help='The resource access policy.',
                   arg_group='Management')
        c.argument('opt_in_headers', arg_type=get_enum_type(['NotSpecified', 'SignedUserToken',
                                                             'ClientGroupMembership', 'SignedAuxiliaryTokens',
                                                             'UnboundedClientGroupMembership']), help='ARM allows customized headers when sending requests to the RP. This can be done both at the provider level or at the individual resource type level.',
                   arg_group='Request Header Options')
        c.argument('required_features_policy', arg_type=get_enum_type(['Any', 'All']), help='The accepted values are "Any" or "All". If the value is "All", then only the subscriptions registered to all the corresponding feature flag will be allowed.​', arg_group='Features '
                   'Rule')
        c.argument('providerhub_metadata_provider_authorizations',
                   action=AddProviderHubMetadataProviderAuthorizations, nargs='+', help='Available only for first party providers, this section can be used to bootstrap Service-to-Service authentication and authorization for the provider\'s application. When set, it would allow provider to access users\' subscription registered with them.', arg_group='Provider Hub Metadata')
        c.argument('providerhub_metadata_rp_authentication', action=AddResourceProviderAuthentication, nargs='+', help='Used to set alternative "audiences or resources" that ARM should accept from the token while authenticating requests for the provider. Only available to tenant level providers.',
                   arg_group='Provider Hub Metadata')
        c.argument('lighthouse_authorizations', action=AddAuthorizations, nargs='+', help='The lighthouse authorizations.', arg_group='Provider Hub Metadata '
                   'Third Party Provider Authorization')
        c.argument('managed_by_tenant_id', type=str, help='The managed by tenant ID.', arg_group='Provider Hub Metadata Third Party Provider '
                   'Authorization')

    with self.argument_context('providerhub provider-registration update') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('provider_authentication', action=AddProviderAuthentication, nargs='+',
                   help='Used to set alternative "audiences or resources" that ARM should accept from the token while authenticating requests for the provider. Only available to tenant level providers.')
        c.argument('provider_authorizations', action=AddProviderAuthorizations,
                   nargs='+', help='The resource provider authorizations.')
        c.argument('namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')
        c.argument('provider_version', type=str,
                   help='The provider version. 2.0 is the only supported version.')
        c.argument('provider_type', arg_type=get_enum_type(['NotSpecified', 'Internal', 'External', 'Hidden',
                                                            'RegistrationFree', 'LegacyRegistrationRequired',
                                                            'TenantOnly', 'AuthorizationFree']), help='Value can be "Internal", "External", "Hidden", "RegistrationFree", "TenantOnly" or "LegacyRegistrationRequired". RegistrationFree is for providers that do not need subscriptions to explicitly register to use the provider. Hidden flag ensures that discovery APIs (GET /Providers) will not show the provider, however a user can still write to the provider explicitly. TenantOnly will not appear in Get /Providers and will not allow registration from users. LegacyRegistrationRequired is for legacy providers that need RDFE registration in addition to ARM registration.')
        c.argument('required_features', action=AddRequiredFeatures, nargs='+',
                   help='If specified, only subscriptions registered to the corresponding feature flag will be allowed.')
        c.argument('capabilities', action=AddCapabilities, nargs='+', help='Allow the access to the resource provider from a restrictive subscription quota (DreamSpark_2015-02-01 and CSP_2015-05-01​). The required​Features array is optional, if specified the subscription should meet the quota ​and at least one of the features. If no capabilities is specified the provider will be available to every subscription but the restrictive quotas. New providers are required to allow CSP_2015-05-01​​')
        c.argument('metadata', type=validate_file_or_dict,
                   help='Any object Expected value: json-string/@json-file.')
        c.argument('template_deployment_options', action=AddTemplateDeploymentOptions,
                   nargs='+', help='The field for preflight options.')
        c.argument('schema_owners', nargs='+',
                   help='Specifies an array of needed ACIS claims to modify the resource provider schema via ACIS.', arg_group='Management')
        c.argument('manifest_owners', nargs='+',
                   help='Specifies an array of required ACIS claims to modify the resource provider\'s manifest content via ACIS.', arg_group='Management')
        c.argument('incident_routing_service', type=str,
                   help='The "Service" in IcM when creating or transferring incidents to the RP.', arg_group='Management')
        c.argument('incident_routing_team', type=str,
                   help='The "Team" in IcM when creating or transferring incidents to the RP.', arg_group='Management')
        c.argument('incident_contact_email', type=str,
                   help='The email address of contacts for incidents related to the RP.', arg_group='Management')
        c.argument('service_tree_infos', action=AddServiceTreeInfos, nargs='+', help='The ServiceTree information for the resource provider.',
                   arg_group='Management')
        c.argument('resource_access_policy', arg_type=get_enum_type(['NotSpecified', 'AcisReadAllowed',
                                                                     'AcisActionAllowed']), help='The resource access policy.',
                   arg_group='Management')
        c.argument('opt_in_headers', arg_type=get_enum_type(['NotSpecified', 'SignedUserToken',
                                                             'ClientGroupMembership', 'SignedAuxiliaryTokens',
                                                             'UnboundedClientGroupMembership']), help='ARM allows customized headers when sending requests to the RP. This can be done both at the provider level or at the individual resource type level.',
                   arg_group='Request Header Options')
        c.argument('required_features_policy', arg_type=get_enum_type(['Any', 'All']), help='The accepted values are "Any" or "All". If the value is "All", then only the subscriptions registered to all the corresponding feature flag will be allowed.​', arg_group='Features '
                   'Rule')
        c.argument('providerhub_metadata_provider_authorizations',
                   action=AddProviderHubMetadataProviderAuthorizations, nargs='+', help='Available only for first party providers, this section can be used to bootstrap Service-to-Service authentication and authorization for the provider\'s application. When set, it would allow provider to access users\' subscription registered with them.', arg_group='Provider Hub '
                   'Metadata')
        c.argument('providerhub_metadata_rp_authentication', action=AddResourceProviderAuthentication, nargs='+', help='Used to set alternative "audiences or resources" that ARM should accept from the token while authenticating requests for the provider. Only available to tenant level providers.',
                   arg_group='Provider Hub Metadata')
        c.argument('lighthouse_authorizations', action=AddAuthorizations, nargs='+', help='The lighthouse authorizations.', arg_group='Provider Hub Metadata '
                   'Third Party Provider Authorization')
        c.argument('managed_by_tenant_id', type=str, help='The managed by tenant ID.', arg_group='Provider Hub Metadata Third Party Provider '
                   'Authorization')
        c.ignore('properties')

    with self.argument_context('providerhub provider-registration delete') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')

    with self.argument_context('providerhub provider-registration generate-operation') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')

    with self.argument_context('providerhub provider-registration wait') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')

    with self.argument_context('providerhub resource-type-registration list') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')

    with self.argument_context('providerhub resource-type-registration show') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('resource_type', type=str,
                   help='The resource type.', id_part='child_name_1')

    with self.argument_context('providerhub resource-type-registration create') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')
        c.argument('resource_type', type=str, help='The resource type.')
        c.argument('routing_type', arg_type=get_enum_type(['Default', 'ProxyOnly', 'HostBased', 'Extension',
                                                           'Tenant', 'Fanout', 'LocationBased', 'Failover',
                                                           'CascadeExtension']), help='The resource routing type.')
        c.argument('regionality', arg_type=get_enum_type(
            ['NotSpecified', 'Global', 'Regional']), help='The regionality of the resource type.')
        c.argument('endpoints', action=AddResourceTypeEndpointProperties, nargs='+', help='The resource '
                   'type endpoint properties.')
        c.argument('resource_creation_begin', action=AddResourceCreationBegin, nargs='+',
                   help='Extension options for handling the resource creation begin extension request.')
        c.argument('resource_patch_begin', action=AddResourcePatchBegin, nargs='+',
                   help='Extension options for handling the resource patch begin extension request.')
        c.argument('marketplace_type', arg_type=get_enum_type(
            ['NotSpecified', 'AddOn', 'Bypass', 'Store']), help='The resource type behavior in the marketplace.')
        c.argument('swagger_specifications', action=AddSwaggerSpecifications, nargs='+',
                   help='The OpenAPI (swagger specs) of the resource type. RPaaS will use the swagger specs to validate http requests/responses.')
        c.argument('allowed_unauthorized_actions', nargs='+',
                   help='The allowed unauthorized actions.')
        c.argument('authorization_action_mappings', action=AddAuthorizationActionMappings,
                   nargs='+', help='Allows RP to override action verb for RBAC purposes at ARM.')
        c.argument('linked_access_checks', action=AddLinkedAccessChecks, nargs='+',
                   help='Enables additional Role Based Access Control (RBAC) checks on related resources.')
        c.argument('default_api_version', type=str,
                   help='The default API version for the endpoint.')
        c.argument('logging_rules', type=AddLoggingRules,
                   help='Enables additional event logs RP wants customers to see in their subscription for a particular action.')
        c.argument('throttling_rules', action=AddThrottlingRules, nargs='+',
                   help='Allows RPs to set individual limits for different actions in terms of number of requests or number of resources (for collection read requests only).')
        c.argument('required_features', action=AddRequiredFeatures, nargs='+',
                   help='If specified, only subscriptions registered to the corresponding feature flag will be allowed.')
        c.argument('required_features_policy', arg_type=get_enum_type(['Any', 'All']), help='The accepted values are "Any" or "All". If the value is "All", then only the subscriptions registered to all the corresponding feature flag will be allowed.​', arg_group='Features '
                   'Rule')
        c.argument('enable_async_operation', arg_type=get_three_state_flag(
        ), help='Indicates whether the async operation is enabled for this resource type.')
        c.argument('enable_third_party_s2s', arg_type=get_three_state_flag(
        ), help='Indicates whether to enable third party s2s.')
        c.argument('is_pure_proxy', arg_type=get_three_state_flag(),
                   help='Indicates whether this is a "PureProxy" resource type.')
        c.argument('identity_management', action=AddIdentityManagement, nargs='+',
                   help='MSI related settings. RPaaS supports Managed Identity and can help simplify the onboarding process.')
        c.argument('check_name_availability_specifications', action=AddCheckNameAvailabilitySpecifications, nargs='+',
                   help='RPaaS provides this feature at the platform level to help UserRPs with name availability checks without calling into the POST extension endpoints for the "checkNameAvailability" resource type.')
        c.argument('disallowed_action_verbs', nargs='+',
                   help='The supported values are "read", "write", "delete", "action".  This setting will block all operations of the specified type on the resource type. These actions map to the corresponding HTTP verbs.')
        c.argument('service_tree_infos', action=AddResourcetyperegistrationServiceTreeInfos,
                   nargs='+', help='The ServiceTree information for the resource provider.')
        c.argument('opt_in_headers', arg_type=get_enum_type(['NotSpecified', 'SignedUserToken',
                                                             'ClientGroupMembership', 'SignedAuxiliaryTokens',
                                                             'UnboundedClientGroupMembership']), help='ARM allows customized headers when sending requests to the RP. This can be done both at the provider level or at the individual resource type level.',
                   arg_group='Request Header Options')
        c.argument('subscription_state_rules', action=AddSubscriptionStateRules,
                   nargs='+', help='The subscription policy.')
        c.argument('template_deployment_options', action=AddTemplateDeploymentOptions,
                   nargs='+', help='The field for preflight options.')
        c.argument('extended_locations', action=AddExtendedLocations,
                   nargs='+', help='The extended locations property.')
        c.argument('resource_move_policy', action=AddResourceMovePolicy, nargs='+',
                   help='Indicates the resource type has opted in to move operations.')
        c.argument('resource_deletion_policy', arg_type=get_enum_type(['NotSpecified', 'CascadeDeleteAll',
                                                                       'CascadeDeleteProxyOnlyChildren']), help='The property to customize RPaaS deletion operation.')

    with self.argument_context('providerhub resource-type-registration update') as c:
        c.argument('provider_namespace', type=str,
                   help='The name of the resource provider hosted within ProviderHub.')
        c.argument('resource_type', type=str, help='The resource type.')
        c.argument('routing_type', arg_type=get_enum_type(['Default', 'ProxyOnly', 'HostBased', 'Extension',
                                                           'Tenant', 'Fanout', 'LocationBased', 'Failover',
                                                           'CascadeExtension']), help='The resource routing type.')
        c.argument('regionality', arg_type=get_enum_type(
            ['NotSpecified', 'Global', 'Regional']), help='The regionality of the resource type.')
        c.argument('endpoints', action=AddResourceTypeEndpointProperties, nargs='+', help='The resource '
                   'type endpoint properties.')
        c.argument('resource_creation_begin', action=AddResourceCreationBegin, nargs='+',
                   help='Extension options for handling the resource creation begin extension request.')
        c.argument('resource_patch_begin', action=AddResourcePatchBegin, nargs='+',
                   help='Extension options for handling the resource patch begin extension request.')
        c.argument('marketplace_type', arg_type=get_enum_type(
            ['NotSpecified', 'AddOn', 'Bypass', 'Store']), help='The resource type behavior in the marketplace.')
        c.argument('swagger_specifications', action=AddSwaggerSpecifications, nargs='+',
                   help='The OpenAPI (swagger specs) of the resource type. RPaaS will use the swagger specs to validate http requests/responses.')
        c.argument('allowed_unauthorized_actions', nargs='+',
                   help='The allowed unauthorized actions.')
        c.argument('authorization_action_mappings', action=AddAuthorizationActionMappings,
                   nargs='+', help='Allows RP to override action verb for RBAC purposes at ARM.')
        c.argument('linked_access_checks', action=AddLinkedAccessChecks, nargs='+',
                   help='Enables additional Role Based Access Control (RBAC) checks on related resources.')
        c.argument('default_api_version', type=str,
                   help='The default API version for the endpoint.')
        c.argument('logging_rules', type=AddLoggingRules,
                   help='Enables additional event logs RP wants customers to see in their subscription for a particular action.')
        c.argument('throttling_rules', action=AddThrottlingRules, nargs='+',
                   help='Allows RPs to set individual limits for different actions in terms of number of requests or number of resources (for collection read requests only).')
        c.argument('required_features', action=AddRequiredFeatures, nargs='+',
                   help='If specified, only subscriptions registered to the corresponding feature flag will be allowed.')
        c.argument('required_features_policy', arg_type=get_enum_type(['Any', 'All']), help='The accepted values are "Any" or "All". If the value is "All", then only the subscriptions registered to all the corresponding feature flag will be allowed.​', arg_group='Features '
                   'Rule')
        c.argument('enable_async_operation', arg_type=get_three_state_flag(
        ), help='Indicates whether the async operation is enabled for this resource type.')
        c.argument('enable_third_party_s2s', arg_type=get_three_state_flag(
        ), help='Indicates whether to enable third party s2s.')
        c.argument('is_pure_proxy', arg_type=get_three_state_flag(),
                   help='Indicates whether this is a "PureProxy" resource type.')
        c.argument('identity_management', action=AddIdentityManagement, nargs='+',
                   help='MSI related settings. RPaaS supports Managed Identity and can help simplify the onboarding process.')
        c.argument('check_name_availability_specifications', action=AddCheckNameAvailabilitySpecifications, nargs='+',
                   help='RPaaS provides this feature at the platform level to help UserRPs with name availability checks without calling into the POST extension endpoints for the "checkNameAvailability" resource type.')
        c.argument('disallowed_action_verbs', nargs='+',
                   help='The supported values are "read", "write", "delete", "action".  This setting will block all operations of the specified type on the resource type. These actions map to the corresponding HTTP verbs.')
        c.argument('service_tree_infos', action=AddResourcetyperegistrationServiceTreeInfos,
                   nargs='+', help='The ServiceTree information for the resource provider.')
        c.argument('opt_in_headers', arg_type=get_enum_type(['NotSpecified', 'SignedUserToken',
                                                             'ClientGroupMembership', 'SignedAuxiliaryTokens',
                                                             'UnboundedClientGroupMembership']), help='ARM allows customized headers when sending requests to the RP. This can be done both at the provider level or at the individual resource type level.',
                   arg_group='Request Header Options')
        c.argument('subscription_state_rules', action=AddSubscriptionStateRules,
                   nargs='+', help='The subscription policy.')
        c.argument('template_deployment_options', action=AddTemplateDeploymentOptions,
                   nargs='+', help='The field for preflight options.')
        c.argument('extended_locations', action=AddExtendedLocations,
                   nargs='+', help='The extended locations property.')
        c.argument('resource_move_policy', action=AddResourceMovePolicy, nargs='+',
                   help='Indicates the resource type has opted in to move operations.')
        c.argument('resource_deletion_policy', arg_type=get_enum_type(['NotSpecified', 'CascadeDeleteAll',
                                                                       'CascadeDeleteProxyOnlyChildren']), help='The property to customize RPaaS deletion operation.')

    with self.argument_context('providerhub resource-type-registration delete') as c:
        c.argument('provider_namespace', type=str, help='The name of the resource provider hosted within ProviderHub.',
                   id_part='name')
        c.argument('resource_type', type=str,
                   help='The resource type.', id_part='child_name_1')
