api

package
v0.0.0-...-28f88cf Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 2, 2026 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProviderNamespace               = "Microsoft.RedHatOpenShift"
	ProviderNamespaceDisplay        = "Azure Red Hat OpenShift"
	ClusterResourceTypeName         = "hcpOpenShiftClusters"
	VersionResourceTypeName         = "hcpOpenShiftVersions"
	NodePoolResourceTypeName        = "nodePools"
	ExternalAuthResourceTypeName    = "externalAuths"
	OperationResultResourceTypeName = "hcpOperationResults"
	OperationStatusResourceTypeName = "hcpOperationStatuses"
	ControllerResourceTypeName      = "hcpOpenShiftControllers"
	ResourceTypeDisplay             = "Hosted Control Plane (HCP) OpenShift Clusters"
)
View Source
const (
	TestLocation                 = "westus3"
	TestAPIVersion               = "2024-06-10-preview"
	TestTenantID                 = "00000000-0000-0000-0000-000000000000"
	TestSubscriptionID           = "11111111-1111-1111-1111-111111111111"
	TestAltSubscriptionID        = "22222222-2222-2222-2222-222222222222"
	TestResourceGroupName        = "testResourceGroup"
	TestClusterName              = "testCluster"
	TestNodePoolName             = "testNodePool"
	TestExternalAuthName         = "testExternalAuth"
	TestDeploymentName           = "testDeployment"
	TestManagedResourceGroupName = "testManagedResourceGroup"
	TestNetworkSecurityGroupName = "testNetworkSecurityGroup"
	TestVirtualNetworkName       = "testVirtualNetwork"
	TestSubnetName               = "testSubnet"
)
View Source
const (
	// Feature flag FeatureAllowDevNonStableChannels is the feature in the subscription that
	// allows the usage of non stable channels (i.e. candidate, nightly) for creation
	// of new OpenShift clusters.
	FeatureAllowDevNonStableChannels = "Microsoft.RedHatOpenShift/AllowDevNonStableChannels"
)
View Source
const (
	OpenShiftVersionPrefix = "openshift-v"
)

Variables

View Source
var (
	TestSubscriptionResourceID         = path.Join("/subscriptions", TestSubscriptionID)
	TestResourceGroupResourceID        = path.Join(TestSubscriptionResourceID, "resourceGroups", TestResourceGroupName)
	TestClusterResourceID              = path.Join(TestResourceGroupResourceID, "providers", ProviderNamespace, ClusterResourceTypeName, TestClusterName)
	TestNodePoolResourceID             = path.Join(TestClusterResourceID, NodePoolResourceTypeName, TestNodePoolName)
	TestExternalAuthResourceID         = path.Join(TestClusterResourceID, ExternalAuthResourceTypeName, TestExternalAuthName)
	TestDeploymentResourceID           = path.Join(TestResourceGroupResourceID, "providers", ProviderNamespace, "deployments", TestDeploymentName)
	TestNetworkSecurityGroupResourceID = path.Join(TestResourceGroupResourceID, "providers", "Microsoft.Network", "networkSecurityGroups", TestNetworkSecurityGroupName)
	TestVirtualNetworkResourceID       = path.Join(TestResourceGroupResourceID, "providers", "Microsoft.Network", "virtualNetworks", TestVirtualNetworkName)
	TestSubnetResourceID               = path.Join(TestVirtualNetworkResourceID, "subnets", TestSubnetName)
)
View Source
var (
	// we have some private fields that cmp.Diff chokes on. This skips them.
	// Use only for error messages unless you know what you're doing.
	CmpDiffOptions = []cmp.Option{
		cmpopts.IgnoreFields(azcorearm.ResourceID{}, "ResourceType"),
		cmpopts.IgnoreFields(azcorearm.ResourceID{}, "isChild"),
		cmpopts.IgnoreFields(azcorearm.ResourceID{}, "stringValue"),
		cmpopts.IgnoreFields(InternalID{}, "path"),
		cmpopts.IgnoreFields(InternalID{}, "kind"),
	}
)
View Source
var (
	ValidCustomerManagedEncryptionType = sets.New[CustomerManagedEncryptionType](
		CustomerManagedEncryptionTypeKMS,
	)
)
View Source
var (
	ValidOutboundTypes = sets.New[OutboundType](
		OutboundTypeLoadBalancer,
	)
)

Functions

func ApplyRequestBody

func ApplyRequestBody(requestMethod string, body []byte, v any) error

ApplyRequestBody applies a JSON request body to the value pointed to by v. If the request method is PATCH, the request body is applied to v using JSON Merge Patch (RFC 7396) semantics. Otherwise the request body is unmarshalled directly to v.

func CreateTestSubscription

func CreateTestSubscription(registeredFeatures ...string) *arm.Subscription

CreateTestSubscription creates a test subscription with optional registered feature flags. Call with no arguments for a standard subscription, or pass feature names to register them.

func DeleteNilsFromPtrSlice

func DeleteNilsFromPtrSlice[S ~[]*E, E any](s S) S

DeleteNilsFromPtrSlice returns a slice with nil pointers removed.

func MergeStringPtrMap

func MergeStringPtrMap(src map[string]*string, dst *map[string]string)

MergeStringPtrMap merges a map of string pointers into a map of strings following the rules of JSON merge-patch (RFC 7396). In particular, if a key in src has a nil value, that entry is deleted from dst. The function takes a pointer to the dst map in case the dst map is nil and needs to be initialized.

func Must

func Must[T any](v T, err error) T

