Documentation ¶
Index ¶
- Constants
- Variables
- func ConditionSlicesEqual(conditions1, conditions2 []v1alpha1.Condition) bool
- func ConditionsEqualIgnoreTransitionTime(c1, c2 v1alpha1.Condition) bool
- func ConstructManagedFieldsV1Set(managedFields []v1.ManagedFieldsEntry) (*fieldpath.Set, error)
- func ConstructTrimmedSpecWithManagedFields(resource *Resource, jsonSchema *apiextensions.JSONSchemaProps, ...) (map[string]interface{}, error)
- func ContainerTypes(containers []corekccv1alpha1.Container) []corekccv1alpha1.ContainerType
- func ContainerTypesFor(hierarchicalRefs []corekccv1alpha1.HierarchicalReference) []corekccv1alpha1.ContainerType
- func CurrentNamespace() string
- func EnsureFinalizer(o metav1.Object, finalizer string) (found bool)
- func EnsureFinalizers(o metav1.Object, finalizers ...string) (found bool)
- func EnsureHierarchicalReference(ctx context.Context, resource *Resource, ...) error
- func EnsureManagementConflictPreventionAnnotationForTFBasedResource(c client.Client, ctx context.Context, obj metav1.Object, ...) error
- func EnsureSpecIntoSateAnnotation(obj *Resource) error
- func FormatAnnotation(annotationName string) string
- func GVKListContains(gvkList []schema.GroupVersionKind, gvk schema.GroupVersionKind) bool
- func GVKSetToList(gvkSet map[schema.GroupVersionKind]bool) []schema.GroupVersionKind
- func GenerateMutableButUnreadableFieldsAnnotation(resource *Resource, mutableButUnreadablePaths [][]string) (string, error)
- func GenerateMutableButUnreadableFieldsState(resource *Resource, mutableButUnreadablePaths [][]string) (map[string]interface{}, error)
- func GetAPIVersionFromCRD(crd *apiextensions.CustomResourceDefinition) string
- func GetAnnotation(annotation string, obj metav1.Object) (string, bool)
- func GetAnnotationForContainerType(containerType corekccv1alpha1.ContainerType) string
- func GetContainerAnnotation(annotations map[string]string, containerTypes []corekccv1alpha1.ContainerType) (string, corekccv1alpha1.ContainerType, error)
- func GetHierarchicalReference(resource *Resource, hierarchicalRefs []corekccv1alpha1.HierarchicalReference) (*corekccv1alpha1.ResourceReference, corekccv1alpha1.HierarchicalReference, ...)
- func GetHierarchicalReferenceFromSpec(spec map[string]interface{}, ...) (*corekccv1alpha1.ResourceReference, corekccv1alpha1.HierarchicalReference, ...)
- func GetK8sManagedFields(u *unstructured.Unstructured) (*fieldpath.Set, error)
- func GetMutableButUnreadableFieldsFromAnnotations(resource *Resource, mutableButUnreadablePaths [][]string) (map[string]interface{}, error)
- func GetNamespacedName(obj metav1.Object) types.NamespacedName
- func GetOpenAPIV3SchemaFromCRD(crd *apiextensions.CustomResourceDefinition) *apiextensions.JSONSchemaProps
- func GetProjectIDForNamespace(c client.Client, ctx context.Context, namespaceName string) (string, error)
- func GetReadyCondition(r *Resource) (condition k8sv1alpha1.Condition, found bool)
- func GetReferencedResourceAsUnstruct(resourceRef *corekccv1alpha1.ResourceReference, gvk schema.GroupVersionKind, ...) (*unstructured.Unstructured, error)
- func GetSecretVal(secretKeyRef *corekccv1alpha1.SecretKeyReference, secretNamespace string, ...) (secretVal string, secretVersion string, err error)
- func GetSecretVersionsFromAnnotations(resource *Resource) (map[string]string, error)
- func GetVersionFromCRD(crd *apiextensions.CustomResourceDefinition) string
- func HasAbandonAnnotation(obj metav1.Object) bool
- func HasFinalizer(o metav1.Object, finalizer string) bool
- func HierarchicalReferenceTypeFor(containerType corekccv1alpha1.ContainerType) corekccv1alpha1.HierarchicalReferenceType
- func HierarchicalReferenceWithType(hierarchicalRefs []corekccv1alpha1.HierarchicalReference, ...) *corekccv1alpha1.HierarchicalReference
- func HierarchicalReferencesToFields(hierarchicalRefs []corekccv1alpha1.HierarchicalReference) []string
- func IsAnnotationsUpdateRequired(resource *Resource, original *Resource) bool
- func IsDeleted(objectMeta *metav1.ObjectMeta) bool
- func IsK8sManaged(key string, specObj map[string]interface{}, managedFields *fieldpath.Set) bool
- func IsManagedByKCC(gvk schema.GroupVersionKind) bool
- func IsProjectScoped(containers []corekccv1alpha1.Container) bool
- func IsReferenceNotFoundError(err error) bool
- func IsResourceReady(r *Resource) bool
- func IsSpecOrStatusUpdateRequired(resource *Resource, original *Resource) bool
- func KindWithoutServicePrefix(gvk schema.GroupVersionKind) string
- func MarshalAsConditionsSlice(obj []interface{}) ([]v1alpha1.Condition, error)
- func MarshalObjectAsUnstructured(o metav1.Object) (*unstructured.Unstructured, error)
- func NewCustomReadyCondition(status v1.ConditionStatus, rs, msg string) v1alpha1.Condition
- func NewErroringClient() client.Client
- func NewReadyCondition() v1alpha1.Condition
- func NewReadyConditionWithError(err error) v1alpha1.Condition
- func OverlayManagedFieldsOntoState(spec, stateAsKRM map[string]interface{}, managedFields *fieldpath.Set, ...) (map[string]interface{}, error)
- func ReadyConditionMatches(resource *Resource, status corev1.ConditionStatus, rs, msg string) bool
- func RemoveAnnotation(annotation string, obj metav1.Object)
- func RemoveFinalizer(o metav1.Object, finalizer string)
- func RenameStatusFieldWithReservedName(field string) string
- func RenameStatusFieldsWithReservedNames(status *apiextensions.JSONSchemaProps) (*apiextensions.JSONSchemaProps, error)
- func ReservedStatusFieldNames() map[string]bool
- func SetAnnotation(annotation, val string, obj metav1.Object)
- func SetDefaultContainerAnnotation(obj metav1.Object, ns *corev1.Namespace, ...) error
- func SetDefaultHierarchicalReference(resource *Resource, ns *corev1.Namespace, ...) error
- func SetHierarchicalReference(resource *Resource, hierarchicalRef *corekccv1alpha1.HierarchicalReference, ...) error
- func SortGVKsByKind(gvks []schema.GroupVersionKind) []schema.GroupVersionKind
- func TriggerManagedFieldsMetadata(ctx context.Context, c client.Client, u *unstructured.Unstructured) (*unstructured.Unstructured, error)
- func UpdateOrRemoveObservedSecretVersionsAnnotation(resource *Resource, secretVersions map[string]string, hasSensitiveFields bool) error
- func ValidateOrDefaultManagementConflictPreventionAnnotationForDCLBasedResource(obj metav1.Object, ns *corev1.Namespace, schema *openapi.Schema) error
- func ValidateOrDefaultManagementConflictPreventionAnnotationForTFBasedResource(obj metav1.Object, ns *corev1.Namespace, rc *corekccv1alpha1.ResourceConfig, ...) error
- func ValidateOrDefaultStateIntoSpecAnnotation(obj *unstructured.Unstructured) error
- func ValueToDNSSubdomainName(value string) string
- type ErrorWithReason
- type ImmutableFieldsMutationError
- type KeyInSecretNotFoundError
- type ManagementConflictPreventionPolicy
- type ReferenceNotFoundError
- type ReferenceNotReadyError
- type Resource
- func GetReferencedResource(resourceRef *corekccv1alpha1.ResourceReference, gvk schema.GroupVersionKind, ...) (*Resource, error)
- func GetReferencedResourceIfReady(resourceRef *corekccv1alpha1.ResourceReference, gvk schema.GroupVersionKind, ...) (*Resource, error)
- func NewResource(u *unstructured.Unstructured) (*Resource, error)
- type ResourceIDNotFoundError
- type SecretNotFoundError
- type ServerGeneratedIDNotFoundError
- type TransitiveDependencyNotFoundError
- type TransitiveDependencyNotReadyError
Constants ¶
const ( CNRMGroup = "cnrm.cloud.google.com" ApiDomainSuffix = ".cnrm.cloud.google.com" SystemNamespace = "cnrm-system" ControllerMaxConcurrentReconciles = 20 ReconcileDeadline = 59 * time.Minute TimeToLeaseExpiration = 40 * time.Minute TimeToLeaseRenewal = 20 * time.Minute MeanReconcileReenqueuePeriod = 10 * time.Minute JitterFactor = 2.0 UpToDate = "UpToDate" UpToDateMessage = "The resource is up to date" Created = "Created" CreatedMessage = "Successfully created" CreateFailed = "CreateFailed" CreateFailedMessageTmpl = "Create call failed: %v" Updating = "Updating" UpdatingMessage = "Update in progress" UpdateFailed = "UpdateFailed" UpdateFailedMessageTmpl = "Update call failed: %v" Deleting = "Deleting" DeletingMessage = "Deletion in progress" Deleted = "Deleted" DeletedMessage = "Successfully deleted" DeleteFailed = "DeleteFailed" NoCondition = "NoCondition" DeleteFailedMessageTmpl = "Delete call failed: %v" ControllerFinalizerName = "cnrm.cloud.google.com/finalizer" DeletionDefenderFinalizerName = "cnrm.cloud.google.com/deletion-defender" DependencyNotReady = "DependencyNotReady" DependencyNotFound = "DependencyNotFound" DependencyInvalid = "DependencyInvalid" ManagementConflict = "ManagementConflict" PreActuationTransformFailed = "PreActuationTransformFailed" PostActuationTransformFailed = "PostActuationTransformFailed" DeletionPolicyDelete = "delete" DeletionPolicyAbandon = "abandon" AnnotationPrefix = CNRMGroup NamespaceEnvVar = "NAMESPACE" ReadinessServerPort = 23232 ReadinessServerPath = "/ready" ControllerManagedFieldManager = "cnrm-controller-manager" SupportsSSAManager = "supports-ssa" // Management conflict prevention policies ManagementConflictPreventionPolicyNone = "none" ManagementConflictPreventionPolicyResource = "resource" // State into spec annotation values StateMergeIntoSpec = "merge" StateAbsentInSpec = "absent" // Core kubernetes constants LastAppliedConfigurationAnnotation = "kubectl.kubernetes.io/last-applied-configuration" ManagedFieldsTypeFieldsV1 = "FieldsV1" ResourceIDFieldName = "resourceID" ResourceIDFieldPath = "spec." + ResourceIDFieldName StabilityLevelStable = "stable" StabilityLevelAlpha = "alpha" KCCAPIVersion = "v1beta1" )
TODO: clean up old conditions used in handcrafted controllers
Variables ¶
var ( DeletionPolicyAnnotation = FormatAnnotation("deletion-policy") // Annotations for Container objects ProjectIDAnnotation = FormatAnnotation("project-id") FolderIDAnnotation = FormatAnnotation("folder-id") OrgIDAnnotation = FormatAnnotation("organization-id") ContainerAnnotations = []string{ ProjectIDAnnotation, FolderIDAnnotation, OrgIDAnnotation, } ManagementConflictPreventionPolicyAnnotation = "management-conflict-prevention-policy" ManagementConflictPreventionPolicyFullyQualifiedAnnotation = FormatAnnotation(ManagementConflictPreventionPolicyAnnotation) ManagementConflictPreventionPolicyValues = []string{ ManagementConflictPreventionPolicyNone, ManagementConflictPreventionPolicyResource, } KCCComponentLabel = FormatAnnotation("component") KCCSystemLabel = FormatAnnotation("system") KCCVersionLabel = FormatAnnotation("version") DCL2CRDLabel = FormatAnnotation("dcl2crd") KCCStabilityLabel = FormatAnnotation("stability-level") MutableButUnreadableFieldsAnnotation = FormatAnnotation("mutable-but-unreadable-fields") ObservedSecretVersionsAnnotation = FormatAnnotation("observed-secret-versions") SupportsSSAAnnotation = FormatAnnotation("supports-ssa") BlueprintAttributionAnnotation = FormatAnnotation("blueprint") StateIntoSpecAnnotation = FormatAnnotation("state-into-spec") StateIntoSpecAnnotationValues = []string{ StateMergeIntoSpec, StateAbsentInSpec, } WebhookTimeoutSeconds = int32(3) ReservedStatusFieldNamesForFutureUse = []string{"generation"} NamespaceIDConfigMapNN = types.NamespacedName{ Namespace: SystemNamespace, Name: "namespace-id", } )
Functions ¶
func ConditionSlicesEqual ¶
func ConstructManagedFieldsV1Set ¶
func ConstructManagedFieldsV1Set(managedFields []v1.ManagedFieldsEntry) (*fieldpath.Set, error)
ConstructManagedFieldsV1Set takes the given managed field entries and constructs a set of all the k8s-managed fields from the spec.
func ConstructTrimmedSpecWithManagedFields ¶
func ConstructTrimmedSpecWithManagedFields(resource *Resource, jsonSchema *apiextensions.JSONSchemaProps, hierarchicalRefs []corekccv1alpha1.HierarchicalReference) (map[string]interface{}, error)
Construct the trimmed spec that only contains k8s managed fields.
The DCL SDK's Apply() function can take a partial state that only contains fields that users have an opinion on. Here we will look into the managed-fields set and trim the full spec to only preserve fields that are k8s-managed (i.e. users want KCC to enforce those fields to their desired state). DCL will take the generated partial state, enforce specified fields and ignore unspecified fields by preserving live values from the underlying API.
func ContainerTypes ¶
func ContainerTypes(containers []corekccv1alpha1.Container) []corekccv1alpha1.ContainerType
func ContainerTypesFor ¶
func ContainerTypesFor(hierarchicalRefs []corekccv1alpha1.HierarchicalReference) []corekccv1alpha1.ContainerType
func CurrentNamespace ¶
func CurrentNamespace() string
func EnsureHierarchicalReference ¶
func EnsureHierarchicalReference(ctx context.Context, resource *Resource, hierarchicalRefs []corekccv1alpha1.HierarchicalReference, containers []corekccv1alpha1.Container, c client.Client) error
EnsureHierarchicalReference ensures that the given resource has a hierarchical reference and will set one if none is found.
func FormatAnnotation ¶
func GVKListContains ¶
func GVKListContains(gvkList []schema.GroupVersionKind, gvk schema.GroupVersionKind) bool
func GVKSetToList ¶
func GVKSetToList(gvkSet map[schema.GroupVersionKind]bool) []schema.GroupVersionKind
func GetAPIVersionFromCRD ¶
func GetAPIVersionFromCRD(crd *apiextensions.CustomResourceDefinition) string
func GetAnnotationForContainerType ¶
func GetAnnotationForContainerType(containerType corekccv1alpha1.ContainerType) string
func GetContainerAnnotation ¶
func GetContainerAnnotation(annotations map[string]string, containerTypes []corekccv1alpha1.ContainerType) (string, corekccv1alpha1.ContainerType, error)
GetContainerAnnotation will get the appropriate container annotation from the given annotations.
func GetHierarchicalReference ¶
func GetHierarchicalReference(resource *Resource, hierarchicalRefs []corekccv1alpha1.HierarchicalReference) ( *corekccv1alpha1.ResourceReference, corekccv1alpha1.HierarchicalReference, error)
GetHierarchicalReference gets the resource reference within the resource that corresponds to any of the given hierarchical reference configurations, as well as the the hierachical reference configuration associated with the resource reference. Returns a nil resource reference if none is found. Returns an error if multiple resource references are found (an invalid resource state as resources can have at most one hierarchical reference).
func GetHierarchicalReferenceFromSpec ¶
func GetHierarchicalReferenceFromSpec(spec map[string]interface{}, hierarchicalRefs []corekccv1alpha1.HierarchicalReference) ( *corekccv1alpha1.ResourceReference, corekccv1alpha1.HierarchicalReference, error)
func GetK8sManagedFields ¶
func GetK8sManagedFields(u *unstructured.Unstructured) (*fieldpath.Set, error)
func GetNamespacedName ¶
func GetNamespacedName(obj metav1.Object) types.NamespacedName
func GetOpenAPIV3SchemaFromCRD ¶
func GetOpenAPIV3SchemaFromCRD(crd *apiextensions.CustomResourceDefinition) *apiextensions.JSONSchemaProps
func GetReadyCondition ¶
func GetReadyCondition(r *Resource) (condition k8sv1alpha1.Condition, found bool)
func GetReferencedResourceAsUnstruct ¶
func GetReferencedResourceAsUnstruct(resourceRef *corekccv1alpha1.ResourceReference, gvk schema.GroupVersionKind, resourceNamespace string, kubeClient client.Client) (*unstructured.Unstructured, error)
func GetSecretVal ¶
func GetSecretVal(secretKeyRef *corekccv1alpha1.SecretKeyReference, secretNamespace string, kubeClient client.Client) (secretVal string, secretVersion string, err error)
func GetVersionFromCRD ¶
func GetVersionFromCRD(crd *apiextensions.CustomResourceDefinition) string
func HasAbandonAnnotation ¶
func HierarchicalReferenceTypeFor ¶
func HierarchicalReferenceTypeFor(containerType corekccv1alpha1.ContainerType) corekccv1alpha1.HierarchicalReferenceType
func HierarchicalReferenceWithType ¶
func HierarchicalReferenceWithType(hierarchicalRefs []corekccv1alpha1.HierarchicalReference, hType corekccv1alpha1.HierarchicalReferenceType) *corekccv1alpha1.HierarchicalReference
func HierarchicalReferencesToFields ¶
func HierarchicalReferencesToFields(hierarchicalRefs []corekccv1alpha1.HierarchicalReference) []string
func IsDeleted ¶
func IsDeleted(objectMeta *metav1.ObjectMeta) bool
func IsK8sManaged ¶
func IsManagedByKCC ¶
func IsManagedByKCC(gvk schema.GroupVersionKind) bool
func IsProjectScoped ¶
func IsProjectScoped(containers []corekccv1alpha1.Container) bool
func IsResourceReady ¶
func KindWithoutServicePrefix ¶
func KindWithoutServicePrefix(gvk schema.GroupVersionKind) string
KindWithoutServicePrefix returns the kind without the service prefix (e.g. "ComputeBackendBucket => "BackendBucket"). Kinds which do not contain a service prefix are returned directly (e.g. "Project" => "Project").
func MarshalObjectAsUnstructured ¶
func MarshalObjectAsUnstructured(o metav1.Object) (*unstructured.Unstructured, error)
func NewCustomReadyCondition ¶
func NewCustomReadyCondition(status v1.ConditionStatus, rs, msg string) v1alpha1.Condition
func NewErroringClient ¶
Some packages, like 'gcpclient' make use of krmtotf which is tightly coupled with the controller-runtime client. However, krmtotf does not actually need the client if all the resources passed in have all references resolved, etc. To enable usage of the library but also to avoid panics, this erroring client can be passed to krmtotf methods.
func NewReadyCondition ¶
func OverlayManagedFieldsOntoState ¶
func OverlayManagedFieldsOntoState(spec, stateAsKRM map[string]interface{}, managedFields *fieldpath.Set, jsonSchema *apiextensions.JSONSchemaProps, hierarchicalRefs []corekccv1alpha1.HierarchicalReference) (map[string]interface{}, error)
OverlayManagedFieldsOntoState overlays the fields managed by Kubernetes managers onto the KRM-ified live state.
The return value is the union of stateAsKRM with managed fields from spec.
func ReadyConditionMatches ¶
func ReadyConditionMatches(resource *Resource, status corev1.ConditionStatus, rs, msg string) bool
func RemoveAnnotation ¶
func RemoveFinalizer ¶
func RenameStatusFieldsWithReservedNames ¶
func RenameStatusFieldsWithReservedNames(status *apiextensions.JSONSchemaProps) (*apiextensions.JSONSchemaProps, error)
func SetAnnotation ¶
func SetDefaultHierarchicalReference ¶
func SetDefaultHierarchicalReference(resource *Resource, ns *corev1.Namespace, hierarchicalRefs []corekccv1alpha1.HierarchicalReference, containers []corekccv1alpha1.Container) error
SetDefaultHierarchicalReference sets a hierarchical reference on the given resource if it doesn't have one. The resulting hierarchical reference is based on whichever of the following is found first: (1) Resource-level container annotations (if supported) (2) Namespace-level container annotations (3) Namespace name (if resource supports project references)
func SetHierarchicalReference ¶
func SetHierarchicalReference(resource *Resource, hierarchicalRef *corekccv1alpha1.HierarchicalReference, externalVal string) error
func SortGVKsByKind ¶
func SortGVKsByKind(gvks []schema.GroupVersionKind) []schema.GroupVersionKind
func TriggerManagedFieldsMetadata ¶
func TriggerManagedFieldsMetadata(ctx context.Context, c client.Client, u *unstructured.Unstructured) ( *unstructured.Unstructured, error)
TriggerManagedFieldsMetadata ensures that managed fields metadata is present on the given resource for Server-Side Apply (SSA) compatible clusters.
func ValidateOrDefaultManagementConflictPreventionAnnotationForTFBasedResource ¶
func ValidateOrDefaultManagementConflictPreventionAnnotationForTFBasedResource(obj metav1.Object, ns *corev1.Namespace, rc *corekccv1alpha1.ResourceConfig, tfResourceMap map[string]*tfschema.Resource) error
func ValidateOrDefaultStateIntoSpecAnnotation ¶
func ValidateOrDefaultStateIntoSpecAnnotation(obj *unstructured.Unstructured) error
func ValueToDNSSubdomainName ¶
Types ¶
type ErrorWithReason ¶
func (ErrorWithReason) Error ¶
func (e ErrorWithReason) Error() string
type ImmutableFieldsMutationError ¶
type ImmutableFieldsMutationError struct {
// contains filtered or unexported fields
}
func NewImmutableFieldsMutationError ¶
func NewImmutableFieldsMutationError(immutableFields []string) *ImmutableFieldsMutationError
func (*ImmutableFieldsMutationError) Error ¶
func (e *ImmutableFieldsMutationError) Error() string
type KeyInSecretNotFoundError ¶
type KeyInSecretNotFoundError struct {
// contains filtered or unexported fields
}
func AsKeyInSecretNotFoundError ¶
func AsKeyInSecretNotFoundError(err error) (unwrappedErr *KeyInSecretNotFoundError, ok bool)
func NewKeyInSecretNotFoundError ¶
func NewKeyInSecretNotFoundError(key string, secret types.NamespacedName) *KeyInSecretNotFoundError
func (*KeyInSecretNotFoundError) Error ¶
func (e *KeyInSecretNotFoundError) Error() string
type ManagementConflictPreventionPolicy ¶
type ManagementConflictPreventionPolicy string
func GetManagementConflictPreventionAnnotationValue ¶
func GetManagementConflictPreventionAnnotationValue(obj metav1.Object) (ManagementConflictPreventionPolicy, error)
type ReferenceNotFoundError ¶
type ReferenceNotFoundError struct { RefResourceGVK schema.GroupVersionKind RefResource types.NamespacedName }
func AsReferenceNotFoundError ¶
func AsReferenceNotFoundError(err error) (unwrappedErr *ReferenceNotFoundError, ok bool)
func NewReferenceNotFoundError ¶
func NewReferenceNotFoundError(refResourceGVK schema.GroupVersionKind, refResource types.NamespacedName) *ReferenceNotFoundError
func NewReferenceNotFoundErrorForResource ¶
func NewReferenceNotFoundErrorForResource(r *Resource) *ReferenceNotFoundError
func (*ReferenceNotFoundError) Error ¶
func (e *ReferenceNotFoundError) Error() string
type ReferenceNotReadyError ¶
type ReferenceNotReadyError struct { RefResourceGVK schema.GroupVersionKind RefResource types.NamespacedName }
func AsReferenceNotReadyError ¶
func AsReferenceNotReadyError(err error) (unwrappedErr *ReferenceNotReadyError, ok bool)
func NewReferenceNotReadyErrorForResource ¶
func NewReferenceNotReadyErrorForResource(r *Resource) *ReferenceNotReadyError
func (*ReferenceNotReadyError) Error ¶
func (e *ReferenceNotReadyError) Error() string
type Resource ¶
type Resource struct { // Fundamental fields metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec map[string]interface{} `json:"spec,omitempty"` Status map[string]interface{} `json:"status,omitempty"` // ManagedFields is the set of spec fields whose desired state is managed // by Kubernetes. Fields that are not part of this set are considered // unmanaged, and their values in etcd will be updated to match the // underlying API. // // If this object is nil, all fields in the spec in etcd are considered // managed and their values will be constantly enforced. ManagedFields *fieldpath.Set `json:"-"` }
Resource represents a resource in KRM
func GetReferencedResource ¶
func GetReferencedResource(resourceRef *corekccv1alpha1.ResourceReference, gvk schema.GroupVersionKind, resourceNamespace string, kubeClient client.Client) (*Resource, error)
func GetReferencedResourceIfReady ¶
func GetReferencedResourceIfReady(resourceRef *corekccv1alpha1.ResourceReference, gvk schema.GroupVersionKind, resourceNamespace string, kubeClient client.Client) (*Resource, error)
func NewResource ¶
func NewResource(u *unstructured.Unstructured) (*Resource, error)
NewResource creates a Resource based on the given unstructured. NewResource can be used to create deep copies of a Resource by calling NewResource multiple times on the same unstructured since the Resource objects created are separate copies.
func (*Resource) GetNamespacedName ¶
func (r *Resource) GetNamespacedName() types.NamespacedName
func (*Resource) HasResourceIDField ¶
func (*Resource) IsResourceIDConfigured ¶
func (*Resource) MarshalAsUnstructured ¶
func (r *Resource) MarshalAsUnstructured() (*unstructured.Unstructured, error)
type ResourceIDNotFoundError ¶
type ResourceIDNotFoundError struct {
// contains filtered or unexported fields
}
func AsResourceIDNotFoundError ¶
func AsResourceIDNotFoundError(err error) (unwrappedErr *ResourceIDNotFoundError, ok bool)
func NewResourceIDNotFoundError ¶
func NewResourceIDNotFoundError(resourceGVK schema.GroupVersionKind, resource types.NamespacedName) *ResourceIDNotFoundError
func (*ResourceIDNotFoundError) Error ¶
func (e *ResourceIDNotFoundError) Error() string
type SecretNotFoundError ¶
type SecretNotFoundError struct {
// contains filtered or unexported fields
}
func AsSecretNotFoundError ¶
func AsSecretNotFoundError(err error) (unwrappedErr *SecretNotFoundError, ok bool)
func NewSecretNotFoundError ¶
func NewSecretNotFoundError(secret types.NamespacedName) *SecretNotFoundError
func (*SecretNotFoundError) Error ¶
func (e *SecretNotFoundError) Error() string
type ServerGeneratedIDNotFoundError ¶
type ServerGeneratedIDNotFoundError struct {
// contains filtered or unexported fields
}
func AsServerGeneratedIDNotFoundError ¶
func AsServerGeneratedIDNotFoundError(err error) (unwrappedErr *ServerGeneratedIDNotFoundError, ok bool)
func NewServerGeneratedIDNotFoundError ¶
func NewServerGeneratedIDNotFoundError(resourceGVK schema.GroupVersionKind, resource types.NamespacedName) *ServerGeneratedIDNotFoundError
func (*ServerGeneratedIDNotFoundError) Error ¶
func (e *ServerGeneratedIDNotFoundError) Error() string
type TransitiveDependencyNotFoundError ¶
type TransitiveDependencyNotFoundError struct {
// contains filtered or unexported fields
}
func AsTransitiveDependencyNotFoundError ¶
func AsTransitiveDependencyNotFoundError(err error) (unwrappedErr *TransitiveDependencyNotFoundError, ok bool)
func NewTransitiveDependencyNotFoundError ¶
func NewTransitiveDependencyNotFoundError(resourceGVK schema.GroupVersionKind, resource types.NamespacedName) *TransitiveDependencyNotFoundError
func (*TransitiveDependencyNotFoundError) Error ¶
func (e *TransitiveDependencyNotFoundError) Error() string
type TransitiveDependencyNotReadyError ¶
type TransitiveDependencyNotReadyError struct {
// contains filtered or unexported fields
}
func AsTransitiveDependencyNotReadyError ¶
func AsTransitiveDependencyNotReadyError(err error) (unwrappedErr *TransitiveDependencyNotReadyError, ok bool)
func NewTransitiveDependencyNotReadyError ¶
func NewTransitiveDependencyNotReadyError(resourceGVK schema.GroupVersionKind, resource types.NamespacedName) *TransitiveDependencyNotReadyError
func (*TransitiveDependencyNotReadyError) Error ¶
func (e *TransitiveDependencyNotReadyError) Error() string