// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

import "github.com/Azure/azure-service-operator/v2/pkg/genruntime"

type Workspace_Spec struct {
	// Etag: The etag of the workspace.
	Etag *string `json:"etag,omitempty"`

	// Location: The geo-location where the resource lives
	Location *string `json:"location,omitempty"`
	Name     string  `json:"name,omitempty"`

	// Properties: Workspace properties.
	Properties *WorkspaceProperties `json:"properties,omitempty"`

	// Tags: Resource tags.
	Tags map[string]string `json:"tags,omitempty"`
}

var _ genruntime.ARMResourceSpec = &Workspace_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2021-06-01"
func (workspace Workspace_Spec) GetAPIVersion() string {
	return "2021-06-01"
}

// GetName returns the Name of the resource
func (workspace *Workspace_Spec) GetName() string {
	return workspace.Name
}

// GetType returns the ARM Type of the resource. This is always "Microsoft.OperationalInsights/workspaces"
func (workspace *Workspace_Spec) GetType() string {
	return "Microsoft.OperationalInsights/workspaces"
}

// Workspace properties.
type WorkspaceProperties struct {
	// Features: Workspace features.
	Features *WorkspaceFeatures `json:"features,omitempty"`

	// ForceCmkForQuery: Indicates whether customer managed storage is mandatory for query management.
	ForceCmkForQuery *bool `json:"forceCmkForQuery,omitempty"`

	// ProvisioningState: The provisioning state of the workspace.
	ProvisioningState *WorkspaceProperties_ProvisioningState `json:"provisioningState,omitempty"`

	// PublicNetworkAccessForIngestion: The network access type for accessing Log Analytics ingestion.
	PublicNetworkAccessForIngestion *PublicNetworkAccessType `json:"publicNetworkAccessForIngestion,omitempty"`

	// PublicNetworkAccessForQuery: The network access type for accessing Log Analytics query.
	PublicNetworkAccessForQuery *PublicNetworkAccessType `json:"publicNetworkAccessForQuery,omitempty"`

	// RetentionInDays: The workspace data retention in days. Allowed values are per pricing plan. See pricing tiers
	// documentation for details.
	RetentionInDays *int `json:"retentionInDays,omitempty"`

	// Sku: The SKU of the workspace.
	Sku *WorkspaceSku `json:"sku,omitempty"`

	// WorkspaceCapping: The daily volume cap for ingestion.
	WorkspaceCapping *WorkspaceCapping `json:"workspaceCapping,omitempty"`
}

// The network access type for operating on the Log Analytics Workspace. By default it is Enabled
// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type PublicNetworkAccessType string

const (
	PublicNetworkAccessType_Disabled = PublicNetworkAccessType("Disabled")
	PublicNetworkAccessType_Enabled  = PublicNetworkAccessType("Enabled")
)

// Mapping from string to PublicNetworkAccessType
var publicNetworkAccessType_Values = map[string]PublicNetworkAccessType{
	"disabled": PublicNetworkAccessType_Disabled,
	"enabled":  PublicNetworkAccessType_Enabled,
}

// The daily volume cap for ingestion.
type WorkspaceCapping struct {
	// DailyQuotaGb: The workspace daily quota for ingestion.
	DailyQuotaGb *float64 `json:"dailyQuotaGb,omitempty"`
}

// Workspace features.
type WorkspaceFeatures struct {
	// ClusterResourceId: Dedicated LA cluster resourceId that is linked to the workspaces.
	ClusterResourceId *string `json:"clusterResourceId,omitempty"`

	// DisableLocalAuth: Disable Non-AAD based Auth.
	DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"`

	// EnableDataExport: Flag that indicate if data should be exported.
	EnableDataExport *bool `json:"enableDataExport,omitempty"`

	// EnableLogAccessUsingOnlyResourcePermissions: Flag that indicate which permission to use - resource or workspace or both.
	EnableLogAccessUsingOnlyResourcePermissions *bool `json:"enableLogAccessUsingOnlyResourcePermissions,omitempty"`

	// ImmediatePurgeDataOn30Days: Flag that describes if we want to remove the data after 30 days.
	ImmediatePurgeDataOn30Days *bool `json:"immediatePurgeDataOn30Days,omitempty"`
}

// +kubebuilder:validation:Enum={"Canceled","Creating","Deleting","Failed","ProvisioningAccount","Succeeded","Updating"}
type WorkspaceProperties_ProvisioningState string

