// 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 armrecoveryservicesdatareplication

import "time"

// AffectedObjectDetails - Details of the affected object.
type AffectedObjectDetails struct {
	// Description of the affected object details.
	Description *string

	// FLAG; CONSTANT; Type of the affected object details.
	Type *string
}

// AzStackHCIClusterProperties - AzStackHCI cluster properties.
type AzStackHCIClusterProperties struct {
	// REQUIRED; Gets or sets the AzStackHCICluster FQDN name.
	ClusterName *string

	// REQUIRED; Gets or sets the AzStackHCICluster resource name.
	ResourceName *string

	// REQUIRED; Gets or sets the Storage account name.
	StorageAccountName *string

	// REQUIRED; Gets or sets the list of AzStackHCICluster Storage Container.
	StorageContainers []*StorageContainerProperties
}

// AzStackHCIFabricModelCustomProperties - AzStackHCI fabric model custom properties.
type AzStackHCIFabricModelCustomProperties struct {
	// REQUIRED; Gets or sets the ARM Id of the AzStackHCI site.
	AzStackHciSiteID *string

	// REQUIRED; AzStackHCI cluster properties.
	Cluster *AzStackHCIClusterProperties

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "AzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the Migration solution ARM Id.
	MigrationSolutionID *string

	// READ-ONLY; Gets or sets the Appliance name.
	ApplianceName []*string

	// READ-ONLY; Gets or sets the fabric container Id.
	FabricContainerID *string

	// READ-ONLY; Gets or sets the fabric resource Id.
	FabricResourceID *string

	// READ-ONLY; Gets or sets the migration hub Uri.
	MigrationHubURI *string
}

// GetFabricModelCustomProperties implements the FabricModelCustomPropertiesClassification interface for type AzStackHCIFabricModelCustomProperties.
func (a *AzStackHCIFabricModelCustomProperties) GetFabricModelCustomProperties() *FabricModelCustomProperties {
	return &FabricModelCustomProperties{
		InstanceType: a.InstanceType,
	}
}

// CheckNameAvailabilityModel - Check name availability model.
type CheckNameAvailabilityModel struct {
	// Gets or sets the resource name.
	Name *string

	// Gets or sets the resource type.
	Type *string
}

// CheckNameAvailabilityResponseModel - Check name availability response model.
type CheckNameAvailabilityResponseModel struct {
	// Gets or sets the message for resource name unavailability.
	Message *string

	// Gets or sets a value indicating whether resource name is available or not.
	NameAvailable *bool

	// Gets or sets the reason for resource name unavailability.
	Reason *string
}

// ConnectionDetails - Private endpoint connection details at member level.
type ConnectionDetails struct {
	// Gets or sets group id.
	GroupID *string

	// Gets or sets id.
	ID *string

	// Gets or sets link identifier.
	LinkIdentifier *string

	// Gets or sets member name.
	MemberName *string

	// Gets or sets private IP address.
	PrivateIPAddress *string
}

// DeploymentPreflightModel - Deployment preflight model.
type DeploymentPreflightModel struct {
	// Gets or sets the list of resources.
	Resources []*DeploymentPreflightResource
}

// DeploymentPreflightResource - Deployment preflight resource.
type DeploymentPreflightResource struct {
	// Gets or sets the Api version.
	APIVersion *string

	// Gets or sets the location of the resource.
	Location *string

	// Gets or sets the resource name.
	Name *string

	// Gets or sets the properties of the resource.
	Properties any

	// Gets or sets the resource type.
	Type *string
}

// DiskControllerInputs - Disk controller.
type DiskControllerInputs struct {
	// REQUIRED; Gets or sets the controller ID.
	ControllerID *int32

	// REQUIRED; Gets or sets the controller Location.
	ControllerLocation *int32

	// REQUIRED; Gets or sets the controller name (IDE,SCSI).
	ControllerName *string
}

// EmailConfigurationModel - Email configuration model.
type EmailConfigurationModel struct {
	// The resource-specific properties for this resource.
	Properties *EmailConfigurationModelProperties

	// 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
}

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

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

// EmailConfigurationModelProperties - Email configuration model properties.
type EmailConfigurationModelProperties struct {
	// REQUIRED; Gets or sets a value indicating whether to send email to subscription administrator.
	SendToOwners *bool

	// Gets or sets the custom email address for sending emails.
	CustomEmailAddresses []*string

	// Gets or sets the locale for the email notification.
	Locale *string

	// READ-ONLY; Gets or sets the provisioning state of the email configuration.
	ProvisioningState *ProvisioningState
}

// ErrorModel - Error model.
type ErrorModel struct {
	// READ-ONLY; Gets or sets the possible causes of error.
	Causes *string

	// READ-ONLY; Gets or sets the error code.
	Code *string

	// READ-ONLY; Gets or sets the creation time of error.
	CreationTime *time.Time

	// READ-ONLY; Gets or sets the error message.
	Message *string

	// READ-ONLY; Gets or sets the recommended action to resolve error.
	Recommendation *string

	// READ-ONLY; Gets or sets the error severity.
	Severity *string

	// READ-ONLY; Gets or sets the error type.
	Type *string
}

// EventModel - Event model.
type EventModel struct {
	// The resource-specific properties for this resource.
	Properties *EventModelProperties

	// 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
}

// EventModelCustomProperties - Event model custom properties.
type EventModelCustomProperties struct {
	// REQUIRED; Discriminator property for EventModelCustomProperties.
	InstanceType *string
}

// GetEventModelCustomProperties implements the EventModelCustomPropertiesClassification interface for type EventModelCustomProperties.
func (e *EventModelCustomProperties) GetEventModelCustomProperties() *EventModelCustomProperties {
	return e
}

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

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

// EventModelProperties - Event model properties.
type EventModelProperties struct {
	// REQUIRED; Event model custom properties.
	CustomProperties EventModelCustomPropertiesClassification

	// READ-ONLY; Gets or sets the event correlation Id.
	CorrelationID *string

	// READ-ONLY; Gets or sets the event description.
	Description *string

	// READ-ONLY; Gets or sets the event name.
	EventName *string

	// READ-ONLY; Gets or sets the event type.
	EventType *string

	// READ-ONLY; Gets or sets the errors associated with this event.
	HealthErrors []*HealthErrorModel

	// READ-ONLY; Gets or sets the provisioning state of the event.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets or sets the resource name.
	ResourceName *string

	// READ-ONLY; Gets or sets the resource type.
	ResourceType *string

	// READ-ONLY; Gets or sets the event severity.
	Severity *string

	// READ-ONLY; Gets or sets the time at which the event occurred at source.
	TimeOfOccurrence *time.Time
}

// FabricAgentModel - Fabric agent model.
type FabricAgentModel struct {
	// The resource-specific properties for this resource.
	Properties *FabricAgentModelProperties

	// 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
}

// FabricAgentModelCustomProperties - Fabric agent model custom properties.
type FabricAgentModelCustomProperties struct {
	// REQUIRED; Discriminator property for FabricAgentModelCustomProperties.
	InstanceType *string
}

// GetFabricAgentModelCustomProperties implements the FabricAgentModelCustomPropertiesClassification interface for type FabricAgentModelCustomProperties.
func (f *FabricAgentModelCustomProperties) GetFabricAgentModelCustomProperties() *FabricAgentModelCustomProperties {
	return f
}

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

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

// FabricAgentModelProperties - Fabric agent model properties.
type FabricAgentModelProperties struct {
	// REQUIRED; Identity model.
	AuthenticationIdentity *IdentityModel

	// REQUIRED; Fabric agent model custom properties.
	CustomProperties FabricAgentModelCustomPropertiesClassification

	// REQUIRED; Gets or sets the machine Id where fabric agent is running.
	MachineID *string

	// REQUIRED; Gets or sets the machine name where fabric agent is running.
	MachineName *string

	// REQUIRED; Identity model.
	ResourceAccessIdentity *IdentityModel

	// READ-ONLY; Gets or sets the fabric agent correlation Id.
	CorrelationID *string

	// READ-ONLY; Gets or sets the list of health errors.
	HealthErrors []*HealthErrorModel

	// READ-ONLY; Gets or sets a value indicating whether the fabric agent is responsive.
	IsResponsive *bool

	// READ-ONLY; Gets or sets the time when last heartbeat was sent by the fabric agent.
	LastHeartbeat *time.Time

	// READ-ONLY; Gets or sets the provisioning state of the fabric agent.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets or sets the fabric agent version.
	VersionNumber *string
}

// FabricModel - Fabric model.
type FabricModel struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

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

	// 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
}

// FabricModelCustomProperties - Fabric model custom properties.
type FabricModelCustomProperties struct {
	// REQUIRED; Discriminator property for FabricModelCustomProperties.
	InstanceType *string
}

// GetFabricModelCustomProperties implements the FabricModelCustomPropertiesClassification interface for type FabricModelCustomProperties.
func (f *FabricModelCustomProperties) GetFabricModelCustomProperties() *FabricModelCustomProperties {
	return f
}

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

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