Must is a helper function that takes a value and error, returns the value if no error occurred, or panics if an error occurred. This is useful for test setup where we don't expect errors.

func NewTestLogger

func NewTestLogger() *slog.Logger

func NewTestUserAssignedIdentity

func NewTestUserAssignedIdentity(name string) string

func NonNilSliceValues

func NonNilSliceValues[E any](a []*E) iter.Seq2[int, *E]

NonNilSliceValues returns an iterator over index-value pairs in a slice of pointers in the usual order, but skipping over nils.

func NonNilValues

func NonNilValues[K any, V any](seq iter.Seq2[K, *V]) iter.Seq2[K, *V]

NonNilValues returns an iterator over a sequence of pairs of values that skips pairs where the second value in the pair is nil.

func Ptr

func Ptr[T any](p T) *T

Ptr returns a pointer to p.

func PtrOrNil

func PtrOrNil[T any](p T) *T

PtrOrNil returns a pointer to p or nil if p is an empty value as would be determined by the "omitempty" option in json.Marshal.

func StringMapToStringPtrMap

func StringMapToStringPtrMap(m map[string]string) map[string]*string

StringMapToStringPtrMap converts a map of strings to a map of string pointers.

func StringPtrMapToStringMap

func StringPtrMapToStringMap(m map[string]*string) map[string]string

StringPtrMapToStringMap converts a map of string pointers to a map of strings.

func StringPtrSliceToStringSlice

func StringPtrSliceToStringSlice(s []*string) []string

StringPtrSliceToStringSlice converts a slice of string pointers to a slice of strings.

func StringSliceToStringPtrSlice

func StringSliceToStringPtrSlice(s []string) []*string

StringSliceToStringPtrSlice converts a slice of strings to a slice of string pointers.

func TrimStringSlice

func TrimStringSlice(s []string) []string

TrimStringSlice returns a new string slice with all leading and trailing white space removed from each element and omitting any white-space-only elements.

Types

type APIRegistry

type APIRegistry interface {
	Register(version Version) error
	ListVersions() set.Set[string]
	Lookup(key string) (version Version, ok bool)
}

APIRegistry is a way to keep track of versioned interfaces. It should always be done per-instance, so we can easily track what registers where and why it does it. This construction also gives us a way to unit and integration test different scenarios without impacting a single global as we run the tests.

func NewAPIRegistry

func NewAPIRegistry() APIRegistry

type ClusterAutoscalingProfile

type ClusterAutoscalingProfile struct {
	MaxNodesTotal               int32 `json:"maxNodesTotal,omitempty"`
	MaxPodGracePeriodSeconds    int32 `json:"maxPodGracePeriodSeconds,omitempty"`
	MaxNodeProvisionTimeSeconds int32 `json:"maxNodeProvisionTimeSeconds,omitempty"`
	PodPriorityThreshold        int32 `json:"podPriorityThreshold,omitempty"`
}

Cluster autoscaling configuration ClusterAutoscaling specifies auto-scaling behavior that applies to all NodePools associated with a control plane.

type ClusterImageRegistryProfile

type ClusterImageRegistryProfile struct {
	// state indicates the desired ImageStream-backed cluster image registry installation mode. This can only be set during cluster
	// creation and cannot be changed after cluster creation. Enabled means the
	// ImageStream-backed image registry will be run as pods on worker nodes in the cluster. Disabled means the ImageStream-backed
	// image registry will not be present in the cluster. The default is Enabled.
	State ClusterImageRegistryProfileState `json:"state,omitempty"`
}

ClusterImageRegistryProfile - OpenShift cluster image registry

type ClusterImageRegistryProfileState

type ClusterImageRegistryProfileState string

ClusterImageRegistryProfileState - state indicates the desired ImageStream-backed cluster image registry installation mode. This can only be set during cluster creation and cannot be changed after cluster creation. Enabled means the ImageStream-backed image registry will be run as pods on worker nodes in the cluster. Disabled means the ImageStream-backed image registry will not be present in the cluster. The default is Enabled.

const (
	ClusterImageRegistryProfileStateDisabled ClusterImageRegistryProfileState = "Disabled"
	ClusterImageRegistryProfileStateEnabled  ClusterImageRegistryProfileState = "Enabled"
)

type Condition

type Condition struct {
	// type of condition in CamelCase or in foo.example.com/CamelCase.
	// ---
	// Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
	// useful (see .node.status.conditions), the ability to deconflict is important.
	// The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
	// +kubebuilder:validation:MaxLength=316
	Type string `json:"type" protobuf:"bytes,1,opt,name=type"`
	// status of the condition, one of True, False, Unknown.
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=True;False;Unknown
	Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status"`

	// lastTransitionTime is the last time the condition transitioned from one status to another.
	// This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Format=date-time
	LastTransitionTime time.Time `json:"lastTransitionTime" protobuf:"bytes,4,opt,name=lastTransitionTime"`
	// reason contains a programmatic identifier indicating the reason for the condition's last transition.
	// Producers of specific condition types may define expected values and meanings for this field,
	// and whether the values are considered a guaranteed API.
	// The value should be a CamelCase string.
	// This field may not be empty.
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MaxLength=1024
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:Pattern=`^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$`
	Reason string `json:"reason" protobuf:"bytes,5,opt,name=reason"`
	// message is a human readable message indicating details about the transition.
	// This may be an empty string.
	// +required
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MaxLength=32768
	Message string `json:"message" protobuf:"bytes,6,opt,name=message"`
}

Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example,