const (
	WorkspaceProperties_ProvisioningState_Canceled            = WorkspaceProperties_ProvisioningState("Canceled")
	WorkspaceProperties_ProvisioningState_Creating            = WorkspaceProperties_ProvisioningState("Creating")
	WorkspaceProperties_ProvisioningState_Deleting            = WorkspaceProperties_ProvisioningState("Deleting")
	WorkspaceProperties_ProvisioningState_Failed              = WorkspaceProperties_ProvisioningState("Failed")
	WorkspaceProperties_ProvisioningState_ProvisioningAccount = WorkspaceProperties_ProvisioningState("ProvisioningAccount")
	WorkspaceProperties_ProvisioningState_Succeeded           = WorkspaceProperties_ProvisioningState("Succeeded")
	WorkspaceProperties_ProvisioningState_Updating            = WorkspaceProperties_ProvisioningState("Updating")
)

// Mapping from string to WorkspaceProperties_ProvisioningState
var workspaceProperties_ProvisioningState_Values = map[string]WorkspaceProperties_ProvisioningState{
	"canceled":            WorkspaceProperties_ProvisioningState_Canceled,
	"creating":            WorkspaceProperties_ProvisioningState_Creating,
	"deleting":            WorkspaceProperties_ProvisioningState_Deleting,
	"failed":              WorkspaceProperties_ProvisioningState_Failed,
	"provisioningaccount": WorkspaceProperties_ProvisioningState_ProvisioningAccount,
	"succeeded":           WorkspaceProperties_ProvisioningState_Succeeded,
	"updating":            WorkspaceProperties_ProvisioningState_Updating,
}

// The SKU (tier) of a workspace.
type WorkspaceSku struct {
	// CapacityReservationLevel: The capacity reservation level in GB for this workspace, when CapacityReservation sku is
	// selected.
	CapacityReservationLevel *WorkspaceSku_CapacityReservationLevel `json:"capacityReservationLevel,omitempty"`

	// Name: The name of the SKU.
	Name *WorkspaceSku_Name `json:"name,omitempty"`
}

// +kubebuilder:validation:Enum={100,200,300,400,500,1000,2000,5000}
type WorkspaceSku_CapacityReservationLevel int

const (
	WorkspaceSku_CapacityReservationLevel_100  = WorkspaceSku_CapacityReservationLevel(100)
	WorkspaceSku_CapacityReservationLevel_200  = WorkspaceSku_CapacityReservationLevel(200)
	WorkspaceSku_CapacityReservationLevel_300  = WorkspaceSku_CapacityReservationLevel(300)
	WorkspaceSku_CapacityReservationLevel_400  = WorkspaceSku_CapacityReservationLevel(400)
	WorkspaceSku_CapacityReservationLevel_500  = WorkspaceSku_CapacityReservationLevel(500)
	WorkspaceSku_CapacityReservationLevel_1000 = WorkspaceSku_CapacityReservationLevel(1000)
	WorkspaceSku_CapacityReservationLevel_2000 = WorkspaceSku_CapacityReservationLevel(2000)
	WorkspaceSku_CapacityReservationLevel_5000 = WorkspaceSku_CapacityReservationLevel(5000)
)

// +kubebuilder:validation:Enum={"CapacityReservation","Free","LACluster","PerGB2018","PerNode","Premium","Standalone","Standard"}
type WorkspaceSku_Name string

const (
	WorkspaceSku_Name_CapacityReservation = WorkspaceSku_Name("CapacityReservation")
	WorkspaceSku_Name_Free                = WorkspaceSku_Name("Free")
	WorkspaceSku_Name_LACluster           = WorkspaceSku_Name("LACluster")
	WorkspaceSku_Name_PerGB2018           = WorkspaceSku_Name("PerGB2018")
	WorkspaceSku_Name_PerNode             = WorkspaceSku_Name("PerNode")
	WorkspaceSku_Name_Premium             = WorkspaceSku_Name("Premium")
	WorkspaceSku_Name_Standalone          = WorkspaceSku_Name("Standalone")
	WorkspaceSku_Name_Standard            = WorkspaceSku_Name("Standard")
)

// Mapping from string to WorkspaceSku_Name
var workspaceSku_Name_Values = map[string]WorkspaceSku_Name{
	"capacityreservation": WorkspaceSku_Name_CapacityReservation,
	"free":                WorkspaceSku_Name_Free,
	"lacluster":           WorkspaceSku_Name_LACluster,
	"pergb2018":           WorkspaceSku_Name_PerGB2018,
	"pernode":             WorkspaceSku_Name_PerNode,
	"premium":             WorkspaceSku_Name_Premium,
	"standalone":          WorkspaceSku_Name_Standalone,
	"standard":            WorkspaceSku_Name_Standard,
}