// FabricModelProperties - Fabric model properties.
type FabricModelProperties struct {
	// REQUIRED; Fabric model custom properties.
	CustomProperties FabricModelCustomPropertiesClassification

	// READ-ONLY; Gets or sets the fabric health.
	Health *HealthStatus

	// READ-ONLY; Gets or sets the list of health errors.
	HealthErrors []*HealthErrorModel

	// READ-ONLY; Gets or sets the provisioning state of the fabric.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets or sets the service endpoint.
	ServiceEndpoint *string

	// READ-ONLY; Gets or sets the service resource Id.
	ServiceResourceID *string
}

// FabricModelUpdate - Fabric model update.
type FabricModelUpdate struct {
	// Fabric model properties.
	Properties *FabricModelProperties

	// Gets or sets the resource tags.
	Tags map[string]*string

	// READ-ONLY; Gets or sets the Id of the resource.
	ID *string

	// READ-ONLY; Gets or sets the name of the resource.
	Name *string

	// READ-ONLY; Metadata pertaining to creation and last modification of the resource.
	SystemData *SystemData

	// READ-ONLY; Gets or sets the type of the resource.
	Type *string
}

// FailoverJobModelCustomProperties - Failover job model custom properties.
type FailoverJobModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string

	// READ-ONLY; Gets or sets any custom properties of the affected object.
	AffectedObjectDetails *AffectedObjectDetails

	// READ-ONLY; Gets or sets the failed over protected item details.
	ProtectedItemDetails []*FailoverProtectedItemProperties
}

// GetJobModelCustomProperties implements the JobModelCustomPropertiesClassification interface for type FailoverJobModelCustomProperties.
func (f *FailoverJobModelCustomProperties) GetJobModelCustomProperties() *JobModelCustomProperties {
	return &JobModelCustomProperties{
		AffectedObjectDetails: f.AffectedObjectDetails,
		InstanceType:          f.InstanceType,
	}
}

// FailoverProtectedItemProperties - Failover properties of the protected item.
type FailoverProtectedItemProperties struct {
	// READ-ONLY; Gets or sets the network name.
	NetworkName *string

	// READ-ONLY; Gets or sets the protected item name.
	ProtectedItemName *string

	// READ-ONLY; Gets or sets the recovery point Id.
	RecoveryPointID *string

	// READ-ONLY; Gets or sets the recovery point time.
	RecoveryPointTime *time.Time

	// READ-ONLY; Gets or sets the network subnet.
	Subnet *string

	// READ-ONLY; Gets or sets the test VM name.
	TestVMName *string

	// READ-ONLY; Gets or sets the VM name.
	VMName *string
}

// GroupConnectivityInformation - Represents of a connection's group information.
type GroupConnectivityInformation struct {
	// Gets or sets customer visible FQDNs.
	CustomerVisibleFqdns []*string

	// Gets or sets group id.
	GroupID *string

	// Gets or sets Internal Fqdn.
	InternalFqdn *string

	// Gets or sets member name.
	MemberName *string

	// Gets or sets the private link service arm region.
	PrivateLinkServiceArmRegion *string

	// Gets or sets the redirect map id.
	RedirectMapID *string
}

// HealthErrorModel - Health error model.
type HealthErrorModel struct {
	// Gets or sets the list of affected resource correlation Ids. This can be used to uniquely identify the count of items affected
	// by a specific category and severity as well as count of item affected by an specific issue.
	AffectedResourceCorrelationIDs []*string

	// Gets or sets the type of affected resource type.
	AffectedResourceType *string

	// Gets or sets a list of child health errors associated with this error.
	ChildErrors []*InnerHealthErrorModel

	// READ-ONLY; Gets or sets the error category.
	Category *string

	// READ-ONLY; Gets or sets possible causes of the error.
	Causes *string

	// READ-ONLY; Gets or sets the error code.
	Code *string

	// READ-ONLY; Gets or sets the error creation time.
	CreationTime *time.Time

	// READ-ONLY; Gets or sets the health category.
	HealthCategory *string

	// READ-ONLY; Gets or sets a value indicating whether the error is customer resolvable.
	IsCustomerResolvable *bool

	// READ-ONLY; Gets or sets the error message.
	Message *string

	// READ-ONLY; Gets or sets recommended action to resolve the error.
	Recommendation *string

	// READ-ONLY; Gets or sets the error severity.
	Severity *string

	// READ-ONLY; Gets or sets the error source.
	Source *string

	// READ-ONLY; Gets or sets the error summary.
	Summary *string
}

// HyperVMigrateFabricModelCustomProperties - HyperV migrate fabric model custom properties.
type HyperVMigrateFabricModelCustomProperties struct {
	// REQUIRED; Gets or sets the ARM Id of the HyperV site.
	HyperVSiteID *string

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "HyperVMigrate", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the migration solution ARM Id.
	MigrationSolutionID *string

	// READ-ONLY; Gets or sets the fabric container Id.
	FabricContainerID *string

	// READ-ONLY; Gets or sets the fabric resource Id.
	FabricResourceID *string

	// READ-ONLY; Gets or sets the migration hub Uri.
	MigrationHubURI *string
}

// GetFabricModelCustomProperties implements the FabricModelCustomPropertiesClassification interface for type HyperVMigrateFabricModelCustomProperties.
func (h *HyperVMigrateFabricModelCustomProperties) GetFabricModelCustomProperties() *FabricModelCustomProperties {
	return &FabricModelCustomProperties{
		InstanceType: h.InstanceType,
	}
}

// HyperVToAzStackHCIDiskInput - HyperVToAzStack disk input.
type HyperVToAzStackHCIDiskInput struct {
	// REQUIRED; Gets or sets the type of the virtual hard disk, vhd or vhdx.
	DiskFileFormat *string

	// REQUIRED; Gets or sets the disk Id.
	DiskID *string

	// REQUIRED; Gets or sets the disk size in GB.
	DiskSizeGB *int64

	// REQUIRED; Gets or sets a value indicating whether disk is os disk.
	IsOsDisk *bool

	// Gets or sets a value of disk block size.
	DiskBlockSize *int64

	// Disk controller.
	DiskController *DiskControllerInputs

	// Gets or sets a value of disk identifier.
	DiskIdentifier *string

	// Gets or sets a value of disk logical sector size.
	DiskLogicalSectorSize *int64

	// Gets or sets a value of disk physical sector size.
	DiskPhysicalSectorSize *int64

	// Gets or sets a value indicating whether dynamic sizing is enabled on the virtual hard disk.
	IsDynamic *bool

	// Gets or sets the target storage account ARM Id.
	StorageContainerID *string
}

// HyperVToAzStackHCIEventModelCustomProperties - HyperV to AzStackHCI event model custom properties. This class provides
// provider specific details for events of type DataContract.HealthEvents.HealthEventType.ProtectedItemHealth and DataContract.HealthEvents.HealthEventType.AgentHealth.
type HyperVToAzStackHCIEventModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string

	// READ-ONLY; Gets or sets the friendly name of the source which has raised this health event.
	EventSourceFriendlyName *string

	// READ-ONLY; Gets or sets the protected item friendly name.
	ProtectedItemFriendlyName *string

	// READ-ONLY; Gets or sets the server type.
	ServerType *string

	// READ-ONLY; Gets or sets the source appliance name.
	SourceApplianceName *string

	// READ-ONLY; Gets or sets the source target name.
	TargetApplianceName *string
}

// GetEventModelCustomProperties implements the EventModelCustomPropertiesClassification interface for type HyperVToAzStackHCIEventModelCustomProperties.
func (h *HyperVToAzStackHCIEventModelCustomProperties) GetEventModelCustomProperties() *EventModelCustomProperties {
	return &EventModelCustomProperties{
		InstanceType: h.InstanceType,
	}
}

// HyperVToAzStackHCINicInput - HyperVToAzStackHCI NIC properties.
type HyperVToAzStackHCINicInput struct {
	// REQUIRED; Gets or sets the NIC Id.
	NicID *string

	// REQUIRED; Gets or sets the selection type of the NIC.
	SelectionTypeForFailover *VMNicSelection

	// Gets or sets a value indicating whether mac address migration is enabled.
	IsMacMigrationEnabled *bool

	// Gets or sets a value indicating whether static ip migration is enabled.
	IsStaticIPMigrationEnabled *bool

	// Gets or sets the target network Id within AzStackHCI Cluster.
	TargetNetworkID *string

	// Gets or sets the target test network Id within AzStackHCI Cluster.
	TestNetworkID *string

	// READ-ONLY; Gets or sets the network name.
	NetworkName *string
}

// HyperVToAzStackHCIPlannedFailoverModelCustomProperties - HyperV to AzStackHCI planned failover model custom properties.
type HyperVToAzStackHCIPlannedFailoverModelCustomProperties struct {
	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "HyperVToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets a value indicating whether VM needs to be shut down.
	ShutdownSourceVM *bool
}

// GetPlannedFailoverModelCustomProperties implements the PlannedFailoverModelCustomPropertiesClassification interface for
// type HyperVToAzStackHCIPlannedFailoverModelCustomProperties.
func (h *HyperVToAzStackHCIPlannedFailoverModelCustomProperties) GetPlannedFailoverModelCustomProperties() *PlannedFailoverModelCustomProperties {
	return &PlannedFailoverModelCustomProperties{
		InstanceType: h.InstanceType,
	}
}

