text: # coding=utf-8
  # --------------------------------------------------------------------------
  # 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.
  # --------------------------------------------------------------------------
  
  from msrest.serialization import Model
  from msrest.exceptions import HttpOperationError
  
  
  class PrivateLinkScopesResource(Model):
      """An azure resource object.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      All required parameters must be populated in order to send to Azure.
  
      :ivar id: Azure resource Id
      :vartype id: str
      :ivar name: Azure resource name
      :vartype name: str
      :ivar type: Azure resource type
      :vartype type: str
      :param location: Required. Resource location
      :type location: str
      :param tags: Resource tags
      :type tags: dict[str, str]
      """
  
      _validation = {
          'id': {'readonly': True},
          'name': {'readonly': True},
          'type': {'readonly': True},
          'location': {'required': True},
      }
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'name': {'key': 'name', 'type': 'str'},
          'type': {'key': 'type', 'type': 'str'},
          'location': {'key': 'location', 'type': 'str'},
          'tags': {'key': 'tags', 'type': '{str}'},
      }
  
      def __init__(self, *, location: str, tags=None, **kwargs) -> None:
          super(PrivateLinkScopesResource, self).__init__(**kwargs)
          self.id = None
          self.name = None
          self.type = None
          self.location = location
          self.tags = tags
  
  
  class AzureMonitorPrivateLinkScope(PrivateLinkScopesResource):
      """An Azure Monitor PrivateLinkScope definition.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      All required parameters must be populated in order to send to Azure.
  
      :ivar id: Azure resource Id
      :vartype id: str
      :ivar name: Azure resource name
      :vartype name: str
      :ivar type: Azure resource type
      :vartype type: str
      :param location: Required. Resource location
      :type location: str
      :param tags: Resource tags
      :type tags: dict[str, str]
      :ivar provisioning_state: Current state of this PrivateLinkScope: whether
       or not is has been provisioned within the resource group it is defined.
       Users cannot change this value but are able to read from it. Values will
       include Provisioning ,Succeeded, Canceled and Failed.
      :vartype provisioning_state: str
      """
  
      _validation = {
          'id': {'readonly': True},
          'name': {'readonly': True},
          'type': {'readonly': True},
          'location': {'required': True},
          'provisioning_state': {'readonly': True},
      }
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'name': {'key': 'name', 'type': 'str'},
          'type': {'key': 'type', 'type': 'str'},
          'location': {'key': 'location', 'type': 'str'},
          'tags': {'key': 'tags', 'type': '{str}'},
          'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
      }
  
      def __init__(self, *, location: str, tags=None, **kwargs) -> None:
          super(AzureMonitorPrivateLinkScope, self).__init__(location=location, tags=tags, **kwargs)
          self.provisioning_state = None
  
  
  class CloudError(Model):
      """CloudError.
      """
  
      _attribute_map = {
      }
  
  
  class ErrorAdditionalInfo(Model):
      """The resource management error additional info.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      :ivar type: The additional info type.
      :vartype type: str
      :ivar info: The additional info.
      :vartype info: object
      """
  
      _validation = {
          'type': {'readonly': True},
          'info': {'readonly': True},
      }
  
      _attribute_map = {
          'type': {'key': 'type', 'type': 'str'},
          'info': {'key': 'info', 'type': 'object'},
      }
  
      def __init__(self, **kwargs) -> None:
          super(ErrorAdditionalInfo, self).__init__(**kwargs)
          self.type = None
          self.info = None
  
  
  class ErrorResponse(Model):
      """The resource management error response.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      :ivar code: The error code.
      :vartype code: str
      :ivar message: The error message.
      :vartype message: str
      :ivar target: The error target.
      :vartype target: str
      :ivar details: The error details.
      :vartype details:
       list[~azure.mgmt.monitor.v2019_10_17.models.ErrorResponse]
      :ivar additional_info: The error additional info.
      :vartype additional_info:
       list[~azure.mgmt.monitor.v2019_10_17.models.ErrorAdditionalInfo]
      """
  
      _validation = {
          'code': {'readonly': True},
          'message': {'readonly': True},
          'target': {'readonly': True},
          'details': {'readonly': True},
          'additional_info': {'readonly': True},
      }
  
      _attribute_map = {
          'code': {'key': 'code', 'type': 'str'},
          'message': {'key': 'message', 'type': 'str'},
          'target': {'key': 'target', 'type': 'str'},
          'details': {'key': 'details', 'type': '[ErrorResponse]'},
          'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
      }
  
      def __init__(self, **kwargs) -> None:
          super(ErrorResponse, self).__init__(**kwargs)
          self.code = None
          self.message = None
          self.target = None
          self.details = None
          self.additional_info = None
  
  
  class ErrorResponseException(HttpOperationError):
      """Server responsed with exception of type: 'ErrorResponse'.
  
      :param deserialize: A deserializer
      :param response: Server response to be deserialized.
      """
  
      def __init__(self, deserialize, response, *args):
  
          super(ErrorResponseException, self).__init__(deserialize, response, 'ErrorResponse', *args)
  
  
  class OperationStatus(Model):
      """The status of operation.
  
      :param id: The operation Id.
      :type id: str
      :param name: The operation name.
      :type name: str
      :param start_time: Start time of the job in standard ISO8601 format.
      :type start_time: datetime
      :param end_time: End time of the job in standard ISO8601 format.
      :type end_time: datetime
      :param status: The status of the operation.
      :type status: str
      :param error: The error detail of the operation if any.
      :type error: ~azure.mgmt.monitor.v2019_10_17.models.ErrorResponse
      """
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'name': {'key': 'name', 'type': 'str'},
          'start_time': {'key': 'startTime', 'type': 'iso-8601'},
          'end_time': {'key': 'endTime', 'type': 'iso-8601'},
          'status': {'key': 'status', 'type': 'str'},
          'error': {'key': 'error', 'type': 'ErrorResponse'},
      }
  
      def __init__(self, *, id: str=None, name: str=None, start_time=None, end_time=None, status: str=None, error=None, **kwargs) -> None:
          super(OperationStatus, self).__init__(**kwargs)
          self.id = id
          self.name = name
          self.start_time = start_time
          self.end_time = end_time
          self.status = status
          self.error = error
  
  
  class ProxyResource(Model):
      """Common properties of proxy resource.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      :ivar id: Resource ID.
      :vartype id: str
      :ivar name: Resource name.
      :vartype name: str
      :ivar type: Resource type.
      :vartype type: str
      :param tags: Resource tags
      :type tags: dict[str, str]
      """
  
      _validation = {
          'id': {'readonly': True},
          'name': {'readonly': True},
          'type': {'readonly': True},
      }
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'name': {'key': 'name', 'type': 'str'},
          'type': {'key': 'type', 'type': 'str'},
          'tags': {'key': 'tags', 'type': '{str}'},
      }
  
      def __init__(self, *, tags=None, **kwargs) -> None:
          super(ProxyResource, self).__init__(**kwargs)
          self.id = None
          self.name = None
          self.type = None
          self.tags = tags
  
  
  class PrivateEndpointConnection(ProxyResource):
      """A private endpoint connection.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      :ivar id: Resource ID.
      :vartype id: str
      :ivar name: Resource name.
      :vartype name: str
      :ivar type: Resource type.
      :vartype type: str
      :param tags: Resource tags
      :type tags: dict[str, str]
      :param private_endpoint: Private endpoint which the connection belongs to.
      :type private_endpoint:
       ~azure.mgmt.monitor.v2019_10_17.models.PrivateEndpointProperty
      :param private_link_service_connection_state: Connection state of the
       private endpoint connection.
      :type private_link_service_connection_state:
       ~azure.mgmt.monitor.v2019_10_17.models.PrivateLinkServiceConnectionStateProperty
      :ivar provisioning_state: State of the private endpoint connection.
      :vartype provisioning_state: str
      """
  
      _validation = {
          'id': {'readonly': True},
          'name': {'readonly': True},
          'type': {'readonly': True},
          'provisioning_state': {'readonly': True},
      }
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'name': {'key': 'name', 'type': 'str'},
          'type': {'key': 'type', 'type': 'str'},
          'tags': {'key': 'tags', 'type': '{str}'},
          'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpointProperty'},
          'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionStateProperty'},
          'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
      }
  
      def __init__(self, *, tags=None, private_endpoint=None, private_link_service_connection_state=None, **kwargs) -> None:
          super(PrivateEndpointConnection, self).__init__(tags=tags, **kwargs)
          self.private_endpoint = private_endpoint
          self.private_link_service_connection_state = private_link_service_connection_state
          self.provisioning_state = None
  
  
  class PrivateEndpointProperty(Model):
      """Private endpoint which the connection belongs to.
  
      :param id: Resource id of the private endpoint.
      :type id: str
      """
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
      }
  
      def __init__(self, *, id: str=None, **kwargs) -> None:
          super(PrivateEndpointProperty, self).__init__(**kwargs)
          self.id = id
  
  
  class PrivateLinkResource(ProxyResource):
      """A private link resource.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      :ivar id: Resource ID.
      :vartype id: str
      :ivar name: Resource name.
      :vartype name: str
      :ivar type: Resource type.
      :vartype type: str
      :param tags: Resource tags
      :type tags: dict[str, str]
      :ivar group_id: The private link resource group id.
      :vartype group_id: str
      :ivar required_members: The private link resource required member names.
      :vartype required_members: list[str]
      """
  
      _validation = {
          'id': {'readonly': True},
          'name': {'readonly': True},
          'type': {'readonly': True},
          'group_id': {'readonly': True},
          'required_members': {'readonly': True},
      }
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'name': {'key': 'name', 'type': 'str'},
          'type': {'key': 'type', 'type': 'str'},
          'tags': {'key': 'tags', 'type': '{str}'},
          'group_id': {'key': 'properties.groupId', 'type': 'str'},
          'required_members': {'key': 'properties.requiredMembers', 'type': '[str]'},
      }
  
      def __init__(self, *, tags=None, **kwargs) -> None:
          super(PrivateLinkResource, self).__init__(tags=tags, **kwargs)
          self.group_id = None
          self.required_members = None
  
  
  class PrivateLinkServiceConnectionStateProperty(Model):
      """State of the private endpoint connection.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      All required parameters must be populated in order to send to Azure.
  
      :param status: Required. The private link service connection status.
      :type status: str
      :param description: Required. The private link service connection
       description.
      :type description: str
      :ivar actions_required: The actions required for private link service
       connection.
      :vartype actions_required: str
      """
  
      _validation = {
          'status': {'required': True},
          'description': {'required': True},
          'actions_required': {'readonly': True},
      }
  
      _attribute_map = {
          'status': {'key': 'status', 'type': 'str'},
          'description': {'key': 'description', 'type': 'str'},
          'actions_required': {'key': 'actionsRequired', 'type': 'str'},
      }
  
      def __init__(self, *, status: str, description: str, **kwargs) -> None:
          super(PrivateLinkServiceConnectionStateProperty, self).__init__(**kwargs)
          self.status = status
          self.description = description
          self.actions_required = None
  
  
  class ScopedResource(ProxyResource):
      """A private link scoped resource.
  
      Variables are only populated by the server, and will be ignored when
      sending a request.
  
      :ivar id: Resource ID.
      :vartype id: str
      :ivar name: Resource name.
      :vartype name: str
      :ivar type: Resource type.
      :vartype type: str
      :param tags: Resource tags
      :type tags: dict[str, str]
      :param linked_resource_id: The resource id of the scoped Azure monitor
       resource.
      :type linked_resource_id: str
      :ivar provisioning_state: State of the private endpoint connection.
      :vartype provisioning_state: str
      """
  
      _validation = {
          'id': {'readonly': True},
          'name': {'readonly': True},
          'type': {'readonly': True},
          'provisioning_state': {'readonly': True},
      }
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'name': {'key': 'name', 'type': 'str'},
          'type': {'key': 'type', 'type': 'str'},
          'tags': {'key': 'tags', 'type': '{str}'},
          'linked_resource_id': {'key': 'properties.linkedResourceId', 'type': 'str'},
          'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
      }
  
      def __init__(self, *, tags=None, linked_resource_id: str=None, **kwargs) -> None:
          super(ScopedResource, self).__init__(tags=tags, **kwargs)
          self.linked_resource_id = linked_resource_id
          self.provisioning_state = None
  
  
  class TagsResource(Model):
      """A container holding only the Tags for a resource, allowing the user to
      update the tags on a PrivateLinkScope instance.
  
      :param tags: Resource tags
      :type tags: dict[str, str]
      """
  
      _attribute_map = {
          'tags': {'key': 'tags', 'type': '{str}'},
      }
  
      def __init__(self, *, tags=None, **kwargs) -> None:
          super(TagsResource, self).__init__(**kwargs)
          self.tags = tags
  