common

package
v0.21.0 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2020 License: MPL-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package common holds code that isn't tied to a particular CRD version or type.

Index

Constants

View Source
const (
	ServiceDefaults   string = "servicedefaults"
	ProxyDefaults     string = "proxydefaults"
	ServiceResolver   string = "serviceresolver"
	ServiceRouter     string = "servicerouter"
	ServiceSplitter   string = "servicesplitter"
	ServiceIntentions string = "serviceintentions"

	Global                 string = "global"
	DefaultConsulNamespace string = "default"
	WildcardNamespace      string = "*"

	SourceKey     string = "external-source"
	DatacenterKey string = "consul.hashicorp.com/source-datacenter"
	SourceValue   string = "kubernetes"
)

Variables

This section is empty.

Functions

func ValidateConfigEntry

func ValidateConfigEntry(
	ctx context.Context,
	req admission.Request,
	logger logr.Logger,
	configEntryLister ConfigEntryLister,
	cfgEntry ConfigEntryResource,
	enableConsulNamespaces bool,
	nsMirroring bool) admission.Response

ValidateConfigEntry validates cfgEntry. It is a generic method that can be used by all CRD-specific validators. Callers should pass themselves as validator and kind should be the custom resource name, e.g. "ServiceDefaults".

Types

type ConfigEntryLister

type ConfigEntryLister interface {
	// List returns all resources of this type across all namespaces in a
	// Kubernetes cluster.
	List(ctx context.Context) ([]ConfigEntryResource, error)
}

ConfigEntryLister is implemented by CRD-specific webhooks.

type ConfigEntryResource

type ConfigEntryResource interface {
	// GetObjectMeta returns object meta.
	GetObjectMeta() metav1.ObjectMeta
	// AddFinalizer adds a finalizer to the list of finalizers.
	AddFinalizer(name string)
	// RemoveFinalizer removes this finalizer from the list.
	RemoveFinalizer(name string)
	// Finalizers returns the list of finalizers for this object.
	Finalizers() []string
	// ConsulKind returns the Consul config entry kind, i.e. service-defaults, not
	// servicedefaults.
	ConsulKind() string
	// ConsulGlobalResource returns if the resource exists in the default
	// Consul namespace only.
	ConsulGlobalResource() bool
	// ConsulMirroringNS returns the Consul namespace that the config entry should
	// be created in if namespaces and mirroring are enabled.
	ConsulMirroringNS() string
	// KubeKind returns the Kube config entry kind, i.e. servicedefaults, not
	// service-defaults.
	KubeKind() string
	// ConsulName returns the name of the config entry as saved in Consul.
	// This may be different than KubernetesName() in the case of a ServiceIntentions
	// config entry.
	ConsulName() string
	// KubernetesName returns the name of the Kubernetes resource.
	KubernetesName() string
	// SetSyncedCondition updates the synced condition.
	SetSyncedCondition(status corev1.ConditionStatus, reason, message string)
	// SyncedCondition gets the synced condition.
	SyncedCondition() (status corev1.ConditionStatus, reason, message string)
	// SyncedConditionStatus returns the status of the synced condition.
	SyncedConditionStatus() corev1.ConditionStatus
	// ToConsul converts the resource to the corresponding Consul API definition.
	// Its return type is the generic ConfigEntry but a specific config entry
	// type should be constructed e.g. ServiceConfigEntry.
	ToConsul(datacenter string) api.ConfigEntry
	// MatchesConsul returns true if the resource has the same fields as the Consul
	// config entry.
	MatchesConsul(candidate api.ConfigEntry) bool
	// GetObjectKind should be implemented by the generated code.
	GetObjectKind() schema.ObjectKind
	// DeepCopyObject should be implemented by the generated code.
	DeepCopyObject() runtime.Object
	// Validate returns an error if the resource is invalid.
	Validate(namespacesEnabled bool) error
}

ConfigEntryResource is a generic config entry custom resource. It is implemented by each config entry type so that they can be acted upon generically. It is not tied to a specific CRD version.

Jump to

Keyboard shortcuts

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