// HyperVToAzStackHCIPolicyModelCustomProperties - HyperV To AzStackHCI Policy model custom properties.
type HyperVToAzStackHCIPolicyModelCustomProperties struct {
	// REQUIRED; Gets or sets the app consistent snapshot frequency (in minutes).
	AppConsistentFrequencyInMinutes *int32

	// REQUIRED; Gets or sets the crash consistent snapshot frequency (in minutes).
	CrashConsistentFrequencyInMinutes *int32

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "HyperVToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the duration in minutes until which the recovery points need to be stored.
	RecoveryPointHistoryInMinutes *int32
}

// GetPolicyModelCustomProperties implements the PolicyModelCustomPropertiesClassification interface for type HyperVToAzStackHCIPolicyModelCustomProperties.
func (h *HyperVToAzStackHCIPolicyModelCustomProperties) GetPolicyModelCustomProperties() *PolicyModelCustomProperties {
	return &PolicyModelCustomProperties{
		InstanceType: h.InstanceType,
	}
}

// HyperVToAzStackHCIProtectedDiskProperties - HyperVToAzStackHCI protected disk properties.
type HyperVToAzStackHCIProtectedDiskProperties struct {
	// READ-ONLY; Gets or sets the disk capacity in bytes.
	CapacityInBytes *int64

	// READ-ONLY; Gets or sets a value of disk block size.
	DiskBlockSize *int64

	// READ-ONLY; Gets or sets a value of disk logical sector size.
	DiskLogicalSectorSize *int64

	// READ-ONLY; Gets or sets a value of disk physical sector size.
	DiskPhysicalSectorSize *int64

	// READ-ONLY; Gets or sets the disk type.
	DiskType *string

	// READ-ONLY; Gets or sets a value indicating whether dynamic sizing is enabled on the virtual hard disk.
	IsDynamic *bool

	// READ-ONLY; Gets or sets a value indicating whether the disk is the OS disk.
	IsOsDisk *bool

	// READ-ONLY; Gets or sets the failover clone disk.
	MigrateDiskName *string

	// READ-ONLY; Gets or sets the seed disk name.
	SeedDiskName *string

	// READ-ONLY; Gets or sets the source disk Id.
	SourceDiskID *string

	// READ-ONLY; Gets or sets the source disk Name.
	SourceDiskName *string

	// READ-ONLY; Gets or sets the ARM Id of the storage container.
	StorageContainerID *string

	// READ-ONLY; Gets or sets the local path of the storage container.
	StorageContainerLocalPath *string

	// READ-ONLY; Gets or sets the test failover clone disk.
	TestMigrateDiskName *string
}

// HyperVToAzStackHCIProtectedItemModelCustomProperties - HyperV to AzStackHCI Protected item model custom properties.
type HyperVToAzStackHCIProtectedItemModelCustomProperties struct {
	// REQUIRED; Gets or sets the location of Azure Arc HCI custom location resource.
	CustomLocationRegion *string

	// REQUIRED; Gets or sets the list of disks to replicate.
	DisksToInclude []*HyperVToAzStackHCIDiskInput

	// REQUIRED; Gets or sets the ARM Id of the discovered machine.
	FabricDiscoveryMachineID *string

	// REQUIRED; Gets or sets the hypervisor generation of the virtual machine.
	HyperVGeneration *string

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "HyperVToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the list of VM NIC to replicate.
	NicsToInclude []*HyperVToAzStackHCINicInput

	// REQUIRED; Gets or sets the Run As account Id.
	RunAsAccountID *string

	// REQUIRED; Gets or sets the source fabric agent name.
	SourceFabricAgentName *string

	// REQUIRED; Gets or sets the target storage container ARM Id.
	StorageContainerID *string

	// REQUIRED; Gets or sets the Target Arc Cluster Custom Location ARM Id.
	TargetArcClusterCustomLocationID *string

	// REQUIRED; Gets or sets the target fabric agent name.
	TargetFabricAgentName *string

	// REQUIRED; Gets or sets the Target HCI Cluster ARM Id.
	TargetHciClusterID *string

	// REQUIRED; Gets or sets the target resource group ARM Id.
	TargetResourceGroupID *string

	// Protected item dynamic memory config.
	DynamicMemoryConfig *ProtectedItemDynamicMemoryConfig

	// Gets or sets a value indicating whether memory is dynamical.
	IsDynamicRAM *bool

	// Gets or sets the target CPU cores.
	TargetCPUCores *int32

	// Gets or sets the target memory in mega-bytes.
	TargetMemoryInMegaBytes *int32

	// Gets or sets the target network Id within AzStackHCI Cluster.
	TargetNetworkID *string

	// Gets or sets the target VM display name.
	TargetVMName *string

	// Gets or sets the target test network Id within AzStackHCI Cluster.
	TestNetworkID *string

	// READ-ONLY; Gets or sets the location of the protected item.
	ActiveLocation *ProtectedItemActiveLocation

	// READ-ONLY; Gets or sets the recovery point Id to which the VM was failed over.
	FailoverRecoveryPointID *string

	// READ-ONLY; Gets or sets the firmware type.
	FirmwareType *string

	// READ-ONLY; Gets or sets the initial replication progress percentage. This is calculated based on total bytes processed
	// for all disks in the source VM.
	InitialReplicationProgressPercentage *int32

	// READ-ONLY; Gets or sets the last recovery point Id.
	LastRecoveryPointID *string

	// READ-ONLY; Gets or sets the last recovery point received time.
	LastRecoveryPointReceived *time.Time

	// READ-ONLY; Gets or sets the latest timestamp that replication status is updated.
	LastReplicationUpdateTime *time.Time

	// READ-ONLY; Gets or sets the name of the OS.
	OSName *string

	// READ-ONLY; Gets or sets the type of the OS.
	OSType *string

	// READ-ONLY; Gets or sets the list of protected disks.
	ProtectedDisks []*HyperVToAzStackHCIProtectedDiskProperties

	// READ-ONLY; Gets or sets the VM NIC details.
	ProtectedNics []*HyperVToAzStackHCIProtectedNicProperties

	// READ-ONLY; Gets or sets the resync progress percentage. This is calculated based on total bytes processed for all disks
	// in the source VM.
	ResyncProgressPercentage *int32

	// READ-ONLY; Gets or sets the source appliance name.
	SourceApplianceName *string

	// READ-ONLY; Gets or sets the source VM CPU cores.
	SourceCPUCores *int32

	// READ-ONLY; Gets or sets the source VM ram memory size in megabytes.
	SourceMemoryInMegaBytes *float64

	// READ-ONLY; Gets or sets the source VM display name.
	SourceVMName *string

	// READ-ONLY; Gets or sets the target appliance name.
	TargetApplianceName *string

	// READ-ONLY; Gets or sets the Target AzStackHCI cluster name.
	TargetAzStackHciClusterName *string

	// READ-ONLY; Gets or sets the target location.
	TargetLocation *string

	// READ-ONLY; Gets or sets the BIOS Id of the target AzStackHCI VM.
	TargetVMBiosID *string
}

// GetProtectedItemModelCustomProperties implements the ProtectedItemModelCustomPropertiesClassification interface for type
// HyperVToAzStackHCIProtectedItemModelCustomProperties.
func (h *HyperVToAzStackHCIProtectedItemModelCustomProperties) GetProtectedItemModelCustomProperties() *ProtectedItemModelCustomProperties {
	return &ProtectedItemModelCustomProperties{
		InstanceType: h.InstanceType,
	}
}

// HyperVToAzStackHCIProtectedItemModelCustomPropertiesUpdate - HyperV to AzStackHCI Protected item model custom properties.
type HyperVToAzStackHCIProtectedItemModelCustomPropertiesUpdate struct {
	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "HyperVToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// Protected item dynamic memory config.
	DynamicMemoryConfig *ProtectedItemDynamicMemoryConfig

	// Gets or sets a value indicating whether memory is dynamical.
	IsDynamicRAM *bool

	// Gets or sets the list of VM NIC to replicate.
	NicsToInclude []*HyperVToAzStackHCINicInput

	// Gets or sets the type of the OS.
	OSType *string

	// Gets or sets the target CPU cores.
	TargetCPUCores *int32

	// Gets or sets the target memory in mega-bytes.
	TargetMemoryInMegaBytes *int32
}

// GetProtectedItemModelCustomPropertiesUpdate implements the ProtectedItemModelCustomPropertiesUpdateClassification interface
// for type HyperVToAzStackHCIProtectedItemModelCustomPropertiesUpdate.
func (h *HyperVToAzStackHCIProtectedItemModelCustomPropertiesUpdate) GetProtectedItemModelCustomPropertiesUpdate() *ProtectedItemModelCustomPropertiesUpdate {
	return &ProtectedItemModelCustomPropertiesUpdate{
		InstanceType: h.InstanceType,
	}
}

// HyperVToAzStackHCIProtectedNicProperties - HyperVToAzStackHCI NIC properties.
type HyperVToAzStackHCIProtectedNicProperties struct {
	// READ-ONLY; Gets or sets the NIC mac address.
	MacAddress *string

	// READ-ONLY; Gets or sets the network name.
	NetworkName *string

	// READ-ONLY; Gets or sets the NIC Id.
	NicID *string

	// READ-ONLY; Gets or sets the selection type of the NIC.
	SelectionTypeForFailover *VMNicSelection

	// READ-ONLY; Gets or sets the target network Id within AzStackHCI Cluster.
	TargetNetworkID *string

	// READ-ONLY; Gets or sets the target test network Id within AzStackHCI Cluster.
	TestNetworkID *string
}

