controllers

package
v0.0.0-...-7625beb Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2024 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Status field types
	CurrentAMKOClusterValidationStatusType = 0
	ClusterContextsStatusType              = 1
	MemberValidationStatusType             = 2
	GSLBConfigFederationStatusType         = 3
	GDPFederationStatusType                = 4

	// Status field type values
	CurrentAMKOClusterValidationStatusField = "current AMKOCluster Validation"
	ClusterContextsStatusField              = "member cluster initialisation"
	MemberValidationStatusField             = "member cluster validation"
	GSLBConfigFederationStatusField         = "GSLBConfig Federation"
	GDPFederationStatusField                = "GDP Federation"

	StatusMsgInvalidAMKOCluster = "invalid AMKOCluster object"
	StatusMsgValidAMKOCluster   = "valid AMKOCluster object"

	StatusMsgClusterClientsInvalid     = "member cluster clients invalid"
	StatusMsgSomeClusterClientsInvalid = "some member cluster clients couldn't be fetched"
	StatusMsgClusterClientsSuccess     = "all cluster clients fetched"

	StatusMemberValidationFailure  = "validation of member clusters failed"
	StatusMembersInvalid           = "error in validating some member clusters"
	StatusMembersValidationSuccess = "validated all member clusters"

	StatusGSLBConfigFederationFailure     = "failure in federation"
	StatusSomeGSLBConfigFederationFailure = "error in federating to some clusters"
	StatusGSLBConfigFederationSuccess     = "federated to all valid clusters successfully"

	StatusGDPFederationFailure     = "failure in federation"
	StatusSomeGDPFederationFailure = "error in federating to some clusters"
	StatusGDPFederationSuccess     = "federated to all valid clusters successfully"

	StatusMsgFederationFailure = "failure in federating objects"
	StatusMsgFederationSuccess = "federation successful"
	StatusMsgNotALeader        = "won't federate objects"

	ErrMembersValidation = "failure in validating some members"
	ErrFederationFailure = "object couldn't be federated to all clusters"
	ErrInitClientContext = "error in initializing member custer context"

	AMKONotALeaderReason = "AMKO not a leader"
)
View Source
const (
	Cluster1                 = "cluster1"
	Cluster2                 = "cluster2"
	TestAMKOVersion          = "1.4.2"
	TestAMKODifferentVersion = "1.5.1"
	TestAMKOClusterName      = "test-amko-cluster"
	TestGSLBSecret           = "gslb-config-secret"
	AMKOCRDs                 = "../../helm/amko/crds"
	TestGCName               = "test-gc"
	TestGDPName              = "test-gdp"
	TestLeaderIP             = "10.10.10.10"
)
View Source
const (
	FederationTypeStatusStr = "Federation"

	AviSystemNS           = "avi-system"
	MembersKubePath       = "/tmp/members-kubeconfig"
	GCSuffix              = "--amko.gslbconfig-"
	GDPSuffix             = "--amko.gdp-"
	AMKOGroup             = "amko.vmware.com"
	GCKind                = "GSLBConfig"
	GDPKind               = "GlobalDeploymentPolicy"
	GCVersion             = "v1alpha1"
	GDPVersion            = "v1alpha2"
	FederatorFieldManager = "AMKO-Federator"
)
View Source
const (
	DEFAULT_FILE_SUFFIX = "avi.log"
)
View Source
const KubeConfigData = `
apiVersion: v1
clusters: []
contexts: []
kind: Config
preferences: {}
users: []
`

Variables

This section is empty.

Functions

func AcceptGenerationChangePredicate

func AcceptGenerationChangePredicate() predicate.Predicate

func BuildAndCreateTestKubeConfig

func BuildAndCreateTestKubeConfig(k8sClient1, k8sClient2 client.Client)

func BuildContextConfig

func BuildContextConfig(kubeconfigPath, context string) (*restclient.Config, error)

BuildContextConfig builds the kubernetes/openshift context config

func CleanupTestObjects

