change cluster schema (#2026)
* change cluster schema * change cluster schema
This commit is contained in:
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_core_v1alpha1.go
generated
vendored
Normal file
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_core_v1alpha1.go
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package apis
|
||||
|
||||
import (
|
||||
"sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Register the types with the Scheme so the components can map objects to GroupVersionKinds and back
|
||||
AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme)
|
||||
}
|
||||
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_core_v1beta1.go
generated
vendored
Normal file
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_core_v1beta1.go
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package apis
|
||||
|
||||
import (
|
||||
"sigs.k8s.io/kubefed/pkg/apis/core/v1beta1"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Register the types with the Scheme so the components can map objects to GroupVersionKinds and back
|
||||
AddToSchemes = append(AddToSchemes, v1beta1.SchemeBuilder.AddToScheme)
|
||||
}
|
||||
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_multiclusterdns_v1alpha1.go
generated
vendored
Normal file
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_multiclusterdns_v1alpha1.go
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package apis
|
||||
|
||||
import (
|
||||
"sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Register the types with the Scheme so the components can map objects to GroupVersionKinds and back
|
||||
AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme)
|
||||
}
|
||||
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_scheduling_v1alpha1.go
generated
vendored
Normal file
26
vendor/sigs.k8s.io/kubefed/pkg/apis/addtoscheme_scheduling_v1alpha1.go
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package apis
|
||||
|
||||
import (
|
||||
"sigs.k8s.io/kubefed/pkg/apis/scheduling/v1alpha1"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Register the types with the Scheme so the components can map objects to GroupVersionKinds and back
|
||||
AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme)
|
||||
}
|
||||
30
vendor/sigs.k8s.io/kubefed/pkg/apis/apis.go
generated
vendored
Normal file
30
vendor/sigs.k8s.io/kubefed/pkg/apis/apis.go
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package apis contains Kubernetes API groups.
|
||||
package apis
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// AddToSchemes may be used to add all resources defined in the project to a Scheme
|
||||
var AddToSchemes runtime.SchemeBuilder
|
||||
|
||||
// AddToScheme adds all Resources to the Scheme
|
||||
func AddToScheme(s *runtime.Scheme) error {
|
||||
return AddToSchemes.AddToScheme(s)
|
||||
}
|
||||
31
vendor/sigs.k8s.io/kubefed/pkg/apis/core/common/constants.go
generated
vendored
Normal file
31
vendor/sigs.k8s.io/kubefed/pkg/apis/core/common/constants.go
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package common
|
||||
|
||||
type ClusterConditionType string
|
||||
|
||||
// These are valid conditions of a cluster.
|
||||
const (
|
||||
// ClusterReady means the cluster is ready to accept workloads.
|
||||
ClusterReady ClusterConditionType = "Ready"
|
||||
// ClusterOffline means the cluster is temporarily down or not reachable
|
||||
ClusterOffline ClusterConditionType = "Offline"
|
||||
)
|
||||
|
||||
const (
|
||||
NamespaceName = "namespaces"
|
||||
)
|
||||
30
vendor/sigs.k8s.io/kubefed/pkg/apis/core/common/util.go
generated
vendored
Normal file
30
vendor/sigs.k8s.io/kubefed/pkg/apis/core/common/util.go
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package common
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func PropagatedVersionName(kind, resourceName string) string {
|
||||
return fmt.Sprintf("%s%s", PropagatedVersionPrefix(kind), resourceName)
|
||||
}
|
||||
|
||||
func PropagatedVersionPrefix(kind string) string {
|
||||
return fmt.Sprintf("%s-", strings.ToLower(kind))
|
||||
}
|
||||
34
vendor/sigs.k8s.io/kubefed/pkg/apis/core/typeconfig/interface.go
generated
vendored
Normal file
34
vendor/sigs.k8s.io/kubefed/pkg/apis/core/typeconfig/interface.go
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package typeconfig
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// Interface defines how to interact with a FederatedTypeConfig
|
||||
type Interface interface {
|
||||
GetObjectMeta() metav1.ObjectMeta
|
||||
GetTargetType() metav1.APIResource
|
||||
GetNamespaced() bool
|
||||
GetPropagationEnabled() bool
|
||||
GetFederatedType() metav1.APIResource
|
||||
GetStatusType() *metav1.APIResource
|
||||
GetStatusEnabled() bool
|
||||
GetFederatedNamespaced() bool
|
||||
IsNamespace() bool
|
||||
}
|
||||
39
vendor/sigs.k8s.io/kubefed/pkg/apis/core/typeconfig/util.go
generated
vendored
Normal file
39
vendor/sigs.k8s.io/kubefed/pkg/apis/core/typeconfig/util.go
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package typeconfig
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// GroupQualifiedName returns the plural name of the api resource
|
||||
// optionally qualified by its group:
|
||||
//
|
||||
// '<target plural name>[.<target group name>]'
|
||||
//
|
||||
// This is the naming scheme for FederatedTypeConfig resources. The
|
||||
// scheme ensures that, for a given KubeFed control plane,
|
||||
// federation of a target type will be configured by at most one
|
||||
// FederatedTypeConfig.
|
||||
func GroupQualifiedName(apiResource metav1.APIResource) string {
|
||||
if len(apiResource.Group) == 0 {
|
||||
return apiResource.Name
|
||||
}
|
||||
return fmt.Sprintf("%s.%s", apiResource.Name, apiResource.Group)
|
||||
}
|
||||
59
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/clusterpropagatedversion_types.go
generated
vendored
Normal file
59
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/clusterpropagatedversion_types.go
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// ClusterPropagatedVersionSpec defines the desired state of ClusterPropagatedVersion
|
||||
type ClusterPropagatedVersionSpec struct {
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=clusterpropagatedversions,scope=Cluster
|
||||
// +kubebuilder:subresource:status
|
||||
|
||||
// ClusterPropagatedVersion holds version information about the state
|
||||
// propagated from KubeFed APIs (configured by FederatedTypeConfig
|
||||
// resources) to member clusters. The name of a ClusterPropagatedVersion
|
||||
// encodes the kind and name of the resource it stores information for
|
||||
// (i.e. <lower-case kind>-<resource name>). If a target resource has
|
||||
// a populated metadata.Generation field, the generation will be
|
||||
// stored with a prefix of `gen:` as the version for the cluster. If
|
||||
// metadata.Generation is not available, metadata.ResourceVersion will
|
||||
// be stored with a prefix of `rv:` as the version for the cluster.
|
||||
type ClusterPropagatedVersion struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
// +optional
|
||||
Status PropagatedVersionStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// ClusterPropagatedVersionList contains a list of ClusterPropagatedVersion
|
||||
type ClusterPropagatedVersionList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []ClusterPropagatedVersion `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&ClusterPropagatedVersion{}, &ClusterPropagatedVersionList{})
|
||||
}
|
||||
52
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/federatedservicestatus_types.go
generated
vendored
Normal file
52
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/federatedservicestatus_types.go
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// FederatedServiceClusterStatus is the observed status of the resource for a named cluster
|
||||
type FederatedServiceClusterStatus struct {
|
||||
ClusterName string `json:"clusterName"`
|
||||
Status corev1.ServiceStatus `json:"status"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=federatedservicestatuses
|
||||
|
||||
type FederatedServiceStatus struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
// +optional
|
||||
ClusterStatus []FederatedServiceClusterStatus `json:"clusterStatus,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// FederatedServiceStatusList contains a list of FederatedServiceStatus
|
||||
type FederatedServiceStatusList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedServiceStatus `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&FederatedServiceStatus{}, &FederatedServiceStatusList{})
|
||||
}
|
||||
38
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/groupversion_info.go
generated
vendored
Normal file
38
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/groupversion_info.go
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// NOTE: Boilerplate only. Ignore this file.
|
||||
|
||||
// Package v1alpha1 contains API Schema definitions for the core v1alpha1 API group
|
||||
// +kubebuilder:object:generate=true
|
||||
// +groupName=core.kubefed.io
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"sigs.k8s.io/controller-runtime/pkg/scheme"
|
||||
)
|
||||
|
||||
var (
|
||||
// SchemeGroupVersion is group version used to register these objects
|
||||
SchemeGroupVersion = schema.GroupVersion{Group: "core.kubefed.io", Version: "v1alpha1"}
|
||||
|
||||
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
|
||||
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
|
||||
|
||||
// AddToScheme adds the types in this group-version to the given scheme.
|
||||
AddToScheme = SchemeBuilder.AddToScheme
|
||||
)
|
||||
78
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/propagatedversion_types.go
generated
vendored
Normal file
78
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/propagatedversion_types.go
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// PropagatedVersionSpec defines the desired state of PropagatedVersion
|
||||
type PropagatedVersionSpec struct {
|
||||
}
|
||||
|
||||
// PropagatedVersionStatus defines the observed state of PropagatedVersion
|
||||
type PropagatedVersionStatus struct {
|
||||
// The observed version of the template for this resource.
|
||||
TemplateVersion string `json:"templateVersion"`
|
||||
// The observed version of the overrides for this resource.
|
||||
OverrideVersion string `json:"overridesVersion"`
|
||||
// The last versions produced in each cluster for this resource.
|
||||
// +optional
|
||||
ClusterVersions []ClusterObjectVersion `json:"clusterVersions,omitempty"`
|
||||
}
|
||||
|
||||
type ClusterObjectVersion struct {
|
||||
// The name of the cluster the version is for.
|
||||
ClusterName string `json:"clusterName"`
|
||||
// The last version produced for the resource by a KubeFed
|
||||
// operation.
|
||||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=propagatedversions
|
||||
// +kubebuilder:subresource:status
|
||||
|
||||
// PropagatedVersion holds version information about the state
|
||||
// propagated from KubeFed APIs (configured by FederatedTypeConfig
|
||||
// resources) to member clusters. The name of a PropagatedVersion
|
||||
// encodes the kind and name of the resource it stores information for
|
||||
// (i.e. <lower-case kind>-<resource name>). If a target resource has
|
||||
// a populated metadata.Generation field, the generation will be
|
||||
// stored with a prefix of `gen:` as the version for the cluster. If
|
||||
// metadata.Generation is not available, metadata.ResourceVersion will
|
||||
// be stored with a prefix of `rv:` as the version for the cluster.
|
||||
type PropagatedVersion struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
// +optional
|
||||
Status PropagatedVersionStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// PropagatedVersionList contains a list of PropagatedVersion
|
||||
type PropagatedVersionList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []PropagatedVersion `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&PropagatedVersion{}, &PropagatedVersionList{})
|
||||
}
|
||||
286
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
286
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
@@ -0,0 +1,286 @@
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by controller-gen. DO NOT EDIT.
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterObjectVersion) DeepCopyInto(out *ClusterObjectVersion) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObjectVersion.
|
||||
func (in *ClusterObjectVersion) DeepCopy() *ClusterObjectVersion {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterObjectVersion)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterPropagatedVersion) DeepCopyInto(out *ClusterPropagatedVersion) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterPropagatedVersion.
|
||||
func (in *ClusterPropagatedVersion) DeepCopy() *ClusterPropagatedVersion {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterPropagatedVersion)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ClusterPropagatedVersion) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterPropagatedVersionList) DeepCopyInto(out *ClusterPropagatedVersionList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]ClusterPropagatedVersion, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterPropagatedVersionList.
|
||||
func (in *ClusterPropagatedVersionList) DeepCopy() *ClusterPropagatedVersionList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterPropagatedVersionList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ClusterPropagatedVersionList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterPropagatedVersionSpec) DeepCopyInto(out *ClusterPropagatedVersionSpec) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterPropagatedVersionSpec.
|
||||
func (in *ClusterPropagatedVersionSpec) DeepCopy() *ClusterPropagatedVersionSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterPropagatedVersionSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FederatedServiceClusterStatus) DeepCopyInto(out *FederatedServiceClusterStatus) {
|
||||
*out = *in
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedServiceClusterStatus.
|
||||
func (in *FederatedServiceClusterStatus) DeepCopy() *FederatedServiceClusterStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FederatedServiceClusterStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FederatedServiceStatus) DeepCopyInto(out *FederatedServiceStatus) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
if in.ClusterStatus != nil {
|
||||
in, out := &in.ClusterStatus, &out.ClusterStatus
|
||||
*out = make([]FederatedServiceClusterStatus, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedServiceStatus.
|
||||
func (in *FederatedServiceStatus) DeepCopy() *FederatedServiceStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FederatedServiceStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *FederatedServiceStatus) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FederatedServiceStatusList) DeepCopyInto(out *FederatedServiceStatusList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]FederatedServiceStatus, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedServiceStatusList.
|
||||
func (in *FederatedServiceStatusList) DeepCopy() *FederatedServiceStatusList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FederatedServiceStatusList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *FederatedServiceStatusList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *PropagatedVersion) DeepCopyInto(out *PropagatedVersion) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PropagatedVersion.
|
||||
func (in *PropagatedVersion) DeepCopy() *PropagatedVersion {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(PropagatedVersion)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *PropagatedVersion) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *PropagatedVersionList) DeepCopyInto(out *PropagatedVersionList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]PropagatedVersion, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PropagatedVersionList.
|
||||
func (in *PropagatedVersionList) DeepCopy() *PropagatedVersionList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(PropagatedVersionList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *PropagatedVersionList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *PropagatedVersionSpec) DeepCopyInto(out *PropagatedVersionSpec) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PropagatedVersionSpec.
|
||||
func (in *PropagatedVersionSpec) DeepCopy() *PropagatedVersionSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(PropagatedVersionSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *PropagatedVersionStatus) DeepCopyInto(out *PropagatedVersionStatus) {
|
||||
*out = *in
|
||||
if in.ClusterVersions != nil {
|
||||
in, out := &in.ClusterVersions, &out.ClusterVersions
|
||||
*out = make([]ClusterObjectVersion, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PropagatedVersionStatus.
|
||||
func (in *PropagatedVersionStatus) DeepCopy() *PropagatedVersionStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(PropagatedVersionStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
257
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/federatedtypeconfig_types.go
generated
vendored
Normal file
257
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/federatedtypeconfig_types.go
generated
vendored
Normal file
@@ -0,0 +1,257 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
apiextv1b1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
"sigs.k8s.io/kubefed/pkg/apis/core/common"
|
||||
)
|
||||
|
||||
// FederatedTypeConfigSpec defines the desired state of FederatedTypeConfig.
|
||||
type FederatedTypeConfigSpec struct {
|
||||
// The configuration of the target type. If not set, the pluralName and
|
||||
// groupName fields will be set from the metadata.name of this resource. The
|
||||
// kind field must be set.
|
||||
TargetType APIResource `json:"targetType"`
|
||||
// Whether or not propagation to member clusters should be enabled.
|
||||
Propagation PropagationMode `json:"propagation"`
|
||||
// Configuration for the federated type that defines (via
|
||||
// template, placement and overrides fields) how the target type
|
||||
// should appear in multiple cluster.
|
||||
FederatedType APIResource `json:"federatedType"`
|
||||
// Configuration for the status type that holds information about which type
|
||||
// holds the status of the federated resource. If not provided, the group
|
||||
// and version will default to those provided for the federated type api
|
||||
// resource.
|
||||
// +optional
|
||||
StatusType *APIResource `json:"statusType,omitempty"`
|
||||
// Whether or not Status object should be populated.
|
||||
// +optional
|
||||
StatusCollection *StatusCollectionMode `json:"statusCollection,omitempty"`
|
||||
}
|
||||
|
||||
// APIResource defines how to configure the dynamic client for an API resource.
|
||||
type APIResource struct {
|
||||
// metav1.GroupVersion is not used since the json annotation of
|
||||
// the fields enforces them as mandatory.
|
||||
|
||||
// Group of the resource.
|
||||
// +optional
|
||||
Group string `json:"group,omitempty"`
|
||||
// Version of the resource.
|
||||
Version string `json:"version"`
|
||||
// Camel-cased singular name of the resource (e.g. ConfigMap)
|
||||
Kind string `json:"kind"`
|
||||
// Lower-cased plural name of the resource (e.g. configmaps). If
|
||||
// not provided, it will be computed by lower-casing the kind and
|
||||
// suffixing an 's'.
|
||||
PluralName string `json:"pluralName"`
|
||||
// Scope of the resource.
|
||||
Scope apiextv1b1.ResourceScope `json:"scope"`
|
||||
}
|
||||
|
||||
// PropagationMode defines the state of propagation to member clusters.
|
||||
type PropagationMode string
|
||||
|
||||
const (
|
||||
PropagationEnabled PropagationMode = "Enabled"
|
||||
PropagationDisabled PropagationMode = "Disabled"
|
||||
)
|
||||
|
||||
// StatusCollectionMode defines the state of status collection.
|
||||
type StatusCollectionMode string
|
||||
|
||||
const (
|
||||
StatusCollectionEnabled StatusCollectionMode = "Enabled"
|
||||
StatusCollectionDisabled StatusCollectionMode = "Disabled"
|
||||
)
|
||||
|
||||
// ControllerStatus defines the current state of the controller
|
||||
type ControllerStatus string
|
||||
|
||||
const (
|
||||
// ControllerStatusRunning means controller is in "running" state
|
||||
ControllerStatusRunning ControllerStatus = "Running"
|
||||
// ControllerStatusNotRunning means controller is in "notrunning" state
|
||||
ControllerStatusNotRunning ControllerStatus = "NotRunning"
|
||||
)
|
||||
|
||||
// FederatedTypeConfigStatus defines the observed state of FederatedTypeConfig
|
||||
type FederatedTypeConfigStatus struct {
|
||||
// ObservedGeneration is the generation as observed by the controller consuming the FederatedTypeConfig.
|
||||
ObservedGeneration int64 `json:"observedGeneration"`
|
||||
// PropagationController tracks the status of the sync controller.
|
||||
PropagationController ControllerStatus `json:"propagationController"`
|
||||
// StatusController tracks the status of the status controller.
|
||||
// +optional
|
||||
StatusController *ControllerStatus `json:"statusController,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=federatedtypeconfigs,shortName=ftc
|
||||
// +kubebuilder:subresource:status
|
||||
|
||||
// FederatedTypeConfig programs KubeFed to know about a single API type - the
|
||||
// "target type" - that a user wants to federate. For each target type, there is
|
||||
// a corresponding FederatedType that has the following fields:
|
||||
//
|
||||
// - The "template" field specifies the basic definition of a federated resource
|
||||
// - The "placement" field specifies the placement information for the federated
|
||||
// resource
|
||||
// - The "overrides" field specifies how the target resource should vary across
|
||||
// clusters.
|
||||
type FederatedTypeConfig struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec FederatedTypeConfigSpec `json:"spec"`
|
||||
// +optional
|
||||
Status FederatedTypeConfigStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// FederatedTypeConfigList contains a list of FederatedTypeConfig
|
||||
type FederatedTypeConfigList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
// +optional
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []FederatedTypeConfig `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&FederatedTypeConfig{}, &FederatedTypeConfigList{})
|
||||
}
|
||||
|
||||
func SetFederatedTypeConfigDefaults(obj *FederatedTypeConfig) {
|
||||
// TODO(marun) will name always be populated?
|
||||
nameParts := strings.SplitN(obj.Name, ".", 2)
|
||||
targetPluralName := nameParts[0]
|
||||
setStringDefault(&obj.Spec.TargetType.PluralName, targetPluralName)
|
||||
if len(nameParts) > 1 {
|
||||
group := nameParts[1]
|
||||
setStringDefault(&obj.Spec.TargetType.Group, group)
|
||||
}
|
||||
setStringDefault(&obj.Spec.FederatedType.PluralName, PluralName(obj.Spec.FederatedType.Kind))
|
||||
if obj.Spec.StatusType != nil {
|
||||
setStringDefault(&obj.Spec.StatusType.PluralName, PluralName(obj.Spec.StatusType.Kind))
|
||||
setStringDefault(&obj.Spec.StatusType.Group, obj.Spec.FederatedType.Group)
|
||||
setStringDefault(&obj.Spec.StatusType.Version, obj.Spec.FederatedType.Version)
|
||||
}
|
||||
}
|
||||
|
||||
// GetDefaultedString returns the value if provided, and otherwise
|
||||
// returns the provided default.
|
||||
func setStringDefault(value *string, defaultValue string) {
|
||||
if value == nil || len(*value) > 0 {
|
||||
return
|
||||
}
|
||||
*value = defaultValue
|
||||
}
|
||||
|
||||
// PluralName computes the plural name from the kind by
|
||||
// lowercasing and suffixing with 's' or `es`.
|
||||
func PluralName(kind string) string {
|
||||
lowerKind := strings.ToLower(kind)
|
||||
if strings.HasSuffix(lowerKind, "s") || strings.HasSuffix(lowerKind, "x") ||
|
||||
strings.HasSuffix(lowerKind, "ch") || strings.HasSuffix(lowerKind, "sh") ||
|
||||
strings.HasSuffix(lowerKind, "z") || strings.HasSuffix(lowerKind, "o") {
|
||||
return fmt.Sprintf("%ses", lowerKind)
|
||||
}
|
||||
if strings.HasSuffix(lowerKind, "y") {
|
||||
lowerKind = strings.TrimSuffix(lowerKind, "y")
|
||||
return fmt.Sprintf("%sies", lowerKind)
|
||||
}
|
||||
return fmt.Sprintf("%ss", lowerKind)
|
||||
}
|
||||
|
||||
func (f *FederatedTypeConfig) GetObjectMeta() metav1.ObjectMeta {
|
||||
return f.ObjectMeta
|
||||
}
|
||||
|
||||
func (f *FederatedTypeConfig) GetTargetType() metav1.APIResource {
|
||||
return apiResourceToMeta(f.Spec.TargetType, f.GetNamespaced())
|
||||
}
|
||||
|
||||
// TODO(font): This method should be removed from the interface in favor of
|
||||
// checking the namespaced property of the appropriate APIResource (TargetType,
|
||||
// FederatedType) depending on context.
|
||||
func (f *FederatedTypeConfig) GetNamespaced() bool {
|
||||
return f.Spec.TargetType.Namespaced()
|
||||
}
|
||||
|
||||
func (f *FederatedTypeConfig) GetPropagationEnabled() bool {
|
||||
return f.Spec.Propagation == PropagationEnabled
|
||||
}
|
||||
|
||||
func (f *FederatedTypeConfig) GetFederatedType() metav1.APIResource {
|
||||
return apiResourceToMeta(f.Spec.FederatedType, f.GetFederatedNamespaced())
|
||||
}
|
||||
|
||||
func (f *FederatedTypeConfig) GetStatusType() *metav1.APIResource {
|
||||
if f.Spec.StatusType == nil {
|
||||
return nil
|
||||
}
|
||||
metaAPIResource := apiResourceToMeta(*f.Spec.StatusType, f.Spec.StatusType.Namespaced())
|
||||
return &metaAPIResource
|
||||
}
|
||||
|
||||
func (f *FederatedTypeConfig) GetStatusEnabled() bool {
|
||||
return f.Spec.StatusCollection != nil &&
|
||||
*f.Spec.StatusCollection == StatusCollectionEnabled &&
|
||||
f.Name == "services"
|
||||
}
|
||||
|
||||
// TODO(font): This method should be removed from the interface i.e. remove
|
||||
// special-case handling for namespaces, in favor of checking the namespaced
|
||||
// property of the appropriate APIResource (TargetType, FederatedType)
|
||||
// depending on context.
|
||||
func (f *FederatedTypeConfig) GetFederatedNamespaced() bool {
|
||||
// Special-case the scope of federated namespace since it will
|
||||
// hopefully be the only instance of the scope of a federated
|
||||
// type differing from the scope of its target.
|
||||
|
||||
if f.IsNamespace() {
|
||||
// FederatedNamespace is namespaced to allow the control plane to run
|
||||
// with only namespace-scoped permissions e.g. to determine placement.
|
||||
return true
|
||||
}
|
||||
return f.GetNamespaced()
|
||||
}
|
||||
|
||||
func (f *FederatedTypeConfig) IsNamespace() bool {
|
||||
return f.Name == common.NamespaceName
|
||||
}
|
||||
|
||||
func (a *APIResource) Namespaced() bool {
|
||||
return a.Scope == apiextv1b1.NamespaceScoped
|
||||
}
|
||||
|
||||
func apiResourceToMeta(apiResource APIResource, namespaced bool) metav1.APIResource {
|
||||
return metav1.APIResource{
|
||||
Group: apiResource.Group,
|
||||
Version: apiResource.Version,
|
||||
Kind: apiResource.Kind,
|
||||
Name: apiResource.PluralName,
|
||||
Namespaced: namespaced,
|
||||
}
|
||||
}
|
||||
38
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/groupversion_info.go
generated
vendored
Normal file
38
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/groupversion_info.go
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// NOTE: Boilerplate only. Ignore this file.
|
||||
|
||||
// Package v1beta1 contains API Schema definitions for the core v1beta1 API group
|
||||
// +kubebuilder:object:generate=true
|
||||
// +groupName=core.kubefed.io
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"sigs.k8s.io/controller-runtime/pkg/scheme"
|
||||
)
|
||||
|
||||
var (
|
||||
// SchemeGroupVersion is group version used to register these objects
|
||||
SchemeGroupVersion = schema.GroupVersion{Group: "core.kubefed.io", Version: "v1beta1"}
|
||||
|
||||
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
|
||||
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
|
||||
|
||||
// AddToScheme adds the types in this group-version to the given scheme.
|
||||
AddToScheme = SchemeBuilder.AddToScheme
|
||||
)
|
||||
125
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/kubefedcluster_types.go
generated
vendored
Normal file
125
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/kubefedcluster_types.go
generated
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
apiv1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
"sigs.k8s.io/kubefed/pkg/apis/core/common"
|
||||
)
|
||||
|
||||
type TLSValidation string
|
||||
|
||||
const (
|
||||
TLSAll TLSValidation = "*"
|
||||
TLSSubjectName TLSValidation = "SubjectName"
|
||||
TLSValidityPeriod TLSValidation = "ValidityPeriod"
|
||||
)
|
||||
|
||||
// KubeFedClusterSpec defines the desired state of KubeFedCluster
|
||||
type KubeFedClusterSpec struct {
|
||||
// The API endpoint of the member cluster. This can be a hostname,
|
||||
// hostname:port, IP or IP:port.
|
||||
APIEndpoint string `json:"apiEndpoint"`
|
||||
|
||||
// CABundle contains the certificate authority information.
|
||||
// +optional
|
||||
CABundle []byte `json:"caBundle,omitempty"`
|
||||
|
||||
// Name of the secret containing the token required to access the
|
||||
// member cluster. The secret needs to exist in the same namespace
|
||||
// as the control plane and should have a "token" key.
|
||||
SecretRef LocalSecretReference `json:"secretRef"`
|
||||
|
||||
// DisabledTLSValidations defines a list of checks to ignore when validating
|
||||
// the TLS connection to the member cluster. This can be any of *, SubjectName, or ValidityPeriod.
|
||||
// If * is specified, it is expected to be the only option in list.
|
||||
// +optional
|
||||
DisabledTLSValidations []TLSValidation `json:"disabledTLSValidations,omitempty"`
|
||||
}
|
||||
|
||||
// LocalSecretReference is a reference to a secret within the enclosing
|
||||
// namespace.
|
||||
type LocalSecretReference struct {
|
||||
// Name of a secret within the enclosing
|
||||
// namespace
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// KubeFedClusterStatus contains information about the current status of a
|
||||
// cluster updated periodically by cluster controller.
|
||||
type KubeFedClusterStatus struct {
|
||||
// Conditions is an array of current cluster conditions.
|
||||
Conditions []ClusterCondition `json:"conditions"`
|
||||
// Zones are the names of availability zones in which the nodes of the cluster exist, e.g. 'us-east1-a'.
|
||||
// +optional
|
||||
Zones []string `json:"zones,omitempty"`
|
||||
// Region is the name of the region in which all of the nodes in the cluster exist. e.g. 'us-east1'.
|
||||
// +optional
|
||||
Region *string `json:"region,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:printcolumn:name=age,type=date,JSONPath=.metadata.creationTimestamp
|
||||
// +kubebuilder:printcolumn:name=ready,type=string,JSONPath=.status.conditions[?(@.type=='Ready')].status
|
||||
// +kubebuilder:resource:path=kubefedclusters
|
||||
// +kubebuilder:subresource:status
|
||||
|
||||
// KubeFedCluster configures KubeFed to be aware of a Kubernetes
|
||||
// cluster and encapsulates the details necessary to communicate with
|
||||
// the cluster.
|
||||
type KubeFedCluster struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec KubeFedClusterSpec `json:"spec"`
|
||||
// +optional
|
||||
Status KubeFedClusterStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// ClusterCondition describes current state of a cluster.
|
||||
type ClusterCondition struct {
|
||||
// Type of cluster condition, Ready or Offline.
|
||||
Type common.ClusterConditionType `json:"type"`
|
||||
// Status of the condition, one of True, False, Unknown.
|
||||
Status apiv1.ConditionStatus `json:"status"`
|
||||
// Last time the condition was checked.
|
||||
LastProbeTime metav1.Time `json:"lastProbeTime"`
|
||||
// Last time the condition transit from one status to another.
|
||||
// +optional
|
||||
LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty"`
|
||||
// (brief) reason for the condition's last transition.
|
||||
// +optional
|
||||
Reason *string `json:"reason,omitempty"`
|
||||
// Human readable message indicating details about last transition.
|
||||
// +optional
|
||||
Message *string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// KubeFedClusterList contains a list of KubeFedCluster
|
||||
type KubeFedClusterList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []KubeFedCluster `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&KubeFedCluster{}, &KubeFedClusterList{})
|
||||
}
|
||||
142
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/kubefedconfig_types.go
generated
vendored
Normal file
142
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/kubefedconfig_types.go
generated
vendored
Normal file
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
apiextv1b1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// KubeFedConfigSpec defines the desired state of KubeFedConfig
|
||||
type KubeFedConfigSpec struct {
|
||||
// The scope of the KubeFed control plane should be either
|
||||
// `Namespaced` or `Cluster`. `Namespaced` indicates that the
|
||||
// KubeFed namespace will be the only target of the control plane.
|
||||
Scope apiextv1b1.ResourceScope `json:"scope"`
|
||||
// +optional
|
||||
ControllerDuration *DurationConfig `json:"controllerDuration,omitempty"`
|
||||
// +optional
|
||||
LeaderElect *LeaderElectConfig `json:"leaderElect,omitempty"`
|
||||
// +optional
|
||||
FeatureGates []FeatureGatesConfig `json:"featureGates,omitempty"`
|
||||
// +optional
|
||||
ClusterHealthCheck *ClusterHealthCheckConfig `json:"clusterHealthCheck,omitempty"`
|
||||
// +optional
|
||||
SyncController *SyncControllerConfig `json:"syncController,omitempty"`
|
||||
}
|
||||
|
||||
type DurationConfig struct {
|
||||
// Time to wait before reconciling on a healthy cluster.
|
||||
// +optional
|
||||
AvailableDelay *metav1.Duration `json:"availableDelay,omitempty"`
|
||||
// Time to wait before giving up on an unhealthy cluster.
|
||||
// +optional
|
||||
UnavailableDelay *metav1.Duration `json:"unavailableDelay,omitempty"`
|
||||
}
|
||||
type LeaderElectConfig struct {
|
||||
// The duration that non-leader candidates will wait after observing a leadership
|
||||
// renewal until attempting to acquire leadership of a led but unrenewed leader
|
||||
// slot. This is effectively the maximum duration that a leader can be stopped
|
||||
// before it is replaced by another candidate. This is only applicable if leader
|
||||
// election is enabled.
|
||||
// +optional
|
||||
LeaseDuration *metav1.Duration `json:"leaseDuration,omitempty"`
|
||||
// The interval between attempts by the acting master to renew a leadership slot
|
||||
// before it stops leading. This must be less than or equal to the lease duration.
|
||||
// This is only applicable if leader election is enabled.
|
||||
// +optional
|
||||
RenewDeadline *metav1.Duration `json:"renewDeadline,omitempty"`
|
||||
// The duration the clients should wait between attempting acquisition and renewal
|
||||
// of a leadership. This is only applicable if leader election is enabled.
|
||||
// +optional
|
||||
RetryPeriod *metav1.Duration `json:"retryPeriod,omitempty"`
|
||||
// The type of resource object that is used for locking during
|
||||
// leader election. Supported options are `configmaps` (default) and `endpoints`.
|
||||
// +optional
|
||||
ResourceLock *ResourceLockType `json:"resourceLock,omitempty"`
|
||||
}
|
||||
|
||||
type ResourceLockType string
|
||||
|
||||
const (
|
||||
ConfigMapsResourceLock ResourceLockType = "configmaps"
|
||||
EndpointsResourceLock ResourceLockType = "endpoints"
|
||||
)
|
||||
|
||||
type FeatureGatesConfig struct {
|
||||
Name string `json:"name"`
|
||||
Configuration ConfigurationMode `json:"configuration"`
|
||||
}
|
||||
|
||||
type ConfigurationMode string
|
||||
|
||||
const (
|
||||
ConfigurationEnabled ConfigurationMode = "Enabled"
|
||||
ConfigurationDisabled ConfigurationMode = "Disabled"
|
||||
)
|
||||
|
||||
type ClusterHealthCheckConfig struct {
|
||||
// How often to monitor the cluster health.
|
||||
// +optional
|
||||
Period *metav1.Duration `json:"period,omitempty"`
|
||||
// Minimum consecutive failures for the cluster health to be considered failed after having succeeded.
|
||||
// +optional
|
||||
FailureThreshold *int64 `json:"failureThreshold,omitempty"`
|
||||
// Minimum consecutive successes for the cluster health to be considered successful after having failed.
|
||||
// +optional
|
||||
SuccessThreshold *int64 `json:"successThreshold,omitempty"`
|
||||
// Duration after which the cluster health check times out.
|
||||
// +optional
|
||||
Timeout *metav1.Duration `json:"timeout,omitempty"`
|
||||
}
|
||||
|
||||
type SyncControllerConfig struct {
|
||||
// Whether to adopt pre-existing resources in member clusters. Defaults to
|
||||
// "Enabled".
|
||||
// +optional
|
||||
AdoptResources *ResourceAdoption `json:"adoptResources,omitempty"`
|
||||
}
|
||||
|
||||
type ResourceAdoption string
|
||||
|
||||
const (
|
||||
AdoptResourcesEnabled ResourceAdoption = "Enabled"
|
||||
AdoptResourcesDisabled ResourceAdoption = "Disabled"
|
||||
)
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=kubefedconfigs
|
||||
|
||||
type KubeFedConfig struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec KubeFedConfigSpec `json:"spec"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// KubeFedConfigList contains a list of KubeFedConfig
|
||||
type KubeFedConfigList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []KubeFedConfig `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&KubeFedConfig{}, &KubeFedConfigList{})
|
||||
}
|
||||
537
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/zz_generated.deepcopy.go
generated
vendored
Normal file
537
vendor/sigs.k8s.io/kubefed/pkg/apis/core/v1beta1/zz_generated.deepcopy.go
generated
vendored
Normal file
@@ -0,0 +1,537 @@
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by controller-gen. DO NOT EDIT.
|
||||
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *APIResource) DeepCopyInto(out *APIResource) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIResource.
|
||||
func (in *APIResource) DeepCopy() *APIResource {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(APIResource)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterCondition) DeepCopyInto(out *ClusterCondition) {
|
||||
*out = *in
|
||||
in.LastProbeTime.DeepCopyInto(&out.LastProbeTime)
|
||||
if in.LastTransitionTime != nil {
|
||||
in, out := &in.LastTransitionTime, &out.LastTransitionTime
|
||||
*out = (*in).DeepCopy()
|
||||
}
|
||||
if in.Reason != nil {
|
||||
in, out := &in.Reason, &out.Reason
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.Message != nil {
|
||||
in, out := &in.Message, &out.Message
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCondition.
|
||||
func (in *ClusterCondition) DeepCopy() *ClusterCondition {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterCondition)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterHealthCheckConfig) DeepCopyInto(out *ClusterHealthCheckConfig) {
|
||||
*out = *in
|
||||
if in.Period != nil {
|
||||
in, out := &in.Period, &out.Period
|
||||
*out = new(v1.Duration)
|
||||
**out = **in
|
||||
}
|
||||
if in.FailureThreshold != nil {
|
||||
in, out := &in.FailureThreshold, &out.FailureThreshold
|
||||
*out = new(int64)
|
||||
**out = **in
|
||||
}
|
||||
if in.SuccessThreshold != nil {
|
||||
in, out := &in.SuccessThreshold, &out.SuccessThreshold
|
||||
*out = new(int64)
|
||||
**out = **in
|
||||
}
|
||||
if in.Timeout != nil {
|
||||
in, out := &in.Timeout, &out.Timeout
|
||||
*out = new(v1.Duration)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterHealthCheckConfig.
|
||||
func (in *ClusterHealthCheckConfig) DeepCopy() *ClusterHealthCheckConfig {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterHealthCheckConfig)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DurationConfig) DeepCopyInto(out *DurationConfig) {
|
||||
*out = *in
|
||||
if in.AvailableDelay != nil {
|
||||
in, out := &in.AvailableDelay, &out.AvailableDelay
|
||||
*out = new(v1.Duration)
|
||||
**out = **in
|
||||
}
|
||||
if in.UnavailableDelay != nil {
|
||||
in, out := &in.UnavailableDelay, &out.UnavailableDelay
|
||||
*out = new(v1.Duration)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DurationConfig.
|
||||
func (in *DurationConfig) DeepCopy() *DurationConfig {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DurationConfig)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FeatureGatesConfig) DeepCopyInto(out *FeatureGatesConfig) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureGatesConfig.
|
||||
func (in *FeatureGatesConfig) DeepCopy() *FeatureGatesConfig {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FeatureGatesConfig)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FederatedTypeConfig) DeepCopyInto(out *FederatedTypeConfig) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedTypeConfig.
|
||||
func (in *FederatedTypeConfig) DeepCopy() *FederatedTypeConfig {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FederatedTypeConfig)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *FederatedTypeConfig) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FederatedTypeConfigList) DeepCopyInto(out *FederatedTypeConfigList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]FederatedTypeConfig, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedTypeConfigList.
|
||||
func (in *FederatedTypeConfigList) DeepCopy() *FederatedTypeConfigList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FederatedTypeConfigList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *FederatedTypeConfigList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FederatedTypeConfigSpec) DeepCopyInto(out *FederatedTypeConfigSpec) {
|
||||
*out = *in
|
||||
out.TargetType = in.TargetType
|
||||
out.FederatedType = in.FederatedType
|
||||
if in.StatusType != nil {
|
||||
in, out := &in.StatusType, &out.StatusType
|
||||
*out = new(APIResource)
|
||||
**out = **in
|
||||
}
|
||||
if in.StatusCollection != nil {
|
||||
in, out := &in.StatusCollection, &out.StatusCollection
|
||||
*out = new(StatusCollectionMode)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedTypeConfigSpec.
|
||||
func (in *FederatedTypeConfigSpec) DeepCopy() *FederatedTypeConfigSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FederatedTypeConfigSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FederatedTypeConfigStatus) DeepCopyInto(out *FederatedTypeConfigStatus) {
|
||||
*out = *in
|
||||
if in.StatusController != nil {
|
||||
in, out := &in.StatusController, &out.StatusController
|
||||
*out = new(ControllerStatus)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedTypeConfigStatus.
|
||||
func (in *FederatedTypeConfigStatus) DeepCopy() *FederatedTypeConfigStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(FederatedTypeConfigStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *KubeFedCluster) DeepCopyInto(out *KubeFedCluster) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeFedCluster.
|
||||
func (in *KubeFedCluster) DeepCopy() *KubeFedCluster {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(KubeFedCluster)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *KubeFedCluster) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *KubeFedClusterList) DeepCopyInto(out *KubeFedClusterList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]KubeFedCluster, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeFedClusterList.
|
||||
func (in *KubeFedClusterList) DeepCopy() *KubeFedClusterList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(KubeFedClusterList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *KubeFedClusterList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *KubeFedClusterSpec) DeepCopyInto(out *KubeFedClusterSpec) {
|
||||
*out = *in
|
||||
if in.CABundle != nil {
|
||||
in, out := &in.CABundle, &out.CABundle
|
||||
*out = make([]byte, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
out.SecretRef = in.SecretRef
|
||||
if in.DisabledTLSValidations != nil {
|
||||
in, out := &in.DisabledTLSValidations, &out.DisabledTLSValidations
|
||||
*out = make([]TLSValidation, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeFedClusterSpec.
|
||||
func (in *KubeFedClusterSpec) DeepCopy() *KubeFedClusterSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(KubeFedClusterSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *KubeFedClusterStatus) DeepCopyInto(out *KubeFedClusterStatus) {
|
||||
*out = *in
|
||||
if in.Conditions != nil {
|
||||
in, out := &in.Conditions, &out.Conditions
|
||||
*out = make([]ClusterCondition, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
if in.Zones != nil {
|
||||
in, out := &in.Zones, &out.Zones
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.Region != nil {
|
||||
in, out := &in.Region, &out.Region
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeFedClusterStatus.
|
||||
func (in *KubeFedClusterStatus) DeepCopy() *KubeFedClusterStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(KubeFedClusterStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *KubeFedConfig) DeepCopyInto(out *KubeFedConfig) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeFedConfig.
|
||||
func (in *KubeFedConfig) DeepCopy() *KubeFedConfig {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(KubeFedConfig)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *KubeFedConfig) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *KubeFedConfigList) DeepCopyInto(out *KubeFedConfigList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]KubeFedConfig, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeFedConfigList.
|
||||
func (in *KubeFedConfigList) DeepCopy() *KubeFedConfigList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(KubeFedConfigList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *KubeFedConfigList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *KubeFedConfigSpec) DeepCopyInto(out *KubeFedConfigSpec) {
|
||||
*out = *in
|
||||
if in.ControllerDuration != nil {
|
||||
in, out := &in.ControllerDuration, &out.ControllerDuration
|
||||
*out = new(DurationConfig)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.LeaderElect != nil {
|
||||
in, out := &in.LeaderElect, &out.LeaderElect
|
||||
*out = new(LeaderElectConfig)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.FeatureGates != nil {
|
||||
in, out := &in.FeatureGates, &out.FeatureGates
|
||||
*out = make([]FeatureGatesConfig, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.ClusterHealthCheck != nil {
|
||||
in, out := &in.ClusterHealthCheck, &out.ClusterHealthCheck
|
||||
*out = new(ClusterHealthCheckConfig)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.SyncController != nil {
|
||||
in, out := &in.SyncController, &out.SyncController
|
||||
*out = new(SyncControllerConfig)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeFedConfigSpec.
|
||||
func (in *KubeFedConfigSpec) DeepCopy() *KubeFedConfigSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(KubeFedConfigSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *LeaderElectConfig) DeepCopyInto(out *LeaderElectConfig) {
|
||||
*out = *in
|
||||
if in.LeaseDuration != nil {
|
||||
in, out := &in.LeaseDuration, &out.LeaseDuration
|
||||
*out = new(v1.Duration)
|
||||
**out = **in
|
||||
}
|
||||
if in.RenewDeadline != nil {
|
||||
in, out := &in.RenewDeadline, &out.RenewDeadline
|
||||
*out = new(v1.Duration)
|
||||
**out = **in
|
||||
}
|
||||
if in.RetryPeriod != nil {
|
||||
in, out := &in.RetryPeriod, &out.RetryPeriod
|
||||
*out = new(v1.Duration)
|
||||
**out = **in
|
||||
}
|
||||
if in.ResourceLock != nil {
|
||||
in, out := &in.ResourceLock, &out.ResourceLock
|
||||
*out = new(ResourceLockType)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaderElectConfig.
|
||||
func (in *LeaderElectConfig) DeepCopy() *LeaderElectConfig {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(LeaderElectConfig)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *LocalSecretReference) DeepCopyInto(out *LocalSecretReference) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalSecretReference.
|
||||
func (in *LocalSecretReference) DeepCopy() *LocalSecretReference {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(LocalSecretReference)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *SyncControllerConfig) DeepCopyInto(out *SyncControllerConfig) {
|
||||
*out = *in
|
||||
if in.AdoptResources != nil {
|
||||
in, out := &in.AdoptResources, &out.AdoptResources
|
||||
*out = new(ResourceAdoption)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncControllerConfig.
|
||||
func (in *SyncControllerConfig) DeepCopy() *SyncControllerConfig {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(SyncControllerConfig)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
85
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/dnsendpoint_types.go
generated
vendored
Normal file
85
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/dnsendpoint_types.go
generated
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// Targets is a representation of a list of targets for an endpoint.
|
||||
type Targets []string
|
||||
|
||||
// TTL is a structure defining the TTL of a DNS record
|
||||
type TTL int64
|
||||
|
||||
// Labels store metadata related to the endpoint
|
||||
// it is then stored in a persistent storage via serialization
|
||||
type Labels map[string]string
|
||||
|
||||
// Endpoint is a high-level association between a service and an IP.
|
||||
type Endpoint struct {
|
||||
// The FQDN of the DNS record.
|
||||
DNSName string `json:"dnsName,omitempty"`
|
||||
// The targets that the DNS record points to.
|
||||
Targets Targets `json:"targets,omitempty"`
|
||||
// RecordType type of record, e.g. CNAME, A, SRV, TXT etc.
|
||||
RecordType string `json:"recordType,omitempty"`
|
||||
// TTL for the record in seconds.
|
||||
RecordTTL TTL `json:"recordTTL,omitempty"`
|
||||
// Labels stores labels defined for the Endpoint.
|
||||
// +optional
|
||||
Labels Labels `json:"labels,omitempty"`
|
||||
}
|
||||
|
||||
// DNSEndpointSpec defines the desired state of DNSEndpoint
|
||||
type DNSEndpointSpec struct {
|
||||
Endpoints []*Endpoint `json:"endpoints,omitempty"`
|
||||
}
|
||||
|
||||
// DNSEndpointStatus defines the observed state of DNSEndpoint
|
||||
type DNSEndpointStatus struct {
|
||||
// ObservedGeneration is the generation as observed by the controller consuming the DNSEndpoint.
|
||||
// +optional
|
||||
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=dnsendpoints
|
||||
// +kubebuilder:subresource:status
|
||||
|
||||
// DNSEndpoint is the CRD wrapper for Endpoint which is designed to act as a
|
||||
// source of truth for external-dns.
|
||||
type DNSEndpoint struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec DNSEndpointSpec `json:"spec,omitempty"`
|
||||
Status DNSEndpointStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// DNSEndpointList contains a list of DNSEndpoint
|
||||
type DNSEndpointList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []DNSEndpoint `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&DNSEndpoint{}, &DNSEndpointList{})
|
||||
}
|
||||
47
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/domain_types.go
generated
vendored
Normal file
47
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/domain_types.go
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=domains
|
||||
|
||||
type Domain struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
// Domain is the DNS zone associated with the KubeFed control plane
|
||||
Domain string `json:"domain"`
|
||||
// NameServer is the authoritative DNS name server for the KubeFed domain
|
||||
NameServer string `json:"nameServer,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// DomainList contains a list of Domain
|
||||
type DomainList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []Domain `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&Domain{}, &DomainList{})
|
||||
}
|
||||
43
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/groupversion_info.go
generated
vendored
Normal file
43
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/groupversion_info.go
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// NOTE: Boilerplate only. Ignore this file.
|
||||
|
||||
// Package v1alpha1 contains API Schema definitions for the multiclusterdns v1alpha1 API group
|
||||
// +kubebuilder:object:generate=true
|
||||
// +groupName=multiclusterdns.kubefed.io
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"sigs.k8s.io/controller-runtime/pkg/scheme"
|
||||
)
|
||||
|
||||
var (
|
||||
// SchemeGroupVersion is group version used to register these objects
|
||||
SchemeGroupVersion = schema.GroupVersion{Group: "multiclusterdns.kubefed.io", Version: "v1alpha1"}
|
||||
|
||||
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
|
||||
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
|
||||
|
||||
// AddToScheme is required by pkg/client/...
|
||||
AddToScheme = SchemeBuilder.AddToScheme
|
||||
)
|
||||
|
||||
// Resource is required by pkg/client/listers/...
|
||||
func Resource(resource string) schema.GroupResource {
|
||||
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||
}
|
||||
69
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/ingressdnsrecord_types.go
generated
vendored
Normal file
69
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/ingressdnsrecord_types.go
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// IngressDNSRecordSpec defines the desired state of IngressDNSRecord
|
||||
type IngressDNSRecordSpec struct {
|
||||
// Host from the IngressRule in Cluster Ingress Spec
|
||||
Hosts []string `json:"hosts,omitempty"`
|
||||
// RecordTTL is the TTL in seconds for DNS records created for the Ingress, if omitted a default would be used
|
||||
RecordTTL TTL `json:"recordTTL,omitempty"`
|
||||
}
|
||||
|
||||
// IngressDNSRecordStatus defines the observed state of IngressDNSRecord
|
||||
type IngressDNSRecordStatus struct {
|
||||
// Array of Ingress Controller LoadBalancers
|
||||
DNS []ClusterIngressDNS `json:"dns,omitempty"`
|
||||
}
|
||||
|
||||
// ClusterIngressDNS defines the observed status of Ingress within a cluster.
|
||||
type ClusterIngressDNS struct {
|
||||
// Cluster name
|
||||
Cluster string `json:"cluster,omitempty"`
|
||||
// LoadBalancer for the corresponding ingress controller
|
||||
LoadBalancer corev1.LoadBalancerStatus `json:"loadBalancer,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=ingressdnsrecords
|
||||
// +kubebuilder:subresource:status
|
||||
|
||||
type IngressDNSRecord struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec IngressDNSRecordSpec `json:"spec,omitempty"`
|
||||
Status IngressDNSRecordStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// IngressDNSRecordList contains a list of IngressDNSRecord
|
||||
type IngressDNSRecordList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []IngressDNSRecord `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&IngressDNSRecord{}, &IngressDNSRecordList{})
|
||||
}
|
||||
107
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/servicednsrecord_types.go
generated
vendored
Normal file
107
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/servicednsrecord_types.go
generated
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// ServiceDNSRecordSpec defines the desired state of ServiceDNSRecord.
|
||||
type ServiceDNSRecordSpec struct {
|
||||
// DomainRef is the name of the domain object to which the corresponding federated service belongs
|
||||
DomainRef string `json:"domainRef"`
|
||||
// RecordTTL is the TTL in seconds for DNS records created for this Service, if omitted a default would be used
|
||||
RecordTTL TTL `json:"recordTTL,omitempty"`
|
||||
// DNSPrefix when specified, an additional DNS record would be created with <DNSPrefix>.<KubeFedDomain>
|
||||
DNSPrefix string `json:"dnsPrefix,omitempty"`
|
||||
// ExternalName when specified, replaces the service name portion of a resource record
|
||||
// with the value of ExternalName.
|
||||
ExternalName string `json:"externalName,omitempty"`
|
||||
// AllowServiceWithoutEndpoints allows DNS records to be written for Service shards without endpoints
|
||||
AllowServiceWithoutEndpoints bool `json:"allowServiceWithoutEndpoints,omitempty"`
|
||||
}
|
||||
|
||||
// ServiceDNSRecordStatus defines the observed state of ServiceDNSRecord.
|
||||
type ServiceDNSRecordStatus struct {
|
||||
// Domain is the DNS domain of the KubeFed control plane as in Domain API
|
||||
Domain string `json:"domain,omitempty"`
|
||||
DNS []ClusterDNS `json:"dns,omitempty"`
|
||||
}
|
||||
|
||||
// ClusterDNS defines the observed status of LoadBalancer within a cluster.
|
||||
type ClusterDNS struct {
|
||||
// Cluster name
|
||||
Cluster string `json:"cluster,omitempty"`
|
||||
// LoadBalancer for the corresponding service
|
||||
LoadBalancer corev1.LoadBalancerStatus `json:"loadBalancer,omitempty"`
|
||||
// Zones to which the cluster belongs
|
||||
Zones []string `json:"zones,omitempty"`
|
||||
// Region to which the cluster belongs
|
||||
Region string `json:"region,omitempty"`
|
||||
}
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// ServiceDNSRecord defines a scheme of DNS name and subdomains that
|
||||
// should be programmed with endpoint information about a Service deployed in
|
||||
// multiple Kubernetes clusters. ServiceDNSRecord is name-associated
|
||||
// with the Services it programs endpoint information for, meaning that a
|
||||
// ServiceDNSRecord expresses the intent to program DNS with
|
||||
// information about endpoints for the Kubernetes Service resources with the
|
||||
// same name and namespace in different clusters.
|
||||
//
|
||||
// For the example, given the following values:
|
||||
//
|
||||
// metadata.name: test-service
|
||||
// metadata.namespace: test-namespace
|
||||
// spec.federationName: test-federation
|
||||
//
|
||||
// the following set of DNS names will be programmed:
|
||||
//
|
||||
// Global Level: test-service.test-namespace.test-federation.svc.<federation-domain>
|
||||
// Region Level: test-service.test-namespace.test-federation.svc.(status.DNS[*].region).<federation-domain>
|
||||
// Zone Level : test-service.test-namespace.test-federation.svc.(status.DNS[*].zone).(status.DNS[*].region).<federation-domain>
|
||||
//
|
||||
// Optionally, when DNSPrefix is specified, another DNS name will be programmed
|
||||
// which would be a CNAME record pointing to DNS name at global level as below:
|
||||
// <dns-prefix>.<federation-domain> --> test-service.test-namespace.test-federation.svc.<federation-domain>
|
||||
//
|
||||
// +k8s:openapi-gen=true
|
||||
// +kubebuilder:resource:path=servicednsrecords
|
||||
// +kubebuilder:subresource:status
|
||||
type ServiceDNSRecord struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec ServiceDNSRecordSpec `json:"spec,omitempty"`
|
||||
Status ServiceDNSRecordStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// ServiceDNSRecordList contains a list of ServiceDNSRecord
|
||||
type ServiceDNSRecordList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []ServiceDNSRecord `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&ServiceDNSRecord{}, &ServiceDNSRecordList{})
|
||||
}
|
||||
483
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
483
vendor/sigs.k8s.io/kubefed/pkg/apis/multiclusterdns/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
@@ -0,0 +1,483 @@
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by controller-gen. DO NOT EDIT.
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterDNS) DeepCopyInto(out *ClusterDNS) {
|
||||
*out = *in
|
||||
in.LoadBalancer.DeepCopyInto(&out.LoadBalancer)
|
||||
if in.Zones != nil {
|
||||
in, out := &in.Zones, &out.Zones
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterDNS.
|
||||
func (in *ClusterDNS) DeepCopy() *ClusterDNS {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterDNS)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterIngressDNS) DeepCopyInto(out *ClusterIngressDNS) {
|
||||
*out = *in
|
||||
in.LoadBalancer.DeepCopyInto(&out.LoadBalancer)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterIngressDNS.
|
||||
func (in *ClusterIngressDNS) DeepCopy() *ClusterIngressDNS {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterIngressDNS)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DNSEndpoint) DeepCopyInto(out *DNSEndpoint) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
out.Status = in.Status
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSEndpoint.
|
||||
func (in *DNSEndpoint) DeepCopy() *DNSEndpoint {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DNSEndpoint)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *DNSEndpoint) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DNSEndpointList) DeepCopyInto(out *DNSEndpointList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]DNSEndpoint, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSEndpointList.
|
||||
func (in *DNSEndpointList) DeepCopy() *DNSEndpointList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DNSEndpointList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *DNSEndpointList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DNSEndpointSpec) DeepCopyInto(out *DNSEndpointSpec) {
|
||||
*out = *in
|
||||
if in.Endpoints != nil {
|
||||
in, out := &in.Endpoints, &out.Endpoints
|
||||
*out = make([]*Endpoint, len(*in))
|
||||
for i := range *in {
|
||||
if (*in)[i] != nil {
|
||||
in, out := &(*in)[i], &(*out)[i]
|
||||
*out = new(Endpoint)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSEndpointSpec.
|
||||
func (in *DNSEndpointSpec) DeepCopy() *DNSEndpointSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DNSEndpointSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DNSEndpointStatus) DeepCopyInto(out *DNSEndpointStatus) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSEndpointStatus.
|
||||
func (in *DNSEndpointStatus) DeepCopy() *DNSEndpointStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DNSEndpointStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *Domain) DeepCopyInto(out *Domain) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Domain.
|
||||
func (in *Domain) DeepCopy() *Domain {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Domain)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *Domain) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DomainList) DeepCopyInto(out *DomainList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]Domain, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainList.
|
||||
func (in *DomainList) DeepCopy() *DomainList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DomainList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *DomainList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *Endpoint) DeepCopyInto(out *Endpoint) {
|
||||
*out = *in
|
||||
if in.Targets != nil {
|
||||
in, out := &in.Targets, &out.Targets
|
||||
*out = make(Targets, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.Labels != nil {
|
||||
in, out := &in.Labels, &out.Labels
|
||||
*out = make(Labels, len(*in))
|
||||
for key, val := range *in {
|
||||
(*out)[key] = val
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Endpoint.
|
||||
func (in *Endpoint) DeepCopy() *Endpoint {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Endpoint)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *IngressDNSRecord) DeepCopyInto(out *IngressDNSRecord) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressDNSRecord.
|
||||
func (in *IngressDNSRecord) DeepCopy() *IngressDNSRecord {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(IngressDNSRecord)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *IngressDNSRecord) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *IngressDNSRecordList) DeepCopyInto(out *IngressDNSRecordList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]IngressDNSRecord, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressDNSRecordList.
|
||||
func (in *IngressDNSRecordList) DeepCopy() *IngressDNSRecordList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(IngressDNSRecordList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *IngressDNSRecordList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *IngressDNSRecordSpec) DeepCopyInto(out *IngressDNSRecordSpec) {
|
||||
*out = *in
|
||||
if in.Hosts != nil {
|
||||
in, out := &in.Hosts, &out.Hosts
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressDNSRecordSpec.
|
||||
func (in *IngressDNSRecordSpec) DeepCopy() *IngressDNSRecordSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(IngressDNSRecordSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *IngressDNSRecordStatus) DeepCopyInto(out *IngressDNSRecordStatus) {
|
||||
*out = *in
|
||||
if in.DNS != nil {
|
||||
in, out := &in.DNS, &out.DNS
|
||||
*out = make([]ClusterIngressDNS, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressDNSRecordStatus.
|
||||
func (in *IngressDNSRecordStatus) DeepCopy() *IngressDNSRecordStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(IngressDNSRecordStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in Labels) DeepCopyInto(out *Labels) {
|
||||
{
|
||||
in := &in
|
||||
*out = make(Labels, len(*in))
|
||||
for key, val := range *in {
|
||||
(*out)[key] = val
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Labels.
|
||||
func (in Labels) DeepCopy() Labels {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Labels)
|
||||
in.DeepCopyInto(out)
|
||||
return *out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ServiceDNSRecord) DeepCopyInto(out *ServiceDNSRecord) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
out.Spec = in.Spec
|
||||
in.Status.DeepCopyInto(&out.Status)
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDNSRecord.
|
||||
func (in *ServiceDNSRecord) DeepCopy() *ServiceDNSRecord {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ServiceDNSRecord)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ServiceDNSRecord) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ServiceDNSRecordList) DeepCopyInto(out *ServiceDNSRecordList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]ServiceDNSRecord, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDNSRecordList.
|
||||
func (in *ServiceDNSRecordList) DeepCopy() *ServiceDNSRecordList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ServiceDNSRecordList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ServiceDNSRecordList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ServiceDNSRecordSpec) DeepCopyInto(out *ServiceDNSRecordSpec) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDNSRecordSpec.
|
||||
func (in *ServiceDNSRecordSpec) DeepCopy() *ServiceDNSRecordSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ServiceDNSRecordSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ServiceDNSRecordStatus) DeepCopyInto(out *ServiceDNSRecordStatus) {
|
||||
*out = *in
|
||||
if in.DNS != nil {
|
||||
in, out := &in.DNS, &out.DNS
|
||||
*out = make([]ClusterDNS, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDNSRecordStatus.
|
||||
func (in *ServiceDNSRecordStatus) DeepCopy() *ServiceDNSRecordStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ServiceDNSRecordStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in Targets) DeepCopyInto(out *Targets) {
|
||||
{
|
||||
in := &in
|
||||
*out = make(Targets, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Targets.
|
||||
func (in Targets) DeepCopy() Targets {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(Targets)
|
||||
in.DeepCopyInto(out)
|
||||
return *out
|
||||
}
|
||||
43
vendor/sigs.k8s.io/kubefed/pkg/apis/scheduling/v1alpha1/groupversion_info.go
generated
vendored
Normal file
43
vendor/sigs.k8s.io/kubefed/pkg/apis/scheduling/v1alpha1/groupversion_info.go
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
Copyright 2019 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// NOTE: Boilerplate only. Ignore this file.
|
||||
|
||||
// Package v1alpha1 contains API Schema definitions for the scheduling v1alpha1 API group
|
||||
// +kubebuilder:object:generate=true
|
||||
// +groupName=scheduling.kubefed.io
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"sigs.k8s.io/controller-runtime/pkg/scheme"
|
||||
)
|
||||
|
||||
var (
|
||||
// SchemeGroupVersion is group version used to register these objects
|
||||
SchemeGroupVersion = schema.GroupVersion{Group: "scheduling.kubefed.io", Version: "v1alpha1"}
|
||||
|
||||
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
|
||||
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
|
||||
|
||||
// AddToScheme is required by pkg/client/...
|
||||
AddToScheme = SchemeBuilder.AddToScheme
|
||||
)
|
||||
|
||||
// Resource is required by pkg/client/listers/...
|
||||
func Resource(resource string) schema.GroupResource {
|
||||
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||
}
|
||||
99
vendor/sigs.k8s.io/kubefed/pkg/apis/scheduling/v1alpha1/replicaschedulingpreference_types.go
generated
vendored
Normal file
99
vendor/sigs.k8s.io/kubefed/pkg/apis/scheduling/v1alpha1/replicaschedulingpreference_types.go
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// ReplicaSchedulingPreferenceSpec defines the desired state of ReplicaSchedulingPreference
|
||||
type ReplicaSchedulingPreferenceSpec struct {
|
||||
//TODO (@irfanurrehman); upgrade this to label selector only if need be.
|
||||
// The idea of this API is to have a a set of preferences which can
|
||||
// be used for a target FederatedDeployment or FederatedReplicaset.
|
||||
// Although the set of preferences in question can be applied to multiple
|
||||
// target objects using label selectors, but there are no clear advantages
|
||||
// of doing that as of now.
|
||||
// To keep the implementation and usage simple, matching ns/name of RSP
|
||||
// resource to the target resource is sufficient and only additional information
|
||||
// needed in RSP resource is a target kind (FederatedDeployment or FederatedReplicaset).
|
||||
TargetKind string `json:"targetKind"`
|
||||
|
||||
// Total number of pods desired across federated clusters.
|
||||
// Replicas specified in the spec for target deployment template or replicaset
|
||||
// template will be discarded/overridden when scheduling preferences are
|
||||
// specified.
|
||||
TotalReplicas int32 `json:"totalReplicas"`
|
||||
|
||||
// If set to true then already scheduled and running replicas may be moved to other clusters
|
||||
// in order to match current state to the specified preferences. Otherwise, if set to false,
|
||||
// up and running replicas will not be moved.
|
||||
// +optional
|
||||
Rebalance bool `json:"rebalance,omitempty"`
|
||||
|
||||
// A mapping between cluster names and preferences regarding a local workload object (dep, rs, .. ) in
|
||||
// these clusters.
|
||||
// "*" (if provided) applies to all clusters if an explicit mapping is not provided.
|
||||
// If omitted, clusters without explicit preferences should not have any replicas scheduled.
|
||||
// +optional
|
||||
Clusters map[string]ClusterPreferences `json:"clusters,omitempty"`
|
||||
}
|
||||
|
||||
// Preferences regarding number of replicas assigned to a cluster workload object (dep, rs, ..) within
|
||||
// a federated workload object.
|
||||
type ClusterPreferences struct {
|
||||
// Minimum number of replicas that should be assigned to this cluster workload object. 0 by default.
|
||||
// +optional
|
||||
MinReplicas int64 `json:"minReplicas,omitempty"`
|
||||
|
||||
// Maximum number of replicas that should be assigned to this cluster workload object.
|
||||
// Unbounded if no value provided (default).
|
||||
// +optional
|
||||
MaxReplicas *int64 `json:"maxReplicas,omitempty"`
|
||||
|
||||
// A number expressing the preference to put an additional replica to this cluster workload object.
|
||||
// 0 by default.
|
||||
Weight int64 `json:"weight,omitempty"`
|
||||
}
|
||||
|
||||
// ReplicaSchedulingPreferenceStatus defines the observed state of ReplicaSchedulingPreference
|
||||
type ReplicaSchedulingPreferenceStatus struct {
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:resource:path=replicaschedulingpreferences
|
||||
|
||||
type ReplicaSchedulingPreference struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec ReplicaSchedulingPreferenceSpec `json:"spec,omitempty"`
|
||||
Status ReplicaSchedulingPreferenceStatus `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
|
||||
// ReplicaSchedulingPreferenceList contains a list of ReplicaSchedulingPreference
|
||||
type ReplicaSchedulingPreferenceList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata,omitempty"`
|
||||
Items []ReplicaSchedulingPreference `json:"items"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
SchemeBuilder.Register(&ReplicaSchedulingPreference{}, &ReplicaSchedulingPreferenceList{})
|
||||
}
|
||||
141
vendor/sigs.k8s.io/kubefed/pkg/apis/scheduling/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
141
vendor/sigs.k8s.io/kubefed/pkg/apis/scheduling/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Code generated by controller-gen. DO NOT EDIT.
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ClusterPreferences) DeepCopyInto(out *ClusterPreferences) {
|
||||
*out = *in
|
||||
if in.MaxReplicas != nil {
|
||||
in, out := &in.MaxReplicas, &out.MaxReplicas
|
||||
*out = new(int64)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterPreferences.
|
||||
func (in *ClusterPreferences) DeepCopy() *ClusterPreferences {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ClusterPreferences)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ReplicaSchedulingPreference) DeepCopyInto(out *ReplicaSchedulingPreference) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
out.Status = in.Status
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSchedulingPreference.
|
||||
func (in *ReplicaSchedulingPreference) DeepCopy() *ReplicaSchedulingPreference {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ReplicaSchedulingPreference)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ReplicaSchedulingPreference) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ReplicaSchedulingPreferenceList) DeepCopyInto(out *ReplicaSchedulingPreferenceList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]ReplicaSchedulingPreference, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSchedulingPreferenceList.
|
||||
func (in *ReplicaSchedulingPreferenceList) DeepCopy() *ReplicaSchedulingPreferenceList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ReplicaSchedulingPreferenceList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ReplicaSchedulingPreferenceList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ReplicaSchedulingPreferenceSpec) DeepCopyInto(out *ReplicaSchedulingPreferenceSpec) {
|
||||
*out = *in
|
||||
if in.Clusters != nil {
|
||||
in, out := &in.Clusters, &out.Clusters
|
||||
*out = make(map[string]ClusterPreferences, len(*in))
|
||||
for key, val := range *in {
|
||||
(*out)[key] = *val.DeepCopy()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSchedulingPreferenceSpec.
|
||||
func (in *ReplicaSchedulingPreferenceSpec) DeepCopy() *ReplicaSchedulingPreferenceSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ReplicaSchedulingPreferenceSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ReplicaSchedulingPreferenceStatus) DeepCopyInto(out *ReplicaSchedulingPreferenceStatus) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSchedulingPreferenceStatus.
|
||||
func (in *ReplicaSchedulingPreferenceStatus) DeepCopy() *ReplicaSchedulingPreferenceStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ReplicaSchedulingPreferenceStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
Reference in New Issue
Block a user