add federated resource api (#2725)
Signed-off-by: Jeff <zw0948@gmail.com>
This commit is contained in:
1
pkg/apis/types/group.go
Normal file
1
pkg/apis/types/group.go
Normal file
@@ -0,0 +1 @@
|
||||
package types
|
||||
@@ -14,7 +14,9 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// +k8s:openapi-gen=true
|
||||
// +k8s:deepcopy-gen=package,register
|
||||
// +k8s:conversion-gen=kubesphere.io/kubesphere/pkg/apis/types
|
||||
// +k8s:defaulter-gen=TypeMeta
|
||||
// +groupName=types.kubefed.io
|
||||
package v1beta1
|
||||
|
||||
42
pkg/apis/types/v1beta1/federatedapplication_types.go
Normal file
42
pkg/apis/types/v1beta1/federatedapplication_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"sigs.k8s.io/application/pkg/apis/app/v1beta1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedApplication = "federatedapplications"
|
||||
ResourceSingularFederatedApplication = "federatedapplication"
|
||||
FederatedApplicationKind = "FederatedApplication"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedApplication struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedApplicationSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedApplicationSpec struct {
|
||||
Template ApplicationTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type ApplicationTemplate struct {
|
||||
Spec v1beta1.ApplicationSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedApplicationList contains a list of federatedapplicationlists
|
||||
type FederatedApplicationList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedApplication `json:"items"`
|
||||
}
|
||||
46
pkg/apis/types/v1beta1/federatedclusterrole_types.go
Normal file
46
pkg/apis/types/v1beta1/federatedclusterrole_types.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
v1 "k8s.io/api/rbac/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedClusterRole = "federatedclusterroles"
|
||||
ResourceSingularFederatedClusterRole = "federatedclusterrole"
|
||||
FederatedClusterRoleKind = "FederatedClusterRole"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedClusterRole struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedClusterRoleSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedClusterRoleSpec struct {
|
||||
Template ClusterRoleTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type ClusterRoleTemplate struct {
|
||||
// +optional
|
||||
Rules []v1.PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
|
||||
|
||||
// +optional
|
||||
AggregationRule *v1.AggregationRule `json:"aggregationRule,omitempty" protobuf:"bytes,3,opt,name=aggregationRule"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedClusterRoleList contains a list of federatedclusterrolelists
|
||||
type FederatedClusterRoleList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedClusterRole `json:"items"`
|
||||
}
|
||||
47
pkg/apis/types/v1beta1/federatedclusterrolebinding_types.go
Normal file
47
pkg/apis/types/v1beta1/federatedclusterrolebinding_types.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
v1 "k8s.io/api/rbac/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedClusterRoleBindingBinding = "federatedclusterrolebindings"
|
||||
ResourceSingularFederatedClusterRoleBinding = "federatedclusterrolebinding"
|
||||
FederatedClusterRoleBindingKind = "FederatedClusterRoleBinding"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedClusterRoleBinding struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedClusterRoleBindingSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedClusterRoleBindingSpec struct {
|
||||
Template ClusterRoleBindingTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type ClusterRoleBindingTemplate struct {
|
||||
// +optional
|
||||
Subjects []v1.Subject `json:"subjects,omitempty" protobuf:"bytes,2,rep,name=subjects"`
|
||||
|
||||
// RoleRef can only reference a ClusterRole in the global namespace.
|
||||
// If the RoleRef cannot be resolved, the Authorizer must return an error.
|
||||
RoleRef v1.RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedClusterRoleBindingList contains a list of federatedclusterrolebindinglists
|
||||
type FederatedClusterRoleBindingList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedClusterRoleBinding `json:"items"`
|
||||
}
|
||||
46
pkg/apis/types/v1beta1/federatedconfigmap_types.go
Normal file
46
pkg/apis/types/v1beta1/federatedconfigmap_types.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedConfigmap = "federatedconfigmaps"
|
||||
ResourceSingularFederatedConfigmap = "federatedconfigmap"
|
||||
FederatedConfigMapKind = "FederatedConfigMap"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedConfigMap struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedConfigMapSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedConfigMapSpec struct {
|
||||
Template ConfigMapTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type ConfigMapTemplate struct {
|
||||
|
||||
// +optional
|
||||
Data map[string]string `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"`
|
||||
|
||||
// +optional
|
||||
BinaryData map[string][]byte `json:"binaryData,omitempty" protobuf:"bytes,3,rep,name=binaryData"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedConfigmapList contains a list of federatedconfigmaplists
|
||||
type FederatedConfigMapList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedConfigMap `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federateddeployment_types.go
Normal file
42
pkg/apis/types/v1beta1/federateddeployment_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedDeployment = "federateddeployments"
|
||||
ResourceSingularFederatedDeployment = "federateddeployment"
|
||||
FederatedDeploymentKind = "FederatedDeployment"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedDeployment struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedDeploymentSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedDeploymentSpec struct {
|
||||
Template DeploymentTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type DeploymentTemplate struct {
|
||||
Spec appsv1.DeploymentSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedDeploymentList contains a list of federateddeploymentlists
|
||||
type FederatedDeploymentList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedDeployment `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federatedingress_types.go
Normal file
42
pkg/apis/types/v1beta1/federatedingress_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedIngress = "federatedingresses"
|
||||
ResourceSingularFederatedIngress = "federatedingress"
|
||||
FederatedIngressKind = "FederatedIngress"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedIngress struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedIngressSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedIngressSpec struct {
|
||||
Template IngressTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type IngressTemplate struct {
|
||||
Spec extensionsv1beta1.IngressSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedIngressList contains a list of federatedingresslists
|
||||
type FederatedIngressList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedIngress `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federatedjob_types.go
Normal file
42
pkg/apis/types/v1beta1/federatedjob_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
v1 "k8s.io/api/batch/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedJob = "federatedjobs"
|
||||
ResourceSingularFederatedJob = "federatedjob"
|
||||
FederatedJobKind = "FederatedJob"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedJob struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedJobSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedJobSpec struct {
|
||||
Template JobTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type JobTemplate struct {
|
||||
Spec v1.JobSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedJobList contains a list of federatedjoblists
|
||||
type FederatedJobList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedJob `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federatedlimitrange_types.go
Normal file
42
pkg/apis/types/v1beta1/federatedlimitrange_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedLimitRange = "federatedlimitranges"
|
||||
ResourceSingularFederatedLimitRange = "federatedlimitrange"
|
||||
FederatedLimitRangeKind = "FederatedLimitRange"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedLimitRange struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedLimitRangeSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedLimitRangeSpec struct {
|
||||
Template LimitRangeTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type LimitRangeTemplate struct {
|
||||
Spec corev1.LimitRangeSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedLimitRangeList contains a list of federatedlimitrangelists
|
||||
type FederatedLimitRangeList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedLimitRange `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federatednamespace_types.go
Normal file
42
pkg/apis/types/v1beta1/federatednamespace_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedNamespace = "federatednamespaces"
|
||||
ResourcesSingularFederatedNamespace = "federatednamespace"
|
||||
FederatedNamespaceKind = "FederatedNamespace"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedNamespace struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedNamespaceSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedNamespaceSpec struct {
|
||||
Template NamespaceTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type NamespaceTemplate struct {
|
||||
Spec corev1.NamespaceSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedNamespaceList contains a list of federatednamespacelists
|
||||
type FederatedNamespaceList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedNamespace `json:"items"`
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedPersistentVolumeClaim = "federatedpersistentvolumeclaims"
|
||||
ResourceSingularFederatedPersistentVolumeClaim = "federatedpersistentvolumeclaim"
|
||||
FederatedPersistentVolumeClaimKind = "FederatedPersistentVolumeClaim"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedPersistentVolumeClaim struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedPersistentVolumeClaimSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedPersistentVolumeClaimSpec struct {
|
||||
Template PersistentVolumeClaimTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type PersistentVolumeClaimTemplate struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec corev1.PersistentVolumeClaimSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedPersistentVolumeClaimList contains a list of federatedpersistentvolumeclaimlists
|
||||
type FederatedPersistentVolumeClaimList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedPersistentVolumeClaim `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federatedresourcequota_types.go
Normal file
42
pkg/apis/types/v1beta1/federatedresourcequota_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedResourceQuota = "federatedresourcequotas"
|
||||
ResourceSingularFederatedResourceQuota = "federatedresourcequota"
|
||||
FederatedResourceQuotaKind = "FederatedResourceQuota"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedResourceQuota struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedResourceQuotaSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedResourceQuotaSpec struct {
|
||||
Template ResourceQuotaTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type ResourceQuotaTemplate struct {
|
||||
Spec corev1.ResourceQuotaSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedResourceQuotaList contains a list of federatedresourcequotalists
|
||||
type FederatedResourceQuotaList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedResourceQuota `json:"items"`
|
||||
}
|
||||
50
pkg/apis/types/v1beta1/federatedsecret_types.go
Normal file
50
pkg/apis/types/v1beta1/federatedsecret_types.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedSecret = "federatedsecrets"
|
||||
ResourceSingularFederatedSecret = "federatedsecret"
|
||||
FederatedSecretKind = "FederatedSecret"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedSecret struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedSecretSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedSecretSpec struct {
|
||||
Template SecretTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type SecretTemplate struct {
|
||||
// +optional
|
||||
Data map[string][]byte `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"`
|
||||
|
||||
// +k8s:conversion-gen=false
|
||||
// +optional
|
||||
StringData map[string]string `json:"stringData,omitempty" protobuf:"bytes,4,rep,name=stringData"`
|
||||
|
||||
// +optional
|
||||
Type corev1.SecretType `json:"type,omitempty" protobuf:"bytes,3,opt,name=type,casttype=SecretType"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedConfigmapList contains a list of federatedsecretlists
|
||||
type FederatedSecretList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedSecret `json:"items"`
|
||||
}
|
||||
44
pkg/apis/types/v1beta1/federatedservice_types.go
Normal file
44
pkg/apis/types/v1beta1/federatedservice_types.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedService = "federatedservices"
|
||||
ResourceSingularFederatedService = "federatedservice"
|
||||
FederatedServiceKind = "FederatedService"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedService struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedServiceSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedServiceSpec struct {
|
||||
Template ServiceTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type ServiceTemplate struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec corev1.ServiceSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedServiceList contains a list of federatedservicelists
|
||||
type FederatedServiceList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedService `json:"items"`
|
||||
}
|
||||
44
pkg/apis/types/v1beta1/federatedstatefulset_types.go
Normal file
44
pkg/apis/types/v1beta1/federatedstatefulset_types.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedStatefulSet = "federatedstatefulsets"
|
||||
ResourceSingularFederatedStatefulSet = "federatedstatefulset"
|
||||
FederatedStatefulSetKind = "FederatedStatefulSet"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedStatefulSet struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedStatefulSetSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedStatefulSetSpec struct {
|
||||
Template StatefulSetTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type StatefulSetTemplate struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec appsv1.StatefulSetSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedStatefulSetList contains a list of federatedstatefulsetlists
|
||||
type FederatedStatefulSetList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedStatefulSet `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federateduser_types.go
Normal file
42
pkg/apis/types/v1beta1/federateduser_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"kubesphere.io/kubesphere/pkg/apis/iam/v1alpha2"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedUser = "federatedusers"
|
||||
ResourceSingularFederatedUser = "federateduser"
|
||||
FederatedUserKind = "FederatedUser"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedUser struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedUserSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedUserSpec struct {
|
||||
Template UserTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type UserTemplate struct {
|
||||
Spec v1alpha2.UserSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedUserList contains a list of federateduserlists
|
||||
type FederatedUserList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedUser `json:"items"`
|
||||
}
|
||||
42
pkg/apis/types/v1beta1/federatedworkspace_types.go
Normal file
42
pkg/apis/types/v1beta1/federatedworkspace_types.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
workspacev1alpha1 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha1"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcePluralFederatedWorkspace = "federatedworkspaces"
|
||||
ResourceSingularFederatedWorkspace = "federatedworkspace"
|
||||
FederatedWorkspaceKind = "FederatedWorkspace"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +k8s:openapi-gen=true
|
||||
type FederatedWorkspace struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedWorkspaceSpec `json:"spec"`
|
||||
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedWorkspaceSpec struct {
|
||||
Template WorkspaceTemplate `json:"template"`
|
||||
Placement GenericPlacementFields `json:"placement"`
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type WorkspaceTemplate struct {
|
||||
Spec workspacev1alpha1.WorkspaceSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedWorkspaceList contains a list of federatedworkspacelists
|
||||
type FederatedWorkspaceList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedWorkspace `json:"items"`
|
||||
}
|
||||
@@ -18,6 +18,7 @@ limitations under the License.
|
||||
|
||||
// +k8s:openapi-gen=true
|
||||
// +k8s:deepcopy-gen=package,register
|
||||
// +k8s:conversion-gen=kubesphere.io/kubesphere/pkg/apis/types
|
||||
// +k8s:defaulter-gen=TypeMeta
|
||||
// +groupName=types.kubefed.io
|
||||
package v1beta1
|
||||
@@ -44,5 +45,33 @@ func Resource(resource string) schema.GroupResource {
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&FederatedNamespace{}, &FederatedNamespaceList{})
|
||||
SchemeBuilder.Register(
|
||||
&FederatedApplication{},
|
||||
&FederatedApplicationList{},
|
||||
&FederatedClusterRole{},
|
||||
&FederatedClusterRoleList{},
|
||||
&FederatedClusterRoleBinding{},
|
||||
&FederatedClusterRoleBindingList{},
|
||||
&FederatedConfigMap{},
|
||||
&FederatedConfigMapList{},
|
||||
&FederatedDeployment{},
|
||||
&FederatedDeploymentList{},
|
||||
&FederatedIngress{},
|
||||
&FederatedIngressList{},
|
||||
&FederatedLimitRange{},
|
||||
&FederatedLimitRangeList{},
|
||||
&FederatedNamespace{},
|
||||
&FederatedNamespaceList{},
|
||||
&FederatedPersistentVolumeClaim{},
|
||||
&FederatedPersistentVolumeClaimList{},
|
||||
&FederatedResourceQuota{},
|
||||
&FederatedResourceQuotaList{},
|
||||
&FederatedSecret{},
|
||||
&FederatedSecretList{},
|
||||
&FederatedService{},
|
||||
&FederatedServiceList{},
|
||||
&FederatedStatefulSet{},
|
||||
&FederatedStatefulSetList{},
|
||||
&FederatedWorkspace{},
|
||||
&FederatedWorkspaceList{})
|
||||
}
|
||||
|
||||
@@ -19,66 +19,89 @@
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
const (
|
||||
ResourcesPluralFedNamespace = "federatednamespaces"
|
||||
ResourcesSingularFedNamespace = "federatednamespace"
|
||||
FedNamespaceKind = "FederatedNamespace"
|
||||
)
|
||||
|
||||
type Placement struct {
|
||||
Clusters []Cluster `json:"clusters,omitempty"`
|
||||
ClusterSelector *ClusterSelector `json:"clusterSelector,omitempty"`
|
||||
}
|
||||
|
||||
type ClusterSelector struct {
|
||||
MatchLabels map[string]string `json:"matchLabels,omitempty"`
|
||||
}
|
||||
|
||||
type Cluster struct {
|
||||
type GenericClusterReference struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type Override struct {
|
||||
ClusterName string `json:"clusterName"`
|
||||
ClusterOverrides []ClusterOverride `json:"clusterOverrides"`
|
||||
type GenericPlacementFields struct {
|
||||
Clusters []GenericClusterReference `json:"clusters,omitempty"`
|
||||
ClusterSelector *metav1.LabelSelector `json:"clusterSelector,omitempty"`
|
||||
}
|
||||
type GenericPlacementSpec struct {
|
||||
Placement GenericPlacementFields `json:"placement,omitempty"`
|
||||
}
|
||||
|
||||
type GenericPlacement struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec GenericPlacementSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
type ClusterOverride struct {
|
||||
Path string `json:"path"`
|
||||
Op string `json:"op,omitempty"`
|
||||
Value runtime.RawExtension `json:"value"`
|
||||
Path string `json:"path"`
|
||||
Value runtime.RawExtension `json:"value,omitempty"`
|
||||
}
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
type FederatedNamespace struct {
|
||||
type GenericOverrideItem struct {
|
||||
ClusterName string `json:"clusterName"`
|
||||
ClusterOverrides []ClusterOverride `json:"clusterOverrides,omitempty"`
|
||||
}
|
||||
|
||||
type GenericOverrideSpec struct {
|
||||
Overrides []GenericOverrideItem `json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
type GenericOverride struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec FederatedNamespaceSpec `json:"spec"`
|
||||
|
||||
Spec *GenericOverrideSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
type FederatedNamespaceSpec struct {
|
||||
Template NamespaceTemplate `json:"template"`
|
||||
Placement Placement `json:"placement"`
|
||||
Overrides []Override `json:"overrides,omitempty"`
|
||||
type ConditionType string
|
||||
|
||||
type AggregateReason string
|
||||
|
||||
type PropagationStatus string
|
||||
|
||||
type GenericClusterStatus struct {
|
||||
Name string `json:"name"`
|
||||
Status PropagationStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type NamespaceTemplate struct {
|
||||
type GenericCondition struct {
|
||||
// Type of cluster condition
|
||||
Type ConditionType `json:"type"`
|
||||
// Status of the condition, one of True, False, Unknown.
|
||||
Status v1.ConditionStatus `json:"status"`
|
||||
// Last time reconciliation resulted in an error or the last time a
|
||||
// change was propagated to member clusters.
|
||||
// +optional
|
||||
LastUpdateTime string `json:"lastUpdateTime,omitempty"`
|
||||
// Last time the condition transit from one status to another.
|
||||
// +optional
|
||||
LastTransitionTime string `json:"lastTransitionTime,omitempty"`
|
||||
// (brief) reason for the condition's last transition.
|
||||
// +optional
|
||||
Reason AggregateReason `json:"reason,omitempty"`
|
||||
}
|
||||
|
||||
type GenericFederatedStatus struct {
|
||||
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
|
||||
Conditions []*GenericCondition `json:"conditions,omitempty"`
|
||||
Clusters []GenericClusterStatus `json:"clusters,omitempty"`
|
||||
}
|
||||
|
||||
type GenericFederatedResource struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
Spec corev1.NamespaceSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// FederatedNamespaceList contains a list of federatednamespacelists
|
||||
type FederatedNamespaceList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedNamespace `json:"items"`
|
||||
Status *GenericFederatedStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
1907
pkg/apis/types/v1beta1/zz_generated.deepcopy.go
generated
1907
pkg/apis/types/v1beta1/zz_generated.deepcopy.go
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user