func CleanupTestObjects(k8sClient1, k8sClient2 client.Client,
	amkoCluster1, amkoCluster2 *amkovmwarecomv1alpha1.AMKOCluster,
	gcObj *gslbalphav1.GSLBConfig, gdpObj *gdpalphav2.GlobalDeploymentPolicy)

func DeleteObjInMemberCluster

func DeleteObjInMemberCluster(ctx context.Context, c client.Client, obj client.Object,
	cname string) error

func FetchMemberClusterContexts

func FetchMemberClusterContexts(ctx context.Context,
	amkoCluster *amkov1alpha1.AMKOCluster) ([]KubeContextDetails, []ClusterErrorMsg, error)

func GetClusterErrMsg

func GetClusterErrMsg(errClusters []ClusterErrorMsg) string

func GetLogWriter

func GetLogWriter() (*lumberjack.Logger, bool, error)

GetLogWriter returns a log writer if USE_PVC is set to true. If USE_PVC is not defined, it returns a false indicating that the default console should be used for logging.

func InitMemberClusterContexts

func InitMemberClusterContexts(ctx context.Context, currentContext string,
	clusterList []string) ([]KubeContextDetails, []ClusterErrorMsg, error)

func InitialiseMemberClusterClient

func InitialiseMemberClusterClient(cfg *restclient.Config) (client.Client, error)

func IsMemberClusterLeader

func IsMemberClusterLeader(objs []amkov1alpha1.AMKOCluster) bool

func IsObjAMKOClusterType

func IsObjAMKOClusterType(ctx context.Context, name string) bool

func TestGCGDPExist

func TestGCGDPExist(k8sClient client.Client)

func TestGCGDPNotFederated

func TestGCGDPNotFederated(k8sClient client.Client)

func UpdateObjOnMemberCluster

func UpdateObjOnMemberCluster(ctx context.Context, c client.Client, source,
	target client.Object, cname string) error

func ValidateMemberClusters

func ValidateMemberClusters(ctx context.Context, memberClusters []KubeContextDetails,
	currVersion string) ([]KubeContextDetails, []ClusterErrorMsg, error)

TODO: Move functions used by both federator and main gslb to a common library

func VerifyAMKOClusterSanity

func VerifyAMKOClusterSanity(amkoCluster *amkov1alpha1.AMKOCluster) error

func VerifySuccessForAllStatusFields

func VerifySuccessForAllStatusFields(k8sClient client.Client)

func VerifyTestAMKOClusterStatus

func VerifyTestAMKOClusterStatus(k8sClient client.Client, statusType, statusMsg, failureMsg string)

Types

type AMKOClusterReconciler

type AMKOClusterReconciler struct {
	client.Client
	Scheme *runtime.Scheme
}

AMKOClusterReconciler reconciles a AMKOCluster object

func (*AMKOClusterReconciler) FederateGDP

func (r *AMKOClusterReconciler) FederateGDP(ctx context.Context, memberClusters []KubeContextDetails) ([]ClusterErrorMsg, error)

func (*AMKOClusterReconciler) FederateGDPAndUpdateStatus

func (r *AMKOClusterReconciler) FederateGDPAndUpdateStatus(ctx context.Context, validClusters []KubeContextDetails,
	amkoCluster *amkov1alpha1.AMKOCluster) error

func (*AMKOClusterReconciler) FederateGSLBConfig

func (r *AMKOClusterReconciler) FederateGSLBConfig(ctx context.Context, memberClusters []KubeContextDetails) ([]ClusterErrorMsg, error)

func (*AMKOClusterReconciler) FederateGSLBConfigAndUpdateStatus

func (r *AMKOClusterReconciler) FederateGSLBConfigAndUpdateStatus(ctx context.Context, validClusters []KubeContextDetails,
	amkoCluster *amkov1alpha1.AMKOCluster) error

func (*AMKOClusterReconciler) FetchMemberClusterContexts

func (r *AMKOClusterReconciler) FetchMemberClusterContexts(ctx context.Context, amkoCluster *amkov1alpha1.AMKOCluster) ([]KubeContextDetails, []ClusterErrorMsg, error)

func (*AMKOClusterReconciler) FetchMemberClusterContextsAndUpdateStatus

