// 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) Go Code Generator. DO NOT EDIT.

package armstandbypool

import "time"

// ContainerGroupInstanceCountSummary - Displays the counts of container groups in each state, as known by the StandbyPool
// resource provider.
type ContainerGroupInstanceCountSummary struct {
	// REQUIRED; The count of pooled container groups in each state for the given zone.
	InstanceCountsByState []*PoolContainerGroupStateCount

	// The zone that the provided counts are in. It will not have a value if zones are not enabled.
	Zone *int64
}

// ContainerGroupProfile - Details of the ContainerGroupProfile.
type ContainerGroupProfile struct {
	// REQUIRED; Specifies container group profile id of standby container groups.
	ID *string

	// Specifies revision of container group profile.
	Revision *int64
}

// ContainerGroupProperties - Details of the ContainerGroupProperties.
type ContainerGroupProperties struct {
	// REQUIRED; Specifies container group profile of standby container groups.
	ContainerGroupProfile *ContainerGroupProfile

	// Specifies subnet Ids for container group.
	SubnetIDs []*Subnet
}

// Operation - REST API Operation
//
// Details of a REST API operation, returned from the Resource Provider Operations API
type Operation struct {
	// Localized display information for this particular operation.
	Display *OperationDisplay

	// READ-ONLY; Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
	ActionType *ActionType

	// READ-ONLY; Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for Azure
	// Resource Manager/control-plane operations.
	IsDataAction *bool

	// READ-ONLY; The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write",
	// "Microsoft.Compute/virtualMachines/capture/action"
	Name *string

	// READ-ONLY; The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
	// value is "user,system"
	Origin *Origin
}

// OperationDisplay - Localized display information for and operation.
type OperationDisplay struct {
	// READ-ONLY; The short, localized friendly description of the operation; suitable for tool tips and detailed views.
	Description *string

	// READ-ONLY; The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual
	// Machine", "Restart Virtual Machine".
	Operation *string

	// READ-ONLY; The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft
	// Compute".
	Provider *string

	// READ-ONLY; The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job
	// Schedule Collections".
	Resource *string
}

// OperationListResult - A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to
// get the next set of results.
type OperationListResult struct {
	// REQUIRED; The Operation items on this page
	Value []*Operation

	// The link to the next page of items
	NextLink *string
}

// PoolContainerGroupStateCount - Displays the counts of pooled container groups in each state, as known by the StandbyPool
// resource provider.
type PoolContainerGroupStateCount struct {
	// REQUIRED; The count of pooled container groups in the given state.
	Count *int64

	// REQUIRED; The state that the pooled container groups count is for.
	State *PoolContainerGroupState
}

// PoolStatus - Displays StandbyPool status.
type PoolStatus struct {
	// READ-ONLY; Displays the healthy state of the StandbyPool.
	Code *HealthStateCode

	// READ-ONLY; Displays the StandbyPool health state details.
	Message *string
}

// PoolVirtualMachineStateCount - Displays the counts of pooled virtual machines in each state, as known by the StandbyPool
// resource provider.
type PoolVirtualMachineStateCount struct {
	// REQUIRED; The count of pooled virtual machines in the given state.
	Count *int64

	// REQUIRED; The state that the pooled virtual machines count is for.
	State *PoolVirtualMachineState
}

// StandbyContainerGroupPoolElasticityProfile - Specifies the elasticity profile of the standby container group pools.
type StandbyContainerGroupPoolElasticityProfile struct {
	// REQUIRED; Specifies maximum number of standby container groups in the standby pool.
	MaxReadyCapacity *int64

	// Specifies refill policy of the pool.
	RefillPolicy *RefillPolicy
}

// StandbyContainerGroupPoolForecastValues - Displays the forecast information of the standby pool.
type StandbyContainerGroupPoolForecastValues struct {
	// READ-ONLY; Displays the predicted count of instances to be requested from the standby pool.
	InstancesRequestedCount []*int64
}

// StandbyContainerGroupPoolPrediction - Displays prediction information of the standby pool.
type StandbyContainerGroupPoolPrediction struct {
	// READ-ONLY; Displays additional information for the prediction of the standby pool.
	ForecastInfo *string

	// READ-ONLY; Displays the UTC timestamp of when the prediction was retrieved for the standby pool.
	ForecastStartTime *time.Time

	// READ-ONLY; Displays the forecast information of the standby pool.
	ForecastValues *StandbyContainerGroupPoolForecastValues
}

// StandbyContainerGroupPoolResource - A StandbyContainerGroupPoolResource.
type StandbyContainerGroupPoolResource struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties *StandbyContainerGroupPoolResourceProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// StandbyContainerGroupPoolResourceListResult - The response of a StandbyContainerGroupPoolResource list operation.
type StandbyContainerGroupPoolResourceListResult struct {
	// REQUIRED; The StandbyContainerGroupPoolResource items on this page
	Value []*StandbyContainerGroupPoolResource

	// The link to the next page of items
	NextLink *string
}