type FooStatus struct{
    // Represents the observations of a foo's current state.
    // Known .status.conditions.type are: "Available", "Progressing", and "Degraded"
    Conditions []Condition `json:"conditions,omitempty"`

    // other fields
}

type ConditionStatus

type ConditionStatus string
const (
	ConditionTrue    ConditionStatus = "True"
	ConditionFalse   ConditionStatus = "False"
	ConditionUnknown ConditionStatus = "Unknown"
)

These are valid condition statuses. "ConditionTrue" means a resource is in the condition. "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes can't decide if a resource is in the condition or not. In the future, we could add other intermediate conditions, e.g. ConditionDegraded.

type ConditionStatusType

type ConditionStatusType string
const (
	// ConditionStatusType - the condition status is true.
	ConditionStatusTypeTrue ConditionStatusType = "True"
	// ExternalAuthConditionTypeFalse - the condition status is false.
	ConditionStatusTypeFalse ConditionStatusType = "False"
	// ConditionStatusTypeUnknown - the condition status is unknown.
	ConditionStatusTypeUnknown ConditionStatusType = "Unknown"
)

type Controller

type Controller struct {
	CosmosUID string `json:"cosmosUID,omitempty"`

	// ExternalID is the Azure resource ID of the type this is associated with.
	ExternalID *azcorearm.ResourceID `json:"externalId,omitempty"`

	// ControllerName is the name of controller this status is for.
	ControllerName string `json:"controllerName"`

	Status ControllerStatus `json:"status"`
}

func (*Controller) ComputeLogicalResourceID

func (o *Controller) ComputeLogicalResourceID() *azcorearm.ResourceID

func (*Controller) GetCosmosData

func (o *Controller) GetCosmosData() CosmosData

func (*Controller) SetCosmosDocumentData

func (o *Controller) SetCosmosDocumentData(cosmosUID string)

type ControllerStatus

type ControllerStatus struct {
	// every controller is expected to set a Degraded condition.
	Conditions []Condition `json:"conditions,omitempty"`
}

type CosmosData

type CosmosData struct {
	CosmosUID    string
	PartitionKey string
	ItemID       *azcorearm.ResourceID
}

CosmosData contains the information that persisted resources must have for us to support CRUD against them. These are not (currently) all stored in the same place in our various types.

type CosmosPersistable

type CosmosPersistable interface {
	GetCosmosData() CosmosData
	SetCosmosDocumentData(cosmosUID string)
}

type CustomerAPIProfile

type CustomerAPIProfile struct {
	Visibility      Visibility `json:"visibility,omitempty"`
	AuthorizedCIDRs []string   `json:"authorizedCidrs,omitempty"`
}

CustomerAPIProfile represents a cluster API server configuration.

type CustomerDNSProfile

type CustomerDNSProfile struct {
	BaseDomainPrefix string `json:"baseDomainPrefix,omitempty"`
}

CustomerDNSProfile represents the DNS configuration of the cluster.

type CustomerManagedEncryptionProfile

type CustomerManagedEncryptionProfile struct {
	EncryptionType CustomerManagedEncryptionType `json:"encryptionType,omitempty"`
	Kms            *KmsEncryptionProfile         `json:"kms,omitempty"`
}

CustomerManagedEncryptionProfile repesents a data encryption configuration for ETCD using customer-managed keys. Visibility for the entire struct is "read create".

type CustomerManagedEncryptionType

type CustomerManagedEncryptionType string
const (
	// CustomerManagedEncryptionTypeKMS - KMS encryption type.
	CustomerManagedEncryptionTypeKMS CustomerManagedEncryptionType = "KMS"
)

type CustomerPlatformProfile

type CustomerPlatformProfile struct {
	ManagedResourceGroup    string                         `json:"managedResourceGroup,omitempty"`
	SubnetID                string                         `json:"subnetId,omitempty"`
	OutboundType            OutboundType                   `json:"outboundType,omitempty"`
	NetworkSecurityGroupID  string                         `json:"networkSecurityGroupId,omitempty"`
	OperatorsAuthentication OperatorsAuthenticationProfile `json:"operatorsAuthentication,omitempty"`
}

CustomerPlatformProfile represents the Azure platform configuration. Visibility for (almost) the entire struct is "read create".

type DiskStorageAccountType

type DiskStorageAccountType string

DiskStorageAccountType represents supported Azure storage account types.

const (
	DiskStorageAccountTypePremium_LRS     DiskStorageAccountType = "Premium_LRS"
	DiskStorageAccountTypeStandardSSD_LRS DiskStorageAccountType = "StandardSSD_LRS"
	DiskStorageAccountTypeStandard_LRS    DiskStorageAccountType = "Standard_LRS"
)

type Effect

type Effect string
const (
	// EffectNoExecute - NoExecute taint effect
	EffectNoExecute Effect = "NoExecute"
	// EffectNoSchedule - NoSchedule taint effect
	EffectNoSchedule Effect = "NoSchedule"
	// EffectPreferNoSchedule - PreferNoSchedule taint effect
	EffectPreferNoSchedule Effect = "PreferNoSchedule"
)

type EtcdDataEncryptionKeyManagementModeType

type EtcdDataEncryptionKeyManagementModeType string
const (
	// EtcdDataEncryptionKeyManagementModeTypeCustomerManaged - Customer managed encryption key management mode type.
	EtcdDataEncryptionKeyManagementModeTypeCustomerManaged EtcdDataEncryptionKeyManagementModeType = "CustomerManaged"
	// EtcdDataEncryptionKeyManagementModeTypePlatformManaged - Platform managed encryption key management mode type.
	EtcdDataEncryptionKeyManagementModeTypePlatformManaged EtcdDataEncryptionKeyManagementModeType = "PlatformManaged"
)

