mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-03-03 02:00:18 +00:00
121 lines
3.7 KiB
Go
121 lines
3.7 KiB
Go
// Copyright 2020-2026 Project Capsule Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package meta
|
|
|
|
import k8stypes "k8s.io/apimachinery/pkg/types"
|
|
|
|
// NamespaceName must be a lowercase RFC1123 label.
|
|
// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
|
|
// +kubebuilder:validation:MaxLength=63
|
|
type RFC1123Name string
|
|
|
|
func (n RFC1123Name) String() string {
|
|
return string(n)
|
|
}
|
|
|
|
// Name must be unique within a namespace.
|
|
// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
|
|
// +kubebuilder:validation:MaxLength=253
|
|
// +kubebuilder:object:generate=true
|
|
type RFC1123SubdomainName string
|
|
|
|
func (n RFC1123SubdomainName) String() string {
|
|
return string(n)
|
|
}
|
|
|
|
// LocalObjectReference contains enough information to locate the referenced Kubernetes resource object.
|
|
// +kubebuilder:object:generate=true
|
|
type LocalRFC1123ObjectReference struct {
|
|
// Name of the referent.
|
|
// +required
|
|
Name RFC1123Name `json:"name"`
|
|
}
|
|
|
|
// LocalObjectReference contains enough information to locate the referenced Kubernetes resource object.
|
|
// +kubebuilder:object:generate=true
|
|
type LocalObjectReference struct {
|
|
// Name of the referent.
|
|
// +required
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
// NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any
|
|
// namespace.
|
|
// +kubebuilder:object:generate=true
|
|
type NamespacedRFC1123ObjectReference struct {
|
|
// Name of the referent.
|
|
// +required
|
|
Name RFC1123Name `json:"name"`
|
|
|
|
// Namespace of the referent, when not specified it acts as LocalObjectReference.
|
|
// +optional
|
|
Namespace RFC1123SubdomainName `json:"namespace,omitempty"`
|
|
}
|
|
|
|
// NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any
|
|
// namespace.
|
|
// +kubebuilder:object:generate=true
|
|
type NamespacedObjectReference struct {
|
|
// Name of the referent.
|
|
// +required
|
|
Name string `json:"name"`
|
|
|
|
// Namespace of the referent, when not specified it acts as LocalObjectReference.
|
|
// +optional
|
|
Namespace RFC1123SubdomainName `json:"namespace,omitempty"`
|
|
}
|
|
|
|
// NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any
|
|
// namespace. But the namespace is required.
|
|
// +kubebuilder:object:generate=true
|
|
type NamespacedObjectReferenceWithNamespace struct {
|
|
// Name of the referent.
|
|
// +required
|
|
Name string `json:"name"`
|
|
|
|
// Namespace of the referent.
|
|
// +required
|
|
Namespace RFC1123SubdomainName `json:"namespace,omitempty"`
|
|
}
|
|
|
|
// NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any
|
|
// namespace. But the namespace is required.
|
|
// +kubebuilder:object:generate=true
|
|
type NamespacedRFC1123ObjectReferenceWithNamespace struct {
|
|
// Name of the referent.
|
|
// +required
|
|
Name RFC1123Name `json:"name"`
|
|
|
|
// Namespace of the referent.
|
|
// +required
|
|
Namespace RFC1123SubdomainName `json:"namespace,omitempty"`
|
|
}
|
|
|
|
type LocalRFC1123ObjectReferenceWithUID struct {
|
|
// UID of the tracked Tenant to pin point tracking
|
|
// +required
|
|
k8stypes.UID `json:"uid,omitempty" protobuf:"bytes,5,opt,name=uid"`
|
|
|
|
// Name of the referent.
|
|
// +required
|
|
Name RFC1123Name `json:"name,omitempty"`
|
|
}
|
|
|
|
// NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any
|
|
// namespace. But the namespace is required.
|
|
// +kubebuilder:object:generate=true
|
|
type NamespacedRFC1123ObjectReferenceWithNamespaceWithUID struct {
|
|
// UID of the tracked Tenant to pin point tracking
|
|
// +required
|
|
k8stypes.UID `json:"uid,omitempty" protobuf:"bytes,5,opt,name=uid"`
|
|
|
|
// Name of the referent.
|
|
// +required
|
|
Name RFC1123Name `json:"name"`
|
|
|
|
// Namespace of the referent.
|
|
// +required
|
|
Namespace RFC1123SubdomainName `json:"namespace,omitempty"`
|
|
}
|