func (r *AMKOClusterReconciler) FetchMemberClusterContextsAndUpdateStatus(ctx context.Context, amkoCluster *amkov1alpha1.AMKOCluster) ([]KubeContextDetails, error)

func (*AMKOClusterReconciler) GetObjectsToBeFederated

func (r *AMKOClusterReconciler) GetObjectsToBeFederated(ctx context.Context) ([]client.Object, error)

func (*AMKOClusterReconciler) PatchAMKOClusterStatus

func (r *AMKOClusterReconciler) PatchAMKOClusterStatus(ctx context.Context, amkoCluster, updatedAMKOCluster *amkov1alpha1.AMKOCluster) error

func (*AMKOClusterReconciler) Reconcile

func (r *AMKOClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)

func (*AMKOClusterReconciler) SetupWithManager

func (r *AMKOClusterReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager sets up the controller with the Manager.

func (*AMKOClusterReconciler) UpdateAMKOClusterStatus

func (r *AMKOClusterReconciler) UpdateAMKOClusterStatus(ctx context.Context, statusType int,
	statusMsg, reason string, errClusters []ClusterErrorMsg,
	updatedAMKOCluster *amkov1alpha1.AMKOCluster) error

func (*AMKOClusterReconciler) UpdateStatus

func (r *AMKOClusterReconciler) UpdateStatus(updatedAMKOCluster *amkov1alpha1.AMKOCluster)

func (*AMKOClusterReconciler) ValidateAMKOClusterSanityAndUpdateStatus

func (r *AMKOClusterReconciler) ValidateAMKOClusterSanityAndUpdateStatus(ctx context.Context,
	amkoCluster *amkov1alpha1.AMKOCluster) error

func (*AMKOClusterReconciler) ValidateMemberClustersAndUpdateStatus

func (r *AMKOClusterReconciler) ValidateMemberClustersAndUpdateStatus(ctx context.Context, memberClusters []KubeContextDetails,
	amkoCluster *amkov1alpha1.AMKOCluster) ([]KubeContextDetails, error)

type ClusterData

type ClusterData struct {
	Cluster ClusterServerData `yaml:"cluster"`
	Name    string            `yaml:"name"`
}

type ClusterErrorMsg

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

func DeleteObjsOnAllMemberClusters

func DeleteObjsOnAllMemberClusters(ctx context.Context, memberClusters []KubeContextDetails, namespace string,
	obj client.Object) []ClusterErrorMsg

func FederateGCObjectOnMemberClusters

func FederateGCObjectOnMemberClusters(ctx context.Context, memberClusters []KubeContextDetails,
	currObj *gslbalphav1.GSLBConfig) []ClusterErrorMsg

func FederateGDPObjectOnMemberClusters

func FederateGDPObjectOnMemberClusters(ctx context.Context, memberClusters []KubeContextDetails,
	currObj *gdpalphav2.GlobalDeploymentPolicy) []ClusterErrorMsg

type ClusterServerData

type ClusterServerData struct {
	CAData string `yaml:"certificate-authority-data"`
	Server string `yaml:"server"`
}

type ClustersKubeConfig

type ClustersKubeConfig struct {
	APIVersion string            `yaml:"apiVersion"`
	Clusters   []ClusterData     `yaml:"clusters"`
	Contexts   []KubeContextData `yaml:"contexts"`
	Kind       string            `yaml:"kind"`
	Users      []UserData        `yaml:"users"`
}

type ContextData

type ContextData struct {
	Cluster string `yaml:"cluster"`
	User    string `yaml:"user"`
}

type KubeContextData

type KubeContextData struct {
	Context ContextData `yaml:"context"`
	Name    string      `yaml:"name"`
}

type KubeContextDetails

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

type StatusMsgRecord

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

type UserData

type UserData struct {
	Name string `yaml:"name"`
	User UserID `yaml:"user"`
}

type UserID

type UserID struct {
	ClientCert string `yaml:"client-certificate-data"`
	ClientKey  string `yaml:"client-key-data"`
}

Jump to

Keyboard shortcuts

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