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

// The Flux Configuration object returned in Get & Put response.
type FluxConfiguration_STATUS struct {
	// Id: Fully qualified resource ID for the resource. Ex -
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	Id *string `json:"id,omitempty"`

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

	// Properties: Properties to create a Flux Configuration resource
	Properties *FluxConfiguration_Properties_STATUS `json:"properties,omitempty"`

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

type FluxConfiguration_Properties_STATUS struct {
	// AzureBlob: Parameters to reconcile to the AzureBlob source kind type.
	AzureBlob *AzureBlobDefinition_STATUS `json:"azureBlob,omitempty"`

	// Bucket: Parameters to reconcile to the Bucket source kind type.
	Bucket *BucketDefinition_STATUS `json:"bucket,omitempty"`

	// ComplianceState: Combined status of the Flux Kubernetes resources created by the fluxConfiguration or created by the
	// managed objects.
	ComplianceState *FluxComplianceStateDefinition_STATUS `json:"complianceState,omitempty"`

	// ConfigurationProtectedSettings: Key-value pairs of protected configuration settings for the configuration
	ConfigurationProtectedSettings map[string]string `json:"configurationProtectedSettings,omitempty"`

	// ErrorMessage: Error message returned to the user in the case of provisioning failure.
	ErrorMessage *string `json:"errorMessage,omitempty"`

	// GitRepository: Parameters to reconcile to the GitRepository source kind type.
	GitRepository *GitRepositoryDefinition_STATUS `json:"gitRepository,omitempty"`

	// Kustomizations: Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster.
	Kustomizations map[string]KustomizationDefinition_STATUS `json:"kustomizations,omitempty"`

	// Namespace: The namespace to which this configuration is installed to. Maximum of 253 lower case alphanumeric characters,
	// hyphen and period only.
	Namespace *string `json:"namespace,omitempty"`

	// OciRepository: Parameters to reconcile to the OCIRepository source kind type.
	OciRepository *OCIRepositoryDefinition_STATUS `json:"ociRepository,omitempty"`

	// ReconciliationWaitDuration: Maximum duration to wait for flux configuration reconciliation. E.g PT1H, PT5M, P1D
	ReconciliationWaitDuration *string `json:"reconciliationWaitDuration,omitempty"`

	// RepositoryPublicKey: Public Key associated with this fluxConfiguration (either generated within the cluster or provided
	// by the user).
	RepositoryPublicKey *string `json:"repositoryPublicKey,omitempty"`

	// Scope: Scope at which the operator will be installed.
	Scope *ScopeDefinition_STATUS `json:"scope,omitempty"`

	// SourceKind: Source Kind to pull the configuration data from.
	SourceKind *SourceKindDefinition_STATUS `json:"sourceKind,omitempty"`

	// SourceSyncedCommitId: Branch and/or SHA of the source commit synced with the cluster.
	SourceSyncedCommitId *string `json:"sourceSyncedCommitId,omitempty"`

	// SourceUpdatedAt: Datetime the fluxConfiguration synced its source on the cluster.
	SourceUpdatedAt *string `json:"sourceUpdatedAt,omitempty"`

	// StatusUpdatedAt: Datetime the fluxConfiguration synced its status on the cluster with Azure.
	StatusUpdatedAt *string `json:"statusUpdatedAt,omitempty"`

	// Statuses: Statuses of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects
	// provisioned by the fluxConfiguration.
	Statuses []ObjectStatusDefinition_STATUS `json:"statuses,omitempty"`

	// Suspend: Whether this configuration should suspend its reconciliation of its kustomizations and sources.
	Suspend *bool `json:"suspend,omitempty"`

	// WaitForReconciliation: Whether flux configuration deployment should wait for cluster to reconcile the kustomizations.
	WaitForReconciliation *bool `json:"waitForReconciliation,omitempty"`
}

// Parameters to reconcile to the AzureBlob source kind type.
type AzureBlobDefinition_STATUS struct {
	// ContainerName: The Azure Blob container name to sync from the url endpoint for the flux configuration.
	ContainerName *string `json:"containerName,omitempty"`

	// LocalAuthRef: Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the
	// managed or user-provided configuration secrets.
	LocalAuthRef *string `json:"localAuthRef,omitempty"`

	// ManagedIdentity: Parameters to authenticate using a Managed Identity.
	ManagedIdentity *ManagedIdentityDefinition_STATUS `json:"managedIdentity,omitempty"`

	// ServicePrincipal: Parameters to authenticate using Service Principal.
	ServicePrincipal *ServicePrincipalDefinition_STATUS `json:"servicePrincipal,omitempty"`

	// SyncIntervalInSeconds: The interval at which to re-reconcile the cluster Azure Blob source with the remote.
	SyncIntervalInSeconds *int `json:"syncIntervalInSeconds,omitempty"`

	// TimeoutInSeconds: The maximum time to attempt to reconcile the cluster Azure Blob source with the remote.
	TimeoutInSeconds *int `json:"timeoutInSeconds,omitempty"`

	// Url: The URL to sync for the flux configuration Azure Blob storage account.
	Url *string `json:"url,omitempty"`
}

// Parameters to reconcile to the Bucket source kind type.
type BucketDefinition_STATUS struct {
	// BucketName: The bucket name to sync from the url endpoint for the flux configuration.
	BucketName *string `json:"bucketName,omitempty"`

	// Insecure: Specify whether to use insecure communication when puling data from the S3 bucket.
	Insecure *bool `json:"insecure,omitempty"`

	// LocalAuthRef: Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the
	// managed or user-provided configuration secrets.
	LocalAuthRef *string `json:"localAuthRef,omitempty"`

	// SyncIntervalInSeconds: The interval at which to re-reconcile the cluster bucket source with the remote.
	SyncIntervalInSeconds *int `json:"syncIntervalInSeconds,omitempty"`

	// TimeoutInSeconds: The maximum time to attempt to reconcile the cluster bucket source with the remote.
	TimeoutInSeconds *int `json:"timeoutInSeconds,omitempty"`

	// Url: The URL to sync for the flux configuration S3 bucket.
	Url *string `json:"url,omitempty"`
}

// Compliance state of the cluster object.
type FluxComplianceStateDefinition_STATUS string

const (
	FluxComplianceStateDefinition_STATUS_Compliant    = FluxComplianceStateDefinition_STATUS("Compliant")
	FluxComplianceStateDefinition_STATUS_NonCompliant = FluxComplianceStateDefinition_STATUS("Non-Compliant")
	FluxComplianceStateDefinition_STATUS_Pending      = FluxComplianceStateDefinition_STATUS("Pending")
	FluxComplianceStateDefinition_STATUS_Suspended    = FluxComplianceStateDefinition_STATUS("Suspended")
	FluxComplianceStateDefinition_STATUS_Unknown      = FluxComplianceStateDefinition_STATUS("Unknown")
)

// Mapping from string to FluxComplianceStateDefinition_STATUS
var fluxComplianceStateDefinition_STATUS_Values = map[string]FluxComplianceStateDefinition_STATUS{
	"compliant":     FluxComplianceStateDefinition_STATUS_Compliant,
	"non-compliant": FluxComplianceStateDefinition_STATUS_NonCompliant,
	"pending":       FluxComplianceStateDefinition_STATUS_Pending,
	"suspended":     FluxComplianceStateDefinition_STATUS_Suspended,
	"unknown":       FluxComplianceStateDefinition_STATUS_Unknown,
}

// Parameters to reconcile to the GitRepository source kind type.
type GitRepositoryDefinition_STATUS struct {
	// HttpsUser: Plaintext HTTPS username used to access private git repositories over HTTPS
	HttpsUser *string `json:"httpsUser,omitempty"`

	// LocalAuthRef: Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the
	// managed or user-provided configuration secrets.
	LocalAuthRef *string `json:"localAuthRef,omitempty"`

	// Provider: Name of the provider used for authentication.
	Provider *GitRepositoryDefinition_Provider_STATUS `json:"provider,omitempty"`

	// RepositoryRef: The source reference for the GitRepository object.
	RepositoryRef *RepositoryRefDefinition_STATUS `json:"repositoryRef,omitempty"`

	// SshKnownHosts: Base64-encoded known_hosts value containing public SSH keys required to access private git repositories
	// over SSH
	SshKnownHosts *string `json:"sshKnownHosts,omitempty"`

	// SyncIntervalInSeconds: The interval at which to re-reconcile the cluster git repository source with the remote.
	SyncIntervalInSeconds *int `json:"syncIntervalInSeconds,omitempty"`

	// TimeoutInSeconds: The maximum time to attempt to reconcile the cluster git repository source with the remote.
	TimeoutInSeconds *int `json:"timeoutInSeconds,omitempty"`

	// Url: The URL to sync for the flux configuration git repository.
	Url *string `json:"url,omitempty"`
}

// The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster.
type KustomizationDefinition_STATUS struct {
	// DependsOn: Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile
	// until all dependencies have completed their reconciliation.
	DependsOn []string `json:"dependsOn,omitempty"`

	// Force: Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field
	// change.
	Force *bool `json:"force,omitempty"`

	// Name: Name of the Kustomization, matching the key in the Kustomizations object map.
	Name *string `json:"name,omitempty"`

	// Path: The path in the source reference to reconcile on the cluster.
	Path *string `json:"path,omitempty"`

	// PostBuild: Used for variable substitution for this Kustomization after kustomize build.
	PostBuild *PostBuildDefinition_STATUS `json:"postBuild,omitempty"`

	// Prune: Enable/disable garbage collections of Kubernetes objects created by this Kustomization.
	Prune *bool `json:"prune,omitempty"`

	// RetryIntervalInSeconds: The interval at which to re-reconcile the Kustomization on the cluster in the event of failure
	// on reconciliation.
	RetryIntervalInSeconds *int `json:"retryIntervalInSeconds,omitempty"`

	// SyncIntervalInSeconds: The interval at which to re-reconcile the Kustomization on the cluster.
	SyncIntervalInSeconds *int `json:"syncIntervalInSeconds,omitempty"`

	// TimeoutInSeconds: The maximum time to attempt to reconcile the Kustomization on the cluster.
	TimeoutInSeconds *int `json:"timeoutInSeconds,omitempty"`

	// Wait: Enable/disable health check for all Kubernetes objects created by this Kustomization.
	Wait *bool `json:"wait,omitempty"`
}

// Statuses of objects deployed by the user-specified kustomizations from the git repository.
type ObjectStatusDefinition_STATUS struct {
	// AppliedBy: Object reference to the Kustomization that applied this object
	AppliedBy *ObjectReferenceDefinition_STATUS `json:"appliedBy,omitempty"`

	// ComplianceState: Compliance state of the applied object showing whether the applied object has come into a ready state
	// on the cluster.
	ComplianceState *FluxComplianceStateDefinition_STATUS `json:"complianceState,omitempty"`

	// HelmReleaseProperties: Additional properties that are provided from objects of the HelmRelease kind
	HelmReleaseProperties *HelmReleasePropertiesDefinition_STATUS `json:"helmReleaseProperties,omitempty"`

	// Kind: Kind of the applied object
	Kind *string `json:"kind,omitempty"`

	// Name: Name of the applied object
	Name *string `json:"name,omitempty"`

	// Namespace: Namespace of the applied object
	Namespace *string `json:"namespace,omitempty"`

	// StatusConditions: List of Kubernetes object status conditions present on the cluster
	StatusConditions []ObjectStatusConditionDefinition_STATUS `json:"statusConditions,omitempty"`
}

// Parameters to reconcile to the OCIRepository source kind type.
type OCIRepositoryDefinition_STATUS struct {
	// Insecure: Specify whether to allow connecting to a non-TLS HTTP container registry.
	Insecure *bool `json:"insecure,omitempty"`

	// LayerSelector: The layer to be pulled from the OCI artifact.
	LayerSelector *LayerSelectorDefinition_STATUS `json:"layerSelector,omitempty"`

	// LocalAuthRef: Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the
	// managed or user-provided configuration secrets.
	LocalAuthRef *string `json:"localAuthRef,omitempty"`

	// RepositoryRef: The source reference for the OCIRepository object.
	RepositoryRef *OCIRepositoryRefDefinition_STATUS `json:"repositoryRef,omitempty"`

	// ServiceAccountName: The service account name to authenticate with the OCI repository.
	ServiceAccountName *string `json:"serviceAccountName,omitempty"`

	// SyncIntervalInSeconds: The interval at which to re-reconcile the cluster OCI repository source with the remote.
	SyncIntervalInSeconds *int `json:"syncIntervalInSeconds,omitempty"`

	// TimeoutInSeconds: The maximum time to attempt to reconcile the cluster OCI repository source with the remote.
	TimeoutInSeconds *int `json:"timeoutInSeconds,omitempty"`

	// TlsConfig: Parameters to authenticate using TLS config for OCI repository.
	TlsConfig *TlsConfigDefinition_STATUS `json:"tlsConfig,omitempty"`

	// Url: The URL to sync for the flux configuration OCI repository.
	Url *string `json:"url,omitempty"`

	// UseWorkloadIdentity: Specifies whether to use Workload Identity to authenticate with the OCI repository.
	UseWorkloadIdentity *bool `json:"useWorkloadIdentity,omitempty"`

	// Verify: Verification of the authenticity of an OCI Artifact.
	Verify *VerifyDefinition_STATUS `json:"verify,omitempty"`
}

// Scope at which the configuration will be installed.
type ScopeDefinition_STATUS string

const (
	ScopeDefinition_STATUS_Cluster   = ScopeDefinition_STATUS("cluster")
	ScopeDefinition_STATUS_Namespace = ScopeDefinition_STATUS("namespace")
)

// Mapping from string to ScopeDefinition_STATUS
var scopeDefinition_STATUS_Values = map[string]ScopeDefinition_STATUS{
	"cluster":   ScopeDefinition_STATUS_Cluster,
	"namespace": ScopeDefinition_STATUS_Namespace,
}

// Source Kind to pull the configuration data from.
type SourceKindDefinition_STATUS string

const (
	SourceKindDefinition_STATUS_AzureBlob     = SourceKindDefinition_STATUS("AzureBlob")
	SourceKindDefinition_STATUS_Bucket        = SourceKindDefinition_STATUS("Bucket")
	SourceKindDefinition_STATUS_GitRepository = SourceKindDefinition_STATUS("GitRepository")
	SourceKindDefinition_STATUS_OCIRepository = SourceKindDefinition_STATUS("OCIRepository")
)

// Mapping from string to SourceKindDefinition_STATUS
var sourceKindDefinition_STATUS_Values = map[string]SourceKindDefinition_STATUS{
	"azureblob":     SourceKindDefinition_STATUS_AzureBlob,
	"bucket":        SourceKindDefinition_STATUS_Bucket,
	"gitrepository": SourceKindDefinition_STATUS_GitRepository,
	"ocirepository": SourceKindDefinition_STATUS_OCIRepository,
}

type GitRepositoryDefinition_Provider_STATUS string

const (
	GitRepositoryDefinition_Provider_STATUS_Azure   = GitRepositoryDefinition_Provider_STATUS("Azure")
	GitRepositoryDefinition_Provider_STATUS_Generic = GitRepositoryDefinition_Provider_STATUS("Generic")
)

// Mapping from string to GitRepositoryDefinition_Provider_STATUS
var gitRepositoryDefinition_Provider_STATUS_Values = map[string]GitRepositoryDefinition_Provider_STATUS{
	"azure":   GitRepositoryDefinition_Provider_STATUS_Azure,
	"generic": GitRepositoryDefinition_Provider_STATUS_Generic,
}

// Properties for HelmRelease objects
type HelmReleasePropertiesDefinition_STATUS struct {
	// FailureCount: Total number of times that the HelmRelease failed to install or upgrade
	FailureCount *int `json:"failureCount,omitempty"`

	// HelmChartRef: The reference to the HelmChart object used as the source to this HelmRelease
	HelmChartRef *ObjectReferenceDefinition_STATUS `json:"helmChartRef,omitempty"`

	// InstallFailureCount: Number of times that the HelmRelease failed to install
	InstallFailureCount *int `json:"installFailureCount,omitempty"`

	// LastRevisionApplied: The revision number of the last released object change
	LastRevisionApplied *int `json:"lastRevisionApplied,omitempty"`

	// UpgradeFailureCount: Number of times that the HelmRelease failed to upgrade
	UpgradeFailureCount *int `json:"upgradeFailureCount,omitempty"`
}

// Parameters to specify which layer to pull from the OCI artifact. By default, the first layer in the artifact is pulled.
type LayerSelectorDefinition_STATUS struct {
	// MediaType: The first layer matching the specified media type will be used.
	MediaType *string `json:"mediaType,omitempty"`

	// Operation: The operation to be performed on the selected layer. The default value is 'extract', but it can be set to
	// 'copy'.
	Operation *OperationDefinition_STATUS `json:"operation,omitempty"`
}

// Parameters to authenticate using a Managed Identity.
type ManagedIdentityDefinition_STATUS struct {
	// ClientId: The client Id for authenticating a Managed Identity.
	ClientId *string `json:"clientId,omitempty"`
}

// Object reference to a Kubernetes object on a cluster
type ObjectReferenceDefinition_STATUS struct {
	// Name: Name of the object
	Name *string `json:"name,omitempty"`

	// Namespace: Namespace of the object
	Namespace *string `json:"namespace,omitempty"`
}

// Status condition of Kubernetes object
type ObjectStatusConditionDefinition_STATUS struct {
	// LastTransitionTime: Last time this status condition has changed
	LastTransitionTime *string `json:"lastTransitionTime,omitempty"`

	// Message: A more verbose description of the object status condition
	Message *string `json:"message,omitempty"`

	// Reason: Reason for the specified status condition type status
	Reason *string `json:"reason,omitempty"`

	// Status: Status of the Kubernetes object condition type
	Status *string `json:"status,omitempty"`

	// Type: Object status condition type for this object
	Type *string `json:"type,omitempty"`
}

// The source reference for the OCIRepository object.
type OCIRepositoryRefDefinition_STATUS struct {
	// Digest: The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes
	// precedence over semver.
	Digest *string `json:"digest,omitempty"`

	// Semver: The semver range used to match against OCI repository tags. This takes precedence over tag.
	Semver *string `json:"semver,omitempty"`

	// Tag: The OCI repository image tag name to pull. This defaults to 'latest'.
	Tag *string `json:"tag,omitempty"`
}

// The postBuild definitions defining variable substitutions for this Kustomization after kustomize build.
type PostBuildDefinition_STATUS struct {
	// Substitute: Key/value pairs holding the variables to be substituted in this Kustomization.
	Substitute map[string]string `json:"substitute,omitempty"`

	// SubstituteFrom: Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.
	SubstituteFrom []SubstituteFromDefinition_STATUS `json:"substituteFrom,omitempty"`
}

// The source reference for the GitRepository object.
type RepositoryRefDefinition_STATUS struct {
	// Branch: The git repository branch name to checkout.
	Branch *string `json:"branch,omitempty"`

	// Commit: The commit SHA to checkout. This value must be combined with the branch name to be valid. This takes precedence
	// over semver.
	Commit *string `json:"commit,omitempty"`

	// Semver: The semver range used to match against git repository tags. This takes precedence over tag.
	Semver *string `json:"semver,omitempty"`

	// Tag: The git repository tag name to checkout. This takes precedence over branch.
	Tag *string `json:"tag,omitempty"`
}

// Parameters to authenticate using Service Principal.
type ServicePrincipalDefinition_STATUS struct {
	// ClientCertificateSendChain: Specifies whether to include x5c header in client claims when acquiring a token to enable
	// subject name / issuer based authentication for the Client Certificate
	ClientCertificateSendChain *bool `json:"clientCertificateSendChain,omitempty"`

	// ClientId: The client Id for authenticating a Service Principal.
	ClientId *string `json:"clientId,omitempty"`

	// TenantId: The tenant Id for authenticating a Service Principal
	TenantId *string `json:"tenantId,omitempty"`
}

// Parameters to authenticate using TLS config for OCI repository.
type TlsConfigDefinition_STATUS struct {
}

// Parameters to verify the authenticity of an OCI Artifact.
type VerifyDefinition_STATUS struct {
	// MatchOidcIdentity: Array defining the criteria for matching the identity while verifying an OCI artifact.
	MatchOidcIdentity []MatchOidcIdentityDefinition_STATUS `json:"matchOidcIdentity,omitempty"`

	// Provider: Verification provider name.
	Provider *string `json:"provider,omitempty"`

	// VerificationConfig: An object containing trusted public keys of trusted authors.
	VerificationConfig map[string]string `json:"verificationConfig,omitempty"`
}

// MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact.
type MatchOidcIdentityDefinition_STATUS struct {
	// Issuer: The regex pattern to match against to verify the OIDC issuer.
	Issuer *string `json:"issuer,omitempty"`

	// Subject: The regex pattern to match against to verify the identity subject.
	Subject *string `json:"subject,omitempty"`
}

// The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.
type OperationDefinition_STATUS string

const (
	OperationDefinition_STATUS_Copy    = OperationDefinition_STATUS("copy")
	OperationDefinition_STATUS_Extract = OperationDefinition_STATUS("extract")
)

// Mapping from string to OperationDefinition_STATUS
var operationDefinition_STATUS_Values = map[string]OperationDefinition_STATUS{
	"copy":    OperationDefinition_STATUS_Copy,
	"extract": OperationDefinition_STATUS_Extract,
}

// Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.
type SubstituteFromDefinition_STATUS struct {
	// Kind: Define whether it is ConfigMap or Secret that holds the variables to be used in substitution.
	Kind *string `json:"kind,omitempty"`

	// Name: Name of the ConfigMap/Secret that holds the variables to be used in substitution.
	Name *string `json:"name,omitempty"`

	// Optional: Set to True to proceed without ConfigMap/Secret, if it is not present.
	Optional *bool `json:"optional,omitempty"`
}