type EtcdDataEncryptionProfile

type EtcdDataEncryptionProfile struct {
	KeyManagementMode EtcdDataEncryptionKeyManagementModeType `json:"keyManagementMode,omitempty"`
	CustomerManaged   *CustomerManagedEncryptionProfile       `json:"customerManaged,omitempty"`
}

EtcdDataEncryptionProfile represents a data encryption configuration for ETCD. Visibility for the entire struct is "read create".

type EtcdProfile

type EtcdProfile struct {
	DataEncryption EtcdDataEncryptionProfile `json:"dataEncryption,omitempty"`
}

EtcdProfile represents an ETCD configuration. Visibility for the entire struct is "read create".

type ExternalAuthClaimProfile

type ExternalAuthClaimProfile struct {
	Mappings        TokenClaimMappingsProfile  `json:"mappings"`
	ValidationRules []TokenClaimValidationRule `json:"validationRules"`
}

External Auth claim profile Visibility for the entire struct is "read create update".

type ExternalAuthClientComponentProfile

type ExternalAuthClientComponentProfile struct {
	Name                string `json:"name"`
	AuthClientNamespace string `json:"authClientNamespace"`
}

External Auth component profile Must have unique namespace/name pairs. Visibility for the entire struct is "read create update".

type ExternalAuthClientProfile

type ExternalAuthClientProfile struct {
	Component   ExternalAuthClientComponentProfile `json:"component"`
	ClientID    string                             `json:"clientId"`
	ExtraScopes []string                           `json:"extraScopes"`
	Type        ExternalAuthClientType             `json:"type"`
}

External Auth client profile This configures how on-cluster, platform clients should request tokens from the identity provider. Visibility for the entire struct is "read create update".

type ExternalAuthClientType

type ExternalAuthClientType string
const (
	// ExternalAuthClientTypeConfidential - the client is confidential.
	ExternalAuthClientTypeConfidential ExternalAuthClientType = "Confidential"
	// ExternalAuthClientTypePublic - the client is public.
	ExternalAuthClientTypePublic ExternalAuthClientType = "Public"
)

type ExternalAuthCondition

type ExternalAuthCondition struct {
	Type               ExternalAuthConditionType `json:"type"`
	Status             ConditionStatusType       `json:"status"`
	LastTransitionTime time.Time                 `json:"lastTransitionTime"`
	Reason             string                    `json:"reason"`
	Message            string                    `json:"message"`
}

Condition defines an observation of the external auth state. Visibility for the entire struct is "read".

type ExternalAuthConditionType

type ExternalAuthConditionType string
const (
	// ExternalAuthConditionTypeAvailable - the resource is in an available state.
	ExternalAuthConditionTypeAvailable ExternalAuthConditionType = "Available"
	// ExternalAuthConditionType - the resource is in a degraded state.
	ExternalAuthConditionTypeDegraded ExternalAuthConditionType = "Degraded"
	// ExternalAuthConditionTypeProgressing - the resource is in a progressing state.
	ExternalAuthConditionTypeProgressing ExternalAuthConditionType = "Progressing"
)

type ExternalTestResource

type ExternalTestResource struct {
	ID         *string
	Name       *string
	Type       *string
	SystemData *generated.SystemData
	Location   *string
	Tags       map[string]*string
	Identity   *generated.ManagedServiceIdentity
}

func (*ExternalTestResource) GetVersion

func (m *ExternalTestResource) GetVersion() Version

func (*ExternalTestResource) NewExternal

func (m *ExternalTestResource) NewExternal() any

func (*ExternalTestResource) Normalize

func (m *ExternalTestResource) Normalize(v *InternalTestResource)

func (*ExternalTestResource) SetDefaultValues

func (m *ExternalTestResource) SetDefaultValues(a any) error

type GroupClaimProfile

type GroupClaimProfile struct {
	Claim  string `json:"claim"`
	Prefix string `json:"prefix"`
}

External Auth claim profile This configures how the groups of a cluster identity should be constructed from the claims in a JWT token issued by the identity provider. When referencing a claim, if the claim is present in the JWT token, its value must be a list of groups separated by a comma (',').

For example - '"example"' and '"exampleOne", "exampleTwo", "exampleThree"' are valid claim values.

Visibility for the entire struct is "read create update".

type HCPOpenShiftCluster

type HCPOpenShiftCluster struct {
	arm.TrackedResource

	CustomerProperties        HCPOpenShiftClusterCustomerProperties        `json:"customerProperties,omitempty"`
	ServiceProviderProperties HCPOpenShiftClusterServiceProviderProperties `json:"serviceProviderProperties,omitempty"`
	Identity                  *arm.ManagedServiceIdentity                  `json:"identity,omitempty"`
}

HCPOpenShiftCluster represents an ARO HCP OpenShift cluster resource.

func ClusterTestCase

func ClusterTestCase(t *testing.T, tweaks *HCPOpenShiftCluster) *HCPOpenShiftCluster

func MinimumValidClusterTestCase

func MinimumValidClusterTestCase() *HCPOpenShiftCluster

func NewDefaultHCPOpenShiftCluster

func NewDefaultHCPOpenShiftCluster(resourceID *azcorearm.ResourceID) *HCPOpenShiftCluster

Creates an HCPOpenShiftCluster with any non-zero default values.

func (*HCPOpenShiftCluster) GetCosmosData

