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

// NetworkSecurityGroup resource.
type NetworkSecurityGroup_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 network security group.
	Properties *NetworkSecurityGroupPropertiesFormat_STATUS `json:"properties,omitempty"`

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

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

// Network Security Group resource.
type NetworkSecurityGroupPropertiesFormat_STATUS struct {
	// DefaultSecurityRules: The default security rules of network security group.
	DefaultSecurityRules []SecurityRule_STATUS `json:"defaultSecurityRules,omitempty"`

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

	// FlushConnection: When enabled, flows created from Network Security Group connections will be re-evaluated when rules are
	// updates. Initial enablement will trigger re-evaluation.
	FlushConnection *bool `json:"flushConnection,omitempty"`

	// NetworkInterfaces: A collection of references to network interfaces.
	NetworkInterfaces []NetworkInterface_STATUS_NetworkSecurityGroup_SubResourceEmbedded `json:"networkInterfaces,omitempty"`

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

	// ResourceGuid: The resource GUID property of the network security group resource.
	ResourceGuid *string `json:"resourceGuid,omitempty"`

	// Subnets: A collection of references to subnets.
	Subnets []Subnet_STATUS_NetworkSecurityGroup_SubResourceEmbedded `json:"subnets,omitempty"`
}

// A flow log resource.
type FlowLog_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"`

	// Identity: FlowLog resource Managed Identity
	Identity *ManagedServiceIdentity_STATUS `json:"identity,omitempty"`

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

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

	// Properties: Properties of the flow log.
	Properties *FlowLogPropertiesFormat_STATUS `json:"properties,omitempty"`

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

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

// A network interface in a resource group.
type NetworkInterface_STATUS_NetworkSecurityGroup_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

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

// Subnet in a virtual network resource.
type Subnet_STATUS_NetworkSecurityGroup_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Parameters that define the configuration of flow log.
type FlowLogPropertiesFormat_STATUS struct {
	// Enabled: Flag to enable/disable flow logging.
	Enabled *bool `json:"enabled,omitempty"`

	// EnabledFilteringCriteria: Optional field to filter network traffic logs based on SrcIP, SrcPort, DstIP, DstPort,
	// Protocol, Encryption, Direction and Action. If not specified, all network traffic will be logged.
	EnabledFilteringCriteria *string `json:"enabledFilteringCriteria,omitempty"`

	// FlowAnalyticsConfiguration: Parameters that define the configuration of traffic analytics.
	FlowAnalyticsConfiguration *TrafficAnalyticsProperties_STATUS `json:"flowAnalyticsConfiguration,omitempty"`

	// Format: Parameters that define the flow log format.
	Format *FlowLogFormatParameters_STATUS `json:"format,omitempty"`

	// ProvisioningState: The provisioning state of the flow log.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// RetentionPolicy: Parameters that define the retention policy for flow log.
	RetentionPolicy *RetentionPolicyParameters_STATUS `json:"retentionPolicy,omitempty"`

	// StorageId: ID of the storage account which is used to store the flow log.
	StorageId *string `json:"storageId,omitempty"`

	// TargetResourceGuid: Guid of network security group to which flow log will be applied.
	TargetResourceGuid *string `json:"targetResourceGuid,omitempty"`

	// TargetResourceId: ID of network security group to which flow log will be applied.
	TargetResourceId *string `json:"targetResourceId,omitempty"`
}

// Parameters that define the flow log format.
type FlowLogFormatParameters_STATUS struct {
	// Type: The file type of flow log.
	Type *FlowLogFormatParameters_Type_STATUS `json:"type,omitempty"`

	// Version: The version (revision) of the flow log.
	Version *int `json:"version,omitempty"`
}

// Parameters that define the retention policy for flow log.
type RetentionPolicyParameters_STATUS struct {
	// Days: Number of days to retain flow log records.
	Days *int `json:"days,omitempty"`

	// Enabled: Flag to enable/disable retention.
	Enabled *bool `json:"enabled,omitempty"`
}

// Parameters that define the configuration of traffic analytics.
type TrafficAnalyticsProperties_STATUS struct {
	// NetworkWatcherFlowAnalyticsConfiguration: Parameters that define the configuration of traffic analytics.
	NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties_STATUS `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"`
}

type FlowLogFormatParameters_Type_STATUS string

const FlowLogFormatParameters_Type_STATUS_JSON = FlowLogFormatParameters_Type_STATUS("JSON")

// Mapping from string to FlowLogFormatParameters_Type_STATUS
var flowLogFormatParameters_Type_STATUS_Values = map[string]FlowLogFormatParameters_Type_STATUS{
	"json": FlowLogFormatParameters_Type_STATUS_JSON,
}

// Parameters that define the configuration of traffic analytics.
type TrafficAnalyticsConfigurationProperties_STATUS struct {
	// Enabled: Flag to enable/disable traffic analytics.
	Enabled *bool `json:"enabled,omitempty"`

	// TrafficAnalyticsInterval: The interval in minutes which would decide how frequently TA service should do flow analytics.
	TrafficAnalyticsInterval *int `json:"trafficAnalyticsInterval,omitempty"`

	// WorkspaceId: The resource guid of the attached workspace.
	WorkspaceId *string `json:"workspaceId,omitempty"`

	// WorkspaceRegion: The location of the attached workspace.
	WorkspaceRegion *string `json:"workspaceRegion,omitempty"`

	// WorkspaceResourceId: Resource Id of the attached workspace.
	WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"`
}
