util

package
v0.1.11 Latest Latest
Warning

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

Go to latest
Published: Sep 15, 2023 License: Apache-2.0 Imports: 50 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KubeconfigKey        = "kubeconfig"
	AWSCloudProviderName = "aws"
)
View Source
const (

	// CPOImageName is the name under which components can find the CPO image in the release image..
	CPOImageName = "controlplane-operator"

	// AvailabilityProberImageName is the name under which components can find the availability prober
	// image in the release image.
	AvailabilityProberImageName = "availability-prober"
)
View Source
const (
	// DebugDeploymentsAnnotation contains a comma separated list of deployment names which should always be scaled to 0
	// for development.
	DebugDeploymentsAnnotation = "hypershift.openshift.io/debug-deployments"
)
View Source
const HCPRouteLabel = "hypershift.openshift.io/hosted-control-plane"
View Source
const InternalRouteLabel = "hypershift.openshift.io/internal-route"

Variables

This section is empty.

Functions

func APIPort

func APIPort(hcp *hyperv1.HostedControlPlane) *int32

func AddHCPRouteLabel

func AddHCPRouteLabel(target crclient.Object)

func AddInternalRouteLabel

func AddInternalRouteLabel(target crclient.Object)

func AdvertiseAddress

func AdvertiseAddress(hcp *hyperv1.HostedControlPlane) *string

func AdvertiseAddressWithDefault

func AdvertiseAddressWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue string) string

func AllowedCIDRBlocks

func AllowedCIDRBlocks(hcp *hyperv1.HostedControlPlane) []hyperv1.CIDRBlock

func ApplyCloudProviderCreds

func ApplyCloudProviderCreds(
	podSpec *corev1.PodSpec,
	cloudProvider string,
	cloudProviderCreds *corev1.LocalObjectReference,
	tokenMinterImage string,
	containerName string,
)

func ApplyClusterIDLabel

func ApplyClusterIDLabel(ep *prometheusoperatorv1.Endpoint, clusterID string)

func ApplyClusterIDLabelToPodMonitor

func ApplyClusterIDLabelToPodMonitor(ep *prometheusoperatorv1.PodMetricsEndpoint, clusterID string)

func ApplyClusterIDLabelToRecordingRule

func ApplyClusterIDLabelToRecordingRule(rule *prometheusoperatorv1.Rule, clusterID string)

func AvailabilityProber

func AvailabilityProber(target string, image string, spec *corev1.PodSpec, o ...AvailabilityProberOpt)

func BindAPIPortWithDefault

func BindAPIPortWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue int32) int32

BindAPIPortWithDefault will retrieve the port the kube-apiserver binds on locally in the pod. This comes from hcp.Spec.Networking.APIServer.Port if set and != 443

func BindAPIPortWithDefaultFromHostedCluster

func BindAPIPortWithDefaultFromHostedCluster(hc *hyperv1.HostedCluster, defaultValue int32) int32

BindAPIPortWithDefaultFromHostedCluster will retrieve the port the kube-apiserver binds on locally in the pod. This comes from hcp.Spec.Networking.APIServer.Port if set and != 443

func BuildContainer

func BuildContainer(container *corev1.Container, buildFn func(*corev1.Container)) corev1.Container

func BuildVolume

func BuildVolume(volume *corev1.Volume, buildFn func(*corev1.Volume)) corev1.Volume

func ClusterCIDRs

func ClusterCIDRs(clusterNetwork []hyperv1.ClusterNetworkEntry) []string

func CollectLBMessageIfNotProvisioned

func CollectLBMessageIfNotProvisioned(svc *corev1.Service, messageCollector events.MessageCollector) (string, error)

func Compress

func Compress(payload []byte) (*bytes.Buffer, error)

Compress compresses a given byte array.

func CompressAndEncode

func CompressAndEncode(payload []byte) (*bytes.Buffer, error)

CompressAndEncode compresses and base-64 encodes a given byte array. Ideal for loading an arbitrary byte array into a ConfigMap or Secret.

func ComputeHash

func ComputeHash(s string) string

func ConnectsThroughInternetToControlplane

func ConnectsThroughInternetToControlplane(platform hyperv1.PlatformSpec) bool

HasPrivateAPIServerConnectivity determines if workloads running inside the guest cluster can access the apiserver without using the Internet.

func ConvertImageRegistryOverrideStringToMap added in v0.1.10

func ConvertImageRegistryOverrideStringToMap(envVar string) map[string][]string

ConvertImageRegistryOverrideStringToMap translates the environment variable containing registry source to mirror mappings back to a map[string]string structure that can be ingested by the registry image content policies release provider

func ConvertOpenShiftImageRegistryOverridesToCommandLineFlag added in v0.1.10

func ConvertOpenShiftImageRegistryOverridesToCommandLineFlag(registryOverrides map[string][]string) string

ConvertOpenShiftImageRegistryOverridesToCommandLineFlag converts a map of image registry sources and their mirrors into a string

func ConvertRegistryOverridesToCommandLineFlag added in v0.1.10

func ConvertRegistryOverridesToCommandLineFlag(registryOverrides map[string]string) string

ConvertRegistryOverridesToCommandLineFlag converts a map of registry sources and their mirrors into a string

func CopyConfigMap

func CopyConfigMap(cm, source *corev1.ConfigMap)

CopyConfigMap copies the .Data field of configMap `source` into configmap `cm`

func CreateTokenForServiceAccount added in v0.1.2

func CreateTokenForServiceAccount(ctx context.Context, serviceAccount *corev1.ServiceAccount, client *kubernetes.Clientset) (string, error)

func DecodeAndDecompress

func DecodeAndDecompress(payload []byte) (*bytes.Buffer, error)

DecodeAndDecompress decompresses and base-64 decodes a given byte array. Ideal for consuming a gzipped / base64-encoded byte array from a ConfigMap or Secret.

func DeleteIfNeeded

func DeleteIfNeeded(ctx context.Context, c client.Client, o client.Object) (exists bool, err error)

func DeploymentAddKubevirtInfraCredentials added in v0.1.10

func DeploymentAddKubevirtInfraCredentials(deployment *appsv1.Deployment)

func DeploymentAddTrustBundleVolume

func DeploymentAddTrustBundleVolume(trustBundleConfigMap *corev1.LocalObjectReference, deployment *appsv1.Deployment)

func DeserializeResource

func DeserializeResource(data string, resource runtime.Object, objectTyper runtime.ObjectTyper) error

func EnsureOwnerRef

func EnsureOwnerRef(resource client.Object, ownerRef *metav1.OwnerReference)

func EnsurePullSecret

func EnsurePullSecret(serviceAccount *corev1.ServiceAccount, secretName string)

func FindContainer

func FindContainer(name string, containers []corev1.Container) *corev1.Container

func FirstClusterCIDR

func FirstClusterCIDR(clusterNetwork []hyperv1.ClusterNetworkEntry) string

func FirstMachineCIDR

func FirstMachineCIDR(machineNetwork []hyperv1.MachineNetworkEntry) string

func FirstServiceCIDR

func FirstServiceCIDR(serviceNetwork []hyperv1.ServiceNetworkEntry) string

func FirstUsableIP added in v0.1.10

func FirstUsableIP(cidr string) (string, error)

FirstUsableIP returns the first usable IP in both, IPv4 and IPv6 stacks.

func GenerateReconciliationActiveCondition

func GenerateReconciliationActiveCondition(pausedUntilField *string, objectGeneration int64) metav1.Condition

GenerateReconciliationActiveCondition will generate the resource condition that reflects the state of reconciliation on the resource.

func GetAdvertiseAddress added in v0.1.10

func GetAdvertiseAddress(hcp *hyperv1.HostedControlPlane, ipv4DefaultAddress, ipv6DefaultAddress string) string

func GetPayloadImage

func GetPayloadImage(ctx context.Context, releaseImageProvider releaseinfo.Provider, hc *hyperv1.HostedCluster, component string, pullSecret []byte) (string, error)

func GetPayloadVersion

func GetPayloadVersion(ctx context.Context, releaseImageProvider releaseinfo.Provider, hc *hyperv1.HostedCluster, pullSecret []byte) (*semver.Version, error)

func GetRegistryOverrides added in v0.1.10

func GetRegistryOverrides(ctx context.Context, ref reference.DockerImageReference, imageContentSources []hyperv1.ImageContentSource) (*reference.DockerImageReference, error)

func HCControlPlaneReleaseImage added in v0.1.10

func HCControlPlaneReleaseImage(hcluster *hyperv1.HostedCluster) string

func HCPControlPlaneReleaseImage added in v0.1.10

func HCPControlPlaneReleaseImage(hcp *hyperv1.HostedControlPlane) string

func HashStruct

func HashStruct(o interface{}) string

HashStruct takes a value, typically a string, and returns a 32-bit FNV-1a hashed version of the value as a string

func ImageLabels

func ImageLabels(metadata *dockerv1client.DockerImageConfig) map[string]string

ImageLabels returns labels on a given image metadata

func InsecureHTTPClient added in v0.1.10

func InsecureHTTPClient() *http.Client

InsecureHTTPClient return a http.Client which skips server certificate verification

func InternalAPIPortFromHostedClusterWithDefault

func InternalAPIPortFromHostedClusterWithDefault(hc *hyperv1.HostedCluster, defaultValue int32) int32

InternalAPIPortFromHostedClusterWithDefault will retrieve the port to use to contact the APIServer over the Kubernetes service domain kube-apiserver.NAMESPACE.svc.cluster.local:INTERNAL_API_PORT

func InternalAPIPortWithDefault

func InternalAPIPortWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue int32) int32

InternalAPIPortWithDefault will retrieve the port to use to contact the APIServer over the Kubernetes service domain kube-apiserver.NAMESPACE.svc.cluster.local:INTERNAL_API_PORT

func IsDeploymentReady

func IsDeploymentReady(ctx context.Context, deployment *appsv1.Deployment) bool

func IsIPv4 added in v0.1.10

func IsIPv4(cidr string) (bool, error)

IsIPv4 function parse the CIDR and get the IPNet struct if the IPNet.IP cannot be converted to 4bytes format, the function returns nil, if it's an IPv6 it will return nil.

func IsPrivateHC

func IsPrivateHC(hc *hyperv1.HostedCluster) bool

func IsPrivateHCP

func IsPrivateHCP(hcp *hyperv1.HostedControlPlane) bool

func IsPublicHC added in v0.1.10

func IsPublicHC(hc *hyperv1.HostedCluster) bool

func IsPublicHCP

func IsPublicHCP(hcp *hyperv1.HostedControlPlane) bool

func IsPublicKASWithDNS

func IsPublicKASWithDNS(hostedControlPlane *hyperv1.HostedControlPlane) bool

func IsReconciliationPaused

func IsReconciliationPaused(logr logr.Logger, pausedUntilField *string) (bool, time.Duration)

IsReconciliationPaused checks the pauseUntil field to see if reconciliation on the resource should be paused and for how long.

func IsRouteKAS

func IsRouteKAS(hcp *hyperv1.HostedControlPlane) bool

func IsStatefulSetReady added in v0.1.9

func IsStatefulSetReady(ctx context.Context, statefulSet *appsv1.StatefulSet) bool

func MachineCIDRs

func MachineCIDRs(machineNetwork []hyperv1.MachineNetworkEntry) []string

func NameServerIP added in v0.1.10

func NameServerIP() (string, error)

func ParseNamespacedName

func ParseNamespacedName(name string) types.NamespacedName

ParseNamespacedName expects a string with the format "namespace/name" and returns the proper types.NamespacedName. This is useful when watching a CR annotated with the format above to requeue the CR described in the annotation.

func ProcessPausedUntilField

func ProcessPausedUntilField(pausedUntilField *string, now time.Time) (isPaused bool, duration time.Duration, err error)

ProcessPausedUntilField checks the pauseUntil field to see if reconciliation on the resource should be paused. Input can either be a date in RFC3339 format, or a Boolean. It returns a Boolean isPaused, a duration and an error. If the input is a date, a duration!=0 is returned so consumers can choose to requeueAfter it.

func ReconcileExternalRoute

func ReconcileExternalRoute(route *routev1.Route, hostname string, defaultIngressDomain string, serviceName string) error

func ReconcileInternalRoute

func ReconcileInternalRoute(route *routev1.Route, hcName string, serviceName string) error

func ResolveDNSHostname

func ResolveDNSHostname(ctx context.Context, hostName string) error

ResolveDNSHostname receives a hostname string and tries to resolve it. Returns error if the host can't be resolved.

func SerializeResource

func SerializeResource(resource runtime.Object, objectTyper runtime.ObjectTyper) (string, error)

func ServiceCIDRs

func ServiceCIDRs(serviceNetwork []hyperv1.ServiceNetworkEntry) []string

func ServiceExternalDNSHostname

func ServiceExternalDNSHostname(hcp *hyperv1.HostedControlPlane, serviceType hyperv1.ServiceType) string

func ServiceExternalDNSHostnameByHC added in v0.1.10

func ServiceExternalDNSHostnameByHC(hc *hyperv1.HostedCluster, serviceType hyperv1.ServiceType) string

func ShortenRouteHostnameIfNeeded

func ShortenRouteHostnameIfNeeded(name, namespace string, baseDomain string) string

ShortenRouteHostnameIfNeeded will return a shortened hostname if the route hostname will exceed the allowed DNS name size. If the hostname is not too long, an empty string is returned so that the default can be used.

func StringListContains

func StringListContains(list string, s string) bool

Contains checks if a comma-delimited string contains a specific string.

func UseDedicatedDNSForKASByHC

func UseDedicatedDNSForKASByHC(hc *hyperv1.HostedCluster) bool

func UseDedicatedDNSforKAS

func UseDedicatedDNSforKAS(hcp *hyperv1.HostedControlPlane) bool

Types

type AvailabilityProberOpt

type AvailabilityProberOpt func(*AvailabilityProberOpts)

type AvailabilityProberOpts

type AvailabilityProberOpts struct {
	KubeconfigVolumeName          string
	RequiredAPIs                  []schema.GroupVersionKind
	WaitForInfrastructureResource bool
	WaitForLabeledPodsGone        string
}

type ContainerVolumeMounts

type ContainerVolumeMounts map[string]string

type ImageMetadataProvider

type ImageMetadataProvider interface {
	ImageMetadata(ctx context.Context, imageRef string, pullSecret []byte, imageContentSources []hyperv1.ImageContentSource) (*dockerv1client.DockerImageConfig, error)
}

type PodVolumeMounts

type PodVolumeMounts map[string]ContainerVolumeMounts

func (PodVolumeMounts) ContainerMounts

func (m PodVolumeMounts) ContainerMounts(container string) []corev1.VolumeMount

func (PodVolumeMounts) Path

func (m PodVolumeMounts) Path(container, volume string) string

type RegistryClientImageMetadataProvider

type RegistryClientImageMetadataProvider struct{}

func (*RegistryClientImageMetadataProvider) ImageMetadata

func (*RegistryClientImageMetadataProvider) ImageMetadata(ctx context.Context, imageRef string, pullSecret []byte, imageContentSource []hyperv1.ImageContentSource) (*dockerv1client.DockerImageConfig, error)

ImageMetadata returns metadata for a given image using the given pull secret to authenticate. This lookup uses a cache based on the image digest. If the reference of the image contains a digest (which is the mainline case for images in a release payload), the digest is parsed from the image reference and then used to lookup image metadata in the cache. When the image reference does not contain a digest, a lookup is made to the registry to fetch the digest of the image that the tag refers to. This is because the actual image that the tag is referring to could have changed. Once a digest is obtained, the cache is checked so that no further fetching occurs. Only if both cache lookups fail, the image metadata is fetched and stored in the cache.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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