# --------------------------------------------------------------------------
# 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

from azure.cli.core.commands.parameters import (
    tags_type,
    resource_group_name_type,
    get_location_type
)
from azure.cli.core.commands.validators import get_default_location_from_resource_group
from azext_attestation.action import AddPolicySigningCertificatesKeys


def load_arguments(self, _):

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

    with self.argument_context('attestation attestation-provider show') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('provider_name', type=str, help='Name of the attestation service instance', id_part='name')

    with self.argument_context('attestation attestation-provider create') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('provider_name', type=str, help='Name of the attestation service instance.')
        c.argument('location', arg_type=get_location_type(self.cli_ctx),
                   validator=get_default_location_from_resource_group)
        c.argument('tags', tags_type)
        c.argument('policy_signing_certificates_keys', action=AddPolicySigningCertificatesKeys, nargs='*', help='The '
                   'value of the "keys" parameter is an array of JWK values.  By default, the order of the JWK values '
                   'within the array does not imply an order of preference among them, although applications of JWK '
                   'Sets can choose to assign a meaning to the order for their purposes, if desired.')

    with self.argument_context('attestation attestation-provider update') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('provider_name', type=str, help='Name of the attestation service instance.', id_part='name')
        c.argument('tags', tags_type)

    with self.argument_context('attestation attestation-provider delete') as c:
        c.argument('resource_group_name', resource_group_name_type)
        c.argument('provider_name', type=str, help='Name of the attestation service', id_part='name')

    with self.argument_context('attestation attestation-provider get-default-by-location') as c:
        c.argument('location', arg_type=get_location_type(self.cli_ctx), id_part='name')
