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

import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"

// The Fleet resource.
type Fleet_STATUS struct {
	// ETag: If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.
	// Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in
	// the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header
	// fields.
	ETag *string `json:"eTag,omitempty"`

	// Id: Fully qualified resource ID for the resource. E.g.
	// "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	Id *string `json:"id,omitempty"`

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

	// Location: The geo-location where the resource lives
	Location *string `json:"location,omitempty"`

	// Name: The name of the resource
	Name *string `json:"name,omitempty"`

	// Properties: The resource-specific properties for this resource.
	Properties *FleetProperties_STATUS `json:"properties,omitempty"`

	// SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

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

	// Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string `json:"type,omitempty"`
}

// Fleet properties.
type FleetProperties_STATUS struct {
	// HubProfile: The FleetHubProfile configures the Fleet's hub.
	HubProfile *FleetHubProfile_STATUS `json:"hubProfile,omitempty"`

	// ProvisioningState: The status of the last operation.
	ProvisioningState *FleetProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// Status: Status information for the fleet.
	Status *FleetStatus_STATUS `json:"status,omitempty"`
}

// Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity_STATUS struct {
	// PrincipalId: The service principal ID of the system assigned identity. This property will only be provided for a system
	// assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: The tenant ID of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	TenantId *string `json:"tenantId,omitempty"`

	// Type: Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
	Type                   *ManagedServiceIdentityType_STATUS           `json:"type,omitempty"`
	UserAssignedIdentities map[string]CommonUserAssignedIdentity_STATUS `json:"userAssignedIdentities"`
}

// Metadata pertaining to creation and last modification of the resource.
type SystemData_STATUS struct {
	// CreatedAt: The timestamp of resource creation (UTC).
	CreatedAt *string `json:"createdAt,omitempty"`

	// CreatedBy: The identity that created the resource.
	CreatedBy *string `json:"createdBy,omitempty"`

	// CreatedByType: The type of identity that created the resource.
	CreatedByType *SystemData_CreatedByType_STATUS `json:"createdByType,omitempty"`

	// LastModifiedAt: The timestamp of resource last modification (UTC)
	LastModifiedAt *string `json:"lastModifiedAt,omitempty"`

	// LastModifiedBy: The identity that last modified the resource.
	LastModifiedBy *string `json:"lastModifiedBy,omitempty"`

	// LastModifiedByType: The type of identity that last modified the resource.
	LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"`
}

// User assigned identity properties
type CommonUserAssignedIdentity_STATUS struct {
	// ClientId: The client ID of the assigned identity.
	ClientId *string `json:"clientId,omitempty"`

	// PrincipalId: The principal ID of the assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`
}