func (o *HCPOpenShiftCluster) GetCosmosData() CosmosData

func (*HCPOpenShiftCluster) SetCosmosDocumentData

func (o *HCPOpenShiftCluster) SetCosmosDocumentData(cosmosUID string)

func (*HCPOpenShiftCluster) Validate

func (o *HCPOpenShiftCluster) Validate() []arm.CloudErrorBody

type HCPOpenShiftClusterAdminCredential

type HCPOpenShiftClusterAdminCredential struct {
	ExpirationTimestamp time.Time `json:"expirationTimestamp"`
	Kubeconfig          string    `json:"kubeconfig"`
}

HCPOpenShiftClusterAdminCredential represents a temporary admin credential for an ARO HCP OpenShift cluster.

type HCPOpenShiftClusterCustomerProperties

type HCPOpenShiftClusterCustomerProperties struct {
	Version                 VersionProfile              `json:"version,omitempty"`
	DNS                     CustomerDNSProfile          `json:"dns,omitempty"`
	Network                 NetworkProfile              `json:"network,omitempty"`
	API                     CustomerAPIProfile          `json:"api,omitempty"`
	Platform                CustomerPlatformProfile     `json:"platform,omitempty"`
	Autoscaling             ClusterAutoscalingProfile   `json:"autoscaling,omitempty"`
	NodeDrainTimeoutMinutes int32                       `json:"nodeDrainTimeoutMinutes,omitempty"`
	Etcd                    EtcdProfile                 `json:"etcd,omitempty"`
	ClusterImageRegistry    ClusterImageRegistryProfile `json:"clusterImageRegistry,omitempty"`
}

HCPOpenShiftClusterCustomerProperties represents the property bag of a HCPOpenShiftCluster resource.

type HCPOpenShiftClusterExternalAuth

type HCPOpenShiftClusterExternalAuth struct {
	arm.ProxyResource
	Properties                HCPOpenShiftClusterExternalAuthProperties                `json:"properties"`
	ServiceProviderProperties HCPOpenShiftClusterExternalAuthServiceProviderProperties `json:"serviceProviderProperties,omitempty"`
}

HCPOpenShiftClusterExternalAuth represents the external auth config resource for ARO HCP OpenShift clusters.

func MinimumValidExternalAuthTestCase

func MinimumValidExternalAuthTestCase() *HCPOpenShiftClusterExternalAuth

func NewDefaultHCPOpenShiftClusterExternalAuth

func NewDefaultHCPOpenShiftClusterExternalAuth(resourceID *azcorearm.ResourceID) *HCPOpenShiftClusterExternalAuth

func (*HCPOpenShiftClusterExternalAuth) GetCosmosData

func (o *HCPOpenShiftClusterExternalAuth) GetCosmosData() CosmosData

func (*HCPOpenShiftClusterExternalAuth) SetCosmosDocumentData

func (o *HCPOpenShiftClusterExternalAuth) SetCosmosDocumentData(cosmosUID string)

func (*HCPOpenShiftClusterExternalAuth) Validate

type HCPOpenShiftClusterExternalAuthProperties

type HCPOpenShiftClusterExternalAuthProperties struct {
	ProvisioningState arm.ProvisioningState       `json:"provisioningState"`
	Condition         ExternalAuthCondition       `json:"condition,omitzero"`
	Issuer            TokenIssuerProfile          `json:"issuer"`
	Clients           []ExternalAuthClientProfile `json:"clients"`
	Claim             ExternalAuthClaimProfile    `json:"claim"`
}

HCPOpenShiftClusterNodePoolProperties represents the property bag of a HCPOpenShiftClusterNodePool resource.

type HCPOpenShiftClusterExternalAuthServiceProviderProperties

type HCPOpenShiftClusterExternalAuthServiceProviderProperties struct {
	CosmosUID         string     `json:"cosmosUID,omitempty"`
	ClusterServiceID  InternalID `json:"clusterServiceID,omitempty"`
	ActiveOperationID string     `json:"activeOperationId,omitempty"`
}

type HCPOpenShiftClusterNodePool

type HCPOpenShiftClusterNodePool struct {
	arm.TrackedResource
	Properties                HCPOpenShiftClusterNodePoolProperties                `json:"properties,omitempty"`
	ServiceProviderProperties HCPOpenShiftClusterNodePoolServiceProviderProperties `json:"serviceProviderProperties,omitempty"`
	Identity                  *arm.ManagedServiceIdentity                          `json:"identity,omitempty"`
}

HCPOpenShiftClusterNodePool represents a node pool resource for ARO HCP OpenShift clusters.

func NewDefaultHCPOpenShiftClusterNodePool

func NewDefaultHCPOpenShiftClusterNodePool(resourceID *azcorearm.ResourceID) *HCPOpenShiftClusterNodePool

func (*HCPOpenShiftClusterNodePool) GetCosmosData

func (o *HCPOpenShiftClusterNodePool) GetCosmosData() CosmosData

func (*HCPOpenShiftClusterNodePool) SetCosmosDocumentData

func (o *HCPOpenShiftClusterNodePool) SetCosmosDocumentData(cosmosUID string)

func (*HCPOpenShiftClusterNodePool) Validate

func (nodePool *HCPOpenShiftClusterNodePool) Validate(cluster *HCPOpenShiftCluster) []arm.CloudErrorBody

type HCPOpenShiftClusterNodePoolProperties

