// 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 Replica_Spec struct {
	// Location: The geo-location where the resource lives
	Location   *string            `json:"location,omitempty"`
	Name       string             `json:"name,omitempty"`
	Properties *ReplicaProperties `json:"properties,omitempty"`

	// Sku: The billing information of the resource.
	Sku *ResourceSku `json:"sku,omitempty"`

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

var _ genruntime.ARMResourceSpec = &Replica_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01"
func (replica Replica_Spec) GetAPIVersion() string {
	return "2024-03-01"
}

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

// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/replicas"
func (replica *Replica_Spec) GetType() string {
	return "Microsoft.SignalRService/signalR/replicas"
}

type ReplicaProperties struct {
	// RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled".
	// When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be
	// affected.
	RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"`

	// ResourceStopped: Stop or start the resource.  Default to "false".
	// When it's true, the data plane of the resource is shutdown.
	// When it's false, the data plane of the resource is started.
	ResourceStopped *string `json:"resourceStopped,omitempty"`
}

// The billing information of the resource.
type ResourceSku struct {
	// Capacity: Optional, integer. The unit count of the resource.
	// 1 for Free_F1/Standard_S1/Premium_P1, 100 for Premium_P2 by default.
	// If present, following values are allowed:
	// Free_F1: 1;
	// Standard_S1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100;
	// Premium_P1:  1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100;
	// Premium_P2:  100,200,300,400,500,600,700,800,900,1000;
	Capacity *int `json:"capacity,omitempty"`

	// Name: The name of the SKU. Required.
	// Allowed values: Standard_S1, Free_F1, Premium_P1, Premium_P2
	Name *string `json:"name,omitempty"`

	// Tier: Optional tier of this particular SKU. 'Standard' or 'Free'.
	// `Basic` is deprecated, use `Standard` instead.
	Tier *SignalRSkuTier `json:"tier,omitempty"`
}

// Optional tier of this particular SKU. 'Standard' or 'Free'.
// `Basic` is deprecated, use `Standard` instead.
// +kubebuilder:validation:Enum={"Basic","Free","Premium","Standard"}
type SignalRSkuTier string

const (
	SignalRSkuTier_Basic    = SignalRSkuTier("Basic")
	SignalRSkuTier_Free     = SignalRSkuTier("Free")
	SignalRSkuTier_Premium  = SignalRSkuTier("Premium")
	SignalRSkuTier_Standard = SignalRSkuTier("Standard")
)

// Mapping from string to SignalRSkuTier
var signalRSkuTier_Values = map[string]SignalRSkuTier{
	"basic":    SignalRSkuTier_Basic,
	"free":     SignalRSkuTier_Free,
	"premium":  SignalRSkuTier_Premium,
	"standard": SignalRSkuTier_Standard,
}
