Merge pull request #53863 from marun/fed-move-cluster

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

fed: Move cluster generator & constants from kubectl to kubefed pkg

This will ensure the history of the federation-only files can be cheaply retained during the branch filtering that will occur for #52992.

cc: @kubernetes/sig-multicluster-pr-reviews

/sig multicluster
/area federation
/assign irfanurrehman shashidharatd
/release-note-none
This commit is contained in:
Kubernetes Submit Queue 2017-10-21 04:44:10 -07:00 committed by GitHub
commit 668bedd943
7 changed files with 40 additions and 25 deletions

View File

@ -9,6 +9,7 @@ load(
go_library(
name = "go_default_library",
srcs = [
"cluster.go",
"join.go",
"kubefed.go",
"unjoin.go",
@ -32,6 +33,7 @@ go_library(
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
@ -47,6 +49,7 @@ go_library(
go_test(
name = "go_default_test",
srcs = [
"cluster_test.go",
"join_test.go",
"unjoin_test.go",
],
@ -61,7 +64,6 @@ go_test(
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/rbac/v1:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package kubectl
package kubefed
import (
"fmt"
@ -23,6 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
"k8s.io/kubernetes/pkg/kubectl"
)
const (
@ -57,15 +58,15 @@ type ClusterGeneratorV1Beta1 struct {
// Ensure it supports the generator pattern that uses parameter
// injection.
var _ Generator = &ClusterGeneratorV1Beta1{}
var _ kubectl.Generator = &ClusterGeneratorV1Beta1{}
// Ensure it supports the generator pattern that uses parameters
// specified during construction.
var _ StructuredGenerator = &ClusterGeneratorV1Beta1{}
var _ kubectl.StructuredGenerator = &ClusterGeneratorV1Beta1{}
// Generate returns a cluster resource using the specified parameters.
func (s ClusterGeneratorV1Beta1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
err := ValidateParams(s.ParamNames(), genericParams)
err := kubectl.ValidateParams(s.ParamNames(), genericParams)
if err != nil {
return nil, err
}
@ -89,14 +90,32 @@ func (s ClusterGeneratorV1Beta1) Generate(genericParams map[string]interface{})
// ParamNames returns the set of supported input parameters when using
// the parameter injection generator pattern.
func (s ClusterGeneratorV1Beta1) ParamNames() []GeneratorParam {
return []GeneratorParam{
{"name", true},
{"client-cidr", false},
{"server-address", true},
{"secret", false},
{"service-account-name", false},
{"cluster-role-name", false},
func (s ClusterGeneratorV1Beta1) ParamNames() []kubectl.GeneratorParam {
return []kubectl.GeneratorParam{
{
Name: "name",
Required: true,
},
{
Name: "client-cidr",
Required: false,
},
{
Name: "server-address",
Required: true,
},
{
Name: "secret",
Required: false,
},
{
Name: "service-account-name",
Required: false,
},
{
Name: "cluster-role-name",
Required: false,
},
}
}

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package kubectl
package kubefed
import (
"reflect"

View File

@ -427,7 +427,7 @@ func clusterGenerator(clientConfig *clientcmdapi.Config, name, contextName, secr
serverAddress = strings.Join([]string{scheme, serverAddress}, "://")
}
generator := &kubectl.ClusterGeneratorV1Beta1{
generator := &ClusterGeneratorV1Beta1{
Name: name,
ClientCIDR: defaultClientCIDR,
ServerAddress: serverAddress,

View File

@ -41,7 +41,6 @@ import (
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
k8srbacv1 "k8s.io/kubernetes/pkg/apis/rbac/v1"
"k8s.io/kubernetes/pkg/kubectl"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
)
@ -595,8 +594,8 @@ func fakeCluster(clusterName, secretName, server string, isRBACAPIAvailable bool
if isRBACAPIAvailable {
saName := serviceAccountName(clusterName)
annotations := map[string]string{
kubectl.ServiceAccountNameAnnotation: saName,
kubectl.ClusterRoleNameAnnotation: util.ClusterRoleName(testFederationName, saName),
ServiceAccountNameAnnotation: saName,
ClusterRoleNameAnnotation: util.ClusterRoleName(testFederationName, saName),
}
cluster.ObjectMeta.SetAnnotations(annotations)
}

View File

@ -29,7 +29,6 @@ import (
"k8s.io/kubernetes/federation/pkg/kubefed/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
@ -304,7 +303,7 @@ func removeConfigMapString(str string, toRemove string) string {
// deleteServiceAccountFromCluster removes the service account that the federation control plane uses
// to access the cluster from the cluster that is leaving the federation.
func deleteServiceAccountFromCluster(unjoiningClusterClientset internalclientset.Interface, cluster *federationapi.Cluster, fedSystemNamespace string) error {
serviceAccountName, ok := cluster.ObjectMeta.Annotations[kubectl.ServiceAccountNameAnnotation]
serviceAccountName, ok := cluster.ObjectMeta.Annotations[ServiceAccountNameAnnotation]
if !ok {
// If there is no service account name annotation, assume that this cluster does not have a federation control plane service account.
return nil
@ -315,7 +314,7 @@ func deleteServiceAccountFromCluster(unjoiningClusterClientset internalclientset
// deleteClusterRoleBindingFromCluster deletes the ClusterRole and ClusterRoleBinding from the
// cluster that is leaving the federation.
func deleteClusterRoleBindingFromCluster(unjoiningClusterClientset internalclientset.Interface, cluster *federationapi.Cluster) error {
clusterRoleName, ok := cluster.ObjectMeta.Annotations[kubectl.ClusterRoleNameAnnotation]
clusterRoleName, ok := cluster.ObjectMeta.Annotations[ClusterRoleNameAnnotation]
if !ok {
// If there is no cluster role name annotation, assume that this cluster does not have cluster role bindings.
return nil

View File

@ -10,7 +10,6 @@ go_test(
name = "go_default_test",
srcs = [
"autoscale_test.go",
"cluster_test.go",
"clusterrolebinding_test.go",
"configmap_test.go",
"delete_test.go",
@ -36,7 +35,6 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubectl",
library = ":go_default_library",
deps = [
"//federation/apis/federation/v1beta1:go_default_library",
"//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
@ -85,7 +83,6 @@ go_library(
"apply.go",
"autoscale.go",
"bash_comp_utils.go",
"cluster.go",
"clusterrolebinding.go",
"configmap.go",
"delete.go",
@ -117,7 +114,6 @@ go_library(
],
importpath = "k8s.io/kubernetes/pkg/kubectl",
deps = [
"//federation/apis/federation/v1beta1:go_default_library",
"//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/v1:go_default_library",