// HyperVToAzStackHCIRecoveryPointModelCustomProperties - HyperV to AzStackHCI recovery point model custom properties.
type HyperVToAzStackHCIRecoveryPointModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string

	// READ-ONLY; Gets or sets the list of the disk Ids.
	DiskIDs []*string
}

// GetRecoveryPointModelCustomProperties implements the RecoveryPointModelCustomPropertiesClassification interface for type
// HyperVToAzStackHCIRecoveryPointModelCustomProperties.
func (h *HyperVToAzStackHCIRecoveryPointModelCustomProperties) GetRecoveryPointModelCustomProperties() *RecoveryPointModelCustomProperties {
	return &RecoveryPointModelCustomProperties{
		InstanceType: h.InstanceType,
	}
}

// HyperVToAzStackHCIReplicationExtensionModelCustomProperties - HyperV to AzStackHCI Replication extension model custom properties.
type HyperVToAzStackHCIReplicationExtensionModelCustomProperties struct {
	// REQUIRED; Gets or sets the ARM Id of the target AzStackHCI fabric.
	AzStackHciFabricArmID *string

	// REQUIRED; Gets or sets the ARM Id of the source HyperV fabric.
	HyperVFabricArmID *string

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "HyperVToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// Gets or sets the storage account Id.
	StorageAccountID *string

	// Gets or sets the Sas Secret of storage account.
	StorageAccountSasSecretName *string

	// READ-ONLY; Gets or sets the Uri of ASR.
	AsrServiceURI *string

	// READ-ONLY; Gets or sets the ARM Id of the AzStackHCI site.
	AzStackHciSiteID *string

	// READ-ONLY; Gets or sets the Uri of Gateway.
	GatewayServiceURI *string

	// READ-ONLY; Gets or sets the ARM Id of the HyperV site.
	HyperVSiteID *string

	// READ-ONLY; Gets or sets the Uri of Rcm.
	RcmServiceURI *string

	// READ-ONLY; Gets or sets the resource group.
	ResourceGroup *string

	// READ-ONLY; Gets or sets the resource location.
	ResourceLocation *string

	// READ-ONLY; Gets or sets the gateway service Id of source.
	SourceGatewayServiceID *string

	// READ-ONLY; Gets or sets the source storage container name.
	SourceStorageContainerName *string

	// READ-ONLY; Gets or sets the subscription.
	SubscriptionID *string

	// READ-ONLY; Gets or sets the gateway service Id of target.
	TargetGatewayServiceID *string

	// READ-ONLY; Gets or sets the target storage container name.
	TargetStorageContainerName *string
}

// GetReplicationExtensionModelCustomProperties implements the ReplicationExtensionModelCustomPropertiesClassification interface
// for type HyperVToAzStackHCIReplicationExtensionModelCustomProperties.
func (h *HyperVToAzStackHCIReplicationExtensionModelCustomProperties) GetReplicationExtensionModelCustomProperties() *ReplicationExtensionModelCustomProperties {
	return &ReplicationExtensionModelCustomProperties{
		InstanceType: h.InstanceType,
	}
}

// IdentityModel - Identity model.
type IdentityModel struct {
	// REQUIRED; Gets or sets the authority of the SPN with which fabric agent communicates to service.
	AADAuthority *string

	// REQUIRED; Gets or sets the client/application Id of the SPN with which fabric agent communicates to service.
	ApplicationID *string

	// REQUIRED; Gets or sets the audience of the SPN with which fabric agent communicates to service.
	Audience *string

	// REQUIRED; Gets or sets the object Id of the SPN with which fabric agent communicates to service.
	ObjectID *string

	// REQUIRED; Gets or sets the tenant Id of the SPN with which fabric agent communicates to service.
	TenantID *string
}

// InnerHealthErrorModel - Inner health error model.
type InnerHealthErrorModel struct {
	// READ-ONLY; Gets or sets the error category.
	Category *string

	// READ-ONLY; Gets or sets possible causes of the error.
	Causes *string

	// READ-ONLY; Gets or sets the error code.
	Code *string

	// READ-ONLY; Gets or sets the error creation time.
	CreationTime *time.Time

	// READ-ONLY; Gets or sets the health category.
	HealthCategory *string

	// READ-ONLY; Gets or sets a value indicating whether the error is customer resolvable.
	IsCustomerResolvable *bool

	// READ-ONLY; Gets or sets the error message.
	Message *string

	// READ-ONLY; Gets or sets recommended action to resolve the error.
	Recommendation *string

	// READ-ONLY; Gets or sets the error severity.
	Severity *string

	// READ-ONLY; Gets or sets the error source.
	Source *string

	// READ-ONLY; Gets or sets the error summary.
	Summary *string
}

// JobModel - Job model.
type JobModel struct {
	// The resource-specific properties for this resource.
	Properties *JobModelProperties

	// 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
}

// JobModelCustomProperties - Job model custom properties.
type JobModelCustomProperties struct {
	// REQUIRED; Discriminator property for JobModelCustomProperties.
	InstanceType *string

	// READ-ONLY; Gets or sets any custom properties of the affected object.
	AffectedObjectDetails *AffectedObjectDetails
}

// GetJobModelCustomProperties implements the JobModelCustomPropertiesClassification interface for type JobModelCustomProperties.
func (j *JobModelCustomProperties) GetJobModelCustomProperties() *JobModelCustomProperties { return j }

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

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

// JobModelProperties - Job model properties.
type JobModelProperties struct {
	// REQUIRED; Job model custom properties.
	CustomProperties JobModelCustomPropertiesClassification

	// READ-ONLY; Gets or sets the job activity id.
	ActivityID *string

	// READ-ONLY; Gets or sets the list of allowed actions on the job.
	AllowedActions []*string

	// READ-ONLY; Gets or sets the friendly display name.
	DisplayName *string

	// READ-ONLY; Gets or sets the end time.
	EndTime *time.Time

	// READ-ONLY; Gets or sets the list of errors.
	Errors []*ErrorModel

	// READ-ONLY; Gets or sets the affected object Id.
	ObjectID *string

	// READ-ONLY; Gets or sets the affected object internal Id.
	ObjectInternalID *string

	// READ-ONLY; Gets or sets the affected object internal name.
	ObjectInternalName *string

	// READ-ONLY; Gets or sets the affected object name.
	ObjectName *string

	// READ-ONLY; Gets or sets the object type.
	ObjectType *JobObjectType

	// READ-ONLY; Gets or sets the provisioning state of the job.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets or sets the replication provider.
	ReplicationProviderID *string

	// READ-ONLY; Gets or sets the source fabric provider.
	SourceFabricProviderID *string

	// READ-ONLY; Gets or sets the start time.
	StartTime *time.Time

	// READ-ONLY; Gets or sets the job state.
	State *JobState

	// READ-ONLY; Gets or sets the target fabric provider.
	TargetFabricProviderID *string

	// READ-ONLY; Gets or sets the list of tasks.
	Tasks []*TaskModel
}

// ManagedServiceIdentity - Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity struct {
	// REQUIRED; The type of managed identity assigned to this resource.
	Type *ManagedServiceIdentityType

	// The identities assigned to this resource by the user.
	UserAssignedIdentities map[string]*UserAssignedIdentity

	// READ-ONLY; The service principal ID of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	PrincipalID *string

	// READ-ONLY; The tenant ID of the system assigned identity. This property will only be provided for a system assigned identity.
	TenantID *string
}

// 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
}

// OperationStatus - Defines the operation status.
type OperationStatus struct {
	// Gets or sets the end time.
	EndTime *string

	// Gets or sets the Id.
	ID *string

	// Gets or sets the operation name.
	Name *string

	// Gets or sets the start time.
	StartTime *string

	// Gets or sets the status of the operation. ARM expects the terminal status to be one of Succeeded/ Failed/ Canceled. All
	// other values imply that the operation is still running.
	Status *string
}

// PlannedFailoverModel - Planned failover model.
type PlannedFailoverModel struct {
	// REQUIRED; Planned failover model properties.
	Properties *PlannedFailoverModelProperties
}

// PlannedFailoverModelCustomProperties - Planned failover model custom properties.
type PlannedFailoverModelCustomProperties struct {
	// REQUIRED; Discriminator property for PlannedFailoverModelCustomProperties.
	InstanceType *string
}

// GetPlannedFailoverModelCustomProperties implements the PlannedFailoverModelCustomPropertiesClassification interface for
// type PlannedFailoverModelCustomProperties.
func (p *PlannedFailoverModelCustomProperties) GetPlannedFailoverModelCustomProperties() *PlannedFailoverModelCustomProperties {
	return p
}

// PlannedFailoverModelProperties - Planned failover model properties.
type PlannedFailoverModelProperties struct {
	// REQUIRED; Planned failover model custom properties.
	CustomProperties PlannedFailoverModelCustomPropertiesClassification
}

