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

// Public IP prefix resource.
type PublicIPPrefix_STATUS struct {
	// Etag: A unique read-only string that changes whenever the resource is updated.
	Etag *string `json:"etag,omitempty"`

	// ExtendedLocation: The extended location of the public ip address.
	ExtendedLocation *ExtendedLocation_STATUS `json:"extendedLocation,omitempty"`

	// Id: Resource ID.
	Id *string `json:"id,omitempty"`

	// Location: Resource location.
	Location *string `json:"location,omitempty"`

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

	// Properties: Public IP prefix properties.
	Properties *PublicIPPrefixPropertiesFormat_STATUS `json:"properties,omitempty"`

	// Sku: The public IP prefix SKU.
	Sku *PublicIPPrefixSku_STATUS `json:"sku,omitempty"`

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

	// Type: Resource type.
	Type *string `json:"type,omitempty"`

	// Zones: A list of availability zones denoting the IP allocated for the resource needs to come from.
	Zones []string `json:"zones,omitempty"`
}

// Public IP prefix properties.
type PublicIPPrefixPropertiesFormat_STATUS struct {
	// CustomIPPrefix: The customIpPrefix that this prefix is associated with.
	CustomIPPrefix *SubResource_STATUS `json:"customIPPrefix,omitempty"`

	// IpPrefix: The allocated Prefix.
	IpPrefix *string `json:"ipPrefix,omitempty"`

	// IpTags: The list of tags associated with the public IP prefix.
	IpTags []IpTag_STATUS `json:"ipTags,omitempty"`

	// LoadBalancerFrontendIpConfiguration: The reference to load balancer frontend IP configuration associated with the public
	// IP prefix.
	LoadBalancerFrontendIpConfiguration *SubResource_STATUS `json:"loadBalancerFrontendIpConfiguration,omitempty"`

	// NatGateway: NatGateway of Public IP Prefix.
	NatGateway *NatGateway_STATUS_PublicIPPrefix_SubResourceEmbedded `json:"natGateway,omitempty"`

	// PrefixLength: The Length of the Public IP Prefix.
	PrefixLength *int `json:"prefixLength,omitempty"`

	// ProvisioningState: The provisioning state of the public IP prefix resource.
	ProvisioningState *PublicIpPrefixProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// PublicIPAddressVersion: The public IP address version.
	PublicIPAddressVersion *IPVersion_STATUS `json:"publicIPAddressVersion,omitempty"`

	// PublicIPAddresses: The list of all referenced PublicIPAddresses.
	PublicIPAddresses []ReferencedPublicIpAddress_STATUS `json:"publicIPAddresses,omitempty"`

	// ResourceGuid: The resource GUID property of the public IP prefix resource.
	ResourceGuid *string `json:"resourceGuid,omitempty"`
}

// SKU of a public IP prefix.
type PublicIPPrefixSku_STATUS struct {
	// Name: Name of a public IP prefix SKU.
	Name *PublicIPPrefixSku_Name_STATUS `json:"name,omitempty"`

	// Tier: Tier of a public IP prefix SKU.
	Tier *PublicIPPrefixSku_Tier_STATUS `json:"tier,omitempty"`
}

// Contains the IpTag associated with the object.
type IpTag_STATUS struct {
	// IpTagType: The IP tag type. Example: FirstPartyUsage.
	IpTagType *string `json:"ipTagType,omitempty"`

	// Tag: The value of the IP tag associated with the public IP. Example: SQL.
	Tag *string `json:"tag,omitempty"`
}

// IP address version.
type IPVersion_STATUS string

const (
	IPVersion_STATUS_IPv4 = IPVersion_STATUS("IPv4")
	IPVersion_STATUS_IPv6 = IPVersion_STATUS("IPv6")
)

// Mapping from string to IPVersion_STATUS
var iPVersion_STATUS_Values = map[string]IPVersion_STATUS{
	"ipv4": IPVersion_STATUS_IPv4,
	"ipv6": IPVersion_STATUS_IPv6,
}

// Nat Gateway resource.
type NatGateway_STATUS_PublicIPPrefix_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// The current provisioning state.
type PublicIpPrefixProvisioningState_STATUS string

const (
	PublicIpPrefixProvisioningState_STATUS_Deleting  = PublicIpPrefixProvisioningState_STATUS("Deleting")
	PublicIpPrefixProvisioningState_STATUS_Failed    = PublicIpPrefixProvisioningState_STATUS("Failed")
	PublicIpPrefixProvisioningState_STATUS_Succeeded = PublicIpPrefixProvisioningState_STATUS("Succeeded")
	PublicIpPrefixProvisioningState_STATUS_Updating  = PublicIpPrefixProvisioningState_STATUS("Updating")
)

// Mapping from string to PublicIpPrefixProvisioningState_STATUS
var publicIpPrefixProvisioningState_STATUS_Values = map[string]PublicIpPrefixProvisioningState_STATUS{
	"deleting":  PublicIpPrefixProvisioningState_STATUS_Deleting,
	"failed":    PublicIpPrefixProvisioningState_STATUS_Failed,
	"succeeded": PublicIpPrefixProvisioningState_STATUS_Succeeded,
	"updating":  PublicIpPrefixProvisioningState_STATUS_Updating,
}

type PublicIPPrefixSku_Name_STATUS string

const PublicIPPrefixSku_Name_STATUS_Standard = PublicIPPrefixSku_Name_STATUS("Standard")

// Mapping from string to PublicIPPrefixSku_Name_STATUS
var publicIPPrefixSku_Name_STATUS_Values = map[string]PublicIPPrefixSku_Name_STATUS{
	"standard": PublicIPPrefixSku_Name_STATUS_Standard,
}

type PublicIPPrefixSku_Tier_STATUS string

const (
	PublicIPPrefixSku_Tier_STATUS_Global   = PublicIPPrefixSku_Tier_STATUS("Global")
	PublicIPPrefixSku_Tier_STATUS_Regional = PublicIPPrefixSku_Tier_STATUS("Regional")
)

// Mapping from string to PublicIPPrefixSku_Tier_STATUS
var publicIPPrefixSku_Tier_STATUS_Values = map[string]PublicIPPrefixSku_Tier_STATUS{
	"global":   PublicIPPrefixSku_Tier_STATUS_Global,
	"regional": PublicIPPrefixSku_Tier_STATUS_Regional,
}

// Reference to a public IP address.
type ReferencedPublicIpAddress_STATUS struct {
	// Id: The PublicIPAddress Reference.
	Id *string `json:"id,omitempty"`
}
