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

import "github.com/Azure/azure-service-operator/v2/pkg/genruntime"

type DnsZone_Spec struct {
	// Location: Resource location.
	Location *string `json:"location,omitempty"`
	Name     string  `json:"name,omitempty"`

	// Properties: The properties of the zone.
	Properties *ZoneProperties `json:"properties,omitempty"`

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

var _ genruntime.ARMResourceSpec = &DnsZone_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2018-05-01"
func (zone DnsZone_Spec) GetAPIVersion() string {
	return "2018-05-01"
}

// GetName returns the Name of the resource
func (zone *DnsZone_Spec) GetName() string {
	return zone.Name
}

// GetType returns the ARM Type of the resource. This is always "Microsoft.Network/dnsZones"
func (zone *DnsZone_Spec) GetType() string {
	return "Microsoft.Network/dnsZones"
}

// Represents the properties of the zone.
type ZoneProperties struct {
	// RegistrationVirtualNetworks: A list of references to virtual networks that register hostnames in this DNS zone. This is
	// a only when ZoneType is Private.
	RegistrationVirtualNetworks []SubResource `json:"registrationVirtualNetworks,omitempty"`

	// ResolutionVirtualNetworks: A list of references to virtual networks that resolve records in this DNS zone. This is a
	// only when ZoneType is Private.
	ResolutionVirtualNetworks []SubResource `json:"resolutionVirtualNetworks,omitempty"`

	// ZoneType: The type of this DNS zone (Public or Private).
	ZoneType *ZoneProperties_ZoneType `json:"zoneType,omitempty"`
}

// A reference to a another resource
type SubResource struct {
	// Id: Resource Id.
	Id *string `json:"id,omitempty"`
}

// +kubebuilder:validation:Enum={"Private","Public"}
type ZoneProperties_ZoneType string

const (
	ZoneProperties_ZoneType_Private = ZoneProperties_ZoneType("Private")
	ZoneProperties_ZoneType_Public  = ZoneProperties_ZoneType("Public")
)

// Mapping from string to ZoneProperties_ZoneType
var zoneProperties_ZoneType_Values = map[string]ZoneProperties_ZoneType{
	"private": ZoneProperties_ZoneType_Private,
	"public":  ZoneProperties_ZoneType_Public,
}