// PolicyModel - Policy model.
type PolicyModel struct {
	// The resource-specific properties for this resource.
	Properties *PolicyModelProperties

	// 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
}

// PolicyModelCustomProperties - Policy model custom properties.
type PolicyModelCustomProperties struct {
	// REQUIRED; Discriminator property for PolicyModelCustomProperties.
	InstanceType *string
}

// GetPolicyModelCustomProperties implements the PolicyModelCustomPropertiesClassification interface for type PolicyModelCustomProperties.
func (p *PolicyModelCustomProperties) GetPolicyModelCustomProperties() *PolicyModelCustomProperties {
	return p
}

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

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

// PolicyModelProperties - Policy model properties.
type PolicyModelProperties struct {
	// REQUIRED; Policy model custom properties.
	CustomProperties PolicyModelCustomPropertiesClassification

	// READ-ONLY; Gets or sets the provisioning state of the policy.
	ProvisioningState *ProvisioningState
}

// PrivateEndpoint - Represent private Endpoint network resource that is linked to the Private Endpoint connection.
type PrivateEndpoint struct {
	// Gets or sets the id.
	ID *string
}

// PrivateEndpointConnection - Represents private endpoint connection.
type PrivateEndpointConnection struct {
	// The resource-specific properties for this resource.
	Properties *PrivateEndpointConnectionResponseProperties

	// 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
}

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

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

// PrivateEndpointConnectionProxy - Represents private endpoint connection proxy request.
type PrivateEndpointConnectionProxy struct {
	// Gets or sets ETag.
	Etag *string

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

	// 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
}

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

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

// PrivateEndpointConnectionProxyProperties - Represents private endpoint connection proxy request.
type PrivateEndpointConnectionProxyProperties struct {
	// Represent remote private endpoint information for the private endpoint connection proxy.
	RemotePrivateEndpoint *RemotePrivateEndpoint

	// READ-ONLY; Gets or sets the provisioning state of the private endpoint connection proxy.
	ProvisioningState *ProvisioningState
}

// PrivateEndpointConnectionResponseProperties - Represents Private endpoint connection response properties.
type PrivateEndpointConnectionResponseProperties struct {
	// Represent private Endpoint network resource that is linked to the Private Endpoint connection.
	PrivateEndpoint *PrivateEndpoint

	// Represents Private link service connection state.
	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState

	// READ-ONLY; Gets or sets provisioning state of the private endpoint connection.
	ProvisioningState *ProvisioningState
}

// PrivateLinkResource - Represents private link resource.
type PrivateLinkResource struct {
	// The resource-specific properties for this resource.
	Properties *PrivateLinkResourceProperties

	// 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
}

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

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

// PrivateLinkResourceProperties - Represents private link resource properties.
type PrivateLinkResourceProperties struct {
	// Gets or sets the group id.
	GroupID *string

	// Gets or sets the required member. This translates to how many Private IPs should be created for each privately linkable
	// resource.
	RequiredMembers []*string

	// Gets or sets the private DNS zone names.
	RequiredZoneNames []*string

	// READ-ONLY; Gets or sets the provisioning state of the private link resource.
	ProvisioningState *ProvisioningState
}

// PrivateLinkServiceConnection - Represents of an NRP private link service connection.
type PrivateLinkServiceConnection struct {
	// Gets or sets group ids.
	GroupIDs []*string

	// Gets or sets private link service connection name.
	Name *string

	// Gets or sets the request message for the private link service connection.
	RequestMessage *string
}

// PrivateLinkServiceConnectionState - Represents Private link service connection state.
type PrivateLinkServiceConnectionState struct {
	// Gets or sets actions required.
	ActionsRequired *string

	// Gets or sets description.
	Description *string

	// Gets or sets the status.
	Status *PrivateEndpointConnectionStatus
}

// PrivateLinkServiceProxy - Represents NRP private link service proxy.
type PrivateLinkServiceProxy struct {
	// Gets or sets group connectivity information.
	GroupConnectivityInformation []*GroupConnectivityInformation

	// Gets or sets private link service proxy id.
	ID *string

	// Represent remote private endpoint connection.
	RemotePrivateEndpointConnection *RemotePrivateEndpointConnection

	// Represents Private link service connection state.
	RemotePrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState
}

// ProtectedItemDynamicMemoryConfig - Protected item dynamic memory config.
type ProtectedItemDynamicMemoryConfig struct {
	// REQUIRED; Gets or sets maximum memory in MB.
	MaximumMemoryInMegaBytes *int64

	// REQUIRED; Gets or sets minimum memory in MB.
	MinimumMemoryInMegaBytes *int64

	// REQUIRED; Gets or sets target memory buffer in %.
	TargetMemoryBufferPercentage *int32
}

// ProtectedItemJobProperties - Protected item job properties.
type ProtectedItemJobProperties struct {
	// READ-ONLY; Gets or sets the job friendly display name.
	DisplayName *string

	// READ-ONLY; Gets or sets end time of the job.
	EndTime *time.Time

	// READ-ONLY; Gets or sets job Id.
	ID *string

	// READ-ONLY; Gets or sets job name.
	Name *string

	// READ-ONLY; Gets or sets protection scenario name.
	ScenarioName *string

	// READ-ONLY; Gets or sets start time of the job.
	StartTime *time.Time

	// READ-ONLY; Gets or sets job state.
	State *string
}

// ProtectedItemModel - Protected item model.
type ProtectedItemModel struct {
	// The resource-specific properties for this resource.
	Properties *ProtectedItemModelProperties

	// 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
}

// ProtectedItemModelCustomProperties - Protected item model custom properties.
type ProtectedItemModelCustomProperties struct {
	// REQUIRED; Discriminator property for ProtectedItemModelCustomProperties.
	InstanceType *string
}

// GetProtectedItemModelCustomProperties implements the ProtectedItemModelCustomPropertiesClassification interface for type
// ProtectedItemModelCustomProperties.
func (p *ProtectedItemModelCustomProperties) GetProtectedItemModelCustomProperties() *ProtectedItemModelCustomProperties {
	return p
}

// ProtectedItemModelCustomPropertiesUpdate - Protected item model custom properties.
type ProtectedItemModelCustomPropertiesUpdate struct {
	// REQUIRED; Discriminator property for ProtectedItemModelCustomPropertiesUpdate.
	InstanceType *string
}

// GetProtectedItemModelCustomPropertiesUpdate implements the ProtectedItemModelCustomPropertiesUpdateClassification interface
// for type ProtectedItemModelCustomPropertiesUpdate.
func (p *ProtectedItemModelCustomPropertiesUpdate) GetProtectedItemModelCustomPropertiesUpdate() *ProtectedItemModelCustomPropertiesUpdate {
	return p
}

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

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

// ProtectedItemModelProperties - Protected item model properties.
type ProtectedItemModelProperties struct {
	// REQUIRED; Protected item model custom properties.
	CustomProperties ProtectedItemModelCustomPropertiesClassification

	// REQUIRED; Gets or sets the policy name.
	PolicyName *string

	// REQUIRED; Gets or sets the replication extension name.
	ReplicationExtensionName *string

	// READ-ONLY; Gets or sets the allowed scenarios on the protected item.
	AllowedJobs []*string

	// READ-ONLY; Gets or sets the protected item correlation Id.
	CorrelationID *string

	// READ-ONLY; Gets or sets the current scenario.
	CurrentJob *ProtectedItemJobProperties

	// READ-ONLY; Gets or sets the fabric agent Id.
	FabricAgentID *string

	// READ-ONLY; Gets or sets the fabric Id.
	FabricID *string

	// READ-ONLY; Gets or sets the fabric object Id.
	FabricObjectID *string

	// READ-ONLY; Gets or sets the fabric object name.
	FabricObjectName *string

	// READ-ONLY; Gets or sets the list of health errors.
	HealthErrors []*HealthErrorModel

	// READ-ONLY; Gets or sets the last failed enabled protection job.
	LastFailedEnableProtectionJob *ProtectedItemJobProperties

	// READ-ONLY; Gets or sets the last failed planned failover job.
	LastFailedPlannedFailoverJob *ProtectedItemJobProperties

	// READ-ONLY; Gets or sets the Last successful planned failover time.
	LastSuccessfulPlannedFailoverTime *time.Time

	// READ-ONLY; Gets or sets the Last successful test failover time.
	LastSuccessfulTestFailoverTime *time.Time

	// READ-ONLY; Gets or sets the Last successful unplanned failover time.
	LastSuccessfulUnplannedFailoverTime *time.Time

	// READ-ONLY; Gets or sets the last test failover job.
	LastTestFailoverJob *ProtectedItemJobProperties

	// READ-ONLY; Gets or sets the protection state.
	ProtectionState *ProtectionState

	// READ-ONLY; Gets or sets the protection state description.
	ProtectionStateDescription *string

	// READ-ONLY; Gets or sets the provisioning state of the fabric agent.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets or sets protected item replication health.
	ReplicationHealth *HealthStatus

	// READ-ONLY; Gets or sets a value indicating whether resynchronization is required or not.
	ResyncRequired *bool

	// READ-ONLY; Gets or sets the resynchronization state.
	ResynchronizationState *ResynchronizationState

	// READ-ONLY; Gets or sets the source fabric provider Id.
	SourceFabricProviderID *string

	// READ-ONLY; Gets or sets the target fabric agent Id.
	TargetFabricAgentID *string

	// READ-ONLY; Gets or sets the target fabric Id.
	TargetFabricID *string

	// READ-ONLY; Gets or sets the target fabric provider Id.
	TargetFabricProviderID *string

	// READ-ONLY; Gets or sets the test failover state.
	TestFailoverState *TestFailoverState

	// READ-ONLY; Gets or sets the Test failover state description.
	TestFailoverStateDescription *string
}