type HCPOpenShiftClusterNodePoolProperties struct {
	ProvisioningState       arm.ProvisioningState   `json:"provisioningState,omitempty"`
	Version                 NodePoolVersionProfile  `json:"version,omitempty"`
	Platform                NodePoolPlatformProfile `json:"platform,omitempty"`
	Replicas                int32                   `json:"replicas,omitempty"`
	AutoRepair              bool                    `json:"autoRepair,omitempty"`
	AutoScaling             *NodePoolAutoScaling    `json:"autoScaling,omitempty"`
	Labels                  map[string]string       `json:"labels,omitempty"`
	Taints                  []Taint                 `json:"taints,omitempty"`
	NodeDrainTimeoutMinutes *int32                  `json:"nodeDrainTimeoutMinutes,omitempty"`
}

HCPOpenShiftClusterNodePoolProperties represents the property bag of a HCPOpenShiftClusterNodePool resource.

type HCPOpenShiftClusterNodePoolServiceProviderProperties

type HCPOpenShiftClusterNodePoolServiceProviderProperties struct {
	CosmosUID         string     `json:"cosmosUID,omitempty"`
	ClusterServiceID  InternalID `json:"clusterServiceID,omitempty"`
	ActiveOperationID string     `json:"activeOperationId,omitempty"`
}

type HCPOpenShiftClusterServiceProviderProperties

type HCPOpenShiftClusterServiceProviderProperties struct {
	ProvisioningState arm.ProvisioningState          `json:"provisioningState,omitempty"`
	CosmosUID         string                         `json:"cosmosUID,omitempty"`
	ClusterServiceID  InternalID                     `json:"clusterServiceID,omitempty"`
	ActiveOperationID string                         `json:"activeOperationId,omitempty"`
	DNS               ServiceProviderDNSProfile      `json:"dns,omitempty"`
	Console           ServiceProviderConsoleProfile  `json:"console,omitempty"`
	API               ServiceProviderAPIProfile      `json:"api,omitempty"`
	Platform          ServiceProviderPlatformProfile `json:"platform,omitempty"`
}

HCPOpenShiftClusterCustomerProperties represents the property bag of a HCPOpenShiftCluster resource.

type HCPOpenShiftVersion

type HCPOpenShiftVersion struct {
	arm.ProxyResource
	Properties HCPOpenShiftVersionProperties `json:"properties,omitempty"`
}

HCPOpenShiftVersion represents a location-based available HCP OpenShift version resource.

type HCPOpenShiftVersionProperties

type HCPOpenShiftVersionProperties struct {
	ChannelGroup       string    `json:"channelGroup"`
	Enabled            bool      `json:"enabled"`
	EndOfLifeTimestamp time.Time `json:"endOfLifeTimestamp"`
}

HCPOpenShiftVersionProperties contains details of an available HCP OpenShift version.

type InternalID

type InternalID struct {
	// contains filtered or unexported fields
}

InternalID represents a Cluster Service resource.

func NewInternalID

func NewInternalID(path string) (InternalID, error)

NewInternalID attempts to create a new InternalID from a Cluster Service API path, returning an error if the API path is invalid or unsupported.

func (*InternalID) ClusterID

func (id *InternalID) ClusterID() string

ClusterID returns the path element following "clusters", if present.

func (*InternalID) ID

func (id *InternalID) ID() string

ID returns the last path element of the resource described by InternalID.

func (*InternalID) Kind

func (id *InternalID) Kind() string

Kind returns the kind of resource described by InternalID, currently limited to "Cluster" and "NodePool".

func (InternalID) MarshalText

func (id InternalID) MarshalText() ([]byte, error)

MarshalText allows an InternalID to be used as an encoding.TextMarshaler.

func (*InternalID) Path

func (id *InternalID) Path() string

func (*InternalID) String

func (id *InternalID) String() string

String allows an InternalID to be used as a fmt.Stringer.

func (*InternalID) UnmarshalText

func (id *InternalID) UnmarshalText(text []byte) error

UnmarshalText allows an InternalID to be used as an encoding.TextUnmarshaler.

type InternalTestResource

type InternalTestResource struct {
	arm.TrackedResource
	Identity *arm.ManagedServiceIdentity `json:"identity"`
}

type KmsEncryptionProfile

type KmsEncryptionProfile struct {
	ActiveKey KmsKey `json:"activeKey,omitempty"`
}

KmsEncryptionProfile represents a data encryption configuration for ETCD using customer-managed Key Management Service (KMS) keys. Visibility for the entire struct is "read create".

type KmsKey

type KmsKey struct {
	Name      string `json:"name"`
	VaultName string `json:"vaultName"`
	Version   string `json:"version"`
}

KmsKey represents an Azure KeyVault secret. Visibility for the entire struct is "read create".

type NetworkProfile

type NetworkProfile struct {
	NetworkType NetworkType `json:"networkType,omitempty"`
	PodCIDR     string      `json:"podCidr,omitempty"`
	ServiceCIDR string      `json:"serviceCidr,omitempty"`
	MachineCIDR string      `json:"machineCidr,omitempty"`
	HostPrefix  int32       `json:"hostPrefix,omitempty"`
}

NetworkProfile represents a cluster network configuration. Visibility for the entire struct is "read create".

type NetworkType

type NetworkType string

NetworkType represents an OpenShift cluster network plugin.

const (
	NetworkTypeOVNKubernetes NetworkType = "OVNKubernetes"
	NetworkTypeOther         NetworkType = "Other"
)

type NodePoolAutoScaling

type NodePoolAutoScaling struct {
	Min int32 `json:"min,omitempty"`
	Max int32 `json:"max,omitempty"`
}

