// 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 Deployment_Spec struct {
	Name string `json:"name,omitempty"`

	// Properties: Properties of Cognitive Services account deployment.
	Properties *DeploymentProperties `json:"properties,omitempty"`

	// Sku: The resource model definition representing SKU
	Sku *Sku `json:"sku,omitempty"`

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

var _ genruntime.ARMResourceSpec = &Deployment_Spec{}

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

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

// GetType returns the ARM Type of the resource. This is always "Microsoft.CognitiveServices/accounts/deployments"
func (deployment *Deployment_Spec) GetType() string {
	return "Microsoft.CognitiveServices/accounts/deployments"
}

// Properties of Cognitive Services account deployment.
type DeploymentProperties struct {
	// CapacitySettings: Internal use only.
	CapacitySettings *DeploymentCapacitySettings `json:"capacitySettings,omitempty"`

	// Model: Properties of Cognitive Services account deployment model.
	Model *DeploymentModel `json:"model,omitempty"`

	// ParentDeploymentName: The name of parent deployment.
	ParentDeploymentName *string `json:"parentDeploymentName,omitempty"`

	// RaiPolicyName: The name of RAI policy.
	RaiPolicyName *string `json:"raiPolicyName,omitempty"`

	// ScaleSettings: Properties of Cognitive Services account deployment model. (Deprecated, please use Deployment.sku
	// instead.)
	ScaleSettings *DeploymentScaleSettings `json:"scaleSettings,omitempty"`

	// SpilloverDeploymentName: Specifies the deployment name that should serve requests when the request would have otherwise
	// been throttled due to reaching current deployment throughput limit.
	SpilloverDeploymentName *string `json:"spilloverDeploymentName,omitempty"`

	// VersionUpgradeOption: Deployment model version upgrade option.
	VersionUpgradeOption *DeploymentProperties_VersionUpgradeOption `json:"versionUpgradeOption,omitempty"`
}

// Internal use only.
type DeploymentCapacitySettings struct {
	// DesignatedCapacity: The designated capacity.
	DesignatedCapacity *int `json:"designatedCapacity,omitempty"`

	// Priority: The priority of this capacity setting.
	Priority *int `json:"priority,omitempty"`
}

// Properties of Cognitive Services account deployment model.
type DeploymentModel struct {
	// Format: Deployment model format.
	Format *string `json:"format,omitempty" optionalConfigMapPair:"Format"`

	// Name: Deployment model name.
	Name *string `json:"name,omitempty" optionalConfigMapPair:"Name"`

	// Publisher: Deployment model publisher.
	Publisher *string `json:"publisher,omitempty" optionalConfigMapPair:"Publisher"`

	// Source: Optional. Deployment model source ARM resource ID.
	Source *string `json:"source,omitempty"`

	// SourceAccount: Optional. Source of the model, another Microsoft.CognitiveServices accounts ARM resource ID.
	SourceAccount *string `json:"sourceAccount,omitempty"`

	// Version: Optional. Deployment model version. If version is not specified, a default version will be assigned. The
	// default version is different for different models and might change when there is new version available for a model.
	// Default version for a model could be found from list models API.
	Version *string `json:"version,omitempty" optionalConfigMapPair:"Version"`
}

// +kubebuilder:validation:Enum={"NoAutoUpgrade","OnceCurrentVersionExpired","OnceNewDefaultVersionAvailable"}
type DeploymentProperties_VersionUpgradeOption string

const (
	DeploymentProperties_VersionUpgradeOption_NoAutoUpgrade                  = DeploymentProperties_VersionUpgradeOption("NoAutoUpgrade")
	DeploymentProperties_VersionUpgradeOption_OnceCurrentVersionExpired      = DeploymentProperties_VersionUpgradeOption("OnceCurrentVersionExpired")
	DeploymentProperties_VersionUpgradeOption_OnceNewDefaultVersionAvailable = DeploymentProperties_VersionUpgradeOption("OnceNewDefaultVersionAvailable")
)

// Mapping from string to DeploymentProperties_VersionUpgradeOption
var deploymentProperties_VersionUpgradeOption_Values = map[string]DeploymentProperties_VersionUpgradeOption{
	"noautoupgrade":                  DeploymentProperties_VersionUpgradeOption_NoAutoUpgrade,
	"oncecurrentversionexpired":      DeploymentProperties_VersionUpgradeOption_OnceCurrentVersionExpired,
	"oncenewdefaultversionavailable": DeploymentProperties_VersionUpgradeOption_OnceNewDefaultVersionAvailable,
}

// Properties of Cognitive Services account deployment model. (Deprecated, please use Deployment.sku instead.)
type DeploymentScaleSettings struct {
	// Capacity: Deployment capacity.
	Capacity *int `json:"capacity,omitempty"`

	// ScaleType: Deployment scale type.
	ScaleType *DeploymentScaleSettings_ScaleType `json:"scaleType,omitempty"`
}

// +kubebuilder:validation:Enum={"Manual","Standard"}
type DeploymentScaleSettings_ScaleType string

const (
	DeploymentScaleSettings_ScaleType_Manual   = DeploymentScaleSettings_ScaleType("Manual")
	DeploymentScaleSettings_ScaleType_Standard = DeploymentScaleSettings_ScaleType("Standard")
)

// Mapping from string to DeploymentScaleSettings_ScaleType
var deploymentScaleSettings_ScaleType_Values = map[string]DeploymentScaleSettings_ScaleType{
	"manual":   DeploymentScaleSettings_ScaleType_Manual,
	"standard": DeploymentScaleSettings_ScaleType_Standard,
}