// The FleetHubProfile configures the fleet hub.
type FleetHubProfile_STATUS struct {
	// AgentProfile: The agent profile for the Fleet hub.
	AgentProfile *AgentProfile_STATUS `json:"agentProfile,omitempty"`

	// ApiServerAccessProfile: The access profile for the Fleet hub API server.
	ApiServerAccessProfile *APIServerAccessProfile_STATUS `json:"apiServerAccessProfile,omitempty"`

	// DnsPrefix: DNS prefix used to create the FQDN for the Fleet hub.
	DnsPrefix *string `json:"dnsPrefix,omitempty"`

	// Fqdn: The FQDN of the Fleet hub.
	Fqdn *string `json:"fqdn,omitempty"`

	// KubernetesVersion: The Kubernetes version of the Fleet hub.
	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`

	// PortalFqdn: The Azure Portal FQDN of the Fleet hub.
	PortalFqdn *string `json:"portalFqdn,omitempty"`
}

// The provisioning state of the last accepted operation.
type FleetProvisioningState_STATUS string

const (
	FleetProvisioningState_STATUS_Canceled  = FleetProvisioningState_STATUS("Canceled")
	FleetProvisioningState_STATUS_Creating  = FleetProvisioningState_STATUS("Creating")
	FleetProvisioningState_STATUS_Deleting  = FleetProvisioningState_STATUS("Deleting")
	FleetProvisioningState_STATUS_Failed    = FleetProvisioningState_STATUS("Failed")
	FleetProvisioningState_STATUS_Succeeded = FleetProvisioningState_STATUS("Succeeded")
	FleetProvisioningState_STATUS_Updating  = FleetProvisioningState_STATUS("Updating")
)

// Mapping from string to FleetProvisioningState_STATUS
var fleetProvisioningState_STATUS_Values = map[string]FleetProvisioningState_STATUS{
	"canceled":  FleetProvisioningState_STATUS_Canceled,
	"creating":  FleetProvisioningState_STATUS_Creating,
	"deleting":  FleetProvisioningState_STATUS_Deleting,
	"failed":    FleetProvisioningState_STATUS_Failed,
	"succeeded": FleetProvisioningState_STATUS_Succeeded,
	"updating":  FleetProvisioningState_STATUS_Updating,
}

// Status information for the fleet.
type FleetStatus_STATUS struct {
	// LastOperationError: The last operation error for the fleet.
	LastOperationError *ErrorDetail_STATUS `json:"lastOperationError,omitempty"`

	// LastOperationId: The last operation ID for the fleet.
	LastOperationId *string `json:"lastOperationId,omitempty"`
}

// Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
type ManagedServiceIdentityType_STATUS string

const (
	ManagedServiceIdentityType_STATUS_None                       = ManagedServiceIdentityType_STATUS("None")
	ManagedServiceIdentityType_STATUS_SystemAssigned             = ManagedServiceIdentityType_STATUS("SystemAssigned")
	ManagedServiceIdentityType_STATUS_SystemAssignedUserAssigned = ManagedServiceIdentityType_STATUS("SystemAssigned, UserAssigned")
	ManagedServiceIdentityType_STATUS_UserAssigned               = ManagedServiceIdentityType_STATUS("UserAssigned")
)

// Mapping from string to ManagedServiceIdentityType_STATUS
var managedServiceIdentityType_STATUS_Values = map[string]ManagedServiceIdentityType_STATUS{
	"none":                         ManagedServiceIdentityType_STATUS_None,
	"systemassigned":               ManagedServiceIdentityType_STATUS_SystemAssigned,
	"systemassigned, userassigned": ManagedServiceIdentityType_STATUS_SystemAssignedUserAssigned,
	"userassigned":                 ManagedServiceIdentityType_STATUS_UserAssigned,
}

type SystemData_CreatedByType_STATUS string

const (
	SystemData_CreatedByType_STATUS_Application     = SystemData_CreatedByType_STATUS("Application")
	SystemData_CreatedByType_STATUS_Key             = SystemData_CreatedByType_STATUS("Key")
	SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity")
	SystemData_CreatedByType_STATUS_User            = SystemData_CreatedByType_STATUS("User")
)

// Mapping from string to SystemData_CreatedByType_STATUS
var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{
	"application":     SystemData_CreatedByType_STATUS_Application,
	"key":             SystemData_CreatedByType_STATUS_Key,
	"managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity,
	"user":            SystemData_CreatedByType_STATUS_User,
}

type SystemData_LastModifiedByType_STATUS string

const (
	SystemData_LastModifiedByType_STATUS_Application     = SystemData_LastModifiedByType_STATUS("Application")
	SystemData_LastModifiedByType_STATUS_Key             = SystemData_LastModifiedByType_STATUS("Key")
	SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity")
	SystemData_LastModifiedByType_STATUS_User            = SystemData_LastModifiedByType_STATUS("User")
)

// Mapping from string to SystemData_LastModifiedByType_STATUS
var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{
	"application":     SystemData_LastModifiedByType_STATUS_Application,
	"key":             SystemData_LastModifiedByType_STATUS_Key,
	"managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity,
	"user":            SystemData_LastModifiedByType_STATUS_User,
}

// Agent profile for the Fleet hub.
type AgentProfile_STATUS struct {
	// SubnetId: The ID of the subnet which the Fleet hub node will join on startup. If this is not specified, a vnet and
	// subnet will be generated and used.
	SubnetId *string `json:"subnetId,omitempty"`

	// VmSize: The virtual machine size of the Fleet hub.
	VmSize *string `json:"vmSize,omitempty"`
}

// Access profile for the Fleet hub API server.
type APIServerAccessProfile_STATUS struct {
	// EnablePrivateCluster: Whether to create the Fleet hub as a private cluster or not.
	EnablePrivateCluster *bool `json:"enablePrivateCluster,omitempty"`

	// EnableVnetIntegration: Whether to enable apiserver vnet integration for the Fleet hub or not.
	EnableVnetIntegration *bool `json:"enableVnetIntegration,omitempty"`

	// SubnetId: The subnet to be used when apiserver vnet integration is enabled. It is required when creating a new Fleet
	// with BYO vnet.
	SubnetId *string `json:"subnetId,omitempty"`
}

// The error detail.
type ErrorDetail_STATUS struct {
	// AdditionalInfo: The error additional info.
	AdditionalInfo []ErrorAdditionalInfo_STATUS `json:"additionalInfo"`

	// Code: The error code.
	Code *string `json:"code,omitempty"`

	// Details: The error details.
	Details []ErrorDetail_STATUS_Unrolled `json:"details"`

	// Message: The error message.
	Message *string `json:"message,omitempty"`

	// Target: The error target.
	Target *string `json:"target,omitempty"`
}

// The resource management error additional info.
type ErrorAdditionalInfo_STATUS struct {
	// Info: The additional info.
	Info map[string]v1.JSON `json:"info"`

	// Type: The additional info type.
	Type *string `json:"type,omitempty"`
}

type ErrorDetail_STATUS_Unrolled struct {
	// AdditionalInfo: The error additional info.
	AdditionalInfo []ErrorAdditionalInfo_STATUS `json:"additionalInfo"`

	// Code: The error code.
	Code *string `json:"code,omitempty"`

	// Message: The error message.
	Message *string `json:"message,omitempty"`

	// Target: The error target.
	Target *string `json:"target,omitempty"`
}