NodePoolAutoScaling represents a node pool autoscaling configuration. Visibility for the entire struct is "read create update". max=200 for both Min and Max when the node pool's Platform.AvailabilityZone is unset.

type NodePoolPlatformProfile

type NodePoolPlatformProfile struct {
	SubnetID               string        `json:"subnetId,omitempty"`
	VMSize                 string        `json:"vmSize,omitempty"`
	EnableEncryptionAtHost bool          `json:"enableEncryptionAtHost"`
	OSDisk                 OSDiskProfile `json:"osDisk"`
	AvailabilityZone       string        `json:"availabilityZone,omitempty"`
}

NodePoolPlatformProfile represents a worker node pool configuration. Visibility for the entire struct is "read create".

type NodePoolVersionProfile

type NodePoolVersionProfile struct {
	ID           string `json:"id,omitempty"`
	ChannelGroup string `json:"channelGroup,omitempty"`
}

NodePoolVersionProfile represents the worker node pool version. Visbility for the entire struct is "read create update".

type OSDiskProfile

type OSDiskProfile struct {
	SizeGiB                int32                  `json:"sizeGiB,omitempty"`
	DiskStorageAccountType DiskStorageAccountType `json:"diskStorageAccountType,omitempty"`
	EncryptionSetID        string                 `json:"encryptionSetId,omitempty"`
}

OSDiskProfile represents a OS Disk configuration. Visibility for the entire struct is "read create".

type Operation

type Operation struct {
	// ResourceID must be serialized exactly here for the generic CRUD to work.
	// ResourceID here is NOT an ARM resourceID, it just parses like and one and is guarantee unique
	ResourceID *azcorearm.ResourceID `json:"resourceId"`

	// TenantID is the tenant ID of the client that requested the operation
	TenantID string `json:"tenantId,omitempty"`
	// ClientID is the object ID of the client that requested the operation
	ClientID string `json:"clientId,omitempty"`
	// Request is the type of asynchronous operation requested
	Request OperationRequest `json:"request,omitempty"`
	// ExternalID is the Azure resource ID of the cluster or node pool
	ExternalID *azcorearm.ResourceID `json:"externalId,omitempty"`
	// InternalID is the Cluster Service resource identifier in the form of a URL path
	InternalID InternalID `json:"internalId,omitempty"`
	// OperationID is the Azure resource ID of the operation status (may be nil if the
	// operation was implicit, such as deleting a child resource along with the parent)
	OperationID *azcorearm.ResourceID `json:"operationId,omitempty"`
	// ClientRequestID is provided by the "x-ms-client-request-id" request header
	ClientRequestID string `json:"clientRequestId,omitempty"`
	// CorrelationRequstID is provided by the "x-ms-correlation-request-id" request header
	CorrelationRequestID string `json:"correlationRequestId,omitempty"`
	// NotificationURI is provided by the Azure-AsyncNotificationUri header if the
	// Async Operation Callbacks ARM feature is enabled
	NotificationURI string `json:"notificationUri,omitempty"`

	// StartTime marks the start of the operation
	StartTime time.Time `json:"startTime,omitempty"`
	// LastTransitionTime marks the most recent state change
	LastTransitionTime time.Time `json:"lastTransitionTime,omitempty"`
	// Status is the current operation status, using the same set of values
	// as the resource's provisioning state
	Status arm.ProvisioningState `json:"status,omitempty"`
	// Error is an OData error, present when Status is "Failed" or "Canceled"
	Error *arm.CloudErrorBody `json:"error,omitempty"`
}

func (*Operation) ComputeLogicalResourceID

func (o *Operation) ComputeLogicalResourceID() *azcorearm.ResourceID

func (*Operation) GetCosmosData

func (o *Operation) GetCosmosData() CosmosData

func (Operation) GetValidTypes

func (doc Operation) GetValidTypes() []string

GetValidTypes returns the valid resource types for an OperationDocument.

func (*Operation) SetCosmosDocumentData

func (o *Operation) SetCosmosDocumentData(cosmosUID string)

type OperationRequest

type OperationRequest string
const (
	OperationRequestCreate OperationRequest = "Create"
	OperationRequestUpdate OperationRequest = "Update"
	OperationRequestDelete OperationRequest = "Delete"

	// These are for POST actions on resources.
	OperationRequestRequestCredential OperationRequest = "RequestCredential"
	OperationRequestRevokeCredentials OperationRequest = "RevokeCredentials"
)

type OperatorsAuthenticationProfile

type OperatorsAuthenticationProfile struct {
	UserAssignedIdentities UserAssignedIdentitiesProfile `json:"userAssignedIdentities,omitempty"`
}

OperatorsAuthenticationProfile represents authentication configuration for OpenShift operators. Visibility for the entire struct is "read create".

type OutboundType

type OutboundType string

OutboundType represents a routing strategy to provide egress to the Internet.

const (
	OutboundTypeLoadBalancer OutboundType = "LoadBalancer"
)

type ServiceProviderAPIProfile

type ServiceProviderAPIProfile struct {
	URL string `json:"url,omitempty"`
}

type ServiceProviderConsoleProfile

type ServiceProviderConsoleProfile struct {
	URL string `json:"url,omitempty"`
}

ServiceProviderConsoleProfile represents a cluster web console configuration. Visibility for the entire struct is "read".

type ServiceProviderDNSProfile

type ServiceProviderDNSProfile struct {
	BaseDomain string `json:"baseDomain,omitempty"`
}

ServiceProviderDNSProfile represents the DNS configuration of the cluster.

