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

// Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines
// specified in the same availability set are allocated to different nodes to maximize availability. For more information
// about availability sets, see [Availability sets
// overview](https://docs.microsoft.com/azure/virtual-machines/availability-set-overview). For more information on Azure
// planned maintenance, see [Maintenance and updates for Virtual Machines in
// Azure](https://docs.microsoft.com/azure/virtual-machines/maintenance-and-updates). Currently, a VM can only be added to
// an availability set at creation time. An existing VM cannot be added to an availability set.
type AvailabilitySet_STATUS struct {
	// Id: Fully qualified resource ID for the resource. Ex -
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	Id *string `json:"id,omitempty"`

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

	// Name: The name of the resource
	Name *string `json:"name,omitempty"`

	// Properties: The instance view of a resource.
	Properties *AvailabilitySetProperties_STATUS `json:"properties,omitempty"`

	// Sku: Sku of the availability set, only name is required to be set. See AvailabilitySetSkuTypes for possible set of
	// values. Use 'Aligned' for virtual machines with managed disks and 'Classic' for virtual machines with unmanaged disks.
	// Default value is 'Classic'.
	Sku *Sku_STATUS `json:"sku,omitempty"`

	// SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

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

	// Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string `json:"type,omitempty"`
}

// The instance view of a resource.
type AvailabilitySetProperties_STATUS struct {
	// PlatformFaultDomainCount: Fault Domain count.
	PlatformFaultDomainCount *int `json:"platformFaultDomainCount,omitempty"`

	// PlatformUpdateDomainCount: Update Domain count.
	PlatformUpdateDomainCount *int `json:"platformUpdateDomainCount,omitempty"`

	// ProximityPlacementGroup: Specifies information about the proximity placement group that the availability set should be
	// assigned to. Minimum api-version: 2018-04-01.
	ProximityPlacementGroup *SubResource_STATUS `json:"proximityPlacementGroup,omitempty"`

	// ScheduledEventsPolicy: Specifies Redeploy, Reboot and ScheduledEventsAdditionalPublishingTargets Scheduled Event related
	// configurations for the availability set.
	ScheduledEventsPolicy *ScheduledEventsPolicy_STATUS `json:"scheduledEventsPolicy,omitempty"`

	// Statuses: The resource status information.
	Statuses []InstanceViewStatus_STATUS `json:"statuses,omitempty"`

	// VirtualMachineScaleSetMigrationInfo: Describes the migration properties on the Availability Set.
	VirtualMachineScaleSetMigrationInfo *VirtualMachineScaleSetMigrationInfo_STATUS `json:"virtualMachineScaleSetMigrationInfo,omitempty"`

	// VirtualMachines: A list of references to all virtual machines in the availability set.
	VirtualMachines []SubResource_STATUS `json:"virtualMachines,omitempty"`
}

// Describes a virtual machine scale set sku. NOTE: If the new VM SKU is not supported on the hardware the scale set is
// currently on, you need to deallocate the VMs in the scale set before you modify the SKU name.
type Sku_STATUS struct {
	// Capacity: Specifies the number of virtual machines in the scale set.
	Capacity *int `json:"capacity,omitempty"`

	// Name: The sku name.
	Name *string `json:"name,omitempty"`

	// Tier: Specifies the tier of virtual machines in a scale set.
	// Possible Values:
	// Standard
	// Basic
	Tier *string `json:"tier,omitempty"`
}

// Metadata pertaining to creation and last modification of the resource.
type SystemData_STATUS struct {
	// CreatedAt: The timestamp of resource creation (UTC).
	CreatedAt *string `json:"createdAt,omitempty"`

	// CreatedBy: The identity that created the resource.
	CreatedBy *string `json:"createdBy,omitempty"`

	// CreatedByType: The type of identity that created the resource.
	CreatedByType *SystemData_CreatedByType_STATUS `json:"createdByType,omitempty"`

	// LastModifiedAt: The timestamp of resource last modification (UTC)
	LastModifiedAt *string `json:"lastModifiedAt,omitempty"`

	// LastModifiedBy: The identity that last modified the resource.
	LastModifiedBy *string `json:"lastModifiedBy,omitempty"`

	// LastModifiedByType: The type of identity that last modified the resource.
	LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"`
}

// Instance view status.
type InstanceViewStatus_STATUS struct {
	// Code: The status code.
	Code *string `json:"code,omitempty"`

	// DisplayStatus: The short localizable label for the status.
	DisplayStatus *string `json:"displayStatus,omitempty"`

	// Level: The level code.
	Level *StatusLevelTypes_STATUS `json:"level,omitempty"`

	// Message: The detailed status message, including for alerts and error messages.
	Message *string `json:"message,omitempty"`

	// Time: The time of the status.
	Time *string `json:"time,omitempty"`
}

// Specifies Redeploy, Reboot and ScheduledEventsAdditionalPublishingTargets Scheduled Event related configurations.
type ScheduledEventsPolicy_STATUS struct {
	// ScheduledEventsAdditionalPublishingTargets: The configuration parameters used while publishing
	// scheduledEventsAdditionalPublishingTargets.
	ScheduledEventsAdditionalPublishingTargets *ScheduledEventsAdditionalPublishingTargets_STATUS `json:"scheduledEventsAdditionalPublishingTargets,omitempty"`

	// UserInitiatedReboot: The configuration parameters used while creating userInitiatedReboot scheduled event setting
	// creation.
	UserInitiatedReboot *UserInitiatedReboot_STATUS `json:"userInitiatedReboot,omitempty"`

	// UserInitiatedRedeploy: The configuration parameters used while creating userInitiatedRedeploy scheduled event setting
	// creation.
	UserInitiatedRedeploy *UserInitiatedRedeploy_STATUS `json:"userInitiatedRedeploy,omitempty"`
}

