# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.

module Azure::OperationalInsights::Mgmt::V2020_03_01_preview
  module Models
    #
    # The top level Workspace resource container.
    #
    class Workspace < TrackedResource

      include MsRestAzure

      # @return [WorkspaceEntityStatus] The provisioning state of the
      # workspace. Possible values include: 'Creating', 'Succeeded', 'Failed',
      # 'Canceled', 'Deleting', 'ProvisioningAccount', 'Updating'
      attr_accessor :provisioning_state

      # @return [String] This is a read-only property. Represents the ID
      # associated with the workspace.
      attr_accessor :customer_id

      # @return [WorkspaceSku] The SKU of the workspace.
      attr_accessor :sku

      # @return [Integer] The workspace data retention in days. -1 means
      # Unlimited retention for the Unlimited Sku. 730 days is the maximum
      # allowed for all other Skus.
      attr_accessor :retention_in_days

      # @return [WorkspaceCapping] The daily volume cap for ingestion.
      attr_accessor :workspace_capping

      # @return [PublicNetworkAccessType] The network access type for accessing
      # Log Analytics ingestion. Possible values include: 'Enabled',
      # 'Disabled'. Default value: 'Enabled' .
      attr_accessor :public_network_access_for_ingestion

      # @return [PublicNetworkAccessType] The network access type for accessing
      # Log Analytics query. Possible values include: 'Enabled', 'Disabled'.
      # Default value: 'Enabled' .
      attr_accessor :public_network_access_for_query

      # @return [Array<PrivateLinkScopedResource>] List of linked private link
      # scope resources.
      attr_accessor :private_link_scoped_resources

      # @return [String] The ETag of the workspace.
      attr_accessor :e_tag


      #
      # Mapper for Workspace class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'Workspace',
          type: {
            name: 'Composite',
            class_name: 'Workspace',
            model_properties: {
              id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'id',
                type: {
                  name: 'String'
                }
              },
              name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'name',
                type: {
                  name: 'String'
                }
              },
              type: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'type',
                type: {
                  name: 'String'
                }
              },
              tags: {
                client_side_validation: true,
                required: false,
                serialized_name: 'tags',
                type: {
                  name: 'Dictionary',
                  value: {
                      client_side_validation: true,
                      required: false,
                      serialized_name: 'StringElementType',
                      type: {
                        name: 'String'
                      }
                  }
                }
              },
              location: {
                client_side_validation: true,
                required: true,
                serialized_name: 'location',
                type: {
                  name: 'String'
                }
              },
              provisioning_state: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.provisioningState',
                type: {
                  name: 'String'
                }
              },
              customer_id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.customerId',
                type: {
                  name: 'String'
                }
              },
              sku: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.sku',
                type: {
                  name: 'Composite',
                  class_name: 'WorkspaceSku'
                }
              },
              retention_in_days: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.retentionInDays',
                constraints: {
                  InclusiveMaximum: 730,
                  InclusiveMinimum: -1
                },
                type: {
                  name: 'Number'
                }
              },
              workspace_capping: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.workspaceCapping',
                type: {
                  name: 'Composite',
                  class_name: 'WorkspaceCapping'
                }
              },
              public_network_access_for_ingestion: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.publicNetworkAccessForIngestion',
                default_value: 'Enabled',
                type: {
                  name: 'String'
                }
              },
              public_network_access_for_query: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.publicNetworkAccessForQuery',
                default_value: 'Enabled',
                type: {
                  name: 'String'
                }
              },
              private_link_scoped_resources: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.privateLinkScopedResources',
                type: {
                  name: 'Sequence',
                  element: {
                      client_side_validation: true,
                      required: false,
                      serialized_name: 'PrivateLinkScopedResourceElementType',
                      type: {
                        name: 'Composite',
                        class_name: 'PrivateLinkScopedResource'
                      }
                  }
                }
              },
              e_tag: {
                client_side_validation: true,
                required: false,
                serialized_name: 'eTag',
                type: {
                  name: 'String'
                }
              }
            }
          }
        }
      end
    end
  end
end
