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

// Azure Firewall resource.
type AzureFirewall_STATUS struct {
	// Etag: A unique read-only string that changes whenever the resource is updated.
	Etag *string `json:"etag,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 azure firewall.
	Properties *AzureFirewallPropertiesFormat_STATUS `json:"properties,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 where the resource needs to come from.
	Zones []string `json:"zones,omitempty"`
}

// Properties of the Azure Firewall.
type AzureFirewallPropertiesFormat_STATUS struct {
	// AdditionalProperties: The additional properties used to further config this azure firewall.
	AdditionalProperties map[string]string `json:"additionalProperties,omitempty"`

	// ApplicationRuleCollections: Collection of application rule collections used by Azure Firewall.
	ApplicationRuleCollections []AzureFirewallApplicationRuleCollection_STATUS `json:"applicationRuleCollections,omitempty"`

	// AutoscaleConfiguration: Properties to provide a custom autoscale configuration to this azure firewall.
	AutoscaleConfiguration *AzureFirewallAutoscaleConfiguration_STATUS `json:"autoscaleConfiguration,omitempty"`

	// FirewallPolicy: The firewallPolicy associated with this azure firewall.
	FirewallPolicy *SubResource_STATUS `json:"firewallPolicy,omitempty"`

	// HubIPAddresses: IP addresses associated with AzureFirewall.
	HubIPAddresses *HubIPAddresses_STATUS `json:"hubIPAddresses,omitempty"`

	// IpConfigurations: IP configuration of the Azure Firewall resource.
	IpConfigurations []AzureFirewallIPConfiguration_STATUS `json:"ipConfigurations,omitempty"`

	// IpGroups: IpGroups associated with AzureFirewall.
	IpGroups []AzureFirewallIpGroups_STATUS `json:"ipGroups,omitempty"`

	// ManagementIpConfiguration: IP configuration of the Azure Firewall used for management traffic.
	ManagementIpConfiguration *AzureFirewallIPConfiguration_STATUS `json:"managementIpConfiguration,omitempty"`

	// NatRuleCollections: Collection of NAT rule collections used by Azure Firewall.
	NatRuleCollections []AzureFirewallNatRuleCollection_STATUS `json:"natRuleCollections,omitempty"`

	// NetworkRuleCollections: Collection of network rule collections used by Azure Firewall.
	NetworkRuleCollections []AzureFirewallNetworkRuleCollection_STATUS `json:"networkRuleCollections,omitempty"`

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

	// Sku: The Azure Firewall Resource SKU.
	Sku *AzureFirewallSku_STATUS `json:"sku,omitempty"`

	// ThreatIntelMode: The operation mode for Threat Intelligence.
	ThreatIntelMode *AzureFirewallThreatIntelMode_STATUS `json:"threatIntelMode,omitempty"`

	// VirtualHub: The virtualHub to which the firewall belongs.
	VirtualHub *SubResource_STATUS `json:"virtualHub,omitempty"`
}

// Application rule collection resource.
type AzureFirewallApplicationRuleCollection_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Azure Firewall Autoscale Configuration parameters.
type AzureFirewallAutoscaleConfiguration_STATUS struct {
	// MaxCapacity: The maximum number of capacity units for this azure firewall. Use null to reset the value to the service
	// default.
	MaxCapacity *int `json:"maxCapacity,omitempty"`

	// MinCapacity: The minimum number of capacity units for this azure firewall. Use null to reset the value to the service
	// default.
	MinCapacity *int `json:"minCapacity,omitempty"`
}