// ProtectedItemModelPropertiesUpdate - Protected item model properties update.
type ProtectedItemModelPropertiesUpdate struct {
	// Protected item model custom properties update.
	CustomProperties ProtectedItemModelCustomPropertiesUpdateClassification
}

// ProtectedItemModelUpdate - Protected item model update.
type ProtectedItemModelUpdate struct {
	// Protected item model properties.
	Properties *ProtectedItemModelPropertiesUpdate

	// READ-ONLY; Gets or sets the Id of the resource.
	ID *string

	// READ-ONLY; Gets or sets the name of the resource.
	Name *string

	// READ-ONLY; Metadata pertaining to creation and last modification of the resource.
	SystemData *SystemData

	// READ-ONLY; Gets or sets the type of the resource.
	Type *string
}

// RecoveryPointModel - Recovery point model.
type RecoveryPointModel struct {
	// The resource-specific properties for this resource.
	Properties *RecoveryPointModelProperties

	// 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
}

// RecoveryPointModelCustomProperties - Recovery point model custom properties.
type RecoveryPointModelCustomProperties struct {
	// REQUIRED; Discriminator property for RecoveryPointModelCustomProperties.
	InstanceType *string
}

// GetRecoveryPointModelCustomProperties implements the RecoveryPointModelCustomPropertiesClassification interface for type
// RecoveryPointModelCustomProperties.
func (r *RecoveryPointModelCustomProperties) GetRecoveryPointModelCustomProperties() *RecoveryPointModelCustomProperties {
	return r
}

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

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

// RecoveryPointModelProperties - Recovery point model properties.
type RecoveryPointModelProperties struct {
	// REQUIRED; Recovery point model custom properties.
	CustomProperties RecoveryPointModelCustomPropertiesClassification

	// REQUIRED; Gets or sets the recovery point time.
	RecoveryPointTime *time.Time

	// REQUIRED; Gets or sets the recovery point type.
	RecoveryPointType *RecoveryPointType

	// READ-ONLY; Gets or sets the provisioning state of the recovery point item.
	ProvisioningState *ProvisioningState
}

// RemotePrivateEndpoint - Represent remote private endpoint information for the private endpoint connection proxy.
type RemotePrivateEndpoint struct {
	// REQUIRED; Gets or sets private link service proxy id.
	ID *string

	// Gets or sets the list of Connection Details. This is the connection details for private endpoint.
	ConnectionDetails []*ConnectionDetails

	// Gets or sets the list of Manual Private Link Service Connections and gets populated for Manual approval flow.
	ManualPrivateLinkServiceConnections []*PrivateLinkServiceConnection

	// Gets or sets the list of Private Link Service Connections and gets populated for Auto approval flow.
	PrivateLinkServiceConnections []*PrivateLinkServiceConnection

	// Gets or sets the list of private link service proxies.
	PrivateLinkServiceProxies []*PrivateLinkServiceProxy
}

// RemotePrivateEndpointConnection - Represent remote private endpoint connection.
type RemotePrivateEndpointConnection struct {
	// Gets or sets the remote private endpoint connection id.
	ID *string
}

// ReplicationExtensionModel - Replication extension model.
type ReplicationExtensionModel struct {
	// The resource-specific properties for this resource.
	Properties *ReplicationExtensionModelProperties

	// 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
}

// ReplicationExtensionModelCustomProperties - Replication extension model custom properties.
type ReplicationExtensionModelCustomProperties struct {
	// REQUIRED; Discriminator property for ReplicationExtensionModelCustomProperties.
	InstanceType *string
}

// GetReplicationExtensionModelCustomProperties implements the ReplicationExtensionModelCustomPropertiesClassification interface
// for type ReplicationExtensionModelCustomProperties.
func (r *ReplicationExtensionModelCustomProperties) GetReplicationExtensionModelCustomProperties() *ReplicationExtensionModelCustomProperties {
	return r
}

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

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

// ReplicationExtensionModelProperties - Replication extension model properties.
type ReplicationExtensionModelProperties struct {
	// REQUIRED; Replication extension model custom properties.
	CustomProperties ReplicationExtensionModelCustomPropertiesClassification

	// READ-ONLY; Gets or sets the provisioning state of the replication extension.
	ProvisioningState *ProvisioningState
}

// StorageContainerProperties - Storage container properties.
type StorageContainerProperties struct {
	// REQUIRED; Gets or sets the ClusterSharedVolumePath.
	ClusterSharedVolumePath *string

	// REQUIRED; Gets or sets the Name.
	Name *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
}

// TaskModel - Task model.
type TaskModel struct {
	// Gets or sets the list of children job models.
	ChildrenJobs []*JobModel

	// Task model custom properties.
	CustomProperties *TaskModelCustomProperties

	// READ-ONLY; Gets or sets the end time.
	EndTime *time.Time

	// READ-ONLY; Gets or sets the start time.
	StartTime *time.Time

	// READ-ONLY; Gets or sets the task state.
	State *TaskState

	// READ-ONLY; Gets or sets the task name.
	TaskName *string
}

// TaskModelCustomProperties - Task model custom properties.
type TaskModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string
}

// TestFailoverCleanupJobModelCustomProperties - Test failover cleanup job model custom properties.
type TestFailoverCleanupJobModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string

	// READ-ONLY; Gets or sets any custom properties of the affected object.
	AffectedObjectDetails *AffectedObjectDetails

	// READ-ONLY; Gets or sets the test failover cleanup comments.
	Comments *string
}

// GetJobModelCustomProperties implements the JobModelCustomPropertiesClassification interface for type TestFailoverCleanupJobModelCustomProperties.
func (t *TestFailoverCleanupJobModelCustomProperties) GetJobModelCustomProperties() *JobModelCustomProperties {
	return &JobModelCustomProperties{
		AffectedObjectDetails: t.AffectedObjectDetails,
		InstanceType:          t.InstanceType,
	}
}

// TestFailoverJobModelCustomProperties - Test failover job model custom properties.
type TestFailoverJobModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string

	// READ-ONLY; Gets or sets any custom properties of the affected object.
	AffectedObjectDetails *AffectedObjectDetails

	// READ-ONLY; Gets or sets the test VM details.
	ProtectedItemDetails []*FailoverProtectedItemProperties
}

// GetJobModelCustomProperties implements the JobModelCustomPropertiesClassification interface for type TestFailoverJobModelCustomProperties.
func (t *TestFailoverJobModelCustomProperties) GetJobModelCustomProperties() *JobModelCustomProperties {
	return &JobModelCustomProperties{
		AffectedObjectDetails: t.AffectedObjectDetails,
		InstanceType:          t.InstanceType,
	}
}

// UserAssignedIdentity - User assigned identity properties
type UserAssignedIdentity struct {
	// READ-ONLY; The client ID of the assigned identity.
	ClientID *string

	// READ-ONLY; The principal ID of the assigned identity.
	PrincipalID *string
}

// VMwareFabricAgentModelCustomProperties - VMware fabric agent model custom properties.
type VMwareFabricAgentModelCustomProperties struct {
	// REQUIRED; Gets or sets the BIOS Id of the fabric agent machine.
	BiosID *string

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "VMware", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Identity model.
	MarsAuthenticationIdentity *IdentityModel
}

