add federated resource api (#2725)

Signed-off-by: Jeff <zw0948@gmail.com>
This commit is contained in:
zryfish
2020-07-31 17:12:58 +08:00
committed by GitHub
parent 74533cb533
commit 4702beb6ac
119 changed files with 11581 additions and 205 deletions

1
pkg/apis/types/group.go Normal file
View File

@@ -0,0 +1 @@
package types

View File

@@ -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

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View File

@@ -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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View 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"`
}

View File

@@ -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{})
}

View File

@@ -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"`
}

File diff suppressed because it is too large Load Diff