type ServiceProviderPlatformProfile

type ServiceProviderPlatformProfile struct {
	IssuerURL string `json:"issuerUrl,omitempty"`
}

type Taint

type Taint struct {
	Effect Effect `json:"effect,omitempty"`
	Key    string `json:"key,omitempty"`
	Value  string `json:"value,omitempty"`
}

Taint represents a Kubernetes taint for a node. Visibility for the entire struct is "read create update".

type TokenClaimMappingsProfile

type TokenClaimMappingsProfile struct {
	Username UsernameClaimProfile `json:"username"`
	Groups   *GroupClaimProfile   `json:"groups"`
}

External Auth claim mappings profile. At a minimum username or groups must be defined. Visibility for the entire struct is "read create update".

type TokenClaimValidationRule

type TokenClaimValidationRule struct {
	Type          TokenValidationRuleType `json:"type"`
	RequiredClaim TokenRequiredClaim      `json:"requiredClaim"`
}

External Auth claim validation rule Visibility for the entire struct is "read create update".

type TokenIssuerProfile

type TokenIssuerProfile struct {
	URL       string   `json:"url"`
	Audiences []string `json:"audiences"`
	CA        string   `json:"ca"`
}

Token issuer profile This configures how the platform interacts with the identity provider and how tokens issued from the identity provider are evaluated by the Kubernetes API server. Visbility for the entire struct is "read create update".

type TokenRequiredClaim

type TokenRequiredClaim struct {
	Claim         string `json:"claim"`
	RequiredValue string `json:"requiredValue"`
}

Token required claim validation rule. Visibility for the entire struct is "read create update".

type TokenValidationRuleType

type TokenValidationRuleType string
const (
	// TokenValidationRuleTypeRequiredClaim - the Kubernetes API server will be configured to validate that the
	// incoming JWT contains the required claim and that its value matches the required value.
	TokenValidationRuleTypeRequiredClaim TokenValidationRuleType = "RequiredClaim"
)

type UserAssignedIdentitiesProfile

type UserAssignedIdentitiesProfile struct {
	ControlPlaneOperators  map[string]string `json:"controlPlaneOperators,omitempty"`
	DataPlaneOperators     map[string]string `json:"dataPlaneOperators,omitempty"`
	ServiceManagedIdentity string            `json:"serviceManagedIdentity,omitempty"`
}

UserAssignedIdentitiesProfile represents authentication configuration for OpenShift operators using user-assigned managed identities. Visibility for the entire struct is "read create".

type UsernameClaimPrefixPolicy

type UsernameClaimPrefixPolicy string
const (
	// UsernameClaimPrefixPolicyPrefix - prefix the JWT claim with the value of Prefix.
	UsernameClaimPrefixPolicyPrefix UsernameClaimPrefixPolicy = "Prefix"
	// UsernameClaimPrefixPolicyNoPrefix - do not prefix the JWT claim.
	UsernameClaimPrefixPolicyNoPrefix UsernameClaimPrefixPolicy = "NoPrefix"
	// UsernameClaimPrefixPolicyNone - let the platform choose an appropriate prefix.
	UsernameClaimPrefixPolicyNone UsernameClaimPrefixPolicy = "None"
)

type UsernameClaimProfile

type UsernameClaimProfile struct {
	Claim        string                    `json:"claim"`
	Prefix       string                    `json:"prefix"`
	PrefixPolicy UsernameClaimPrefixPolicy `json:"prefixPolicy"`
}

External Auth claim profile This configures how the username of a cluster identity should be constructed from the claims in a JWT token issued by the identity provider. Visibility for the entire struct is "read create update".

type ValidationPathMapperFunc

type ValidationPathMapperFunc func(path string) string

ValidationPathMapperFunc takes an internal path from validation and converts it to the external path for this particular version. This needs to be as close as possible, but perfection isn't required since fields could be split or combined.

type Version

type Version interface {
	fmt.Stringer

	ValidationPathRewriter(obj any) (ValidationPathMapperFunc, error)

	// Resource Types
	// Passing a nil pointer creates a resource with default values.
	NewHCPOpenShiftCluster(*HCPOpenShiftCluster) VersionedHCPOpenShiftCluster
	NewHCPOpenShiftClusterNodePool(*HCPOpenShiftClusterNodePool) VersionedHCPOpenShiftClusterNodePool
	NewHCPOpenShiftClusterExternalAuth(*HCPOpenShiftClusterExternalAuth) VersionedHCPOpenShiftClusterExternalAuth
	NewHCPOpenShiftVersion(*HCPOpenShiftVersion) VersionedHCPOpenShiftVersion

	// Response Marshaling
	MarshalHCPOpenShiftClusterAdminCredential(*HCPOpenShiftClusterAdminCredential) ([]byte, error)
}

type VersionProfile

type VersionProfile struct {
	ID           string `json:"id,omitempty"`
	ChannelGroup string `json:"channelGroup,omitempty"`
}

VersionProfile represents the cluster control plane version.

type VersionedCreatableResource

type VersionedCreatableResource[T any] interface {
	VersionedResource
	NewExternal() any
	SetDefaultValues(any) error
	Normalize(*T)
}

type VersionedHCPOpenShiftVersion

type VersionedHCPOpenShiftVersion VersionedResource

type VersionedResource

type VersionedResource interface {
	GetVersion() Version
}

type Visibility

type Visibility string

Visibility represents the visibility of an API endpoint.

const (
	VisibilityPublic  Visibility = "Public"
	VisibilityPrivate Visibility = "Private"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL