util

package
v0.1.26 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2024 License: Apache-2.0 Imports: 84 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Metrics
	// TODO (jparrill): We need to separate the metrics.go from the main pkg in the hypershift-operator.
	//     Delete these references when it's done and import it from there
	HypershiftOperatorInfoName = "hypershift_operator_info"
)
View Source
const OAuthServerConfigKey = "config.yaml"

Variables

This section is empty.

Functions

func CleanupOIDCBucketObjects added in v0.1.4

func CleanupOIDCBucketObjects(log logr.Logger, s3Client *s3.S3, bucketName, issuerURL string)

func CorrelateDaemonSet

func CorrelateDaemonSet(ds *appsv1.DaemonSet, nodePool *hyperv1.NodePool, dsName string)

func DeleteNamespace

func DeleteNamespace(t *testing.T, ctx context.Context, client crclient.Client, namespace string) error

DeleteNamespace deletes and finalizes the given namespace, logging any failures along the way.

func DestroyOIDCProvider added in v0.1.4

func DestroyOIDCProvider(log logr.Logger, iamClient iamiface.IAMAPI, issuerURL string)

func EnsureAPIBudget

func EnsureAPIBudget(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureAllContainersHavePullPolicyIfNotPresent

func EnsureAllContainersHavePullPolicyIfNotPresent(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureAllReqServingPodsLandOnReqServingNodes added in v0.1.16

func EnsureAllReqServingPodsLandOnReqServingNodes(t *testing.T, ctx context.Context, client crclient.Client)

func EnsureAllRoutesUseHCPRouter

func EnsureAllRoutesUseHCPRouter(t *testing.T, ctx context.Context, hostClient crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureGuestWebhooksValidated added in v0.1.10

func EnsureGuestWebhooksValidated(t *testing.T, ctx context.Context, guestClient crclient.Client)

func EnsureHCPContainersHaveResourceRequests

func EnsureHCPContainersHaveResourceRequests(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureHCPPodsAffinitiesAndTolerations added in v0.1.16

func EnsureHCPPodsAffinitiesAndTolerations(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureMachineDeploymentGeneration

func EnsureMachineDeploymentGeneration(t *testing.T, ctx context.Context, hostClient crclient.Client, hostedCluster *hyperv1.HostedCluster, expectedGeneration int64)

func EnsureNetworkPolicies added in v0.1.10

func EnsureNetworkPolicies(t *testing.T, ctx context.Context, c crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureNoCrashingPods

func EnsureNoCrashingPods(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureNoHCPPodsLandOnDefaultNode added in v0.1.17

func EnsureNoHCPPodsLandOnDefaultNode(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureNoPodsWithTooHighPriority

func EnsureNoPodsWithTooHighPriority(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureNodeCommunication

func EnsureNodeCommunication(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureNodeCountMatchesNodePoolReplicas

func EnsureNodeCountMatchesNodePoolReplicas(t *testing.T, ctx context.Context, hostClient, guestClient crclient.Client, nodePoolNamespace string)

func EnsureNodesLabelsAndTaints added in v0.1.10

func EnsureNodesLabelsAndTaints(t *testing.T, nodePool hyperv1.NodePool, nodes []corev1.Node)

func EnsureOAuthWithIdentityProvider added in v0.1.2

func EnsureOAuthWithIdentityProvider(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureOnlyRequestServingPodsOnRequestServingNodes added in v0.1.16

func EnsureOnlyRequestServingPodsOnRequestServingNodes(t *testing.T, ctx context.Context, client crclient.Client)

func EnsurePSANotPrivileged added in v0.1.10

func EnsurePSANotPrivileged(t *testing.T, ctx context.Context, guestClient crclient.Client)

func EnsurePodsWithEmptyDirPVsHaveSafeToEvictAnnotations added in v0.1.10

func EnsurePodsWithEmptyDirPVsHaveSafeToEvictAnnotations(t *testing.T, ctx context.Context, hostClient crclient.Client, hcpNs string)

func EnsureSATokenNotMountedUnlessNecessary added in v0.1.19

func EnsureSATokenNotMountedUnlessNecessary(t *testing.T, ctx context.Context, c crclient.Client, hostedCluster *hyperv1.HostedCluster)

func EnsureSecretEncryptedUsingKMS

func EnsureSecretEncryptedUsingKMS(t *testing.T, ctx context.Context, hostedCluster *hyperv1.HostedCluster, guestClient crclient.Client)

func GetClient

func GetClient() (crclient.Client, error)

GetClient creates a controller-runtime client for Kubernetes

func GetConfig

func GetConfig() (*rest.Config, error)

GetConfig creates a REST config from current context

func GetIAMClient added in v0.1.4

func GetIAMClient(awsCreds, awsRegion string) iamiface.IAMAPI

func GetKMSKeyArn

func GetKMSKeyArn(awsCreds, awsRegion, alias string) (*string, error)

func GetS3Client added in v0.1.4

func GetS3Client(awsCreds, awsRegion string) *s3.S3

func GetUserForToken added in v0.1.2

func GetUserForToken(config *restclient.Config, token string) (*userv1.User, error)

func NewHypershiftTest added in v0.1.10

func NewHypershiftTest(t *testing.T, ctx context.Context, test hypershiftTestFunc) *hypershiftTest

func NewLogr

func NewLogr(t *testing.T) logr.Logger

func NewPrometheusClient added in v0.1.6

func NewPrometheusClient(ctx context.Context) (prometheusv1.API, error)

func NoticePreemptionOrFailedScheduling

func NoticePreemptionOrFailedScheduling(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func RunCommandInPod added in v0.1.10

func RunCommandInPod(ctx context.Context, c crclient.Client, component, namespace string, command []string, containerName string) (string, error)

func SetupReqServingClusterNodePools added in v0.1.17

func SetupReqServingClusterNodePools(ctx context.Context, t *testing.T, kubeconfigPath, mgmtHCNamespace, mgmtHCName string) []*hyperv1.NodePool

func TearDownNodePools added in v0.1.17

func TearDownNodePools(ctx context.Context, t *testing.T, kubeconfigPath string, nodePools []*hyperv1.NodePool)

func UpdateObject added in v0.1.6

func UpdateObject[T crclient.Object](t *testing.T, ctx context.Context, client crclient.Client, original T, mutate func(obj T)) error

func ValidateMetrics added in v0.1.10

func ValidateMetrics(t *testing.T, ctx context.Context, hc *hyperv1.HostedCluster, metricsNames []string, areMetricsExpectedToBePresent bool)

Verifies that the given metrics are defined for the given hosted cluster if areMetricsExpectedToBePresent is set to true. Verifies that the given metrics are not defined otherwise.

func ValidatePrivateCluster added in v0.1.10

func ValidatePrivateCluster(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster, clusterOpts *core.CreateOptions)

func ValidatePublicCluster added in v0.1.10

func ValidatePublicCluster(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster, clusterOpts *core.CreateOptions)

func WaitForConditionsOnHostedControlPlane

func WaitForConditionsOnHostedControlPlane(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster, image string)

func WaitForGuestClient

func WaitForGuestClient(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster) crclient.Client

func WaitForGuestKubeConfig

func WaitForGuestKubeConfig(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster) ([]byte, error)

func WaitForImageRollout

func WaitForImageRollout(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster, image string)

func WaitForNReadyNodes

func WaitForNReadyNodes(t *testing.T, ctx context.Context, client crclient.Client, n int32, platform hyperv1.PlatformType) []corev1.Node

func WaitForNReadyNodesByNodePool

func WaitForNReadyNodesByNodePool(t *testing.T, ctx context.Context, client crclient.Client, n int32, platform hyperv1.PlatformType, nodePoolName string) []corev1.Node

func WaitForNodePoolConditionsNotToBePresent

func WaitForNodePoolConditionsNotToBePresent(t *testing.T, ctx context.Context, client crclient.Client, nodePool *hyperv1.NodePool, conditions ...string)

WaitForNodePoolConditionsNotToBePresent blocks until the given conditions are not present in the NodePool.

func WaitForNodePoolDesiredNodes added in v0.1.6

func WaitForNodePoolDesiredNodes(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

func WaitForNodePoolVersion

func WaitForNodePoolVersion(t *testing.T, ctx context.Context, client crclient.Client, nodePool *hyperv1.NodePool, version string)

WaitForNodePoolVersion blocks until the NodePool status indicates the given version. If the context is closed before the version is observed, the given test will get an error.

func WaitForOAuthRouteReady added in v0.1.2

func WaitForOAuthRouteReady(t *testing.T, ctx context.Context, client crclient.Client, restConfig *restclient.Config, hostedCluster *hyperv1.HostedCluster) *routev1.Route

func WaitForOAuthToken added in v0.1.2

func WaitForOAuthToken(t *testing.T, ctx context.Context, oauthRoute *routev1.Route, restConfig *restclient.Config, username, password string) string

func WaitForOauthConfig added in v0.1.6

func WaitForOauthConfig(t *testing.T, ctx context.Context, client crclient.Client, hostedCluster *hyperv1.HostedCluster)

Types

type DefaultRemoteExecutor

type DefaultRemoteExecutor struct{}

DefaultRemoteExecutor is the standard implementation of remote command execution

func (*DefaultRemoteExecutor) Execute

func (*DefaultRemoteExecutor) Execute(method string, url *url.URL, config *restclient.Config, stdin io.Reader, stdout, stderr io.Writer, tty bool) error

type NameGenerator

type NameGenerator interface {
	// GenerateName generates a valid name from the base name, adding a random suffix to the
	// the base. If base is valid, the returned name must also be valid. The generator is
	// responsible for knowing the maximum valid name length.
	GenerateName(base string) string
}

NameGenerator generates names for objects. Some backends may have more information available to guide selection of new names and this interface hides those details.

var SimpleNameGenerator NameGenerator = simpleNameGenerator{}

SimpleNameGenerator is a generator that returns the name plus a random suffix of five alphanumerics when a name is requested. The string is guaranteed to not exceed the length of a standard Kubernetes name (63 characters)

type PodExecOptions

type PodExecOptions struct {
	StreamOptions

	Command []string

	PodName       string
	Namespace     string
	ContainerName string

	Executor RemoteExecutor
	Config   *restclient.Config
}

PodExecOptions declare the arguments accepted by the Exec command

func (*PodExecOptions) Run

func (p *PodExecOptions) Run() error

Run executes a validated remote execution against a pod.

func (*PodExecOptions) Validate

func (p *PodExecOptions) Validate() error

Validate checks that the provided exec options are specified.

type PrometheusResponse added in v0.1.6

type PrometheusResponse struct {
	Data prometheusResponseData `json:"data"`
}

PrometheusResponse is used to contain prometheus query results

func RunQueryAtTime added in v0.1.6

func RunQueryAtTime(ctx context.Context, log logr.Logger, prometheusClient prometheusv1.API, query string, evaluationTime time.Time) (*PrometheusResponse, error)

type RemoteExecutor

type RemoteExecutor interface {
	Execute(method string, url *url.URL, config *restclient.Config, stdin io.Reader, stdout, stderr io.Writer, tty bool) error
}

RemoteExecutor defines the interface accepted by the Exec command - provided for test stubbing

type StreamOptions

type StreamOptions struct {
	Stdin bool
	TTY   bool

	genericclioptions.IOStreams
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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