type SubResource_STATUS struct {
	// Id: Resource Id
	Id *string `json:"id,omitempty"`
}

type SystemData_CreatedByType_STATUS string

const (
	SystemData_CreatedByType_STATUS_Application     = SystemData_CreatedByType_STATUS("Application")
	SystemData_CreatedByType_STATUS_Key             = SystemData_CreatedByType_STATUS("Key")
	SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity")
	SystemData_CreatedByType_STATUS_User            = SystemData_CreatedByType_STATUS("User")
)

// Mapping from string to SystemData_CreatedByType_STATUS
var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{
	"application":     SystemData_CreatedByType_STATUS_Application,
	"key":             SystemData_CreatedByType_STATUS_Key,
	"managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity,
	"user":            SystemData_CreatedByType_STATUS_User,
}

type SystemData_LastModifiedByType_STATUS string

const (
	SystemData_LastModifiedByType_STATUS_Application     = SystemData_LastModifiedByType_STATUS("Application")
	SystemData_LastModifiedByType_STATUS_Key             = SystemData_LastModifiedByType_STATUS("Key")
	SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity")
	SystemData_LastModifiedByType_STATUS_User            = SystemData_LastModifiedByType_STATUS("User")
)

// Mapping from string to SystemData_LastModifiedByType_STATUS
var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{
	"application":     SystemData_LastModifiedByType_STATUS_Application,
	"key":             SystemData_LastModifiedByType_STATUS_Key,
	"managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity,
	"user":            SystemData_LastModifiedByType_STATUS_User,
}

// Describes the Availability Set properties related to migration to Flexible Virtual Machine Scale Set.
type VirtualMachineScaleSetMigrationInfo_STATUS struct {
	// DefaultVirtualMachineScaleSetInfo: Indicates the target Virtual Machine ScaleSet properties upon triggering a seamless
	// migration without downtime of the VMs via the ConvertToVirtualMachineScaleSet API.
	DefaultVirtualMachineScaleSetInfo *DefaultVirtualMachineScaleSetInfo_STATUS `json:"defaultVirtualMachineScaleSetInfo,omitempty"`

	// MigrateToVirtualMachineScaleSet: Specifies the Virtual Machine Scale Set that the Availability Set is migrated to.
	MigrateToVirtualMachineScaleSet *SubResource_STATUS `json:"migrateToVirtualMachineScaleSet,omitempty"`
}

// Indicates the target Virtual Machine ScaleSet properties upon triggering a seamless migration without downtime of the
// VMs via the ConvertToVirtualMachineScaleSet API.
type DefaultVirtualMachineScaleSetInfo_STATUS struct {
	// ConstrainedMaximumCapacity: Indicates if the the maximum capacity of the default migrated Virtual Machine Scale Set
	// after its migration will be constrained to a limited number of VMs.
	ConstrainedMaximumCapacity *bool `json:"constrainedMaximumCapacity,omitempty"`

	// DefaultVirtualMachineScaleSet: The default Virtual Machine ScaleSet Uri that the Availability Set will be moved to upon
	// triggering a seamless migration via the ConvertToVirtualMachineScaleSet API.
	DefaultVirtualMachineScaleSet *SubResource_STATUS `json:"defaultVirtualMachineScaleSet,omitempty"`
}

type ScheduledEventsAdditionalPublishingTargets_STATUS struct {
	// EventGridAndResourceGraph: The configuration parameters used while creating eventGridAndResourceGraph Scheduled Event
	// setting.
	EventGridAndResourceGraph *EventGridAndResourceGraph_STATUS `json:"eventGridAndResourceGraph,omitempty"`
}

// The level code.
type StatusLevelTypes_STATUS string

const (
	StatusLevelTypes_STATUS_Error   = StatusLevelTypes_STATUS("Error")
	StatusLevelTypes_STATUS_Info    = StatusLevelTypes_STATUS("Info")
	StatusLevelTypes_STATUS_Warning = StatusLevelTypes_STATUS("Warning")
)

// Mapping from string to StatusLevelTypes_STATUS
var statusLevelTypes_STATUS_Values = map[string]StatusLevelTypes_STATUS{
	"error":   StatusLevelTypes_STATUS_Error,
	"info":    StatusLevelTypes_STATUS_Info,
	"warning": StatusLevelTypes_STATUS_Warning,
}

// Specifies Reboot related Scheduled Event related configurations.
type UserInitiatedReboot_STATUS struct {
	// AutomaticallyApprove: Specifies Reboot Scheduled Event related configurations.
	AutomaticallyApprove *bool `json:"automaticallyApprove,omitempty"`
}

// Specifies Redeploy related Scheduled Event related configurations.
type UserInitiatedRedeploy_STATUS struct {
	// AutomaticallyApprove: Specifies Redeploy Scheduled Event related configurations.
	AutomaticallyApprove *bool `json:"automaticallyApprove,omitempty"`
}

// Specifies eventGridAndResourceGraph related Scheduled Event related configurations.
type EventGridAndResourceGraph_STATUS struct {
	// Enable: Specifies if event grid and resource graph is enabled for Scheduled event related configurations.
	Enable *bool `json:"enable,omitempty"`
}