// StandbyContainerGroupPoolResourceProperties - Details of the StandbyContainerGroupPool.
type StandbyContainerGroupPoolResourceProperties struct {
	// REQUIRED; Specifies container group properties of standby container group pools.
	ContainerGroupProperties *ContainerGroupProperties

	// REQUIRED; Specifies elasticity profile of standby container group pools.
	ElasticityProfile *StandbyContainerGroupPoolElasticityProfile

	// Specifies zones of standby container group pools.
	Zones []*string

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// StandbyContainerGroupPoolResourceUpdate - The type used for update operations of the StandbyContainerGroupPoolResource.
type StandbyContainerGroupPoolResourceUpdate struct {
	// The resource-specific properties for this resource.
	Properties *StandbyContainerGroupPoolResourceUpdateProperties

	// Resource tags.
	Tags map[string]*string
}

// StandbyContainerGroupPoolResourceUpdateProperties - The updatable properties of the StandbyContainerGroupPoolResource.
type StandbyContainerGroupPoolResourceUpdateProperties struct {
	// Specifies container group properties of standby container group pools.
	ContainerGroupProperties *ContainerGroupProperties

	// Specifies elasticity profile of standby container group pools.
	ElasticityProfile *StandbyContainerGroupPoolElasticityProfile

	// Specifies zones of standby container group pools.
	Zones []*string
}

// StandbyContainerGroupPoolRuntimeViewResource - Contains information about a standby container group pool as last known
// by the StandbyPool resource provider.
type StandbyContainerGroupPoolRuntimeViewResource struct {
	// The resource-specific properties for this resource.
	Properties *StandbyContainerGroupPoolRuntimeViewResourceProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// StandbyContainerGroupPoolRuntimeViewResourceListResult - The response of a StandbyContainerGroupPoolRuntimeViewResource
// list operation.
type StandbyContainerGroupPoolRuntimeViewResourceListResult struct {
	// REQUIRED; The StandbyContainerGroupPoolRuntimeViewResource items on this page
	Value []*StandbyContainerGroupPoolRuntimeViewResource

	// The link to the next page of items
	NextLink *string
}

// StandbyContainerGroupPoolRuntimeViewResourceProperties - Contains information about a standby pool as last known by the
// StandbyPool resource provider.
type StandbyContainerGroupPoolRuntimeViewResourceProperties struct {
	// READ-ONLY; A list containing the counts of container groups in each possible state, as known by the StandbyPool resource
	// provider.
	InstanceCountSummary []*ContainerGroupInstanceCountSummary

	// READ-ONLY; Displays prediction information of the standby pool
	Prediction *StandbyContainerGroupPoolPrediction

	// READ-ONLY; Displays the provisioning state of the standby pool
	ProvisioningState *ProvisioningState

	// READ-ONLY; Display status of the standby pool
	Status *PoolStatus
}

// StandbyVirtualMachinePoolElasticityProfile - Details of the elasticity profile.
type StandbyVirtualMachinePoolElasticityProfile struct {
	// REQUIRED; Specifies the maximum number of virtual machines in the standby virtual machine pool.
	MaxReadyCapacity *int64

	// Specifies the desired minimum number of virtual machines in the standby virtual machine pool. MinReadyCapacity cannot exceed
	// MaxReadyCapacity.
	MinReadyCapacity *int64
}

// StandbyVirtualMachinePoolForecastValues - Displays the forecast information of the standby pool.
type StandbyVirtualMachinePoolForecastValues struct {
	// READ-ONLY; Displays the predicted count of instances to be requested from the standby pool.
	InstancesRequestedCount []*int64
}

// StandbyVirtualMachinePoolPrediction - Displays prediction information of the standby pool.
type StandbyVirtualMachinePoolPrediction struct {
	// READ-ONLY; Displays additional information for the prediction of the standby pool.
	ForecastInfo *string

	// READ-ONLY; Displays the UTC timestamp of when the prediction was retrieved for the standby pool.
	ForecastStartTime *time.Time

	// READ-ONLY; Displays the forecast information of the standby pool.
	ForecastValues *StandbyVirtualMachinePoolForecastValues
}

// StandbyVirtualMachinePoolResource - A StandbyVirtualMachinePoolResource.
type StandbyVirtualMachinePoolResource struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties *StandbyVirtualMachinePoolResourceProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// StandbyVirtualMachinePoolResourceListResult - The response of a StandbyVirtualMachinePoolResource list operation.
type StandbyVirtualMachinePoolResourceListResult struct {
	// REQUIRED; The StandbyVirtualMachinePoolResource items on this page
	Value []*StandbyVirtualMachinePoolResource

	// The link to the next page of items
	NextLink *string
}

// StandbyVirtualMachinePoolResourceProperties - Details of the StandbyVirtualMachinePool.
type StandbyVirtualMachinePoolResourceProperties struct {
	// REQUIRED; Specifies the desired state of virtual machines in the pool.
	VirtualMachineState *VirtualMachineState

	// Specifies the fully qualified resource ID of a virtual machine scale set the pool is attached to.
	AttachedVirtualMachineScaleSetID *string

	// Specifies the elasticity profile of the standby virtual machine pools.
	ElasticityProfile *StandbyVirtualMachinePoolElasticityProfile

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// StandbyVirtualMachinePoolResourceUpdate - The type used for update operations of the StandbyVirtualMachinePoolResource.
type StandbyVirtualMachinePoolResourceUpdate struct {
	// The resource-specific properties for this resource.
	Properties *StandbyVirtualMachinePoolResourceUpdateProperties

	// Resource tags.
	Tags map[string]*string
}

// StandbyVirtualMachinePoolResourceUpdateProperties - The updatable properties of the StandbyVirtualMachinePoolResource.
type StandbyVirtualMachinePoolResourceUpdateProperties struct {
	// Specifies the fully qualified resource ID of a virtual machine scale set the pool is attached to.
	AttachedVirtualMachineScaleSetID *string

	// Specifies the elasticity profile of the standby virtual machine pools.
	ElasticityProfile *StandbyVirtualMachinePoolElasticityProfile

	// Specifies the desired state of virtual machines in the pool.
	VirtualMachineState *VirtualMachineState
}

// StandbyVirtualMachinePoolRuntimeViewResource - Contains information about a standby virtual machine pool as last known
// by the StandbyPool resource provider.
type StandbyVirtualMachinePoolRuntimeViewResource struct {
	// The resource-specific properties for this resource.
	Properties *StandbyVirtualMachinePoolRuntimeViewResourceProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// StandbyVirtualMachinePoolRuntimeViewResourceListResult - The response of a StandbyVirtualMachinePoolRuntimeViewResource
// list operation.
type StandbyVirtualMachinePoolRuntimeViewResourceListResult struct {
	// REQUIRED; The StandbyVirtualMachinePoolRuntimeViewResource items on this page
	Value []*StandbyVirtualMachinePoolRuntimeViewResource

	// The link to the next page of items
	NextLink *string
}

// StandbyVirtualMachinePoolRuntimeViewResourceProperties - Contains information about a standby pool as last known by the
// StandbyPool resource provider.
type StandbyVirtualMachinePoolRuntimeViewResourceProperties struct {
	// READ-ONLY; A list containing the counts of virtual machines in each possible power state for each zone if enabled, as known
	// by the StandbyPool resource provider. If zones are not enabled on the attached VMSS, the list will contain a single entry
	// without zone values. Note: any resources in the Running state may still be installing extensions / not fully provisioned.
	InstanceCountSummary []*VirtualMachineInstanceCountSummary

	// READ-ONLY; Displays prediction information of the standby pool
	Prediction *StandbyVirtualMachinePoolPrediction

	// READ-ONLY; Displays the provisioning state of the standby pool
	ProvisioningState *ProvisioningState

	// READ-ONLY; Display status of the standby pool
	Status *PoolStatus
}

// StandbyVirtualMachineResource - Concrete proxy resource types can be created by aliasing this type using a specific property
// type.
type StandbyVirtualMachineResource struct {
	// The resource-specific properties for this resource.
	Properties *StandbyVirtualMachineResourceProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// StandbyVirtualMachineResourceListResult - The response of a StandbyVirtualMachineResource list operation.
type StandbyVirtualMachineResourceListResult struct {
	// REQUIRED; The StandbyVirtualMachineResource items on this page
	Value []*StandbyVirtualMachineResource

	// The link to the next page of items
	NextLink *string
}

// StandbyVirtualMachineResourceProperties - Details of the StandbyVirtualMachine.
type StandbyVirtualMachineResourceProperties struct {
	// REQUIRED; Resource id of the virtual machine.
	VirtualMachineResourceID *string

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// Subnet of container group
type Subnet struct {
	// REQUIRED; Specifies ARM resource id of the subnet.
	ID *string
}

// SystemData - Metadata pertaining to creation and last modification of the resource.
type SystemData struct {
	// The timestamp of resource creation (UTC).
	CreatedAt *time.Time

	// The identity that created the resource.
	CreatedBy *string

	// The type of identity that created the resource.
	CreatedByType *CreatedByType

	// The timestamp of resource last modification (UTC)
	LastModifiedAt *time.Time

	// The identity that last modified the resource.
	LastModifiedBy *string

	// The type of identity that last modified the resource.
	LastModifiedByType *CreatedByType
}

// VirtualMachineInstanceCountSummary - Contains the counts of VMs in each power state in a given zone, fault domain, as known
// by the StandbyPool resource provider. Note: any resources in the Running state may still be installing extensions / not
// fully provisioned.
type VirtualMachineInstanceCountSummary struct {
	// REQUIRED; The count of pooled virtual machines in each state for the given zone.
	InstanceCountsByState []*PoolVirtualMachineStateCount

	// The zone that the provided counts are in. It will not have a value if zones are not enabled on the attached VMSS.
	Zone *int64
}