// GetFabricAgentModelCustomProperties implements the FabricAgentModelCustomPropertiesClassification interface for type VMwareFabricAgentModelCustomProperties.
func (v *VMwareFabricAgentModelCustomProperties) GetFabricAgentModelCustomProperties() *FabricAgentModelCustomProperties {
	return &FabricAgentModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VMwareMigrateFabricModelCustomProperties - VMware migrate fabric model custom properties.
type VMwareMigrateFabricModelCustomProperties struct {
	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "VMwareMigrate", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the ARM Id of the migration solution.
	MigrationSolutionID *string

	// REQUIRED; Gets or sets the ARM Id of the VMware site.
	VmwareSiteID *string
}

// GetFabricModelCustomProperties implements the FabricModelCustomPropertiesClassification interface for type VMwareMigrateFabricModelCustomProperties.
func (v *VMwareMigrateFabricModelCustomProperties) GetFabricModelCustomProperties() *FabricModelCustomProperties {
	return &FabricModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VMwareToAzStackHCIDiskInput - VMwareToAzStack disk input.
type VMwareToAzStackHCIDiskInput struct {
	// REQUIRED; Gets or sets the type of the virtual hard disk, vhd or vhdx.
	DiskFileFormat *string

	// REQUIRED; Gets or sets the disk Id.
	DiskID *string

	// REQUIRED; Gets or sets the disk size in GB.
	DiskSizeGB *int64

	// REQUIRED; Gets or sets a value indicating whether disk is os disk.
	IsOsDisk *bool

	// Gets or sets a value of disk block size.
	DiskBlockSize *int64

	// Disk controller.
	DiskController *DiskControllerInputs

	// Gets or sets a value of disk identifier.
	DiskIdentifier *string

	// Gets or sets a value of disk logical sector size.
	DiskLogicalSectorSize *int64

	// Gets or sets a value of disk physical sector size.
	DiskPhysicalSectorSize *int64

	// Gets or sets a value indicating whether dynamic sizing is enabled on the virtual hard disk.
	IsDynamic *bool

	// Gets or sets the target storage account ARM Id.
	StorageContainerID *string
}

// VMwareToAzStackHCIEventModelCustomProperties - VMware to AzStackHCI event model custom properties. This class provides
// provider specific details for events of type DataContract.HealthEvents.HealthEventType.ProtectedItemHealth and DataContract.HealthEvents.HealthEventType.AgentHealth.
type VMwareToAzStackHCIEventModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string

	// READ-ONLY; Gets or sets the friendly name of the source which has raised this health event.
	EventSourceFriendlyName *string

	// READ-ONLY; Gets or sets the protected item friendly name.
	ProtectedItemFriendlyName *string

	// READ-ONLY; Gets or sets the server type.
	ServerType *string

	// READ-ONLY; Gets or sets the source appliance name.
	SourceApplianceName *string

	// READ-ONLY; Gets or sets the source target name.
	TargetApplianceName *string
}

// GetEventModelCustomProperties implements the EventModelCustomPropertiesClassification interface for type VMwareToAzStackHCIEventModelCustomProperties.
func (v *VMwareToAzStackHCIEventModelCustomProperties) GetEventModelCustomProperties() *EventModelCustomProperties {
	return &EventModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VMwareToAzStackHCINicInput - VMwareToAzStackHCI NIC properties.
type VMwareToAzStackHCINicInput struct {
	// REQUIRED; Gets or sets the NIC label.
	Label *string

	// REQUIRED; Gets or sets the NIC Id.
	NicID *string

	// REQUIRED; Gets or sets the selection type of the NIC.
	SelectionTypeForFailover *VMNicSelection

	// Gets or sets a value indicating whether mac address migration is enabled.
	IsMacMigrationEnabled *bool

	// Gets or sets a value indicating whether static ip migration is enabled.
	IsStaticIPMigrationEnabled *bool

	// Gets or sets the target network Id within AzStackHCI Cluster.
	TargetNetworkID *string

	// Gets or sets the target test network Id within AzStackHCI Cluster.
	TestNetworkID *string

	// READ-ONLY; Gets or sets the network name.
	NetworkName *string
}

// VMwareToAzStackHCIPlannedFailoverModelCustomProperties - VMware to AzStackHCI planned failover model custom properties.
type VMwareToAzStackHCIPlannedFailoverModelCustomProperties struct {
	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "VMwareToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets a value indicating whether VM needs to be shut down.
	ShutdownSourceVM *bool
}

// GetPlannedFailoverModelCustomProperties implements the PlannedFailoverModelCustomPropertiesClassification interface for
// type VMwareToAzStackHCIPlannedFailoverModelCustomProperties.
func (v *VMwareToAzStackHCIPlannedFailoverModelCustomProperties) GetPlannedFailoverModelCustomProperties() *PlannedFailoverModelCustomProperties {
	return &PlannedFailoverModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VMwareToAzStackHCIPolicyModelCustomProperties - VMware To AzStackHCI Policy model custom properties.
type VMwareToAzStackHCIPolicyModelCustomProperties struct {
	// REQUIRED; Gets or sets the app consistent snapshot frequency (in minutes).
	AppConsistentFrequencyInMinutes *int32

	// REQUIRED; Gets or sets the crash consistent snapshot frequency (in minutes).
	CrashConsistentFrequencyInMinutes *int32

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "VMwareToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the duration in minutes until which the recovery points need to be stored.
	RecoveryPointHistoryInMinutes *int32
}

// GetPolicyModelCustomProperties implements the PolicyModelCustomPropertiesClassification interface for type VMwareToAzStackHCIPolicyModelCustomProperties.
func (v *VMwareToAzStackHCIPolicyModelCustomProperties) GetPolicyModelCustomProperties() *PolicyModelCustomProperties {
	return &PolicyModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VMwareToAzStackHCIProtectedDiskProperties - VMwareToAzStackHCI protected disk properties.
type VMwareToAzStackHCIProtectedDiskProperties struct {
	// READ-ONLY; Gets or sets the disk capacity in bytes.
	CapacityInBytes *int64

	// READ-ONLY; Gets or sets a value of disk block size.
	DiskBlockSize *int64

	// READ-ONLY; Gets or sets a value of disk logical sector size.
	DiskLogicalSectorSize *int64

	// READ-ONLY; Gets or sets a value of disk physical sector size.
	DiskPhysicalSectorSize *int64

	// READ-ONLY; Gets or sets the disk type.
	DiskType *string

	// READ-ONLY; Gets or sets a value indicating whether dynamic sizing is enabled on the virtual hard disk.
	IsDynamic *bool

	// READ-ONLY; Gets or sets a value indicating whether the disk is the OS disk.
	IsOsDisk *bool

	// READ-ONLY; Gets or sets the failover clone disk.
	MigrateDiskName *string

	// READ-ONLY; Gets or sets the seed disk name.
	SeedDiskName *string

	// READ-ONLY; Gets or sets the source disk Id.
	SourceDiskID *string

	// READ-ONLY; Gets or sets the source disk Name.
	SourceDiskName *string

	// READ-ONLY; Gets or sets the ARM Id of the storage container.
	StorageContainerID *string

	// READ-ONLY; Gets or sets the local path of the storage container.
	StorageContainerLocalPath *string

	// READ-ONLY; Gets or sets the test failover clone disk.
	TestMigrateDiskName *string
}

// VMwareToAzStackHCIProtectedItemModelCustomProperties - VMware to AzStackHCI Protected item model custom properties.
type VMwareToAzStackHCIProtectedItemModelCustomProperties struct {
	// REQUIRED; Gets or sets the location of Azure Arc HCI custom location resource.
	CustomLocationRegion *string

	// REQUIRED; Gets or sets the list of disks to replicate.
	DisksToInclude []*VMwareToAzStackHCIDiskInput

	// REQUIRED; Gets or sets the ARM Id of the discovered machine.
	FabricDiscoveryMachineID *string

	// REQUIRED; Gets or sets the hypervisor generation of the virtual machine possible values are 1,2.
	HyperVGeneration *string

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "VMwareToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the list of VM NIC to replicate.
	NicsToInclude []*VMwareToAzStackHCINicInput

	// REQUIRED; Gets or sets the run as account Id.
	RunAsAccountID *string

	// REQUIRED; Gets or sets the source fabric agent name.
	SourceFabricAgentName *string

	// REQUIRED; Gets or sets the target storage container ARM Id.
	StorageContainerID *string

	// REQUIRED; Gets or sets the Target Arc Cluster Custom Location ARM Id.
	TargetArcClusterCustomLocationID *string

	// REQUIRED; Gets or sets the target fabric agent name.
	TargetFabricAgentName *string

	// REQUIRED; Gets or sets the Target HCI Cluster ARM Id.
	TargetHciClusterID *string

	// REQUIRED; Gets or sets the target resource group ARM Id.
	TargetResourceGroupID *string

	// Protected item dynamic memory config.
	DynamicMemoryConfig *ProtectedItemDynamicMemoryConfig

	// Gets or sets a value indicating whether memory is dynamical.
	IsDynamicRAM *bool

	// Gets or sets a value indicating whether auto resync is to be done.
	PerformAutoResync *bool

	// Gets or sets the target CPU cores.
	TargetCPUCores *int32

	// Gets or sets the target memory in mega-bytes.
	TargetMemoryInMegaBytes *int32

	// Gets or sets the target network Id within AzStackHCI Cluster.
	TargetNetworkID *string

	// Gets or sets the target VM display name.
	TargetVMName *string

	// Gets or sets the target test network Id within AzStackHCI Cluster.
	TestNetworkID *string

	// READ-ONLY; Gets or sets the location of the protected item.
	ActiveLocation *ProtectedItemActiveLocation

	// READ-ONLY; Gets or sets the recovery point Id to which the VM was failed over.
	FailoverRecoveryPointID *string

	// READ-ONLY; Gets or sets the firmware type.
	FirmwareType *string

	// READ-ONLY; Gets or sets the initial replication progress percentage. This is calculated based on total bytes processed
	// for all disks in the source VM.
	InitialReplicationProgressPercentage *int32

	// READ-ONLY; Gets or sets the last recovery point Id.
	LastRecoveryPointID *string

	// READ-ONLY; Gets or sets the last recovery point received time.
	LastRecoveryPointReceived *time.Time

	// READ-ONLY; Gets or sets the latest timestamp that replication status is updated.
	LastReplicationUpdateTime *time.Time

	// READ-ONLY; Gets or sets the migration progress percentage.
	MigrationProgressPercentage *int32

	// READ-ONLY; Gets or sets the name of the OS.
	OSName *string

	// READ-ONLY; Gets or sets the type of the OS.
	OSType *string

	// READ-ONLY; Gets or sets the list of protected disks.
	ProtectedDisks []*VMwareToAzStackHCIProtectedDiskProperties

	// READ-ONLY; Gets or sets the VM NIC details.
	ProtectedNics []*VMwareToAzStackHCIProtectedNicProperties

	// READ-ONLY; Gets or sets the resume progress percentage.
	ResumeProgressPercentage *int32

	// READ-ONLY; Gets or sets the resume retry count.
	ResumeRetryCount *int64

	// READ-ONLY; Gets or sets the resync progress percentage. This is calculated based on total bytes processed for all disks
	// in the source VM.
	ResyncProgressPercentage *int32

	// READ-ONLY; Gets or sets a value indicating whether resync is required.
	ResyncRequired *bool

	// READ-ONLY; Gets or sets the resync retry count.
	ResyncRetryCount *int64

	// READ-ONLY; Gets or sets the resync state.
	ResyncState *VMwareToAzureMigrateResyncState

	// READ-ONLY; Gets or sets the source appliance name.
	SourceApplianceName *string

	// READ-ONLY; Gets or sets the source VM CPU cores.
	SourceCPUCores *int32

	// READ-ONLY; Gets or sets the source VM ram memory size in megabytes.
	SourceMemoryInMegaBytes *float64

	// READ-ONLY; Gets or sets the source VM display name.
	SourceVMName *string

	// READ-ONLY; Gets or sets the target appliance name.
	TargetApplianceName *string

	// READ-ONLY; Gets or sets the Target AzStackHCI cluster name.
	TargetAzStackHciClusterName *string

	// READ-ONLY; Gets or sets the target location.
	TargetLocation *string

	// READ-ONLY; Gets or sets the BIOS Id of the target AzStackHCI VM.
	TargetVMBiosID *string
}

// GetProtectedItemModelCustomProperties implements the ProtectedItemModelCustomPropertiesClassification interface for type
// VMwareToAzStackHCIProtectedItemModelCustomProperties.
func (v *VMwareToAzStackHCIProtectedItemModelCustomProperties) GetProtectedItemModelCustomProperties() *ProtectedItemModelCustomProperties {
	return &ProtectedItemModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VMwareToAzStackHCIProtectedItemModelCustomPropertiesUpdate - VMware to AzStackHCI Protected item model custom properties.
type VMwareToAzStackHCIProtectedItemModelCustomPropertiesUpdate struct {
	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "VMwareToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// Protected item dynamic memory config.
	DynamicMemoryConfig *ProtectedItemDynamicMemoryConfig

	// Gets or sets a value indicating whether memory is dynamical.
	IsDynamicRAM *bool

	// Gets or sets the list of VM NIC to replicate.
	NicsToInclude []*VMwareToAzStackHCINicInput

	// Gets or sets the type of the OS.
	OSType *string

	// Gets or sets the target CPU cores.
	TargetCPUCores *int32

	// Gets or sets the target memory in mega-bytes.
	TargetMemoryInMegaBytes *int32
}

// GetProtectedItemModelCustomPropertiesUpdate implements the ProtectedItemModelCustomPropertiesUpdateClassification interface
// for type VMwareToAzStackHCIProtectedItemModelCustomPropertiesUpdate.
func (v *VMwareToAzStackHCIProtectedItemModelCustomPropertiesUpdate) GetProtectedItemModelCustomPropertiesUpdate() *ProtectedItemModelCustomPropertiesUpdate {
	return &ProtectedItemModelCustomPropertiesUpdate{
		InstanceType: v.InstanceType,
	}
}

// VMwareToAzStackHCIProtectedNicProperties - VMwareToAzStackHCI NIC properties.
type VMwareToAzStackHCIProtectedNicProperties struct {
	// Gets or sets a value indicating whether this is the primary NIC.
	IsPrimaryNic *bool

	// READ-ONLY; Gets or sets the NIC label.
	Label *string

	// READ-ONLY; Gets or sets the NIC mac address.
	MacAddress *string

	// READ-ONLY; Gets or sets the network name.
	NetworkName *string

	// READ-ONLY; Gets or sets the NIC Id.
	NicID *string

	// READ-ONLY; Gets or sets the selection type of the NIC.
	SelectionTypeForFailover *VMNicSelection

	// READ-ONLY; Gets or sets the target network Id within AzStackHCI Cluster.
	TargetNetworkID *string

	// READ-ONLY; Gets or sets the target test network Id within AzStackHCI Cluster.
	TestNetworkID *string
}

// VMwareToAzStackHCIRecoveryPointModelCustomProperties - VMware to AzStackHCI recovery point model custom properties.
type VMwareToAzStackHCIRecoveryPointModelCustomProperties struct {
	// REQUIRED; Gets or sets the instance type.
	InstanceType *string

	// READ-ONLY; Gets or sets the list of the disk Ids.
	DiskIDs []*string
}

// GetRecoveryPointModelCustomProperties implements the RecoveryPointModelCustomPropertiesClassification interface for type
// VMwareToAzStackHCIRecoveryPointModelCustomProperties.
func (v *VMwareToAzStackHCIRecoveryPointModelCustomProperties) GetRecoveryPointModelCustomProperties() *RecoveryPointModelCustomProperties {
	return &RecoveryPointModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VMwareToAzStackHCIReplicationExtensionModelCustomProperties - VMware to AzStackHCI Replication extension model custom properties.
type VMwareToAzStackHCIReplicationExtensionModelCustomProperties struct {
	// REQUIRED; Gets or sets the ARM Id of the target AzStackHCI fabric.
	AzStackHciFabricArmID *string

	// CONSTANT; Gets or sets the instance type.
	// Field has constant value "VMwareToAzStackHCI", any specified value is ignored.
	InstanceType *string

	// REQUIRED; Gets or sets the ARM Id of the source VMware fabric.
	VmwareFabricArmID *string

	// Gets or sets the storage account Id.
	StorageAccountID *string

	// Gets or sets the Sas Secret of storage account.
	StorageAccountSasSecretName *string

	// READ-ONLY; Gets or sets the Uri of ASR.
	AsrServiceURI *string

	// READ-ONLY; Gets or sets the ARM Id of the AzStackHCI site.
	AzStackHciSiteID *string

	// READ-ONLY; Gets or sets the Uri of Gateway.
	GatewayServiceURI *string

	// READ-ONLY; Gets or sets the Uri of Rcm.
	RcmServiceURI *string

	// READ-ONLY; Gets or sets the resource group.
	ResourceGroup *string

	// READ-ONLY; Gets or sets the resource location.
	ResourceLocation *string

	// READ-ONLY; Gets or sets the gateway service Id of source.
	SourceGatewayServiceID *string

	// READ-ONLY; Gets or sets the source storage container name.
	SourceStorageContainerName *string

	// READ-ONLY; Gets or sets the subscription.
	SubscriptionID *string

	// READ-ONLY; Gets or sets the gateway service Id of target.
	TargetGatewayServiceID *string

	// READ-ONLY; Gets or sets the target storage container name.
	TargetStorageContainerName *string

	// READ-ONLY; Gets or sets the ARM Id of the VMware site.
	VmwareSiteID *string
}

// GetReplicationExtensionModelCustomProperties implements the ReplicationExtensionModelCustomPropertiesClassification interface
// for type VMwareToAzStackHCIReplicationExtensionModelCustomProperties.
func (v *VMwareToAzStackHCIReplicationExtensionModelCustomProperties) GetReplicationExtensionModelCustomProperties() *ReplicationExtensionModelCustomProperties {
	return &ReplicationExtensionModelCustomProperties{
		InstanceType: v.InstanceType,
	}
}

// VaultIdentityModel - Vault model.
type VaultIdentityModel struct {
	// REQUIRED; Gets or sets the identityType which can be either SystemAssigned or None.
	Type *VaultIdentityType

	// READ-ONLY; Gets or sets the object ID of the service principal object for the managed identity that is used to grant role-based
	// access to an Azure resource.
	PrincipalID *string

	// READ-ONLY; Gets or sets a Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now
	// a member.
	TenantID *string
}

// VaultModel - Vault model.
type VaultModel struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The managed service identities assigned to this resource.
	Identity *ManagedServiceIdentity

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

	// 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
}

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

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

// VaultModelProperties - Vault properties.
type VaultModelProperties struct {
	// Gets or sets the type of vault.
	VaultType *ReplicationVaultType

	// READ-ONLY; Gets or sets the provisioning state of the vault.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets or sets the service resource Id.
	ServiceResourceID *string
}

// VaultModelUpdate - Vault model update.
type VaultModelUpdate struct {
	// Vault identity.
	Identity *VaultIdentityModel

	// Vault properties.
	Properties *VaultModelProperties

	// Gets or sets the resource tags.
	Tags map[string]*string

	// READ-ONLY; Gets or sets the Id of the resource.
	ID *string

	// READ-ONLY; Gets or sets the name of the resource.
	Name *string

	// READ-ONLY; Metadata pertaining to creation and last modification of the resource.
	SystemData *SystemData

	// READ-ONLY; Gets or sets the type of the resource.
	Type *string
}
