mirror of https://github.com/k3s-io/k3s
Merge pull request #68441 from smarterclayton/describe_dependency
Move versioned generators into their own packagepull/58/head
commit
0d6f6a680b
|
@ -391,10 +391,9 @@ package_group(
|
||||||
name = "pkg_kubectl_util_CONSUMERS",
|
name = "pkg_kubectl_util_CONSUMERS",
|
||||||
packages = [
|
packages = [
|
||||||
"//pkg/kubectl",
|
"//pkg/kubectl",
|
||||||
"//pkg/kubectl/cmd",
|
"//pkg/kubectl/cmd/...",
|
||||||
"//pkg/kubectl/cmd/logs",
|
"//pkg/kubectl/generate",
|
||||||
"//pkg/kubectl/cmd/portforward",
|
"//pkg/kubectl/generate/versioned",
|
||||||
"//pkg/kubectl/cmd/rollingupdate",
|
|
||||||
"//pkg/kubectl/proxy",
|
"//pkg/kubectl/proxy",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
@ -189,6 +189,8 @@ pkg/kubectl/cmd/util/openapi
|
||||||
pkg/kubectl/cmd/util/sanity
|
pkg/kubectl/cmd/util/sanity
|
||||||
pkg/kubectl/cmd/version
|
pkg/kubectl/cmd/version
|
||||||
pkg/kubectl/cmd/wait
|
pkg/kubectl/cmd/wait
|
||||||
|
pkg/kubectl/generate
|
||||||
|
pkg/kubectl/generate/versioned
|
||||||
pkg/kubectl/metricsutil
|
pkg/kubectl/metricsutil
|
||||||
pkg/kubectl/util
|
pkg/kubectl/util
|
||||||
pkg/kubectl/util/slice
|
pkg/kubectl/util/slice
|
||||||
|
|
|
@ -9,29 +9,11 @@ load(
|
||||||
go_test(
|
go_test(
|
||||||
name = "go_default_test",
|
name = "go_default_test",
|
||||||
srcs = [
|
srcs = [
|
||||||
"autoscale_test.go",
|
|
||||||
"clusterrolebinding_test.go",
|
|
||||||
"configmap_test.go",
|
|
||||||
"deployment_test.go",
|
|
||||||
"env_file_test.go",
|
|
||||||
"generate_test.go",
|
|
||||||
"history_test.go",
|
"history_test.go",
|
||||||
"namespace_test.go",
|
|
||||||
"pdb_test.go",
|
|
||||||
"priorityclass_test.go",
|
|
||||||
"quota_test.go",
|
|
||||||
"rolebinding_test.go",
|
|
||||||
"rollback_test.go",
|
"rollback_test.go",
|
||||||
"rolling_updater_test.go",
|
"rolling_updater_test.go",
|
||||||
"rollout_status_test.go",
|
"rollout_status_test.go",
|
||||||
"run_test.go",
|
|
||||||
"scale_test.go",
|
"scale_test.go",
|
||||||
"secret_for_docker_registry_test.go",
|
|
||||||
"secret_for_tls_test.go",
|
|
||||||
"secret_test.go",
|
|
||||||
"service_basic_test.go",
|
|
||||||
"service_test.go",
|
|
||||||
"serviceaccount_test.go",
|
|
||||||
"sorter_test.go",
|
"sorter_test.go",
|
||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
|
@ -39,21 +21,11 @@ go_test(
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util:go_default_library",
|
"//pkg/kubectl/util:go_default_library",
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/apps/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/batch/v2alpha1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/rbac/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library",
|
||||||
|
@ -69,9 +41,6 @@ go_test(
|
||||||
"//staging/src/k8s.io/client-go/scale:go_default_library",
|
"//staging/src/k8s.io/client-go/scale:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/scale/fake:go_default_library",
|
"//staging/src/k8s.io/client-go/scale/fake:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/testing:go_default_library",
|
"//staging/src/k8s.io/client-go/testing:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/util/testing:go_default_library",
|
|
||||||
"//vendor/github.com/spf13/cobra:go_default_library",
|
|
||||||
"//vendor/k8s.io/utils/pointer:go_default_library",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -79,32 +48,14 @@ go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"apply.go",
|
"apply.go",
|
||||||
"autoscale.go",
|
|
||||||
"clusterrolebinding.go",
|
|
||||||
"conditions.go",
|
"conditions.go",
|
||||||
"configmap.go",
|
|
||||||
"deployment.go",
|
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"env_file.go",
|
|
||||||
"generate.go",
|
|
||||||
"history.go",
|
"history.go",
|
||||||
"interfaces.go",
|
"interfaces.go",
|
||||||
"namespace.go",
|
|
||||||
"pdb.go",
|
|
||||||
"priorityclass.go",
|
|
||||||
"quota.go",
|
|
||||||
"rolebinding.go",
|
|
||||||
"rollback.go",
|
"rollback.go",
|
||||||
"rolling_updater.go",
|
"rolling_updater.go",
|
||||||
"rollout_status.go",
|
"rollout_status.go",
|
||||||
"run.go",
|
|
||||||
"scale.go",
|
"scale.go",
|
||||||
"secret.go",
|
|
||||||
"secret_for_docker_registry.go",
|
|
||||||
"secret_for_tls.go",
|
|
||||||
"service.go",
|
|
||||||
"service_basic.go",
|
|
||||||
"serviceaccount.go",
|
|
||||||
"sorter.go",
|
"sorter.go",
|
||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/kubectl",
|
importpath = "k8s.io/kubernetes/pkg/kubectl",
|
||||||
|
@ -112,30 +63,19 @@ go_library(
|
||||||
"//pkg/apis/core:go_default_library",
|
"//pkg/apis/core:go_default_library",
|
||||||
"//pkg/apis/core/v1:go_default_library",
|
"//pkg/apis/core/v1:go_default_library",
|
||||||
"//pkg/controller/deployment/util:go_default_library",
|
"//pkg/controller/deployment/util:go_default_library",
|
||||||
"//pkg/credentialprovider:go_default_library",
|
|
||||||
"//pkg/kubectl/apps:go_default_library",
|
"//pkg/kubectl/apps:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util:go_default_library",
|
"//pkg/kubectl/util:go_default_library",
|
||||||
"//pkg/kubectl/util/hash:go_default_library",
|
|
||||||
"//pkg/kubectl/util/podutils:go_default_library",
|
"//pkg/kubectl/util/podutils:go_default_library",
|
||||||
"//pkg/kubectl/util/slice:go_default_library",
|
"//pkg/kubectl/util/slice:go_default_library",
|
||||||
"//pkg/printers:go_default_library",
|
"//pkg/printers:go_default_library",
|
||||||
"//pkg/printers/internalversion:go_default_library",
|
"//pkg/printers/internalversion:go_default_library",
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/apps/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/batch/v2alpha1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/rbac/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",
|
||||||
|
@ -143,12 +83,9 @@ go_library(
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
|
@ -160,8 +97,6 @@ go_library(
|
||||||
"//staging/src/k8s.io/client-go/util/jsonpath:go_default_library",
|
"//staging/src/k8s.io/client-go/util/jsonpath:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/util/retry:go_default_library",
|
"//staging/src/k8s.io/client-go/util/retry:go_default_library",
|
||||||
"//vendor/github.com/golang/glog:go_default_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/vbom.ml/util/sortorder:go_default_library",
|
"//vendor/vbom.ml/util/sortorder:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -180,7 +115,9 @@ filegroup(
|
||||||
"//pkg/kubectl/apply:all-srcs",
|
"//pkg/kubectl/apply:all-srcs",
|
||||||
"//pkg/kubectl/apps:all-srcs",
|
"//pkg/kubectl/apps:all-srcs",
|
||||||
"//pkg/kubectl/cmd:all-srcs",
|
"//pkg/kubectl/cmd:all-srcs",
|
||||||
|
"//pkg/kubectl/describe:all-srcs",
|
||||||
"//pkg/kubectl/explain:all-srcs",
|
"//pkg/kubectl/explain:all-srcs",
|
||||||
|
"//pkg/kubectl/generate:all-srcs",
|
||||||
"//pkg/kubectl/metricsutil:all-srcs",
|
"//pkg/kubectl/metricsutil:all-srcs",
|
||||||
"//pkg/kubectl/polymorphichelpers:all-srcs",
|
"//pkg/kubectl/polymorphichelpers:all-srcs",
|
||||||
"//pkg/kubectl/proxy:all-srcs",
|
"//pkg/kubectl/proxy:all-srcs",
|
||||||
|
|
|
@ -8,6 +8,8 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
"//pkg/kubectl/generate:go_default_library",
|
||||||
|
"//pkg/kubectl/generate/versioned:go_default_library",
|
||||||
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util/i18n:go_default_library",
|
"//pkg/kubectl/util/i18n:go_default_library",
|
||||||
|
|
|
@ -30,6 +30,8 @@ import (
|
||||||
autoscalingv1client "k8s.io/client-go/kubernetes/typed/autoscaling/v1"
|
autoscalingv1client "k8s.io/client-go/kubernetes/typed/autoscaling/v1"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
|
@ -73,7 +75,7 @@ type AutoscaleOptions struct {
|
||||||
dryRun bool
|
dryRun bool
|
||||||
builder *resource.Builder
|
builder *resource.Builder
|
||||||
canBeAutoscaled polymorphichelpers.CanBeAutoscaledFunc
|
canBeAutoscaled polymorphichelpers.CanBeAutoscaledFunc
|
||||||
generatorFunc func(string, *meta.RESTMapping) (kubectl.StructuredGenerator, error)
|
generatorFunc func(string, *meta.RESTMapping) (generate.StructuredGenerator, error)
|
||||||
|
|
||||||
HPAClient autoscalingv1client.HorizontalPodAutoscalersGetter
|
HPAClient autoscalingv1client.HorizontalPodAutoscalersGetter
|
||||||
|
|
||||||
|
@ -114,7 +116,7 @@ func NewCmdAutoscale(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *
|
||||||
o.RecordFlags.AddFlags(cmd)
|
o.RecordFlags.AddFlags(cmd)
|
||||||
o.PrintFlags.AddFlags(cmd)
|
o.PrintFlags.AddFlags(cmd)
|
||||||
|
|
||||||
cmd.Flags().StringVar(&o.Generator, "generator", cmdutil.HorizontalPodAutoscalerV1GeneratorName, i18n.T("The name of the API generator to use. Currently there is only 1 generator."))
|
cmd.Flags().StringVar(&o.Generator, "generator", generateversioned.HorizontalPodAutoscalerV1GeneratorName, i18n.T("The name of the API generator to use. Currently there is only 1 generator."))
|
||||||
cmd.Flags().Int32Var(&o.Min, "min", -1, "The lower limit for the number of pods that can be set by the autoscaler. If it's not specified or negative, the server will apply a default value.")
|
cmd.Flags().Int32Var(&o.Min, "min", -1, "The lower limit for the number of pods that can be set by the autoscaler. If it's not specified or negative, the server will apply a default value.")
|
||||||
cmd.Flags().Int32Var(&o.Max, "max", -1, "The upper limit for the number of pods that can be set by the autoscaler. Required.")
|
cmd.Flags().Int32Var(&o.Max, "max", -1, "The upper limit for the number of pods that can be set by the autoscaler. Required.")
|
||||||
cmd.MarkFlagRequired("max")
|
cmd.MarkFlagRequired("max")
|
||||||
|
@ -147,10 +149,10 @@ func (o *AutoscaleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
||||||
o.HPAClient = kubeClient.AutoscalingV1()
|
o.HPAClient = kubeClient.AutoscalingV1()
|
||||||
|
|
||||||
// get the generator
|
// get the generator
|
||||||
o.generatorFunc = func(name string, mapping *meta.RESTMapping) (kubectl.StructuredGenerator, error) {
|
o.generatorFunc = func(name string, mapping *meta.RESTMapping) (generate.StructuredGenerator, error) {
|
||||||
switch o.Generator {
|
switch o.Generator {
|
||||||
case cmdutil.HorizontalPodAutoscalerV1GeneratorName:
|
case generateversioned.HorizontalPodAutoscalerV1GeneratorName:
|
||||||
return &kubectl.HorizontalPodAutoscalerGeneratorV1{
|
return &generateversioned.HorizontalPodAutoscalerGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
MinReplicas: o.Min,
|
MinReplicas: o.Min,
|
||||||
MaxReplicas: o.Max,
|
MaxReplicas: o.Max,
|
||||||
|
|
|
@ -25,6 +25,8 @@ go_library(
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util/editor:go_default_library",
|
"//pkg/kubectl/cmd/util/editor:go_default_library",
|
||||||
|
"//pkg/kubectl/generate:go_default_library",
|
||||||
|
"//pkg/kubectl/generate/versioned:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util/i18n:go_default_library",
|
"//pkg/kubectl/util/i18n:go_default_library",
|
||||||
"//pkg/kubectl/util/templates:go_default_library",
|
"//pkg/kubectl/util/templates:go_default_library",
|
||||||
|
@ -74,9 +76,8 @@ go_test(
|
||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/kubectl:go_default_library",
|
|
||||||
"//pkg/kubectl/cmd/testing:go_default_library",
|
"//pkg/kubectl/cmd/testing:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/generate/versioned:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
||||||
|
|
|
@ -39,6 +39,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
|
@ -346,7 +347,7 @@ type CreateSubcommandOptions struct {
|
||||||
// Name of resource being created
|
// Name of resource being created
|
||||||
Name string
|
Name string
|
||||||
// StructuredGenerator is the resource generator for the object being created
|
// StructuredGenerator is the resource generator for the object being created
|
||||||
StructuredGenerator kubectl.StructuredGenerator
|
StructuredGenerator generate.StructuredGenerator
|
||||||
// DryRun is true if the command should be simulated but not run against the server
|
// DryRun is true if the command should be simulated but not run against the server
|
||||||
DryRun bool
|
DryRun bool
|
||||||
CreateAnnotation bool
|
CreateAnnotation bool
|
||||||
|
@ -369,7 +370,7 @@ func NewCreateSubcommandOptions(ioStreams genericclioptions.IOStreams) *CreateSu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *CreateSubcommandOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string, generator kubectl.StructuredGenerator) error {
|
func (o *CreateSubcommandOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string, generator generate.StructuredGenerator) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -61,7 +62,7 @@ func NewCmdCreateClusterRoleBinding(f cmdutil.Factory, ioStreams genericclioptio
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ClusterRoleBindingV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ClusterRoleBindingV1GeneratorName)
|
||||||
cmd.Flags().String("clusterrole", "", i18n.T("ClusterRole this ClusterRoleBinding should reference"))
|
cmd.Flags().String("clusterrole", "", i18n.T("ClusterRole this ClusterRoleBinding should reference"))
|
||||||
cmd.MarkFlagCustom("clusterrole", "__kubectl_get_resource_clusterrole")
|
cmd.MarkFlagCustom("clusterrole", "__kubectl_get_resource_clusterrole")
|
||||||
cmd.Flags().StringArray("user", []string{}, "Usernames to bind to the clusterrole")
|
cmd.Flags().StringArray("user", []string{}, "Usernames to bind to the clusterrole")
|
||||||
|
@ -76,10 +77,10 @@ func (o *ClusterRoleBindingOpts) Complete(f cmdutil.Factory, cmd *cobra.Command,
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ClusterRoleBindingV1GeneratorName:
|
case generateversioned.ClusterRoleBindingV1GeneratorName:
|
||||||
generator = &kubectl.ClusterRoleBindingGeneratorV1{
|
generator = &generateversioned.ClusterRoleBindingGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
ClusterRole: cmdutil.GetFlagString(cmd, "clusterrole"),
|
ClusterRole: cmdutil.GetFlagString(cmd, "clusterrole"),
|
||||||
Users: cmdutil.GetFlagStringArray(cmd, "user"),
|
Users: cmdutil.GetFlagStringArray(cmd, "user"),
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -83,7 +84,7 @@ func NewCmdCreateConfigMap(f cmdutil.Factory, ioStreams genericclioptions.IOStre
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ConfigMapV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ConfigMapV1GeneratorName)
|
||||||
cmd.Flags().StringSlice("from-file", []string{}, "Key file can be specified using its file path, in which case file basename will be used as configmap key, or optionally with a key and file path, in which case the given key will be used. Specifying a directory will iterate each named file in the directory whose basename is a valid configmap key.")
|
cmd.Flags().StringSlice("from-file", []string{}, "Key file can be specified using its file path, in which case file basename will be used as configmap key, or optionally with a key and file path, in which case the given key will be used. Specifying a directory will iterate each named file in the directory whose basename is a valid configmap key.")
|
||||||
cmd.Flags().StringArray("from-literal", []string{}, "Specify a key and literal value to insert in configmap (i.e. mykey=somevalue)")
|
cmd.Flags().StringArray("from-literal", []string{}, "Specify a key and literal value to insert in configmap (i.e. mykey=somevalue)")
|
||||||
cmd.Flags().String("from-env-file", "", "Specify the path to a file to read lines of key=val pairs to create a configmap (i.e. a Docker .env file).")
|
cmd.Flags().String("from-env-file", "", "Specify the path to a file to read lines of key=val pairs to create a configmap (i.e. a Docker .env file).")
|
||||||
|
@ -97,10 +98,10 @@ func (o *ConfigMapOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []s
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ConfigMapV1GeneratorName:
|
case generateversioned.ConfigMapV1GeneratorName:
|
||||||
generator = &kubectl.ConfigMapGeneratorV1{
|
generator = &generateversioned.ConfigMapGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
FileSources: cmdutil.GetFlagStringSlice(cmd, "from-file"),
|
FileSources: cmdutil.GetFlagStringSlice(cmd, "from-file"),
|
||||||
LiteralSources: cmdutil.GetFlagStringArray(cmd, "from-literal"),
|
LiteralSources: cmdutil.GetFlagStringArray(cmd, "from-literal"),
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -77,30 +78,30 @@ func generatorFromName(
|
||||||
generatorName string,
|
generatorName string,
|
||||||
imageNames []string,
|
imageNames []string,
|
||||||
deploymentName string,
|
deploymentName string,
|
||||||
) (kubectl.StructuredGenerator, bool) {
|
) (generate.StructuredGenerator, bool) {
|
||||||
|
|
||||||
switch generatorName {
|
switch generatorName {
|
||||||
case cmdutil.DeploymentBasicAppsV1GeneratorName:
|
case generateversioned.DeploymentBasicAppsV1GeneratorName:
|
||||||
generator := &kubectl.DeploymentBasicAppsGeneratorV1{
|
generator := &generateversioned.DeploymentBasicAppsGeneratorV1{
|
||||||
BaseDeploymentGenerator: kubectl.BaseDeploymentGenerator{
|
BaseDeploymentGenerator: generateversioned.BaseDeploymentGenerator{
|
||||||
Name: deploymentName,
|
Name: deploymentName,
|
||||||
Images: imageNames,
|
Images: imageNames,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return generator, true
|
return generator, true
|
||||||
|
|
||||||
case cmdutil.DeploymentBasicAppsV1Beta1GeneratorName:
|
case generateversioned.DeploymentBasicAppsV1Beta1GeneratorName:
|
||||||
generator := &kubectl.DeploymentBasicAppsGeneratorV1Beta1{
|
generator := &generateversioned.DeploymentBasicAppsGeneratorV1Beta1{
|
||||||
BaseDeploymentGenerator: kubectl.BaseDeploymentGenerator{
|
BaseDeploymentGenerator: generateversioned.BaseDeploymentGenerator{
|
||||||
Name: deploymentName,
|
Name: deploymentName,
|
||||||
Images: imageNames,
|
Images: imageNames,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return generator, true
|
return generator, true
|
||||||
|
|
||||||
case cmdutil.DeploymentBasicV1Beta1GeneratorName:
|
case generateversioned.DeploymentBasicV1Beta1GeneratorName:
|
||||||
generator := &kubectl.DeploymentBasicGeneratorV1{
|
generator := &generateversioned.DeploymentBasicGeneratorV1{
|
||||||
BaseDeploymentGenerator: kubectl.BaseDeploymentGenerator{
|
BaseDeploymentGenerator: generateversioned.BaseDeploymentGenerator{
|
||||||
Name: deploymentName,
|
Name: deploymentName,
|
||||||
Images: imageNames,
|
Images: imageNames,
|
||||||
},
|
},
|
||||||
|
@ -125,8 +126,8 @@ func (o *DeploymentOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
|
||||||
generatorName := cmdutil.GetFlagString(cmd, "generator")
|
generatorName := cmdutil.GetFlagString(cmd, "generator")
|
||||||
|
|
||||||
if len(generatorName) == 0 {
|
if len(generatorName) == 0 {
|
||||||
generatorName = cmdutil.DeploymentBasicAppsV1GeneratorName
|
generatorName = generateversioned.DeploymentBasicAppsV1GeneratorName
|
||||||
generatorNameTemp, err := cmdutil.FallbackGeneratorNameIfNecessary(generatorName, clientset.Discovery(), o.CreateSubcommandOptions.ErrOut)
|
generatorNameTemp, err := generateversioned.FallbackGeneratorNameIfNecessary(generatorName, clientset.Discovery(), o.CreateSubcommandOptions.ErrOut)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,18 +27,17 @@ import (
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_generatorFromName(t *testing.T) {
|
func Test_generatorFromName(t *testing.T) {
|
||||||
const (
|
const (
|
||||||
nonsenseName = "not-a-real-generator-name"
|
nonsenseName = "not-a-real-generator-name"
|
||||||
basicName = cmdutil.DeploymentBasicV1Beta1GeneratorName
|
basicName = generateversioned.DeploymentBasicV1Beta1GeneratorName
|
||||||
basicAppsV1Beta1Name = cmdutil.DeploymentBasicAppsV1Beta1GeneratorName
|
basicAppsV1Beta1Name = generateversioned.DeploymentBasicAppsV1Beta1GeneratorName
|
||||||
basicAppsV1Name = cmdutil.DeploymentBasicAppsV1GeneratorName
|
basicAppsV1Name = generateversioned.DeploymentBasicAppsV1GeneratorName
|
||||||
deploymentName = "deployment-name"
|
deploymentName = "deployment-name"
|
||||||
)
|
)
|
||||||
imageNames := []string{"image-1", "image-2"}
|
imageNames := []string{"image-1", "image-2"}
|
||||||
|
@ -51,8 +50,8 @@ func Test_generatorFromName(t *testing.T) {
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
{
|
{
|
||||||
expectedGenerator := &kubectl.DeploymentBasicGeneratorV1{
|
expectedGenerator := &generateversioned.DeploymentBasicGeneratorV1{
|
||||||
BaseDeploymentGenerator: kubectl.BaseDeploymentGenerator{
|
BaseDeploymentGenerator: generateversioned.BaseDeploymentGenerator{
|
||||||
Name: deploymentName,
|
Name: deploymentName,
|
||||||
Images: imageNames,
|
Images: imageNames,
|
||||||
},
|
},
|
||||||
|
@ -64,8 +63,8 @@ func Test_generatorFromName(t *testing.T) {
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
{
|
{
|
||||||
expectedGenerator := &kubectl.DeploymentBasicAppsGeneratorV1Beta1{
|
expectedGenerator := &generateversioned.DeploymentBasicAppsGeneratorV1Beta1{
|
||||||
BaseDeploymentGenerator: kubectl.BaseDeploymentGenerator{
|
BaseDeploymentGenerator: generateversioned.BaseDeploymentGenerator{
|
||||||
Name: deploymentName,
|
Name: deploymentName,
|
||||||
Images: imageNames,
|
Images: imageNames,
|
||||||
},
|
},
|
||||||
|
@ -77,8 +76,8 @@ func Test_generatorFromName(t *testing.T) {
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
{
|
{
|
||||||
expectedGenerator := &kubectl.DeploymentBasicAppsGeneratorV1{
|
expectedGenerator := &generateversioned.DeploymentBasicAppsGeneratorV1{
|
||||||
BaseDeploymentGenerator: kubectl.BaseDeploymentGenerator{
|
BaseDeploymentGenerator: generateversioned.BaseDeploymentGenerator{
|
||||||
Name: deploymentName,
|
Name: deploymentName,
|
||||||
Images: imageNames,
|
Images: imageNames,
|
||||||
},
|
},
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -62,7 +63,7 @@ func NewCmdCreateNamespace(f cmdutil.Factory, ioStreams genericclioptions.IOStre
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.NamespaceV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.NamespaceV1GeneratorName)
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
@ -73,10 +74,10 @@ func (o *NamespaceOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []s
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.NamespaceV1GeneratorName:
|
case generateversioned.NamespaceV1GeneratorName:
|
||||||
generator = &kubectl.NamespaceGeneratorV1{Name: name}
|
generator = &generateversioned.NamespaceGeneratorV1{Name: name}
|
||||||
default:
|
default:
|
||||||
return errUnsupportedGenerator(cmd, generatorName)
|
return errUnsupportedGenerator(cmd, generatorName)
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -67,7 +68,7 @@ func NewCmdCreatePodDisruptionBudget(f cmdutil.Factory, ioStreams genericcliopti
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.PodDisruptionBudgetV2GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.PodDisruptionBudgetV2GeneratorName)
|
||||||
|
|
||||||
cmd.Flags().String("min-available", "", i18n.T("The minimum number or percentage of available pods this budget requires."))
|
cmd.Flags().String("min-available", "", i18n.T("The minimum number or percentage of available pods this budget requires."))
|
||||||
cmd.Flags().String("max-unavailable", "", i18n.T("The maximum number or percentage of unavailable pods this budget requires."))
|
cmd.Flags().String("max-unavailable", "", i18n.T("The maximum number or percentage of unavailable pods this budget requires."))
|
||||||
|
@ -81,16 +82,16 @@ func (o *PodDisruptionBudgetOpts) Complete(f cmdutil.Factory, cmd *cobra.Command
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.PodDisruptionBudgetV1GeneratorName:
|
case generateversioned.PodDisruptionBudgetV1GeneratorName:
|
||||||
generator = &kubectl.PodDisruptionBudgetV1Generator{
|
generator = &generateversioned.PodDisruptionBudgetV1Generator{
|
||||||
Name: name,
|
Name: name,
|
||||||
MinAvailable: cmdutil.GetFlagString(cmd, "min-available"),
|
MinAvailable: cmdutil.GetFlagString(cmd, "min-available"),
|
||||||
Selector: cmdutil.GetFlagString(cmd, "selector"),
|
Selector: cmdutil.GetFlagString(cmd, "selector"),
|
||||||
}
|
}
|
||||||
case cmdutil.PodDisruptionBudgetV2GeneratorName:
|
case generateversioned.PodDisruptionBudgetV2GeneratorName:
|
||||||
generator = &kubectl.PodDisruptionBudgetV2Generator{
|
generator = &generateversioned.PodDisruptionBudgetV2Generator{
|
||||||
Name: name,
|
Name: name,
|
||||||
MinAvailable: cmdutil.GetFlagString(cmd, "min-available"),
|
MinAvailable: cmdutil.GetFlagString(cmd, "min-available"),
|
||||||
MaxUnavailable: cmdutil.GetFlagString(cmd, "max-unavailable"),
|
MaxUnavailable: cmdutil.GetFlagString(cmd, "max-unavailable"),
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -65,7 +66,7 @@ func NewCmdCreatePriorityClass(f cmdutil.Factory, ioStreams genericclioptions.IO
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.PriorityClassV1Alpha1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.PriorityClassV1Alpha1GeneratorName)
|
||||||
|
|
||||||
cmd.Flags().Int32("value", 0, i18n.T("the value of this priority class."))
|
cmd.Flags().Int32("value", 0, i18n.T("the value of this priority class."))
|
||||||
cmd.Flags().Bool("global-default", false, i18n.T("global-default specifies whether this PriorityClass should be considered as the default priority."))
|
cmd.Flags().Bool("global-default", false, i18n.T("global-default specifies whether this PriorityClass should be considered as the default priority."))
|
||||||
|
@ -79,10 +80,10 @@ func (o *PriorityClassOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.PriorityClassV1Alpha1GeneratorName:
|
case generateversioned.PriorityClassV1Alpha1GeneratorName:
|
||||||
generator = &kubectl.PriorityClassV1Generator{
|
generator = &generateversioned.PriorityClassV1Generator{
|
||||||
Name: name,
|
Name: name,
|
||||||
Value: cmdutil.GetFlagInt32(cmd, "value"),
|
Value: cmdutil.GetFlagInt32(cmd, "value"),
|
||||||
GlobalDefault: cmdutil.GetFlagBool(cmd, "global-default"),
|
GlobalDefault: cmdutil.GetFlagBool(cmd, "global-default"),
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -65,7 +66,7 @@ func NewCmdCreateQuota(f cmdutil.Factory, ioStreams genericclioptions.IOStreams)
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ResourceQuotaV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ResourceQuotaV1GeneratorName)
|
||||||
cmd.Flags().String("hard", "", i18n.T("A comma-delimited set of resource=quantity pairs that define a hard limit."))
|
cmd.Flags().String("hard", "", i18n.T("A comma-delimited set of resource=quantity pairs that define a hard limit."))
|
||||||
cmd.Flags().String("scopes", "", i18n.T("A comma-delimited set of quota scopes that must all match each object tracked by the quota."))
|
cmd.Flags().String("scopes", "", i18n.T("A comma-delimited set of quota scopes that must all match each object tracked by the quota."))
|
||||||
return cmd
|
return cmd
|
||||||
|
@ -77,10 +78,10 @@ func (o *QuotaOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []strin
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ResourceQuotaV1GeneratorName:
|
case generateversioned.ResourceQuotaV1GeneratorName:
|
||||||
generator = &kubectl.ResourceQuotaGeneratorV1{
|
generator = &generateversioned.ResourceQuotaGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
Hard: cmdutil.GetFlagString(cmd, "hard"),
|
Hard: cmdutil.GetFlagString(cmd, "hard"),
|
||||||
Scopes: cmdutil.GetFlagString(cmd, "scopes"),
|
Scopes: cmdutil.GetFlagString(cmd, "scopes"),
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -61,7 +62,7 @@ func NewCmdCreateRoleBinding(f cmdutil.Factory, ioStreams genericclioptions.IOSt
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.RoleBindingV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.RoleBindingV1GeneratorName)
|
||||||
cmd.Flags().String("clusterrole", "", i18n.T("ClusterRole this RoleBinding should reference"))
|
cmd.Flags().String("clusterrole", "", i18n.T("ClusterRole this RoleBinding should reference"))
|
||||||
cmd.Flags().String("role", "", i18n.T("Role this RoleBinding should reference"))
|
cmd.Flags().String("role", "", i18n.T("Role this RoleBinding should reference"))
|
||||||
cmd.Flags().StringArray("user", []string{}, "Usernames to bind to the role")
|
cmd.Flags().StringArray("user", []string{}, "Usernames to bind to the role")
|
||||||
|
@ -76,10 +77,10 @@ func (o *RoleBindingOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.RoleBindingV1GeneratorName:
|
case generateversioned.RoleBindingV1GeneratorName:
|
||||||
generator = &kubectl.RoleBindingGeneratorV1{
|
generator = &generateversioned.RoleBindingGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
ClusterRole: cmdutil.GetFlagString(cmd, "clusterrole"),
|
ClusterRole: cmdutil.GetFlagString(cmd, "clusterrole"),
|
||||||
Role: cmdutil.GetFlagString(cmd, "role"),
|
Role: cmdutil.GetFlagString(cmd, "role"),
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -98,7 +99,7 @@ func NewCmdCreateSecretGeneric(f cmdutil.Factory, ioStreams genericclioptions.IO
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.SecretV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.SecretV1GeneratorName)
|
||||||
cmd.Flags().StringSlice("from-file", []string{}, "Key files can be specified using their file path, in which case a default name will be given to them, or optionally with a name and file path, in which case the given name will be used. Specifying a directory will iterate each named file in the directory that is a valid secret key.")
|
cmd.Flags().StringSlice("from-file", []string{}, "Key files can be specified using their file path, in which case a default name will be given to them, or optionally with a name and file path, in which case the given name will be used. Specifying a directory will iterate each named file in the directory that is a valid secret key.")
|
||||||
cmd.Flags().StringArray("from-literal", []string{}, "Specify a key and literal value to insert in secret (i.e. mykey=somevalue)")
|
cmd.Flags().StringArray("from-literal", []string{}, "Specify a key and literal value to insert in secret (i.e. mykey=somevalue)")
|
||||||
cmd.Flags().String("from-env-file", "", "Specify the path to a file to read lines of key=val pairs to create a secret (i.e. a Docker .env file).")
|
cmd.Flags().String("from-env-file", "", "Specify the path to a file to read lines of key=val pairs to create a secret (i.e. a Docker .env file).")
|
||||||
|
@ -113,10 +114,10 @@ func (o *SecretGenericOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.SecretV1GeneratorName:
|
case generateversioned.SecretV1GeneratorName:
|
||||||
generator = &kubectl.SecretGeneratorV1{
|
generator = &generateversioned.SecretGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
Type: cmdutil.GetFlagString(cmd, "type"),
|
Type: cmdutil.GetFlagString(cmd, "type"),
|
||||||
FileSources: cmdutil.GetFlagStringSlice(cmd, "from-file"),
|
FileSources: cmdutil.GetFlagStringSlice(cmd, "from-file"),
|
||||||
|
@ -183,7 +184,7 @@ func NewCmdCreateSecretDockerRegistry(f cmdutil.Factory, ioStreams genericcliopt
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.SecretForDockerRegistryV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.SecretForDockerRegistryV1GeneratorName)
|
||||||
cmd.Flags().String("docker-username", "", i18n.T("Username for Docker registry authentication"))
|
cmd.Flags().String("docker-username", "", i18n.T("Username for Docker registry authentication"))
|
||||||
cmd.MarkFlagRequired("docker-username")
|
cmd.MarkFlagRequired("docker-username")
|
||||||
cmd.Flags().String("docker-password", "", i18n.T("Password for Docker registry authentication"))
|
cmd.Flags().String("docker-password", "", i18n.T("Password for Docker registry authentication"))
|
||||||
|
@ -212,10 +213,10 @@ func (o *SecretDockerRegistryOpts) Complete(f cmdutil.Factory, cmd *cobra.Comman
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.SecretForDockerRegistryV1GeneratorName:
|
case generateversioned.SecretForDockerRegistryV1GeneratorName:
|
||||||
generator = &kubectl.SecretForDockerRegistryGeneratorV1{
|
generator = &generateversioned.SecretForDockerRegistryGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
Username: cmdutil.GetFlagString(cmd, "docker-username"),
|
Username: cmdutil.GetFlagString(cmd, "docker-username"),
|
||||||
Email: cmdutil.GetFlagString(cmd, "docker-email"),
|
Email: cmdutil.GetFlagString(cmd, "docker-email"),
|
||||||
|
@ -274,7 +275,7 @@ func NewCmdCreateSecretTLS(f cmdutil.Factory, ioStreams genericclioptions.IOStre
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.SecretForTLSV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.SecretForTLSV1GeneratorName)
|
||||||
cmd.Flags().String("cert", "", i18n.T("Path to PEM encoded public key certificate."))
|
cmd.Flags().String("cert", "", i18n.T("Path to PEM encoded public key certificate."))
|
||||||
cmd.Flags().String("key", "", i18n.T("Path to private key associated with given certificate."))
|
cmd.Flags().String("key", "", i18n.T("Path to private key associated with given certificate."))
|
||||||
cmd.Flags().Bool("append-hash", false, "Append a hash of the secret to its name.")
|
cmd.Flags().Bool("append-hash", false, "Append a hash of the secret to its name.")
|
||||||
|
@ -293,10 +294,10 @@ func (o *SecretTLSOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []s
|
||||||
return cmdutil.UsageErrorf(cmd, "flag %s is required", requiredFlag)
|
return cmdutil.UsageErrorf(cmd, "flag %s is required", requiredFlag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.SecretForTLSV1GeneratorName:
|
case generateversioned.SecretForTLSV1GeneratorName:
|
||||||
generator = &kubectl.SecretForTLSGeneratorV1{
|
generator = &generateversioned.SecretForTLSGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
Key: cmdutil.GetFlagString(cmd, "key"),
|
Key: cmdutil.GetFlagString(cmd, "key"),
|
||||||
Cert: cmdutil.GetFlagString(cmd, "cert"),
|
Cert: cmdutil.GetFlagString(cmd, "cert"),
|
||||||
|
|
|
@ -21,8 +21,9 @@ import (
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -86,7 +87,7 @@ func NewCmdCreateServiceClusterIP(f cmdutil.Factory, ioStreams genericclioptions
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ServiceClusterIPGeneratorV1Name)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceClusterIPGeneratorV1Name)
|
||||||
addPortFlags(cmd)
|
addPortFlags(cmd)
|
||||||
cmd.Flags().String("clusterip", "", i18n.T("Assign your own ClusterIP or set to 'None' for a 'headless' service (no loadbalancing)."))
|
cmd.Flags().String("clusterip", "", i18n.T("Assign your own ClusterIP or set to 'None' for a 'headless' service (no loadbalancing)."))
|
||||||
return cmd
|
return cmd
|
||||||
|
@ -102,10 +103,10 @@ func (o *ServiceClusterIPOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, a
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ServiceClusterIPGeneratorV1Name:
|
case generateversioned.ServiceClusterIPGeneratorV1Name:
|
||||||
generator = &kubectl.ServiceCommonGeneratorV1{
|
generator = &generateversioned.ServiceCommonGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
|
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
|
||||||
Type: v1.ServiceTypeClusterIP,
|
Type: v1.ServiceTypeClusterIP,
|
||||||
|
@ -158,7 +159,7 @@ func NewCmdCreateServiceNodePort(f cmdutil.Factory, ioStreams genericclioptions.
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ServiceNodePortGeneratorV1Name)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceNodePortGeneratorV1Name)
|
||||||
cmd.Flags().Int("node-port", 0, "Port used to expose the service on each node in a cluster.")
|
cmd.Flags().Int("node-port", 0, "Port used to expose the service on each node in a cluster.")
|
||||||
addPortFlags(cmd)
|
addPortFlags(cmd)
|
||||||
return cmd
|
return cmd
|
||||||
|
@ -170,10 +171,10 @@ func (o *ServiceNodePortOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, ar
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ServiceNodePortGeneratorV1Name:
|
case generateversioned.ServiceNodePortGeneratorV1Name:
|
||||||
generator = &kubectl.ServiceCommonGeneratorV1{
|
generator = &generateversioned.ServiceCommonGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
|
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
|
||||||
Type: v1.ServiceTypeNodePort,
|
Type: v1.ServiceTypeNodePort,
|
||||||
|
@ -227,7 +228,7 @@ func NewCmdCreateServiceLoadBalancer(f cmdutil.Factory, ioStreams genericcliopti
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ServiceLoadBalancerGeneratorV1Name)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceLoadBalancerGeneratorV1Name)
|
||||||
addPortFlags(cmd)
|
addPortFlags(cmd)
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
@ -238,10 +239,10 @@ func (o *ServiceLoadBalancerOpts) Complete(f cmdutil.Factory, cmd *cobra.Command
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ServiceLoadBalancerGeneratorV1Name:
|
case generateversioned.ServiceLoadBalancerGeneratorV1Name:
|
||||||
generator = &kubectl.ServiceCommonGeneratorV1{
|
generator = &generateversioned.ServiceCommonGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
|
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
|
||||||
Type: v1.ServiceTypeLoadBalancer,
|
Type: v1.ServiceTypeLoadBalancer,
|
||||||
|
@ -298,7 +299,7 @@ func NewCmdCreateServiceExternalName(f cmdutil.Factory, ioStreams genericcliopti
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ServiceExternalNameGeneratorV1Name)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceExternalNameGeneratorV1Name)
|
||||||
addPortFlags(cmd)
|
addPortFlags(cmd)
|
||||||
cmd.Flags().String("external-name", "", i18n.T("External name of service"))
|
cmd.Flags().String("external-name", "", i18n.T("External name of service"))
|
||||||
cmd.MarkFlagRequired("external-name")
|
cmd.MarkFlagRequired("external-name")
|
||||||
|
@ -311,10 +312,10 @@ func (o *ServiceExternalNameOpts) Complete(f cmdutil.Factory, cmd *cobra.Command
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ServiceExternalNameGeneratorV1Name:
|
case generateversioned.ServiceExternalNameGeneratorV1Name:
|
||||||
generator = &kubectl.ServiceCommonGeneratorV1{
|
generator = &generateversioned.ServiceCommonGeneratorV1{
|
||||||
Name: name,
|
Name: name,
|
||||||
Type: v1.ServiceTypeExternalName,
|
Type: v1.ServiceTypeExternalName,
|
||||||
ExternalName: cmdutil.GetFlagString(cmd, "external-name"),
|
ExternalName: cmdutil.GetFlagString(cmd, "external-name"),
|
||||||
|
|
|
@ -20,8 +20,9 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
)
|
)
|
||||||
|
@ -62,7 +63,7 @@ func NewCmdCreateServiceAccount(f cmdutil.Factory, ioStreams genericclioptions.I
|
||||||
|
|
||||||
cmdutil.AddApplyAnnotationFlags(cmd)
|
cmdutil.AddApplyAnnotationFlags(cmd)
|
||||||
cmdutil.AddValidateFlags(cmd)
|
cmdutil.AddValidateFlags(cmd)
|
||||||
cmdutil.AddGeneratorFlags(cmd, cmdutil.ServiceAccountV1GeneratorName)
|
cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceAccountV1GeneratorName)
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,10 +73,10 @@ func (o *ServiceAccountOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, arg
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var generator kubectl.StructuredGenerator
|
var generator generate.StructuredGenerator
|
||||||
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
|
||||||
case cmdutil.ServiceAccountV1GeneratorName:
|
case generateversioned.ServiceAccountV1GeneratorName:
|
||||||
generator = &kubectl.ServiceAccountGeneratorV1{Name: name}
|
generator = &generateversioned.ServiceAccountGeneratorV1{Name: name}
|
||||||
default:
|
default:
|
||||||
return errUnsupportedGenerator(cmd, generatorName)
|
return errUnsupportedGenerator(cmd, generatorName)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ go_library(
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
"//pkg/kubectl/describe/versioned:go_default_library",
|
||||||
"//pkg/kubectl/util/i18n:go_default_library",
|
"//pkg/kubectl/util/i18n:go_default_library",
|
||||||
"//pkg/kubectl/util/templates:go_default_library",
|
"//pkg/kubectl/util/templates:go_default_library",
|
||||||
"//pkg/printers:go_default_library",
|
"//pkg/printers:go_default_library",
|
||||||
|
@ -29,7 +30,7 @@ go_test(
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/kubectl/cmd/testing:go_default_library",
|
"//pkg/kubectl/cmd/testing:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/describe/versioned:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/printers:go_default_library",
|
"//pkg/printers:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
|
|
|
@ -29,6 +29,7 @@ import (
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
|
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
describeversioned "k8s.io/kubernetes/pkg/kubectl/describe/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
"k8s.io/kubernetes/pkg/kubectl/util/templates"
|
||||||
"k8s.io/kubernetes/pkg/printers"
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
|
@ -138,7 +139,7 @@ func (o *DescribeOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
||||||
o.BuilderArgs = args
|
o.BuilderArgs = args
|
||||||
|
|
||||||
o.Describer = func(mapping *meta.RESTMapping) (printers.Describer, error) {
|
o.Describer = func(mapping *meta.RESTMapping) (printers.Describer, error) {
|
||||||
return cmdutil.DescriberFn(f, mapping)
|
return describeversioned.DescriberFn(f, mapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
o.NewBuilder = f.NewBuilder
|
o.NewBuilder = f.NewBuilder
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
|
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
|
||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
describe "k8s.io/kubernetes/pkg/kubectl/describe/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
"k8s.io/kubernetes/pkg/printers"
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
)
|
)
|
||||||
|
@ -35,11 +35,11 @@ import (
|
||||||
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
|
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
|
||||||
func TestDescribeUnknownSchemaObject(t *testing.T) {
|
func TestDescribeUnknownSchemaObject(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := cmdutil.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
cmdutil.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
cmdutil.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("non-default")
|
tf := cmdtesting.NewTestFactory().WithNamespace("non-default")
|
||||||
defer tf.Cleanup()
|
defer tf.Cleanup()
|
||||||
|
@ -67,11 +67,11 @@ func TestDescribeUnknownSchemaObject(t *testing.T) {
|
||||||
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
|
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
|
||||||
func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
|
func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := cmdutil.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
cmdutil.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
cmdutil.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
tf := cmdtesting.NewTestFactory()
|
tf := cmdtesting.NewTestFactory()
|
||||||
defer tf.Cleanup()
|
defer tf.Cleanup()
|
||||||
|
@ -99,11 +99,11 @@ func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
|
||||||
|
|
||||||
func TestDescribeObject(t *testing.T) {
|
func TestDescribeObject(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := cmdutil.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
cmdutil.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
cmdutil.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
_, _, rc := cmdtesting.TestData()
|
_, _, rc := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
|
@ -140,11 +140,11 @@ func TestDescribeObject(t *testing.T) {
|
||||||
|
|
||||||
func TestDescribeListObjects(t *testing.T) {
|
func TestDescribeListObjects(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := cmdutil.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
cmdutil.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
cmdutil.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
pods, _, _ := cmdtesting.TestData()
|
pods, _, _ := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
|
@ -167,11 +167,11 @@ func TestDescribeListObjects(t *testing.T) {
|
||||||
|
|
||||||
func TestDescribeObjectShowEvents(t *testing.T) {
|
func TestDescribeObjectShowEvents(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := cmdutil.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
cmdutil.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
cmdutil.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
pods, _, _ := cmdtesting.TestData()
|
pods, _, _ := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
|
@ -193,11 +193,11 @@ func TestDescribeObjectShowEvents(t *testing.T) {
|
||||||
|
|
||||||
func TestDescribeObjectSkipEvents(t *testing.T) {
|
func TestDescribeObjectSkipEvents(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := cmdutil.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
cmdutil.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
cmdutil.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
pods, _, _ := cmdtesting.TestData()
|
pods, _, _ := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
|
|
|
@ -8,6 +8,8 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
"//pkg/kubectl/generate:go_default_library",
|
||||||
|
"//pkg/kubectl/generate/versioned:go_default_library",
|
||||||
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util/i18n:go_default_library",
|
"//pkg/kubectl/util/i18n:go_default_library",
|
||||||
|
|
|
@ -35,6 +35,8 @@ import (
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
|
@ -90,7 +92,7 @@ type ExposeServiceOptions struct {
|
||||||
DryRun bool
|
DryRun bool
|
||||||
EnforceNamespace bool
|
EnforceNamespace bool
|
||||||
|
|
||||||
Generators func(string) map[string]kubectl.Generator
|
Generators func(string) map[string]generate.Generator
|
||||||
CanBeExposed polymorphichelpers.CanBeExposedFunc
|
CanBeExposed polymorphichelpers.CanBeExposedFunc
|
||||||
MapBasedSelectorForObject func(runtime.Object) (string, error)
|
MapBasedSelectorForObject func(runtime.Object) (string, error)
|
||||||
PortsForObject polymorphichelpers.PortsForObjectFunc
|
PortsForObject polymorphichelpers.PortsForObjectFunc
|
||||||
|
@ -187,7 +189,7 @@ func (o *ExposeServiceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) e
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Generators = cmdutil.GeneratorFn
|
o.Generators = generateversioned.GeneratorFn
|
||||||
o.Builder = f.NewBuilder()
|
o.Builder = f.NewBuilder()
|
||||||
o.CanBeExposed = polymorphichelpers.CanBeExposedFn
|
o.CanBeExposed = polymorphichelpers.CanBeExposedFn
|
||||||
o.MapBasedSelectorForObject = polymorphichelpers.MapBasedSelectorForObjectFn
|
o.MapBasedSelectorForObject = polymorphichelpers.MapBasedSelectorForObjectFn
|
||||||
|
@ -240,7 +242,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
params := kubectl.MakeParams(cmd, names)
|
params := generate.MakeParams(cmd, names)
|
||||||
name := info.Name
|
name := info.Name
|
||||||
if len(name) > validation.DNS1035LabelMaxLength {
|
if len(name) > validation.DNS1035LabelMaxLength {
|
||||||
name = name[:validation.DNS1035LabelMaxLength]
|
name = name[:validation.DNS1035LabelMaxLength]
|
||||||
|
@ -249,7 +251,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
|
||||||
|
|
||||||
// For objects that need a pod selector, derive it from the exposed object in case a user
|
// For objects that need a pod selector, derive it from the exposed object in case a user
|
||||||
// didn't explicitly specify one via --selector
|
// didn't explicitly specify one via --selector
|
||||||
if s, found := params["selector"]; found && kubectl.IsZero(s) {
|
if s, found := params["selector"]; found && generate.IsZero(s) {
|
||||||
s, err := o.MapBasedSelectorForObject(info.Object)
|
s, err := o.MapBasedSelectorForObject(info.Object)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cmdutil.UsageErrorf(cmd, "couldn't retrieve selectors via --selector flag or introspection: %v", err)
|
return cmdutil.UsageErrorf(cmd, "couldn't retrieve selectors via --selector flag or introspection: %v", err)
|
||||||
|
@ -261,7 +263,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
|
||||||
|
|
||||||
// For objects that need a port, derive it from the exposed object in case a user
|
// For objects that need a port, derive it from the exposed object in case a user
|
||||||
// didn't explicitly specify one via --port
|
// didn't explicitly specify one via --port
|
||||||
if port, found := params["port"]; found && kubectl.IsZero(port) {
|
if port, found := params["port"]; found && generate.IsZero(port) {
|
||||||
ports, err := o.PortsForObject(info.Object)
|
ports, err := o.PortsForObject(info.Object)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cmdutil.UsageErrorf(cmd, "couldn't find port via --port flag or introspection: %v", err)
|
return cmdutil.UsageErrorf(cmd, "couldn't find port via --port flag or introspection: %v", err)
|
||||||
|
@ -285,23 +287,23 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cmdutil.UsageErrorf(cmd, "couldn't find protocol via introspection: %v", err)
|
return cmdutil.UsageErrorf(cmd, "couldn't find protocol via introspection: %v", err)
|
||||||
}
|
}
|
||||||
if protocols := kubectl.MakeProtocols(protocolsMap); !kubectl.IsZero(protocols) {
|
if protocols := generate.MakeProtocols(protocolsMap); !generate.IsZero(protocols) {
|
||||||
params["protocols"] = protocols
|
params["protocols"] = protocols
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kubectl.IsZero(params["labels"]) {
|
if generate.IsZero(params["labels"]) {
|
||||||
labels, err := meta.NewAccessor().Labels(info.Object)
|
labels, err := meta.NewAccessor().Labels(info.Object)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
params["labels"] = kubectl.MakeLabels(labels)
|
params["labels"] = generate.MakeLabels(labels)
|
||||||
}
|
}
|
||||||
if err = kubectl.ValidateParams(names, params); err != nil {
|
if err = generate.ValidateParams(names, params); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Check for invalid flags used against the present generator.
|
// Check for invalid flags used against the present generator.
|
||||||
if err := kubectl.EnsureFlagsValid(cmd, generators, generatorName); err != nil {
|
if err := generate.EnsureFlagsValid(cmd, generators, generatorName); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ go_library(
|
||||||
"//pkg/kubectl/cmd/exec:go_default_library",
|
"//pkg/kubectl/cmd/exec:go_default_library",
|
||||||
"//pkg/kubectl/cmd/logs:go_default_library",
|
"//pkg/kubectl/cmd/logs:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
"//pkg/kubectl/generate:go_default_library",
|
||||||
|
"//pkg/kubectl/generate/versioned:go_default_library",
|
||||||
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util/i18n:go_default_library",
|
"//pkg/kubectl/util/i18n:go_default_library",
|
||||||
|
|
|
@ -44,6 +44,8 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/exec"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/exec"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/logs"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/logs"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
|
@ -309,20 +311,20 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
|
||||||
|
|
||||||
generatorName := o.Generator
|
generatorName := o.Generator
|
||||||
if len(o.Schedule) != 0 && len(generatorName) == 0 {
|
if len(o.Schedule) != 0 && len(generatorName) == 0 {
|
||||||
generatorName = cmdutil.CronJobV1Beta1GeneratorName
|
generatorName = generateversioned.CronJobV1Beta1GeneratorName
|
||||||
}
|
}
|
||||||
if len(generatorName) == 0 {
|
if len(generatorName) == 0 {
|
||||||
switch restartPolicy {
|
switch restartPolicy {
|
||||||
case corev1.RestartPolicyAlways:
|
case corev1.RestartPolicyAlways:
|
||||||
generatorName = cmdutil.DeploymentAppsV1Beta1GeneratorName
|
generatorName = generateversioned.DeploymentAppsV1Beta1GeneratorName
|
||||||
case corev1.RestartPolicyOnFailure:
|
case corev1.RestartPolicyOnFailure:
|
||||||
generatorName = cmdutil.JobV1GeneratorName
|
generatorName = generateversioned.JobV1GeneratorName
|
||||||
case corev1.RestartPolicyNever:
|
case corev1.RestartPolicyNever:
|
||||||
generatorName = cmdutil.RunPodV1GeneratorName
|
generatorName = generateversioned.RunPodV1GeneratorName
|
||||||
}
|
}
|
||||||
|
|
||||||
// Falling back because the generator was not provided and the default one could be unavailable.
|
// Falling back because the generator was not provided and the default one could be unavailable.
|
||||||
generatorNameTemp, err := cmdutil.FallbackGeneratorNameIfNecessary(generatorName, clientset.Discovery(), o.ErrOut)
|
generatorNameTemp, err := generateversioned.FallbackGeneratorNameIfNecessary(generatorName, clientset.Discovery(), o.ErrOut)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -336,17 +338,17 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
|
||||||
// start deprecating all generators except for 'run-pod/v1' which will be
|
// start deprecating all generators except for 'run-pod/v1' which will be
|
||||||
// the only supported on a route to simple kubectl run which should mimic
|
// the only supported on a route to simple kubectl run which should mimic
|
||||||
// docker run
|
// docker run
|
||||||
if generatorName != cmdutil.RunPodV1GeneratorName {
|
if generatorName != generateversioned.RunPodV1GeneratorName {
|
||||||
fmt.Fprintf(o.ErrOut, "kubectl run --generator=%s is DEPRECATED and will be removed in a future version. Use kubectl create instead.\n", generatorName)
|
fmt.Fprintf(o.ErrOut, "kubectl run --generator=%s is DEPRECATED and will be removed in a future version. Use kubectl create instead.\n", generatorName)
|
||||||
}
|
}
|
||||||
|
|
||||||
generators := cmdutil.GeneratorFn("run")
|
generators := generateversioned.GeneratorFn("run")
|
||||||
generator, found := generators[generatorName]
|
generator, found := generators[generatorName]
|
||||||
if !found {
|
if !found {
|
||||||
return cmdutil.UsageErrorf(cmd, "generator %q not found", generatorName)
|
return cmdutil.UsageErrorf(cmd, "generator %q not found", generatorName)
|
||||||
}
|
}
|
||||||
names := generator.ParamNames()
|
names := generator.ParamNames()
|
||||||
params := kubectl.MakeParams(cmd, names)
|
params := generate.MakeParams(cmd, names)
|
||||||
params["name"] = args[0]
|
params["name"] = args[0]
|
||||||
if len(args) > 1 {
|
if len(args) > 1 {
|
||||||
params["args"] = args[1:]
|
params["args"] = args[1:]
|
||||||
|
@ -592,7 +594,7 @@ func verifyImagePullPolicy(cmd *cobra.Command) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *RunOptions) generateService(f cmdutil.Factory, cmd *cobra.Command, serviceGenerator string, paramsIn map[string]interface{}, namespace string) (*RunObject, error) {
|
func (o *RunOptions) generateService(f cmdutil.Factory, cmd *cobra.Command, serviceGenerator string, paramsIn map[string]interface{}, namespace string) (*RunObject, error) {
|
||||||
generators := cmdutil.GeneratorFn("expose")
|
generators := generateversioned.GeneratorFn("expose")
|
||||||
generator, found := generators[serviceGenerator]
|
generator, found := generators[serviceGenerator]
|
||||||
if !found {
|
if !found {
|
||||||
return nil, fmt.Errorf("missing service generator: %s", serviceGenerator)
|
return nil, fmt.Errorf("missing service generator: %s", serviceGenerator)
|
||||||
|
@ -637,8 +639,8 @@ func (o *RunOptions) generateService(f cmdutil.Factory, cmd *cobra.Command, serv
|
||||||
return runObject, nil
|
return runObject, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator kubectl.Generator, names []kubectl.GeneratorParam, params map[string]interface{}, overrides, namespace string) (*RunObject, error) {
|
func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator generate.Generator, names []generate.GeneratorParam, params map[string]interface{}, overrides, namespace string) (*RunObject, error) {
|
||||||
err := kubectl.ValidateParams(names, params)
|
err := generate.ValidateParams(names, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,9 @@ go_library(
|
||||||
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/set",
|
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/set",
|
||||||
visibility = ["//build/visible_to:pkg_kubectl_cmd_set_CONSUMERS"],
|
visibility = ["//build/visible_to:pkg_kubectl_cmd_set_CONSUMERS"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/kubectl:go_default_library",
|
|
||||||
"//pkg/kubectl/cmd/set/env:go_default_library",
|
"//pkg/kubectl/cmd/set/env:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
"//pkg/kubectl/generate/versioned:go_default_library",
|
||||||
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
"//pkg/kubectl/polymorphichelpers:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util/i18n:go_default_library",
|
"//pkg/kubectl/util/i18n:go_default_library",
|
||||||
|
|
|
@ -29,8 +29,8 @@ import (
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions/printers"
|
"k8s.io/cli-runtime/pkg/genericclioptions/printers"
|
||||||
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
|
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
generateversioned "k8s.io/kubernetes/pkg/kubectl/generate/versioned"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
|
||||||
|
@ -206,7 +206,7 @@ func (o *SetResourcesOptions) Validate() error {
|
||||||
return fmt.Errorf("you must specify an update to requests or limits (in the form of --requests/--limits)")
|
return fmt.Errorf("you must specify an update to requests or limits (in the form of --requests/--limits)")
|
||||||
}
|
}
|
||||||
|
|
||||||
o.ResourceRequirements, err = kubectl.HandleResourceRequirementsV1(map[string]string{"limits": o.Limits, "requests": o.Requests})
|
o.ResourceRequirements, err = generateversioned.HandleResourceRequirementsV1(map[string]string{"limits": o.Limits, "requests": o.Requests})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ go_library(
|
||||||
"crdfinder.go",
|
"crdfinder.go",
|
||||||
"factory.go",
|
"factory.go",
|
||||||
"factory_client_access.go",
|
"factory_client_access.go",
|
||||||
"generator.go",
|
|
||||||
"helpers.go",
|
"helpers.go",
|
||||||
"kubectl_match_version.go",
|
"kubectl_match_version.go",
|
||||||
"printing.go",
|
"printing.go",
|
||||||
|
@ -16,22 +15,12 @@ go_library(
|
||||||
visibility = ["//build/visible_to:pkg_kubectl_cmd_util_CONSUMERS"],
|
visibility = ["//build/visible_to:pkg_kubectl_cmd_util_CONSUMERS"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
|
||||||
"//pkg/kubectl:go_default_library",
|
|
||||||
"//pkg/kubectl/cmd/util/openapi:go_default_library",
|
"//pkg/kubectl/cmd/util/openapi:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util/openapi/validation:go_default_library",
|
"//pkg/kubectl/cmd/util/openapi/validation:go_default_library",
|
||||||
"//pkg/kubectl/util/templates:go_default_library",
|
"//pkg/kubectl/util/templates:go_default_library",
|
||||||
"//pkg/kubectl/validation:go_default_library",
|
"//pkg/kubectl/validation:go_default_library",
|
||||||
"//pkg/printers:go_default_library",
|
|
||||||
"//pkg/printers/internalversion:go_default_library",
|
|
||||||
"//pkg/version:go_default_library",
|
"//pkg/version:go_default_library",
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/apps/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/batch/v2alpha1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
@ -73,6 +62,7 @@ go_test(
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
||||||
"//vendor/k8s.io/utils/exec:go_default_library",
|
"//vendor/k8s.io/utils/exec:go_default_library",
|
||||||
],
|
],
|
||||||
|
|
|
@ -44,9 +44,6 @@ import (
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/scale"
|
"k8s.io/client-go/scale"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
|
||||||
"k8s.io/kubernetes/pkg/printers"
|
|
||||||
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
|
|
||||||
utilexec "k8s.io/utils/exec"
|
utilexec "k8s.io/utils/exec"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -619,53 +616,6 @@ func ShouldIncludeUninitialized(cmd *cobra.Command, includeUninitialized bool) b
|
||||||
return shouldIncludeUninitialized
|
return shouldIncludeUninitialized
|
||||||
}
|
}
|
||||||
|
|
||||||
// DescriberFunc gives a way to display the specified RESTMapping type
|
|
||||||
type DescriberFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (printers.Describer, error)
|
|
||||||
|
|
||||||
// DescriberFn gives a way to easily override the function for unit testing if needed
|
|
||||||
var DescriberFn DescriberFunc = describer
|
|
||||||
|
|
||||||
// Returns a Describer for displaying the specified RESTMapping type or an error.
|
|
||||||
func describer(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (printers.Describer, error) {
|
|
||||||
clientConfig, err := restClientGetter.ToRESTConfig()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
// try to get a describer
|
|
||||||
if describer, ok := printersinternal.DescriberFor(mapping.GroupVersionKind.GroupKind(), clientConfig); ok {
|
|
||||||
return describer, nil
|
|
||||||
}
|
|
||||||
// if this is a kind we don't have a describer for yet, go generic if possible
|
|
||||||
if genericDescriber, genericErr := genericDescriber(restClientGetter, mapping); genericErr == nil {
|
|
||||||
return genericDescriber, nil
|
|
||||||
}
|
|
||||||
// otherwise return an unregistered error
|
|
||||||
return nil, fmt.Errorf("no description has been implemented for %s", mapping.GroupVersionKind.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
// helper function to make a generic describer, or return an error
|
|
||||||
func genericDescriber(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (printers.Describer, error) {
|
|
||||||
clientConfig, err := restClientGetter.ToRESTConfig()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// used to fetch the resource
|
|
||||||
dynamicClient, err := dynamic.NewForConfig(clientConfig)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// used to get events for the resource
|
|
||||||
clientSet, err := internalclientset.NewForConfig(clientConfig)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
eventsClient := clientSet.Core()
|
|
||||||
return printersinternal.GenericDescriberFor(mapping, dynamicClient, eventsClient), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ScaleClientFunc provides a ScalesGetter
|
// ScaleClientFunc provides a ScalesGetter
|
||||||
type ScaleClientFunc func(genericclioptions.RESTClientGetter) (scale.ScalesGetter, error)
|
type ScaleClientFunc func(genericclioptions.RESTClientGetter) (scale.ScalesGetter, error)
|
||||||
|
|
||||||
|
@ -697,3 +647,12 @@ func scaleClient(restClientGetter genericclioptions.RESTClientGetter) (scale.Sca
|
||||||
|
|
||||||
return scale.New(restClient, mapper, dynamic.LegacyAPIPathResolverFunc, resolver), nil
|
return scale.New(restClient, mapper, dynamic.LegacyAPIPathResolverFunc, resolver), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Warning(cmdErr io.Writer, newGeneratorName, oldGeneratorName string) {
|
||||||
|
fmt.Fprintf(cmdErr, "WARNING: New generator %q specified, "+
|
||||||
|
"but it isn't available. "+
|
||||||
|
"Falling back to %q.\n",
|
||||||
|
newGeneratorName,
|
||||||
|
oldGeneratorName,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
|
@ -31,14 +31,13 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
"k8s.io/utils/exec"
|
"k8s.io/utils/exec"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMerge(t *testing.T) {
|
func TestMerge(t *testing.T) {
|
||||||
grace := int64(30)
|
|
||||||
enableServiceLinks := corev1.DefaultEnableServiceLinks
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
obj runtime.Object
|
obj runtime.Object
|
||||||
fragment string
|
fragment string
|
||||||
|
@ -60,14 +59,7 @@ func TestMerge(t *testing.T) {
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
},
|
},
|
||||||
Spec: corev1.PodSpec{
|
Spec: corev1.PodSpec{},
|
||||||
RestartPolicy: corev1.RestartPolicyAlways,
|
|
||||||
DNSPolicy: corev1.DNSClusterFirst,
|
|
||||||
TerminationGracePeriodSeconds: &grace,
|
|
||||||
SecurityContext: &corev1.PodSecurityContext{},
|
|
||||||
SchedulerName: corev1.DefaultSchedulerName,
|
|
||||||
EnableServiceLinks: &enableServiceLinks,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
/* TODO: uncomment this test once Merge is updated to use
|
/* TODO: uncomment this test once Merge is updated to use
|
||||||
|
@ -127,20 +119,12 @@ func TestMerge(t *testing.T) {
|
||||||
Spec: corev1.PodSpec{
|
Spec: corev1.PodSpec{
|
||||||
Volumes: []corev1.Volume{
|
Volumes: []corev1.Volume{
|
||||||
{
|
{
|
||||||
Name: "v1",
|
Name: "v1",
|
||||||
VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{}},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "v2",
|
Name: "v2",
|
||||||
VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{}},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
RestartPolicy: corev1.RestartPolicyAlways,
|
|
||||||
DNSPolicy: corev1.DNSClusterFirst,
|
|
||||||
TerminationGracePeriodSeconds: &grace,
|
|
||||||
SecurityContext: &corev1.PodSecurityContext{},
|
|
||||||
SchedulerName: corev1.DefaultSchedulerName,
|
|
||||||
EnableServiceLinks: &enableServiceLinks,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -166,12 +150,9 @@ func TestMerge(t *testing.T) {
|
||||||
APIVersion: "v1",
|
APIVersion: "v1",
|
||||||
},
|
},
|
||||||
Spec: corev1.ServiceSpec{
|
Spec: corev1.ServiceSpec{
|
||||||
SessionAffinity: "None",
|
|
||||||
Type: corev1.ServiceTypeClusterIP,
|
|
||||||
Ports: []corev1.ServicePort{
|
Ports: []corev1.ServicePort{
|
||||||
{
|
{
|
||||||
Protocol: corev1.ProtocolTCP,
|
Port: 0,
|
||||||
Port: 0,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -192,8 +173,6 @@ func TestMerge(t *testing.T) {
|
||||||
APIVersion: "v1",
|
APIVersion: "v1",
|
||||||
},
|
},
|
||||||
Spec: corev1.ServiceSpec{
|
Spec: corev1.ServiceSpec{
|
||||||
SessionAffinity: "None",
|
|
||||||
Type: corev1.ServiceTypeClusterIP,
|
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
"version": "v2",
|
"version": "v2",
|
||||||
},
|
},
|
||||||
|
@ -210,7 +189,7 @@ func TestMerge(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("testcase[%d], unexpected error: %v", i, err)
|
t.Errorf("testcase[%d], unexpected error: %v", i, err)
|
||||||
} else if !apiequality.Semantic.DeepEqual(test.expected, out) {
|
} else if !apiequality.Semantic.DeepEqual(test.expected, out) {
|
||||||
t.Errorf("\n\ntestcase[%d]\nexpected:\n%+v\nsaw:\n%+v", i, test.expected, out)
|
t.Errorf("\n\ntestcase[%d]\nexpected:\n%s", i, diff.ObjectReflectDiff(test.expected, out))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if test.expectErr && err == nil {
|
if test.expectErr && err == nil {
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["describe.go"],
|
||||||
|
importpath = "k8s.io/kubernetes/pkg/kubectl/describe",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//pkg/printers:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
|
"//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//pkg/kubectl/describe/versioned:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
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 describe
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DescriberFunc gives a way to display the specified RESTMapping type
|
||||||
|
type DescriberFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (printers.Describer, error)
|
|
@ -0,0 +1,31 @@
|
||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["describe.go"],
|
||||||
|
importpath = "k8s.io/kubernetes/pkg/kubectl/describe/versioned",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
|
"//pkg/kubectl/describe:go_default_library",
|
||||||
|
"//pkg/printers:go_default_library",
|
||||||
|
"//pkg/printers/internalversion:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
|
"//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/dynamic:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
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 versioned
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||||
|
"k8s.io/client-go/dynamic"
|
||||||
|
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/describe"
|
||||||
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
|
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DescriberFn gives a way to easily override the function for unit testing if needed
|
||||||
|
var DescriberFn describe.DescriberFunc = Describer
|
||||||
|
|
||||||
|
// Describer returns a Describer for displaying the specified RESTMapping type or an error.
|
||||||
|
func Describer(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (printers.Describer, error) {
|
||||||
|
clientConfig, err := restClientGetter.ToRESTConfig()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
// try to get a describer
|
||||||
|
if describer, ok := printersinternal.DescriberFor(mapping.GroupVersionKind.GroupKind(), clientConfig); ok {
|
||||||
|
return describer, nil
|
||||||
|
}
|
||||||
|
// if this is a kind we don't have a describer for yet, go generic if possible
|
||||||
|
if genericDescriber, genericErr := genericDescriber(restClientGetter, mapping); genericErr == nil {
|
||||||
|
return genericDescriber, nil
|
||||||
|
}
|
||||||
|
// otherwise return an unregistered error
|
||||||
|
return nil, fmt.Errorf("no description has been implemented for %s", mapping.GroupVersionKind.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
// helper function to make a generic describer, or return an error
|
||||||
|
func genericDescriber(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (printers.Describer, error) {
|
||||||
|
clientConfig, err := restClientGetter.ToRESTConfig()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// used to fetch the resource
|
||||||
|
dynamicClient, err := dynamic.NewForConfig(clientConfig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// used to get events for the resource
|
||||||
|
clientSet, err := internalclientset.NewForConfig(clientConfig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
eventsClient := clientSet.Core()
|
||||||
|
return printersinternal.GenericDescriberFor(mapping, dynamicClient, eventsClient), nil
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["generate.go"],
|
||||||
|
importpath = "k8s.io/kubernetes/pkg/kubectl/generate",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
||||||
|
"//vendor/github.com/spf13/cobra:go_default_library",
|
||||||
|
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_test(
|
||||||
|
name = "go_default_test",
|
||||||
|
srcs = ["generate_test.go"],
|
||||||
|
embed = [":go_default_library"],
|
||||||
|
deps = ["//vendor/github.com/spf13/cobra:go_default_library"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//pkg/kubectl/generate/versioned:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright 2014 The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package generate
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -24,10 +24,14 @@ import (
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// GeneratorFunc returns the generators for the provided command
|
||||||
|
type GeneratorFunc func(cmdName string) map[string]Generator
|
||||||
|
|
||||||
// GeneratorParam is a parameter for a generator
|
// GeneratorParam is a parameter for a generator
|
||||||
// TODO: facilitate structured json generator input schemes
|
// TODO: facilitate structured json generator input schemes
|
||||||
type GeneratorParam struct {
|
type GeneratorParam struct {
|
||||||
|
@ -98,7 +102,7 @@ func AnnotateFlags(cmd *cobra.Command, generators map[string]Generator) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnsureFlagsValid ensures that no invalid flags are being used against a generator.
|
// EnsureFlagsValid ensures that no invalid flags are being used against a
|
||||||
func EnsureFlagsValid(cmd *cobra.Command, generators map[string]Generator, generatorInUse string) error {
|
func EnsureFlagsValid(cmd *cobra.Command, generators map[string]Generator, generatorInUse string) error {
|
||||||
AnnotateFlags(cmd, generators)
|
AnnotateFlags(cmd, generators)
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package generate
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -0,0 +1,111 @@
|
||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"autoscale.go",
|
||||||
|
"clusterrolebinding.go",
|
||||||
|
"configmap.go",
|
||||||
|
"deployment.go",
|
||||||
|
"env_file.go",
|
||||||
|
"generator.go",
|
||||||
|
"namespace.go",
|
||||||
|
"pdb.go",
|
||||||
|
"priorityclass.go",
|
||||||
|
"quota.go",
|
||||||
|
"rolebinding.go",
|
||||||
|
"run.go",
|
||||||
|
"secret.go",
|
||||||
|
"secret_for_docker_registry.go",
|
||||||
|
"secret_for_tls.go",
|
||||||
|
"service.go",
|
||||||
|
"service_basic.go",
|
||||||
|
"serviceaccount.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/kubernetes/pkg/kubectl/generate/versioned",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//pkg/kubectl/generate:go_default_library",
|
||||||
|
"//pkg/kubectl/util:go_default_library",
|
||||||
|
"//pkg/kubectl/util/hash:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/apps/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/batch/v2alpha1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/rbac/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/discovery:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_test(
|
||||||
|
name = "go_default_test",
|
||||||
|
srcs = [
|
||||||
|
"autoscale_test.go",
|
||||||
|
"clusterrolebinding_test.go",
|
||||||
|
"configmap_test.go",
|
||||||
|
"deployment_test.go",
|
||||||
|
"env_file_test.go",
|
||||||
|
"namespace_test.go",
|
||||||
|
"pdb_test.go",
|
||||||
|
"priorityclass_test.go",
|
||||||
|
"quota_test.go",
|
||||||
|
"rolebinding_test.go",
|
||||||
|
"run_test.go",
|
||||||
|
"secret_for_docker_registry_test.go",
|
||||||
|
"secret_for_tls_test.go",
|
||||||
|
"secret_test.go",
|
||||||
|
"service_basic_test.go",
|
||||||
|
"service_test.go",
|
||||||
|
"serviceaccount_test.go",
|
||||||
|
],
|
||||||
|
embed = [":go_default_library"],
|
||||||
|
deps = [
|
||||||
|
"//pkg/kubectl/generate:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/apps/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/batch/v2alpha1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/rbac/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/util/testing:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/pointer:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -22,6 +22,7 @@ import (
|
||||||
autoscalingv1 "k8s.io/api/autoscaling/v1"
|
autoscalingv1 "k8s.io/api/autoscaling/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// HorizontalPodAutoscalerV1Generator supports stable generation of a horizontal pod autoscaler.
|
// HorizontalPodAutoscalerV1Generator supports stable generation of a horizontal pod autoscaler.
|
||||||
|
@ -36,7 +37,7 @@ type HorizontalPodAutoscalerGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
||||||
var _ StructuredGenerator = &HorizontalPodAutoscalerGeneratorV1{}
|
var _ generate.StructuredGenerator = &HorizontalPodAutoscalerGeneratorV1{}
|
||||||
|
|
||||||
// StructuredGenerate outputs a horizontal pod autoscaler object using the configured fields.
|
// StructuredGenerate outputs a horizontal pod autoscaler object using the configured fields.
|
||||||
func (s *HorizontalPodAutoscalerGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
func (s *HorizontalPodAutoscalerGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -24,6 +24,7 @@ import (
|
||||||
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
|
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ClusterRoleBindingGeneratorV1 supports stable generation of a clusterRoleBinding.
|
// ClusterRoleBindingGeneratorV1 supports stable generation of a clusterRoleBinding.
|
||||||
|
@ -41,14 +42,14 @@ type ClusterRoleBindingGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection.
|
// Ensure it supports the generator pattern that uses parameter injection.
|
||||||
var _ Generator = &ClusterRoleBindingGeneratorV1{}
|
var _ generate.Generator = &ClusterRoleBindingGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
||||||
var _ StructuredGenerator = &ClusterRoleBindingGeneratorV1{}
|
var _ generate.StructuredGenerator = &ClusterRoleBindingGeneratorV1{}
|
||||||
|
|
||||||
// Generate returns a clusterRoleBinding using the specified parameters.
|
// Generate returns a clusterRoleBinding using the specified parameters.
|
||||||
func (s ClusterRoleBindingGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (s ClusterRoleBindingGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), genericParams)
|
err := generate.ValidateParams(s.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -94,13 +95,13 @@ func (s ClusterRoleBindingGeneratorV1) Generate(genericParams map[string]interfa
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern.
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern.
|
||||||
func (s ClusterRoleBindingGeneratorV1) ParamNames() []GeneratorParam {
|
func (s ClusterRoleBindingGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"clusterrole", false},
|
{Name: "clusterrole", Required: false},
|
||||||
{"user", false},
|
{Name: "user", Required: false},
|
||||||
{"group", false},
|
{Name: "group", Required: false},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -27,6 +27,7 @@ import (
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/validation"
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util"
|
"k8s.io/kubernetes/pkg/kubectl/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
||||||
)
|
)
|
||||||
|
@ -48,14 +49,14 @@ type ConfigMapGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection.
|
// Ensure it supports the generator pattern that uses parameter injection.
|
||||||
var _ Generator = &ConfigMapGeneratorV1{}
|
var _ generate.Generator = &ConfigMapGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
||||||
var _ StructuredGenerator = &ConfigMapGeneratorV1{}
|
var _ generate.StructuredGenerator = &ConfigMapGeneratorV1{}
|
||||||
|
|
||||||
// Generate returns a configMap using the specified parameters.
|
// Generate returns a configMap using the specified parameters.
|
||||||
func (s ConfigMapGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (s ConfigMapGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), genericParams)
|
err := generate.ValidateParams(s.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -111,15 +112,15 @@ func (s ConfigMapGeneratorV1) Generate(genericParams map[string]interface{}) (ru
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern.
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern.
|
||||||
func (s ConfigMapGeneratorV1) ParamNames() []GeneratorParam {
|
func (s ConfigMapGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"type", false},
|
{Name: "type", Required: false},
|
||||||
{"from-file", false},
|
{Name: "from-file", Required: false},
|
||||||
{"from-literal", false},
|
{Name: "from-literal", Required: false},
|
||||||
{"from-env-file", false},
|
{Name: "from-env-file", Required: false},
|
||||||
{"force", false},
|
{Name: "force", Required: false},
|
||||||
{"hash", false},
|
{Name: "hash", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -26,6 +26,7 @@ import (
|
||||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BaseDeploymentGenerator: implement the common functionality of
|
// BaseDeploymentGenerator: implement the common functionality of
|
||||||
|
@ -94,7 +95,7 @@ type DeploymentBasicGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &DeploymentBasicGeneratorV1{}
|
var _ generate.StructuredGenerator = &DeploymentBasicGeneratorV1{}
|
||||||
|
|
||||||
// StructuredGenerate outputs a deployment object using the configured fields
|
// StructuredGenerate outputs a deployment object using the configured fields
|
||||||
func (s *DeploymentBasicGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
func (s *DeploymentBasicGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
||||||
|
@ -124,7 +125,7 @@ type DeploymentBasicAppsGeneratorV1Beta1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &DeploymentBasicAppsGeneratorV1Beta1{}
|
var _ generate.StructuredGenerator = &DeploymentBasicAppsGeneratorV1Beta1{}
|
||||||
|
|
||||||
// StructuredGenerate outputs a deployment object using the configured fields
|
// StructuredGenerate outputs a deployment object using the configured fields
|
||||||
func (s *DeploymentBasicAppsGeneratorV1Beta1) StructuredGenerate() (runtime.Object, error) {
|
func (s *DeploymentBasicAppsGeneratorV1Beta1) StructuredGenerate() (runtime.Object, error) {
|
||||||
|
@ -154,7 +155,7 @@ type DeploymentBasicAppsGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &DeploymentBasicAppsGeneratorV1{}
|
var _ generate.StructuredGenerator = &DeploymentBasicAppsGeneratorV1{}
|
||||||
|
|
||||||
// StructuredGenerate outputs a deployment object using the configured fields
|
// StructuredGenerate outputs a deployment object using the configured fields
|
||||||
func (s *DeploymentBasicAppsGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
func (s *DeploymentBasicAppsGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package util
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -29,9 +29,12 @@ import (
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/client-go/discovery"
|
"k8s.io/client-go/discovery"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// GeneratorFn gives a way to easily override the function for unit testing if needed
|
||||||
|
var GeneratorFn generate.GeneratorFunc = DefaultGenerators
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// TODO(sig-cli): Enforce consistent naming for generators here.
|
// TODO(sig-cli): Enforce consistent naming for generators here.
|
||||||
// See discussion in https://github.com/kubernetes/kubernetes/issues/46237
|
// See discussion in https://github.com/kubernetes/kubernetes/issues/46237
|
||||||
|
@ -67,70 +70,64 @@ const (
|
||||||
PriorityClassV1Alpha1GeneratorName = "priorityclass/v1alpha1"
|
PriorityClassV1Alpha1GeneratorName = "priorityclass/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GeneratorFunc returns the generators for the provided command
|
// DefaultGenerators returns the set of default generators for use in Factory instances
|
||||||
type GeneratorFunc func(cmdName string) map[string]kubectl.Generator
|
func DefaultGenerators(cmdName string) map[string]generate.Generator {
|
||||||
|
var generator map[string]generate.Generator
|
||||||
// GeneratorFn gives a way to easily override the function for unit testing if needed
|
|
||||||
var GeneratorFn GeneratorFunc = defaultGenerators
|
|
||||||
|
|
||||||
// defaultGenerators returns the set of default generators for use in Factory instances
|
|
||||||
func defaultGenerators(cmdName string) map[string]kubectl.Generator {
|
|
||||||
var generator map[string]kubectl.Generator
|
|
||||||
switch cmdName {
|
switch cmdName {
|
||||||
case "expose":
|
case "expose":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
ServiceV1GeneratorName: kubectl.ServiceGeneratorV1{},
|
ServiceV1GeneratorName: ServiceGeneratorV1{},
|
||||||
ServiceV2GeneratorName: kubectl.ServiceGeneratorV2{},
|
ServiceV2GeneratorName: ServiceGeneratorV2{},
|
||||||
}
|
}
|
||||||
case "service-clusterip":
|
case "service-clusterip":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
ServiceClusterIPGeneratorV1Name: kubectl.ServiceClusterIPGeneratorV1{},
|
ServiceClusterIPGeneratorV1Name: ServiceClusterIPGeneratorV1{},
|
||||||
}
|
}
|
||||||
case "service-nodeport":
|
case "service-nodeport":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
ServiceNodePortGeneratorV1Name: kubectl.ServiceNodePortGeneratorV1{},
|
ServiceNodePortGeneratorV1Name: ServiceNodePortGeneratorV1{},
|
||||||
}
|
}
|
||||||
case "service-loadbalancer":
|
case "service-loadbalancer":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
ServiceLoadBalancerGeneratorV1Name: kubectl.ServiceLoadBalancerGeneratorV1{},
|
ServiceLoadBalancerGeneratorV1Name: ServiceLoadBalancerGeneratorV1{},
|
||||||
}
|
}
|
||||||
case "deployment":
|
case "deployment":
|
||||||
// Create Deployment has only StructuredGenerators and no
|
// Create Deployment has only StructuredGenerators and no
|
||||||
// param-based Generators.
|
// param-based Generators.
|
||||||
// The StructuredGenerators are as follows (as of 2018-03-16):
|
// The StructuredGenerators are as follows (as of 2018-03-16):
|
||||||
// DeploymentBasicV1Beta1GeneratorName -> kubectl.DeploymentBasicGeneratorV1
|
// DeploymentBasicV1Beta1GeneratorName -> DeploymentBasicGeneratorV1
|
||||||
// DeploymentBasicAppsV1Beta1GeneratorName -> kubectl.DeploymentBasicAppsGeneratorV1Beta1
|
// DeploymentBasicAppsV1Beta1GeneratorName -> DeploymentBasicAppsGeneratorV1Beta1
|
||||||
// DeploymentBasicAppsV1GeneratorName -> kubectl.DeploymentBasicAppsGeneratorV1
|
// DeploymentBasicAppsV1GeneratorName -> DeploymentBasicAppsGeneratorV1
|
||||||
generator = map[string]kubectl.Generator{}
|
generator = map[string]generate.Generator{}
|
||||||
case "run":
|
case "run":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
RunV1GeneratorName: kubectl.BasicReplicationController{},
|
RunV1GeneratorName: BasicReplicationController{},
|
||||||
RunPodV1GeneratorName: kubectl.BasicPod{},
|
RunPodV1GeneratorName: BasicPod{},
|
||||||
DeploymentV1Beta1GeneratorName: kubectl.DeploymentV1Beta1{},
|
DeploymentV1Beta1GeneratorName: DeploymentV1Beta1{},
|
||||||
DeploymentAppsV1Beta1GeneratorName: kubectl.DeploymentAppsV1Beta1{},
|
DeploymentAppsV1Beta1GeneratorName: DeploymentAppsV1Beta1{},
|
||||||
JobV1GeneratorName: kubectl.JobV1{},
|
JobV1GeneratorName: JobV1{},
|
||||||
CronJobV2Alpha1GeneratorName: kubectl.CronJobV2Alpha1{},
|
CronJobV2Alpha1GeneratorName: CronJobV2Alpha1{},
|
||||||
CronJobV1Beta1GeneratorName: kubectl.CronJobV1Beta1{},
|
CronJobV1Beta1GeneratorName: CronJobV1Beta1{},
|
||||||
}
|
}
|
||||||
case "namespace":
|
case "namespace":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
NamespaceV1GeneratorName: kubectl.NamespaceGeneratorV1{},
|
NamespaceV1GeneratorName: NamespaceGeneratorV1{},
|
||||||
}
|
}
|
||||||
case "quota":
|
case "quota":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
ResourceQuotaV1GeneratorName: kubectl.ResourceQuotaGeneratorV1{},
|
ResourceQuotaV1GeneratorName: ResourceQuotaGeneratorV1{},
|
||||||
}
|
}
|
||||||
case "secret":
|
case "secret":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
SecretV1GeneratorName: kubectl.SecretGeneratorV1{},
|
SecretV1GeneratorName: SecretGeneratorV1{},
|
||||||
}
|
}
|
||||||
case "secret-for-docker-registry":
|
case "secret-for-docker-registry":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
SecretForDockerRegistryV1GeneratorName: kubectl.SecretForDockerRegistryGeneratorV1{},
|
SecretForDockerRegistryV1GeneratorName: SecretForDockerRegistryGeneratorV1{},
|
||||||
}
|
}
|
||||||
case "secret-for-tls":
|
case "secret-for-tls":
|
||||||
generator = map[string]kubectl.Generator{
|
generator = map[string]generate.Generator{
|
||||||
SecretForTLSV1GeneratorName: kubectl.SecretForTLSGeneratorV1{},
|
SecretForTLSV1GeneratorName: SecretForTLSGeneratorV1{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,12 +223,3 @@ func HasResource(client discovery.DiscoveryInterface, resource schema.GroupVersi
|
||||||
}
|
}
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Warning(cmdErr io.Writer, newGeneratorName, oldGeneratorName string) {
|
|
||||||
fmt.Fprintf(cmdErr, "WARNING: New generator %q specified, "+
|
|
||||||
"but it isn't available. "+
|
|
||||||
"Falling back to %q.\n",
|
|
||||||
newGeneratorName,
|
|
||||||
oldGeneratorName,
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -14,13 +14,14 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NamespaceGeneratorV1 supports stable generation of a namespace
|
// NamespaceGeneratorV1 supports stable generation of a namespace
|
||||||
|
@ -30,14 +31,14 @@ type NamespaceGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection
|
// Ensure it supports the generator pattern that uses parameter injection
|
||||||
var _ Generator = &NamespaceGeneratorV1{}
|
var _ generate.Generator = &NamespaceGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &NamespaceGeneratorV1{}
|
var _ generate.StructuredGenerator = &NamespaceGeneratorV1{}
|
||||||
|
|
||||||
// Generate returns a namespace using the specified parameters
|
// Generate returns a namespace using the specified parameters
|
||||||
func (g NamespaceGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (g NamespaceGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(g.ParamNames(), genericParams)
|
err := generate.ValidateParams(g.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -54,9 +55,9 @@ func (g NamespaceGeneratorV1) Generate(genericParams map[string]interface{}) (ru
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
||||||
func (g NamespaceGeneratorV1) ParamNames() []GeneratorParam {
|
func (g NamespaceGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -23,6 +23,7 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PodDisruptionBudgetV1Generator supports stable generation of a pod disruption budget.
|
// PodDisruptionBudgetV1Generator supports stable generation of a pod disruption budget.
|
||||||
|
@ -33,18 +34,18 @@ type PodDisruptionBudgetV1Generator struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
||||||
var _ StructuredGenerator = &PodDisruptionBudgetV1Generator{}
|
var _ generate.StructuredGenerator = &PodDisruptionBudgetV1Generator{}
|
||||||
|
|
||||||
func (PodDisruptionBudgetV1Generator) ParamNames() []GeneratorParam {
|
func (PodDisruptionBudgetV1Generator) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"min-available", false},
|
{Name: "min-available", Required: false},
|
||||||
{"selector", true},
|
{Name: "selector", Required: true},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s PodDisruptionBudgetV1Generator) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (s PodDisruptionBudgetV1Generator) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), params)
|
err := generate.ValidateParams(s.ParamNames(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -115,19 +116,19 @@ type PodDisruptionBudgetV2Generator struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
||||||
var _ StructuredGenerator = &PodDisruptionBudgetV2Generator{}
|
var _ generate.StructuredGenerator = &PodDisruptionBudgetV2Generator{}
|
||||||
|
|
||||||
func (PodDisruptionBudgetV2Generator) ParamNames() []GeneratorParam {
|
func (PodDisruptionBudgetV2Generator) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"min-available", false},
|
{Name: "min-available", Required: false},
|
||||||
{"max-unavailable", false},
|
{Name: "max-unavailable", Required: false},
|
||||||
{"selector", true},
|
{Name: "selector", Required: true},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s PodDisruptionBudgetV2Generator) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (s PodDisruptionBudgetV2Generator) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), params)
|
err := generate.ValidateParams(s.ParamNames(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -22,6 +22,7 @@ import (
|
||||||
scheduling "k8s.io/api/scheduling/v1beta1"
|
scheduling "k8s.io/api/scheduling/v1beta1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PriorityClassV1Generator supports stable generation of a priorityClass.
|
// PriorityClassV1Generator supports stable generation of a priorityClass.
|
||||||
|
@ -33,19 +34,19 @@ type PriorityClassV1Generator struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
||||||
var _ StructuredGenerator = &PriorityClassV1Generator{}
|
var _ generate.StructuredGenerator = &PriorityClassV1Generator{}
|
||||||
|
|
||||||
func (PriorityClassV1Generator) ParamNames() []GeneratorParam {
|
func (PriorityClassV1Generator) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"value", true},
|
{Name: "value", Required: true},
|
||||||
{"global-default", false},
|
{Name: "global-default", Required: false},
|
||||||
{"description", false},
|
{Name: "description", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s PriorityClassV1Generator) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (s PriorityClassV1Generator) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
if err := ValidateParams(s.ParamNames(), params); err != nil {
|
if err := generate.ValidateParams(s.ParamNames(), params); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
scheduling "k8s.io/api/scheduling/v1beta1"
|
scheduling "k8s.io/api/scheduling/v1beta1"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -22,6 +22,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ResourceQuotaGeneratorV1 supports stable generation of a resource quota
|
// ResourceQuotaGeneratorV1 supports stable generation of a resource quota
|
||||||
|
@ -37,22 +38,22 @@ type ResourceQuotaGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
||||||
func (g ResourceQuotaGeneratorV1) ParamNames() []GeneratorParam {
|
func (g ResourceQuotaGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"hard", true},
|
{Name: "hard", Required: true},
|
||||||
{"scopes", false},
|
{Name: "scopes", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection
|
// Ensure it supports the generator pattern that uses parameter injection
|
||||||
var _ Generator = &ResourceQuotaGeneratorV1{}
|
var _ generate.Generator = &ResourceQuotaGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &ResourceQuotaGeneratorV1{}
|
var _ generate.StructuredGenerator = &ResourceQuotaGeneratorV1{}
|
||||||
|
|
||||||
func (g ResourceQuotaGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (g ResourceQuotaGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(g.ParamNames(), genericParams)
|
err := generate.ValidateParams(g.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -24,6 +24,7 @@ import (
|
||||||
rbacv1 "k8s.io/api/rbac/v1"
|
rbacv1 "k8s.io/api/rbac/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RoleBindingGeneratorV1 supports stable generation of a roleBinding.
|
// RoleBindingGeneratorV1 supports stable generation of a roleBinding.
|
||||||
|
@ -43,14 +44,14 @@ type RoleBindingGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection.
|
// Ensure it supports the generator pattern that uses parameter injection.
|
||||||
var _ Generator = &RoleBindingGeneratorV1{}
|
var _ generate.Generator = &RoleBindingGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
// Ensure it supports the generator pattern that uses parameters specified during construction.
|
||||||
var _ StructuredGenerator = &RoleBindingGeneratorV1{}
|
var _ generate.StructuredGenerator = &RoleBindingGeneratorV1{}
|
||||||
|
|
||||||
// Generate returns a roleBinding using the specified parameters.
|
// Generate returns a roleBinding using the specified parameters.
|
||||||
func (s RoleBindingGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (s RoleBindingGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), genericParams)
|
err := generate.ValidateParams(s.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -97,14 +98,14 @@ func (s RoleBindingGeneratorV1) Generate(genericParams map[string]interface{}) (
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern.
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern.
|
||||||
func (s RoleBindingGeneratorV1) ParamNames() []GeneratorParam {
|
func (s RoleBindingGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"clusterrole", false},
|
{Name: "clusterrole", Required: false},
|
||||||
{"role", false},
|
{Name: "role", Required: false},
|
||||||
{"user", false},
|
{Name: "user", Required: false},
|
||||||
{"group", false},
|
{Name: "group", Required: false},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -31,28 +31,29 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/validation"
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeploymentV1Beta1 struct{}
|
type DeploymentV1Beta1 struct{}
|
||||||
|
|
||||||
func (DeploymentV1Beta1) ParamNames() []GeneratorParam {
|
func (DeploymentV1Beta1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"default-name", false},
|
{Name: "default-name", Required: false},
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"replicas", true},
|
{Name: "replicas", Required: true},
|
||||||
{"image", true},
|
{Name: "image", Required: true},
|
||||||
{"image-pull-policy", false},
|
{Name: "image-pull-policy", Required: false},
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
{"hostport", false},
|
{Name: "hostport", Required: false},
|
||||||
{"stdin", false},
|
{Name: "stdin", Required: false},
|
||||||
{"tty", false},
|
{Name: "tty", Required: false},
|
||||||
{"command", false},
|
{Name: "command", Required: false},
|
||||||
{"args", false},
|
{Name: "args", Required: false},
|
||||||
{"env", false},
|
{Name: "env", Required: false},
|
||||||
{"requests", false},
|
{Name: "requests", Required: false},
|
||||||
{"limits", false},
|
{Name: "limits", Required: false},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,24 +124,24 @@ func (DeploymentV1Beta1) Generate(genericParams map[string]interface{}) (runtime
|
||||||
|
|
||||||
type DeploymentAppsV1Beta1 struct{}
|
type DeploymentAppsV1Beta1 struct{}
|
||||||
|
|
||||||
func (DeploymentAppsV1Beta1) ParamNames() []GeneratorParam {
|
func (DeploymentAppsV1Beta1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"default-name", false},
|
{Name: "default-name", Required: false},
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"replicas", true},
|
{Name: "replicas", Required: true},
|
||||||
{"image", true},
|
{Name: "image", Required: true},
|
||||||
{"image-pull-policy", false},
|
{Name: "image-pull-policy", Required: false},
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
{"hostport", false},
|
{Name: "hostport", Required: false},
|
||||||
{"stdin", false},
|
{Name: "stdin", Required: false},
|
||||||
{"tty", false},
|
{Name: "tty", Required: false},
|
||||||
{"command", false},
|
{Name: "command", Required: false},
|
||||||
{"args", false},
|
{Name: "args", Required: false},
|
||||||
{"env", false},
|
{Name: "env", Required: false},
|
||||||
{"requests", false},
|
{Name: "requests", Required: false},
|
||||||
{"limits", false},
|
{Name: "limits", Required: false},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +216,7 @@ func getLabels(params map[string]string, name string) (map[string]string, error)
|
||||||
var labels map[string]string
|
var labels map[string]string
|
||||||
var err error
|
var err error
|
||||||
if found && len(labelString) > 0 {
|
if found && len(labelString) > 0 {
|
||||||
labels, err = ParseLabels(labelString)
|
labels, err = generate.ParseLabels(labelString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -288,25 +289,25 @@ func getEnvs(genericParams map[string]interface{}) ([]v1.EnvVar, error) {
|
||||||
|
|
||||||
type JobV1 struct{}
|
type JobV1 struct{}
|
||||||
|
|
||||||
func (JobV1) ParamNames() []GeneratorParam {
|
func (JobV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"default-name", false},
|
{Name: "default-name", Required: false},
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"image", true},
|
{Name: "image", Required: true},
|
||||||
{"image-pull-policy", false},
|
{Name: "image-pull-policy", Required: false},
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
{"hostport", false},
|
{Name: "hostport", Required: false},
|
||||||
{"stdin", false},
|
{Name: "stdin", Required: false},
|
||||||
{"leave-stdin-open", false},
|
{Name: "leave-stdin-open", Required: false},
|
||||||
{"tty", false},
|
{Name: "tty", Required: false},
|
||||||
{"command", false},
|
{Name: "command", Required: false},
|
||||||
{"args", false},
|
{Name: "args", Required: false},
|
||||||
{"env", false},
|
{Name: "env", Required: false},
|
||||||
{"requests", false},
|
{Name: "requests", Required: false},
|
||||||
{"limits", false},
|
{Name: "limits", Required: false},
|
||||||
{"restart", false},
|
{Name: "restart", Required: false},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,7 +347,7 @@ func (JobV1) Generate(genericParams map[string]interface{}) (runtime.Object, err
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
leaveStdinOpen, err := GetBool(params, "leave-stdin-open", false)
|
leaveStdinOpen, err := generate.GetBool(params, "leave-stdin-open", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -382,26 +383,26 @@ func (JobV1) Generate(genericParams map[string]interface{}) (runtime.Object, err
|
||||||
|
|
||||||
type CronJobV2Alpha1 struct{}
|
type CronJobV2Alpha1 struct{}
|
||||||
|
|
||||||
func (CronJobV2Alpha1) ParamNames() []GeneratorParam {
|
func (CronJobV2Alpha1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"default-name", false},
|
{Name: "default-name", Required: false},
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"image", true},
|
{Name: "image", Required: true},
|
||||||
{"image-pull-policy", false},
|
{Name: "image-pull-policy", Required: false},
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
{"hostport", false},
|
{Name: "hostport", Required: false},
|
||||||
{"stdin", false},
|
{Name: "stdin", Required: false},
|
||||||
{"leave-stdin-open", false},
|
{Name: "leave-stdin-open", Required: false},
|
||||||
{"tty", false},
|
{Name: "tty", Required: false},
|
||||||
{"command", false},
|
{Name: "command", Required: false},
|
||||||
{"args", false},
|
{Name: "args", Required: false},
|
||||||
{"env", false},
|
{Name: "env", Required: false},
|
||||||
{"requests", false},
|
{Name: "requests", Required: false},
|
||||||
{"limits", false},
|
{Name: "limits", Required: false},
|
||||||
{"restart", false},
|
{Name: "restart", Required: false},
|
||||||
{"schedule", true},
|
{Name: "schedule", Required: true},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -441,7 +442,7 @@ func (CronJobV2Alpha1) Generate(genericParams map[string]interface{}) (runtime.O
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
leaveStdinOpen, err := GetBool(params, "leave-stdin-open", false)
|
leaveStdinOpen, err := generate.GetBool(params, "leave-stdin-open", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -483,26 +484,26 @@ func (CronJobV2Alpha1) Generate(genericParams map[string]interface{}) (runtime.O
|
||||||
|
|
||||||
type CronJobV1Beta1 struct{}
|
type CronJobV1Beta1 struct{}
|
||||||
|
|
||||||
func (CronJobV1Beta1) ParamNames() []GeneratorParam {
|
func (CronJobV1Beta1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"default-name", false},
|
{Name: "default-name", Required: false},
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"image", true},
|
{Name: "image", Required: true},
|
||||||
{"image-pull-policy", false},
|
{Name: "image-pull-policy", Required: false},
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
{"hostport", false},
|
{Name: "hostport", Required: false},
|
||||||
{"stdin", false},
|
{Name: "stdin", Required: false},
|
||||||
{"leave-stdin-open", false},
|
{Name: "leave-stdin-open", Required: false},
|
||||||
{"tty", false},
|
{Name: "tty", Required: false},
|
||||||
{"command", false},
|
{Name: "command", Required: false},
|
||||||
{"args", false},
|
{Name: "args", Required: false},
|
||||||
{"env", false},
|
{Name: "env", Required: false},
|
||||||
{"requests", false},
|
{Name: "requests", Required: false},
|
||||||
{"limits", false},
|
{Name: "limits", Required: false},
|
||||||
{"restart", false},
|
{Name: "restart", Required: false},
|
||||||
{"schedule", true},
|
{Name: "schedule", Required: true},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -542,7 +543,7 @@ func (CronJobV1Beta1) Generate(genericParams map[string]interface{}) (runtime.Ob
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
leaveStdinOpen, err := GetBool(params, "leave-stdin-open", false)
|
leaveStdinOpen, err := generate.GetBool(params, "leave-stdin-open", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -584,24 +585,24 @@ func (CronJobV1Beta1) Generate(genericParams map[string]interface{}) (runtime.Ob
|
||||||
|
|
||||||
type BasicReplicationController struct{}
|
type BasicReplicationController struct{}
|
||||||
|
|
||||||
func (BasicReplicationController) ParamNames() []GeneratorParam {
|
func (BasicReplicationController) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"default-name", false},
|
{Name: "default-name", Required: false},
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"replicas", true},
|
{Name: "replicas", Required: true},
|
||||||
{"image", true},
|
{Name: "image", Required: true},
|
||||||
{"image-pull-policy", false},
|
{Name: "image-pull-policy", Required: false},
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
{"hostport", false},
|
{Name: "hostport", Required: false},
|
||||||
{"stdin", false},
|
{Name: "stdin", Required: false},
|
||||||
{"tty", false},
|
{Name: "tty", Required: false},
|
||||||
{"command", false},
|
{Name: "command", Required: false},
|
||||||
{"args", false},
|
{Name: "args", Required: false},
|
||||||
{"env", false},
|
{Name: "env", Required: false},
|
||||||
{"requests", false},
|
{Name: "requests", Required: false},
|
||||||
{"limits", false},
|
{Name: "limits", Required: false},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,12 +650,12 @@ func HandleResourceRequirementsV1(params map[string]string) (v1.ResourceRequirem
|
||||||
|
|
||||||
// makePodSpec returns PodSpec filled with passed parameters.
|
// makePodSpec returns PodSpec filled with passed parameters.
|
||||||
func makePodSpec(params map[string]string, name string) (*v1.PodSpec, error) {
|
func makePodSpec(params map[string]string, name string) (*v1.PodSpec, error) {
|
||||||
stdin, err := GetBool(params, "stdin", false)
|
stdin, err := generate.GetBool(params, "stdin", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
tty, err := GetBool(params, "tty", false)
|
tty, err := generate.GetBool(params, "tty", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -747,7 +748,7 @@ func (BasicReplicationController) Generate(genericParams map[string]interface{})
|
||||||
// updatePodContainers updates PodSpec.Containers with passed parameters.
|
// updatePodContainers updates PodSpec.Containers with passed parameters.
|
||||||
func updatePodContainers(params map[string]string, args []string, envs []v1.EnvVar, imagePullPolicy v1.PullPolicy, podSpec *v1.PodSpec) error {
|
func updatePodContainers(params map[string]string, args []string, envs []v1.EnvVar, imagePullPolicy v1.PullPolicy, podSpec *v1.PodSpec) error {
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
command, err := GetBool(params, "command", false)
|
command, err := generate.GetBool(params, "command", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -806,25 +807,25 @@ func updatePodPorts(params map[string]string, podSpec *v1.PodSpec) (err error) {
|
||||||
|
|
||||||
type BasicPod struct{}
|
type BasicPod struct{}
|
||||||
|
|
||||||
func (BasicPod) ParamNames() []GeneratorParam {
|
func (BasicPod) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"default-name", false},
|
{Name: "default-name", Required: false},
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"image", true},
|
{Name: "image", Required: true},
|
||||||
{"image-pull-policy", false},
|
{Name: "image-pull-policy", Required: false},
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
{"hostport", false},
|
{Name: "hostport", Required: false},
|
||||||
{"stdin", false},
|
{Name: "stdin", Required: false},
|
||||||
{"leave-stdin-open", false},
|
{Name: "leave-stdin-open", Required: false},
|
||||||
{"tty", false},
|
{Name: "tty", Required: false},
|
||||||
{"restart", false},
|
{Name: "restart", Required: false},
|
||||||
{"command", false},
|
{Name: "command", Required: false},
|
||||||
{"args", false},
|
{Name: "args", Required: false},
|
||||||
{"env", false},
|
{Name: "env", Required: false},
|
||||||
{"requests", false},
|
{Name: "requests", Required: false},
|
||||||
{"limits", false},
|
{Name: "limits", Required: false},
|
||||||
{"serviceaccount", false},
|
{Name: "serviceaccount", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -854,16 +855,16 @@ func (BasicPod) Generate(genericParams map[string]interface{}) (runtime.Object,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
stdin, err := GetBool(params, "stdin", false)
|
stdin, err := generate.GetBool(params, "stdin", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
leaveStdinOpen, err := GetBool(params, "leave-stdin-open", false)
|
leaveStdinOpen, err := generate.GetBool(params, "leave-stdin-open", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
tty, err := GetBool(params, "tty", false)
|
tty, err := generate.GetBool(params, "tty", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -26,6 +26,7 @@ import (
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/validation"
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util"
|
"k8s.io/kubernetes/pkg/kubectl/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
||||||
)
|
)
|
||||||
|
@ -47,14 +48,14 @@ type SecretGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection
|
// Ensure it supports the generator pattern that uses parameter injection
|
||||||
var _ Generator = &SecretGeneratorV1{}
|
var _ generate.Generator = &SecretGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &SecretGeneratorV1{}
|
var _ generate.StructuredGenerator = &SecretGeneratorV1{}
|
||||||
|
|
||||||
// Generate returns a secret using the specified parameters
|
// Generate returns a secret using the specified parameters
|
||||||
func (s SecretGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (s SecretGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), genericParams)
|
err := generate.ValidateParams(s.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -112,15 +113,15 @@ func (s SecretGeneratorV1) Generate(genericParams map[string]interface{}) (runti
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
||||||
func (s SecretGeneratorV1) ParamNames() []GeneratorParam {
|
func (s SecretGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"type", false},
|
{Name: "type", Required: false},
|
||||||
{"from-file", false},
|
{Name: "from-file", Required: false},
|
||||||
{"from-literal", false},
|
{Name: "from-literal", Required: false},
|
||||||
{"from-env-file", false},
|
{Name: "from-env-file", Required: false},
|
||||||
{"force", false},
|
{Name: "force", Required: false},
|
||||||
{"append-hash", false},
|
{Name: "append-hash", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
@ -22,7 +22,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/credentialprovider"
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -45,14 +45,14 @@ type SecretForDockerRegistryGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection
|
// Ensure it supports the generator pattern that uses parameter injection
|
||||||
var _ Generator = &SecretForDockerRegistryGeneratorV1{}
|
var _ generate.Generator = &SecretForDockerRegistryGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &SecretForDockerRegistryGeneratorV1{}
|
var _ generate.StructuredGenerator = &SecretForDockerRegistryGeneratorV1{}
|
||||||
|
|
||||||
// Generate returns a secret using the specified parameters
|
// Generate returns a secret using the specified parameters
|
||||||
func (s SecretForDockerRegistryGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (s SecretForDockerRegistryGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), genericParams)
|
err := generate.ValidateParams(s.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -114,15 +114,15 @@ func (s SecretForDockerRegistryGeneratorV1) StructuredGenerate() (runtime.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
||||||
func (s SecretForDockerRegistryGeneratorV1) ParamNames() []GeneratorParam {
|
func (s SecretForDockerRegistryGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"from-file", false},
|
{Name: "from-file", Required: false},
|
||||||
{"docker-username", true},
|
{Name: "docker-username", Required: true},
|
||||||
{"docker-email", false},
|
{Name: "docker-email", Required: false},
|
||||||
{"docker-password", true},
|
{Name: "docker-password", Required: true},
|
||||||
{"docker-server", true},
|
{Name: "docker-server", Required: true},
|
||||||
{"append-hash", false},
|
{Name: "append-hash", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,15 +148,34 @@ func (s SecretForDockerRegistryGeneratorV1) validate() error {
|
||||||
|
|
||||||
// handleDockerCfgJsonContent serializes a ~/.docker/config.json file
|
// handleDockerCfgJsonContent serializes a ~/.docker/config.json file
|
||||||
func handleDockerCfgJsonContent(username, password, email, server string) ([]byte, error) {
|
func handleDockerCfgJsonContent(username, password, email, server string) ([]byte, error) {
|
||||||
dockercfgAuth := credentialprovider.DockerConfigEntry{
|
dockercfgAuth := DockerConfigEntry{
|
||||||
Username: username,
|
Username: username,
|
||||||
Password: password,
|
Password: password,
|
||||||
Email: email,
|
Email: email,
|
||||||
}
|
}
|
||||||
|
|
||||||
dockerCfgJson := credentialprovider.DockerConfigJson{
|
dockerCfgJson := DockerConfigJson{
|
||||||
Auths: map[string]credentialprovider.DockerConfigEntry{server: dockercfgAuth},
|
Auths: map[string]DockerConfigEntry{server: dockercfgAuth},
|
||||||
}
|
}
|
||||||
|
|
||||||
return json.Marshal(dockerCfgJson)
|
return json.Marshal(dockerCfgJson)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DockerConfigJson represents a local docker auth config file
|
||||||
|
// for pulling images.
|
||||||
|
type DockerConfigJson struct {
|
||||||
|
Auths DockerConfig `json:"auths"`
|
||||||
|
// +optional
|
||||||
|
HttpHeaders map[string]string `json:"HttpHeaders,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DockerConfig represents the config file used by the docker CLI.
|
||||||
|
// This config that represents the credentials that should be used
|
||||||
|
// when pulling images from specific image repositories.
|
||||||
|
type DockerConfig map[string]DockerConfigEntry
|
||||||
|
|
||||||
|
type DockerConfigEntry struct {
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
Email string
|
||||||
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -73,7 +73,7 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
|
||||||
},
|
},
|
||||||
expected: &v1.Secret{
|
expected: &v1.Secret{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "foo-548cm7fgdh",
|
Name: "foo-7566tc6mgc",
|
||||||
},
|
},
|
||||||
Data: map[string][]byte{
|
Data: map[string][]byte{
|
||||||
v1.DockerConfigJsonKey: secretData,
|
v1.DockerConfigJsonKey: secretData,
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
|
@ -23,6 +23,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
"k8s.io/kubernetes/pkg/kubectl/util/hash"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -39,14 +40,14 @@ type SecretForTLSGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameter injection
|
// Ensure it supports the generator pattern that uses parameter injection
|
||||||
var _ Generator = &SecretForTLSGeneratorV1{}
|
var _ generate.Generator = &SecretForTLSGeneratorV1{}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &SecretForTLSGeneratorV1{}
|
var _ generate.StructuredGenerator = &SecretForTLSGeneratorV1{}
|
||||||
|
|
||||||
// Generate returns a secret using the specified parameters
|
// Generate returns a secret using the specified parameters
|
||||||
func (s SecretForTLSGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func (s SecretForTLSGeneratorV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), genericParams)
|
err := generate.ValidateParams(s.ParamNames(), genericParams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -121,12 +122,12 @@ func readFile(file string) ([]byte, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
// ParamNames returns the set of supported input parameters when using the parameter injection generator pattern
|
||||||
func (s SecretForTLSGeneratorV1) ParamNames() []GeneratorParam {
|
func (s SecretForTLSGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"key", true},
|
{Name: "key", Required: true},
|
||||||
{"cert", true},
|
{Name: "cert", Required: true},
|
||||||
{"append-hash", false},
|
{Name: "append-hash", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -25,58 +25,59 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// The only difference between ServiceGeneratorV1 and V2 is that the service port is named "default" in V1, while it is left unnamed in V2.
|
// The only difference between ServiceGeneratorV1 and V2 is that the service port is named "default" in V1, while it is left unnamed in V2.
|
||||||
type ServiceGeneratorV1 struct{}
|
type ServiceGeneratorV1 struct{}
|
||||||
|
|
||||||
func (ServiceGeneratorV1) ParamNames() []GeneratorParam {
|
func (ServiceGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return paramNames()
|
return paramNames()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ServiceGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (ServiceGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
params["port-name"] = "default"
|
params["port-name"] = "default"
|
||||||
return generate(params)
|
return generateService(params)
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServiceGeneratorV2 struct{}
|
type ServiceGeneratorV2 struct{}
|
||||||
|
|
||||||
func (ServiceGeneratorV2) ParamNames() []GeneratorParam {
|
func (ServiceGeneratorV2) ParamNames() []generate.GeneratorParam {
|
||||||
return paramNames()
|
return paramNames()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ServiceGeneratorV2) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (ServiceGeneratorV2) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
return generate(params)
|
return generateService(params)
|
||||||
}
|
}
|
||||||
|
|
||||||
func paramNames() []GeneratorParam {
|
func paramNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"default-name", true},
|
{Name: "default-name", Required: true},
|
||||||
{"name", false},
|
{Name: "name", Required: false},
|
||||||
{"selector", true},
|
{Name: "selector", Required: true},
|
||||||
// port will be used if a user specifies --port OR the exposed object
|
// port will be used if a user specifies --port OR the exposed object
|
||||||
// has one port
|
// has one port
|
||||||
{"port", false},
|
{Name: "port", Required: false},
|
||||||
// ports will be used iff a user doesn't specify --port AND the
|
// ports will be used iff a user doesn't specify --port AND the
|
||||||
// exposed object has multiple ports
|
// exposed object has multiple ports
|
||||||
{"ports", false},
|
{Name: "ports", Required: false},
|
||||||
{"labels", false},
|
{Name: "labels", Required: false},
|
||||||
{"external-ip", false},
|
{Name: "external-ip", Required: false},
|
||||||
{"load-balancer-ip", false},
|
{Name: "load-balancer-ip", Required: false},
|
||||||
{"type", false},
|
{Name: "type", Required: false},
|
||||||
{"protocol", false},
|
{Name: "protocol", Required: false},
|
||||||
// protocols will be used to keep port-protocol mapping derived from
|
// protocols will be used to keep port-protocol mapping derived from
|
||||||
// exposed object
|
// exposed object
|
||||||
{"protocols", false},
|
{Name: "protocols", Required: false},
|
||||||
{"container-port", false}, // alias of target-port
|
{Name: "container-port", Required: false}, // alias of target-port
|
||||||
{"target-port", false},
|
{Name: "target-port", Required: false},
|
||||||
{"port-name", false},
|
{Name: "port-name", Required: false},
|
||||||
{"session-affinity", false},
|
{Name: "session-affinity", Required: false},
|
||||||
{"cluster-ip", false},
|
{Name: "cluster-ip", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
func generateService(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
params := map[string]string{}
|
params := map[string]string{}
|
||||||
for key, value := range genericParams {
|
for key, value := range genericParams {
|
||||||
strVal, isString := value.(string)
|
strVal, isString := value.(string)
|
||||||
|
@ -89,7 +90,7 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
if !found || len(selectorString) == 0 {
|
if !found || len(selectorString) == 0 {
|
||||||
return nil, fmt.Errorf("'selector' is a required parameter.")
|
return nil, fmt.Errorf("'selector' is a required parameter.")
|
||||||
}
|
}
|
||||||
selector, err := ParseLabels(selectorString)
|
selector, err := generate.ParseLabels(selectorString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -97,7 +98,7 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
labelsString, found := params["labels"]
|
labelsString, found := params["labels"]
|
||||||
var labels map[string]string
|
var labels map[string]string
|
||||||
if found && len(labelsString) > 0 {
|
if found && len(labelsString) > 0 {
|
||||||
labels, err = ParseLabels(labelsString)
|
labels, err = generate.ParseLabels(labelsString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -123,7 +124,7 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
||||||
protocolsString, found := params["protocols"]
|
protocolsString, found := params["protocols"]
|
||||||
var portProtocolMap map[string]string
|
var portProtocolMap map[string]string
|
||||||
if found && len(protocolsString) > 0 {
|
if found && len(protocolsString) > 0 {
|
||||||
portProtocolMap, err = ParseProtocols(protocolsString)
|
portProtocolMap, err = generate.ParseProtocols(protocolsString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -26,6 +26,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
"k8s.io/apimachinery/pkg/util/validation"
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServiceCommonGeneratorV1 struct {
|
type ServiceCommonGeneratorV1 struct {
|
||||||
|
@ -54,31 +55,31 @@ type ServiceExternalNameGeneratorV1 struct {
|
||||||
ServiceCommonGeneratorV1
|
ServiceCommonGeneratorV1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ServiceClusterIPGeneratorV1) ParamNames() []GeneratorParam {
|
func (ServiceClusterIPGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"tcp", true},
|
{Name: "tcp", Required: true},
|
||||||
{"clusterip", false},
|
{Name: "clusterip", Required: false},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (ServiceNodePortGeneratorV1) ParamNames() []GeneratorParam {
|
func (ServiceNodePortGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"tcp", true},
|
{Name: "tcp", Required: true},
|
||||||
{"nodeport", true},
|
{Name: "nodeport", Required: true},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (ServiceLoadBalancerGeneratorV1) ParamNames() []GeneratorParam {
|
func (ServiceLoadBalancerGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"tcp", true},
|
{Name: "tcp", Required: true},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ServiceExternalNameGeneratorV1) ParamNames() []GeneratorParam {
|
func (ServiceExternalNameGeneratorV1) ParamNames() []generate.GeneratorParam {
|
||||||
return []GeneratorParam{
|
return []generate.GeneratorParam{
|
||||||
{"name", true},
|
{Name: "name", Required: true},
|
||||||
{"externalname", true},
|
{Name: "externalname", Required: true},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +139,7 @@ func (s ServiceCommonGeneratorV1) GenerateCommon(params map[string]interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s ServiceLoadBalancerGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (s ServiceLoadBalancerGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), params)
|
err := generate.ValidateParams(s.ParamNames(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -151,7 +152,7 @@ func (s ServiceLoadBalancerGeneratorV1) Generate(params map[string]interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s ServiceNodePortGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (s ServiceNodePortGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), params)
|
err := generate.ValidateParams(s.ParamNames(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -164,7 +165,7 @@ func (s ServiceNodePortGeneratorV1) Generate(params map[string]interface{}) (run
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s ServiceClusterIPGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (s ServiceClusterIPGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), params)
|
err := generate.ValidateParams(s.ParamNames(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -177,7 +178,7 @@ func (s ServiceClusterIPGeneratorV1) Generate(params map[string]interface{}) (ru
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s ServiceExternalNameGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
func (s ServiceExternalNameGeneratorV1) Generate(params map[string]interface{}) (runtime.Object, error) {
|
||||||
err := ValidateParams(s.ParamNames(), params)
|
err := generate.ValidateParams(s.ParamNames(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -23,12 +23,13 @@ import (
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGenerateService(t *testing.T) {
|
func TestGenerateService(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
generator Generator
|
generator generate.Generator
|
||||||
params map[string]interface{}
|
params map[string]interface{}
|
||||||
expected v1.Service
|
expected v1.Service
|
||||||
}{
|
}{
|
|
@ -14,13 +14,14 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ServiceAccountGeneratorV1 supports stable generation of a service account
|
// ServiceAccountGeneratorV1 supports stable generation of a service account
|
||||||
|
@ -30,7 +31,7 @@ type ServiceAccountGeneratorV1 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure it supports the generator pattern that uses parameters specified during construction
|
// Ensure it supports the generator pattern that uses parameters specified during construction
|
||||||
var _ StructuredGenerator = &ServiceAccountGeneratorV1{}
|
var _ generate.StructuredGenerator = &ServiceAccountGeneratorV1{}
|
||||||
|
|
||||||
// StructuredGenerate outputs a service account object using the configured fields
|
// StructuredGenerate outputs a service account object using the configured fields
|
||||||
func (g *ServiceAccountGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
func (g *ServiceAccountGeneratorV1) StructuredGenerate() (runtime.Object, error) {
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kubectl
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
|
@ -23,6 +23,7 @@ go_library(
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
|
"//pkg/kubectl/generate:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//pkg/kubectl/util/podutils:go_default_library",
|
"//pkg/kubectl/util/podutils:go_default_library",
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
|
|
|
@ -25,7 +25,7 @@ import (
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// mapBasedSelectorForObject returns the map-based selector associated with the provided object. If a
|
// mapBasedSelectorForObject returns the map-based selector associated with the provided object. If a
|
||||||
|
@ -35,19 +35,19 @@ func mapBasedSelectorForObject(object runtime.Object) (string, error) {
|
||||||
// TODO: replace with a swagger schema based approach (identify pod selector via schema introspection)
|
// TODO: replace with a swagger schema based approach (identify pod selector via schema introspection)
|
||||||
switch t := object.(type) {
|
switch t := object.(type) {
|
||||||
case *corev1.ReplicationController:
|
case *corev1.ReplicationController:
|
||||||
return kubectl.MakeLabels(t.Spec.Selector), nil
|
return generate.MakeLabels(t.Spec.Selector), nil
|
||||||
|
|
||||||
case *corev1.Pod:
|
case *corev1.Pod:
|
||||||
if len(t.Labels) == 0 {
|
if len(t.Labels) == 0 {
|
||||||
return "", fmt.Errorf("the pod has no labels and cannot be exposed")
|
return "", fmt.Errorf("the pod has no labels and cannot be exposed")
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Labels), nil
|
return generate.MakeLabels(t.Labels), nil
|
||||||
|
|
||||||
case *corev1.Service:
|
case *corev1.Service:
|
||||||
if t.Spec.Selector == nil {
|
if t.Spec.Selector == nil {
|
||||||
return "", fmt.Errorf("the service has no pod selector set")
|
return "", fmt.Errorf("the service has no pod selector set")
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector), nil
|
return generate.MakeLabels(t.Spec.Selector), nil
|
||||||
|
|
||||||
case *extensionsv1beta1.Deployment:
|
case *extensionsv1beta1.Deployment:
|
||||||
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
||||||
|
@ -55,28 +55,28 @@ func mapBasedSelectorForObject(object runtime.Object) (string, error) {
|
||||||
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
||||||
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
return generate.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
||||||
case *appsv1.Deployment:
|
case *appsv1.Deployment:
|
||||||
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
||||||
// operator, DoubleEquals operator and In operator with only one element in the set.
|
// operator, DoubleEquals operator and In operator with only one element in the set.
|
||||||
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
||||||
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
return generate.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
||||||
case *appsv1beta2.Deployment:
|
case *appsv1beta2.Deployment:
|
||||||
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
||||||
// operator, DoubleEquals operator and In operator with only one element in the set.
|
// operator, DoubleEquals operator and In operator with only one element in the set.
|
||||||
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
||||||
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
return generate.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
||||||
case *appsv1beta1.Deployment:
|
case *appsv1beta1.Deployment:
|
||||||
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
||||||
// operator, DoubleEquals operator and In operator with only one element in the set.
|
// operator, DoubleEquals operator and In operator with only one element in the set.
|
||||||
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
||||||
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
return generate.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
||||||
|
|
||||||
case *extensionsv1beta1.ReplicaSet:
|
case *extensionsv1beta1.ReplicaSet:
|
||||||
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
||||||
|
@ -84,21 +84,21 @@ func mapBasedSelectorForObject(object runtime.Object) (string, error) {
|
||||||
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
||||||
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
return generate.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
||||||
case *appsv1.ReplicaSet:
|
case *appsv1.ReplicaSet:
|
||||||
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
||||||
// operator, DoubleEquals operator and In operator with only one element in the set.
|
// operator, DoubleEquals operator and In operator with only one element in the set.
|
||||||
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
||||||
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
return generate.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
||||||
case *appsv1beta2.ReplicaSet:
|
case *appsv1beta2.ReplicaSet:
|
||||||
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
// TODO(madhusudancs): Make this smarter by admitting MatchExpressions with Equals
|
||||||
// operator, DoubleEquals operator and In operator with only one element in the set.
|
// operator, DoubleEquals operator and In operator with only one element in the set.
|
||||||
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
if len(t.Spec.Selector.MatchExpressions) > 0 {
|
||||||
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
return "", fmt.Errorf("couldn't convert expressions - \"%+v\" to map-based selector format", t.Spec.Selector.MatchExpressions)
|
||||||
}
|
}
|
||||||
return kubectl.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
return generate.MakeLabels(t.Spec.Selector.MatchLabels), nil
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return "", fmt.Errorf("cannot extract pod selector from %T", object)
|
return "", fmt.Errorf("cannot extract pod selector from %T", object)
|
||||||
|
|
|
@ -57,11 +57,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/printers"
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
legacyscheme.Scheme.AddKnownTypes(schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}, &TestPrintType{})
|
|
||||||
legacyscheme.Scheme.AddKnownTypes(schema.GroupVersion{Group: "", Version: "v1"}, &TestPrintType{})
|
|
||||||
}
|
|
||||||
|
|
||||||
var testData = TestStruct{
|
var testData = TestStruct{
|
||||||
TypeMeta: metav1.TypeMeta{APIVersion: "foo/bar", Kind: "TestStruct"},
|
TypeMeta: metav1.TypeMeta{APIVersion: "foo/bar", Kind: "TestStruct"},
|
||||||
Key: "testValue",
|
Key: "testValue",
|
||||||
|
|
Loading…
Reference in New Issue