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

// Virtual Network resource.
type VirtualNetwork_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 virtual network.
	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: Properties of the virtual network.
	Properties *VirtualNetworkPropertiesFormat_STATUS `json:"properties,omitempty"`

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

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

// Properties of the virtual network.
type VirtualNetworkPropertiesFormat_STATUS struct {
	// AddressSpace: The AddressSpace that contains an array of IP address ranges that can be used by subnets.
	AddressSpace *AddressSpace_STATUS `json:"addressSpace,omitempty"`

	// BgpCommunities: Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET.
	BgpCommunities *VirtualNetworkBgpCommunities_STATUS `json:"bgpCommunities,omitempty"`

	// DdosProtectionPlan: The DDoS protection plan associated with the virtual network.
	DdosProtectionPlan *SubResource_STATUS `json:"ddosProtectionPlan,omitempty"`

	// DhcpOptions: The dhcpOptions that contains an array of DNS servers available to VMs deployed in the virtual network.
	DhcpOptions *DhcpOptions_STATUS `json:"dhcpOptions,omitempty"`

	// EnableDdosProtection: Indicates if DDoS protection is enabled for all the protected resources in the virtual network. It
	// requires a DDoS protection plan associated with the resource.
	EnableDdosProtection *bool `json:"enableDdosProtection,omitempty"`

	// EnableVmProtection: Indicates if VM protection is enabled for all the subnets in the virtual network.
	EnableVmProtection *bool `json:"enableVmProtection,omitempty"`

	// Encryption: Indicates if encryption is enabled on virtual network and if VM without encryption is allowed in encrypted
	// VNet.
	Encryption *VirtualNetworkEncryption_STATUS `json:"encryption,omitempty"`

	// FlowLogs: A collection of references to flow log resources.
	FlowLogs []FlowLog_STATUS_SubResourceEmbedded `json:"flowLogs,omitempty"`

	// FlowTimeoutInMinutes: The FlowTimeout value (in minutes) for the Virtual Network
	FlowTimeoutInMinutes *int `json:"flowTimeoutInMinutes,omitempty"`

	// IpAllocations: Array of IpAllocation which reference this VNET.
	IpAllocations []SubResource_STATUS `json:"ipAllocations,omitempty"`

	// PrivateEndpointVNetPolicies: Private Endpoint VNet Policies.
	PrivateEndpointVNetPolicies *PrivateEndpointVNetPolicies_STATUS `json:"privateEndpointVNetPolicies,omitempty"`

	// ProvisioningState: The provisioning state of the virtual network resource.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// ResourceGuid: The resourceGuid property of the Virtual Network resource.
	ResourceGuid *string `json:"resourceGuid,omitempty"`
}

// DhcpOptions contains an array of DNS servers available to VMs deployed in the virtual network. Standard DHCP option for
// a subnet overrides VNET DHCP options.
type DhcpOptions_STATUS struct {
	// DnsServers: The list of DNS servers IP addresses.
	DnsServers []string `json:"dnsServers,omitempty"`
}

// A flow log resource.
type FlowLog_STATUS_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Private Endpoint VNet Policies.
type PrivateEndpointVNetPolicies_STATUS string

const (
	PrivateEndpointVNetPolicies_STATUS_Basic    = PrivateEndpointVNetPolicies_STATUS("Basic")
	PrivateEndpointVNetPolicies_STATUS_Disabled = PrivateEndpointVNetPolicies_STATUS("Disabled")
)

// Mapping from string to PrivateEndpointVNetPolicies_STATUS
var privateEndpointVNetPolicies_STATUS_Values = map[string]PrivateEndpointVNetPolicies_STATUS{
	"basic":    PrivateEndpointVNetPolicies_STATUS_Basic,
	"disabled": PrivateEndpointVNetPolicies_STATUS_Disabled,
}

// Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET.
type VirtualNetworkBgpCommunities_STATUS struct {
	// RegionalCommunity: The BGP community associated with the region of the virtual network.
	RegionalCommunity *string `json:"regionalCommunity,omitempty"`

	// VirtualNetworkCommunity: The BGP community associated with the virtual network.
	VirtualNetworkCommunity *string `json:"virtualNetworkCommunity,omitempty"`
}

// Indicates if encryption is enabled on virtual network and if VM without encryption is allowed in encrypted VNet.
type VirtualNetworkEncryption_STATUS struct {
	// Enabled: Indicates if encryption is enabled on the virtual network.
	Enabled *bool `json:"enabled,omitempty"`

	// Enforcement: If the encrypted VNet allows VM that does not support encryption. This field is for future support,
	// AllowUnencrypted is the only supported value at general availability.
	Enforcement *VirtualNetworkEncryption_Enforcement_STATUS `json:"enforcement,omitempty"`
}

type VirtualNetworkEncryption_Enforcement_STATUS string

const (
	VirtualNetworkEncryption_Enforcement_STATUS_AllowUnencrypted = VirtualNetworkEncryption_Enforcement_STATUS("AllowUnencrypted")
	VirtualNetworkEncryption_Enforcement_STATUS_DropUnencrypted  = VirtualNetworkEncryption_Enforcement_STATUS("DropUnencrypted")
)

// Mapping from string to VirtualNetworkEncryption_Enforcement_STATUS
var virtualNetworkEncryption_Enforcement_STATUS_Values = map[string]VirtualNetworkEncryption_Enforcement_STATUS{
	"allowunencrypted": VirtualNetworkEncryption_Enforcement_STATUS_AllowUnencrypted,
	"dropunencrypted":  VirtualNetworkEncryption_Enforcement_STATUS_DropUnencrypted,
}