// IP configuration of an Azure Firewall.
type AzureFirewallIPConfiguration_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// IpGroups associated with azure firewall.
type AzureFirewallIpGroups_STATUS struct {
	// ChangeNumber: The iteration number.
	ChangeNumber *string `json:"changeNumber,omitempty"`

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

// NAT rule collection resource.
type AzureFirewallNatRuleCollection_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Network rule collection resource.
type AzureFirewallNetworkRuleCollection_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// SKU of an Azure Firewall.
type AzureFirewallSku_STATUS struct {
	// Name: Name of an Azure Firewall SKU.
	Name *AzureFirewallSku_Name_STATUS `json:"name,omitempty"`

	// Tier: Tier of an Azure Firewall.
	Tier *AzureFirewallSku_Tier_STATUS `json:"tier,omitempty"`
}

// The operation mode for Threat Intel.
type AzureFirewallThreatIntelMode_STATUS string

const (
	AzureFirewallThreatIntelMode_STATUS_Alert = AzureFirewallThreatIntelMode_STATUS("Alert")
	AzureFirewallThreatIntelMode_STATUS_Deny  = AzureFirewallThreatIntelMode_STATUS("Deny")
	AzureFirewallThreatIntelMode_STATUS_Off   = AzureFirewallThreatIntelMode_STATUS("Off")
)

// Mapping from string to AzureFirewallThreatIntelMode_STATUS
var azureFirewallThreatIntelMode_STATUS_Values = map[string]AzureFirewallThreatIntelMode_STATUS{
	"alert": AzureFirewallThreatIntelMode_STATUS_Alert,
	"deny":  AzureFirewallThreatIntelMode_STATUS_Deny,
	"off":   AzureFirewallThreatIntelMode_STATUS_Off,
}

// IP addresses associated with azure firewall.
type HubIPAddresses_STATUS struct {
	// PrivateIPAddress: Private IP Address associated with azure firewall.
	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`

	// PublicIPs: Public IP addresses associated with azure firewall.
	PublicIPs *HubPublicIPAddresses_STATUS `json:"publicIPs,omitempty"`
}

// The current provisioning state.
type ProvisioningState_STATUS string

const (
	ProvisioningState_STATUS_Deleting  = ProvisioningState_STATUS("Deleting")
	ProvisioningState_STATUS_Failed    = ProvisioningState_STATUS("Failed")
	ProvisioningState_STATUS_Succeeded = ProvisioningState_STATUS("Succeeded")
	ProvisioningState_STATUS_Updating  = ProvisioningState_STATUS("Updating")
)

// Mapping from string to ProvisioningState_STATUS
var provisioningState_STATUS_Values = map[string]ProvisioningState_STATUS{
	"deleting":  ProvisioningState_STATUS_Deleting,
	"failed":    ProvisioningState_STATUS_Failed,
	"succeeded": ProvisioningState_STATUS_Succeeded,
	"updating":  ProvisioningState_STATUS_Updating,
}

// Reference to another subresource.
type SubResource_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

type AzureFirewallSku_Name_STATUS string

const (
	AzureFirewallSku_Name_STATUS_AZFW_Hub  = AzureFirewallSku_Name_STATUS("AZFW_Hub")
	AzureFirewallSku_Name_STATUS_AZFW_VNet = AzureFirewallSku_Name_STATUS("AZFW_VNet")
)

// Mapping from string to AzureFirewallSku_Name_STATUS
var azureFirewallSku_Name_STATUS_Values = map[string]AzureFirewallSku_Name_STATUS{
	"azfw_hub":  AzureFirewallSku_Name_STATUS_AZFW_Hub,
	"azfw_vnet": AzureFirewallSku_Name_STATUS_AZFW_VNet,
}

type AzureFirewallSku_Tier_STATUS string

const (
	AzureFirewallSku_Tier_STATUS_Basic    = AzureFirewallSku_Tier_STATUS("Basic")
	AzureFirewallSku_Tier_STATUS_Premium  = AzureFirewallSku_Tier_STATUS("Premium")
	AzureFirewallSku_Tier_STATUS_Standard = AzureFirewallSku_Tier_STATUS("Standard")
)

// Mapping from string to AzureFirewallSku_Tier_STATUS
var azureFirewallSku_Tier_STATUS_Values = map[string]AzureFirewallSku_Tier_STATUS{
	"basic":    AzureFirewallSku_Tier_STATUS_Basic,
	"premium":  AzureFirewallSku_Tier_STATUS_Premium,
	"standard": AzureFirewallSku_Tier_STATUS_Standard,
}

// Public IP addresses associated with azure firewall.
type HubPublicIPAddresses_STATUS struct {
	// Addresses: The list of Public IP addresses associated with azure firewall or IP addresses to be retained.
	Addresses []AzureFirewallPublicIPAddress_STATUS `json:"addresses,omitempty"`

	// Count: The number of Public IP addresses associated with azure firewall.
	Count *int `json:"count,omitempty"`
}

// Public IP Address associated with azure firewall.
type AzureFirewallPublicIPAddress_STATUS struct {
	// Address: Public IP Address value.
	Address *string `json:"address,omitempty"`
}
