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.pipeline import ClientRawResponse
  
  from .. import models
  
  
  class MeshApplicationOperations(object):
      """MeshApplicationOperations operations.
  
      You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
  
      :param client: Client for service requests.
      :param config: Configuration of service client.
      :param serializer: An object model serializer.
      :param deserializer: An object model deserializer.
      """
  
      models = models
  
      def __init__(self, client, config, serializer, deserializer):
  
          self._client = client
          self._serialize = serializer
          self._deserialize = deserializer
  
          self.config = config
  
      def create_or_update(
              self, application_resource_name, application_resource_description, custom_headers=None, raw=False, **operation_config):
          """Creates or updates a Application resource.
  
          Creates a Application resource with the specified name, description and
          properties. If Application resource with the same name exists, then it
          is updated with the specified description and properties.
  
          :param application_resource_name: The identity of the application.
          :type application_resource_name: str
          :param application_resource_description: Description for creating a
           Application resource.
          :type application_resource_description:
           ~azure.servicefabric.models.ApplicationResourceDescription
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: ApplicationResourceDescription or ClientRawResponse if
           raw=true
          :rtype: ~azure.servicefabric.models.ApplicationResourceDescription or
           ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`
          """
          api_version = "6.4-preview"
  
          # Construct URL
          url = self.create_or_update.metadata['url']
          path_format_arguments = {
              'applicationResourceName': self._serialize.url("application_resource_name", application_resource_name, 'str', skip_quote=True)
          }
          url = self._client.format_url(url, **path_format_arguments)
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          header_parameters['Accept'] = 'application/json'
          header_parameters['Content-Type'] = 'application/json; charset=utf-8'
          if custom_headers:
              header_parameters.update(custom_headers)
  
          # Construct body
          body_content = self._serialize.body(application_resource_description, 'ApplicationResourceDescription')
  
          # Construct and send request
          request = self._client.put(url, query_parameters, header_parameters, body_content)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200, 201, 202]:
              raise models.FabricErrorException(self._deserialize, response)
  
          deserialized = None
          if response.status_code == 200:
              deserialized = self._deserialize('ApplicationResourceDescription', response)
          if response.status_code == 201:
              deserialized = self._deserialize('ApplicationResourceDescription', response)
  
          if raw:
              client_raw_response = ClientRawResponse(deserialized, response)
              return client_raw_response
  
          return deserialized
      create_or_update.metadata = {'url': '/Resources/Applications/{applicationResourceName}'}
  
      def get(
              self, application_resource_name, custom_headers=None, raw=False, **operation_config):
          """Gets the Application resource with the given name.
  
          Gets the information about the Application resource with the given
          name. The information include the description and other properties of
          the Application.
  
          :param application_resource_name: The identity of the application.
          :type application_resource_name: str
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: ApplicationResourceDescription or ClientRawResponse if
           raw=true
          :rtype: ~azure.servicefabric.models.ApplicationResourceDescription or
           ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`
          """
          api_version = "6.4-preview"
  
          # Construct URL
          url = self.get.metadata['url']
          path_format_arguments = {
              'applicationResourceName': self._serialize.url("application_resource_name", application_resource_name, 'str', skip_quote=True)
          }
          url = self._client.format_url(url, **path_format_arguments)
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          header_parameters['Accept'] = 'application/json'
          if custom_headers:
              header_parameters.update(custom_headers)
  
          # Construct and send request
          request = self._client.get(url, query_parameters, header_parameters)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200]:
              raise models.FabricErrorException(self._deserialize, response)
  
          deserialized = None
          if response.status_code == 200:
              deserialized = self._deserialize('ApplicationResourceDescription', response)
  
          if raw:
              client_raw_response = ClientRawResponse(deserialized, response)
              return client_raw_response
  
          return deserialized
      get.metadata = {'url': '/Resources/Applications/{applicationResourceName}'}
  
      def delete(
              self, application_resource_name, custom_headers=None, raw=False, **operation_config):
          """Deletes the Application resource.
  
          Deletes the Application resource identified by the name.
  
          :param application_resource_name: The identity of the application.
          :type application_resource_name: str
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: None or ClientRawResponse if raw=true
          :rtype: None or ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`
          """
          api_version = "6.4-preview"
  
          # Construct URL
          url = self.delete.metadata['url']
          path_format_arguments = {
              'applicationResourceName': self._serialize.url("application_resource_name", application_resource_name, 'str', skip_quote=True)
          }
          url = self._client.format_url(url, **path_format_arguments)
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          if custom_headers:
              header_parameters.update(custom_headers)
  
          # Construct and send request
          request = self._client.delete(url, query_parameters, header_parameters)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200, 202, 204]:
              raise models.FabricErrorException(self._deserialize, response)
  
          if raw:
              client_raw_response = ClientRawResponse(None, response)
              return client_raw_response
      delete.metadata = {'url': '/Resources/Applications/{applicationResourceName}'}
  
      def list(
              self, custom_headers=None, raw=False, **operation_config):
          """Lists all the application resources.
  
          Gets the information about all application resources in a given
          resource group. The information include the description and other
          properties of the Application.
  
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: PagedApplicationResourceDescriptionList or ClientRawResponse
           if raw=true
          :rtype:
           ~azure.servicefabric.models.PagedApplicationResourceDescriptionList or
           ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`
          """
          api_version = "6.4-preview"
  
          # Construct URL
          url = self.list.metadata['url']
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          header_parameters['Accept'] = 'application/json'
          if custom_headers:
              header_parameters.update(custom_headers)
  
          # Construct and send request
          request = self._client.get(url, query_parameters, header_parameters)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200]:
              raise models.FabricErrorException(self._deserialize, response)
  
          deserialized = None
          if response.status_code == 200:
              deserialized = self._deserialize('PagedApplicationResourceDescriptionList', response)
  
          if raw:
              client_raw_response = ClientRawResponse(deserialized, response)
              return client_raw_response
  
          return deserialized
      list.metadata = {'url': '/Resources/Applications'}
  
      def get_upgrade_progress(
              self, application_resource_name, custom_headers=None, raw=False, **operation_config):
          """Gets the progress of the latest upgrade performed on this application
          resource.
  
          Gets the upgrade progress information about the Application resource
          with the given name. The information include percentage of completion
          and other upgrade state information of the Application resource.
  
          :param application_resource_name: The identity of the application.
          :type application_resource_name: str
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: ApplicationResourceUpgradeProgressInfo or ClientRawResponse
           if raw=true
          :rtype:
           ~azure.servicefabric.models.ApplicationResourceUpgradeProgressInfo or
           ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`
          """
          api_version = "7.0"
  
          # Construct URL
          url = self.get_upgrade_progress.metadata['url']
          path_format_arguments = {
              'applicationResourceName': self._serialize.url("application_resource_name", application_resource_name, 'str', skip_quote=True)
          }
          url = self._client.format_url(url, **path_format_arguments)
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          header_parameters['Accept'] = 'application/json'
          if custom_headers:
              header_parameters.update(custom_headers)
  
          # Construct and send request
          request = self._client.get(url, query_parameters, header_parameters)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200]:
              raise models.FabricErrorException(self._deserialize, response)
  
          deserialized = None
          if response.status_code == 200:
              deserialized = self._deserialize('ApplicationResourceUpgradeProgressInfo', response)
  
          if raw:
              client_raw_response = ClientRawResponse(deserialized, response)
              return client_raw_response
  
          return deserialized
      get_upgrade_progress.metadata = {'url': '/Resources/Applications/{applicationResourceName}/$/GetUpgradeProgress'}
  