From d12a8a8d4854241db7cf980a8ce94a776b3f437e Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Tue, 10 Apr 2018 16:21:50 +0200 Subject: [PATCH] Move all create subcommands to its own subdirectory --- build/visible_to/BUILD | 12 ++ hack/.golint_failures | 1 + pkg/kubectl/cmd/BUILD | 45 +------- pkg/kubectl/cmd/apply.go | 4 +- pkg/kubectl/cmd/autoscale.go | 2 +- pkg/kubectl/cmd/cmd.go | 3 +- pkg/kubectl/cmd/create/BUILD | 108 ++++++++++++++++++ pkg/kubectl/cmd/{ => create}/create.go | 2 +- .../cmd/{ => create}/create_clusterrole.go | 2 +- .../{ => create}/create_clusterrole_test.go | 16 ++- .../{ => create}/create_clusterrolebinding.go | 2 +- .../create_clusterrolebinding_test.go | 8 +- .../cmd/{ => create}/create_configmap.go | 2 +- .../cmd/{ => create}/create_configmap_test.go | 9 +- .../cmd/{ => create}/create_deployment.go | 2 +- .../{ => create}/create_deployment_test.go | 2 +- pkg/kubectl/cmd/{ => create}/create_job.go | 2 +- .../cmd/{ => create}/create_job_test.go | 2 +- .../cmd/{ => create}/create_namespace.go | 2 +- .../cmd/{ => create}/create_namespace_test.go | 2 +- pkg/kubectl/cmd/{ => create}/create_pdb.go | 2 +- .../cmd/{ => create}/create_pdb_test.go | 2 +- .../cmd/{ => create}/create_priorityclass.go | 2 +- .../{ => create}/create_priorityclass_test.go | 2 +- pkg/kubectl/cmd/{ => create}/create_quota.go | 2 +- .../cmd/{ => create}/create_quota_test.go | 2 +- pkg/kubectl/cmd/{ => create}/create_role.go | 2 +- .../cmd/{ => create}/create_role_test.go | 2 +- .../cmd/{ => create}/create_rolebinding.go | 2 +- .../{ => create}/create_rolebinding_test.go | 2 +- pkg/kubectl/cmd/{ => create}/create_secret.go | 4 +- .../cmd/{ => create}/create_secret_test.go | 2 +- .../cmd/{ => create}/create_service.go | 4 +- .../cmd/{ => create}/create_service_test.go | 2 +- .../cmd/{ => create}/create_serviceaccount.go | 2 +- .../create_serviceaccount_test.go | 2 +- pkg/kubectl/cmd/{ => create}/create_test.go | 69 ++++++++++- pkg/kubectl/cmd/edit_test.go | 3 +- 38 files changed, 254 insertions(+), 82 deletions(-) create mode 100644 pkg/kubectl/cmd/create/BUILD rename pkg/kubectl/cmd/{ => create}/create.go (99%) rename pkg/kubectl/cmd/{ => create}/create_clusterrole.go (99%) rename pkg/kubectl/cmd/{ => create}/create_clusterrole_test.go (96%) rename pkg/kubectl/cmd/{ => create}/create_clusterrolebinding.go (99%) rename pkg/kubectl/cmd/{ => create}/create_clusterrolebinding_test.go (97%) rename pkg/kubectl/cmd/{ => create}/create_configmap.go (99%) rename pkg/kubectl/cmd/{ => create}/create_configmap_test.go (89%) rename pkg/kubectl/cmd/{ => create}/create_deployment.go (99%) rename pkg/kubectl/cmd/{ => create}/create_deployment_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_job.go (99%) rename pkg/kubectl/cmd/{ => create}/create_job_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_namespace.go (99%) rename pkg/kubectl/cmd/{ => create}/create_namespace_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_pdb.go (99%) rename pkg/kubectl/cmd/{ => create}/create_pdb_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_priorityclass.go (99%) rename pkg/kubectl/cmd/{ => create}/create_priorityclass_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_quota.go (99%) rename pkg/kubectl/cmd/{ => create}/create_quota_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_role.go (99%) rename pkg/kubectl/cmd/{ => create}/create_role_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_rolebinding.go (99%) rename pkg/kubectl/cmd/{ => create}/create_rolebinding_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_secret.go (99%) rename pkg/kubectl/cmd/{ => create}/create_secret_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_service.go (99%) rename pkg/kubectl/cmd/{ => create}/create_service_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_serviceaccount.go (99%) rename pkg/kubectl/cmd/{ => create}/create_serviceaccount_test.go (99%) rename pkg/kubectl/cmd/{ => create}/create_test.go (71%) diff --git a/build/visible_to/BUILD b/build/visible_to/BUILD index 094e9260fc..470b786f71 100644 --- a/build/visible_to/BUILD +++ b/build/visible_to/BUILD @@ -142,6 +142,13 @@ package_group( ], ) +package_group( + name = "pkg_kubectl_cmd_create_CONSUMERS", + packages = [ + "//pkg/kubectl/cmd", + ], +) + package_group( name = "pkg_kubectl_cmd_rollout_CONSUMERS", packages = [ @@ -169,6 +176,7 @@ package_group( "//pkg/kubectl/cmd", "//pkg/kubectl/cmd/auth", "//pkg/kubectl/cmd/config", + "//pkg/kubectl/cmd/create", "//pkg/kubectl/cmd/resource", "//pkg/kubectl/cmd/rollout", "//pkg/kubectl/cmd/set", @@ -190,6 +198,7 @@ package_group( packages = [ "//pkg/kubectl/cmd", "//pkg/kubectl/cmd/auth", + "//pkg/kubectl/cmd/create", "//pkg/kubectl/cmd/resource", "//pkg/kubectl/cmd/set", "//pkg/kubectl/explain", @@ -222,6 +231,7 @@ package_group( "//pkg/kubectl/cmd", "//pkg/kubectl/cmd/auth", "//pkg/kubectl/cmd/config", + "//pkg/kubectl/cmd/create", "//pkg/kubectl/cmd/resource", "//pkg/kubectl/cmd/rollout", "//pkg/kubectl/cmd/set", @@ -235,6 +245,7 @@ package_group( name = "pkg_kubectl_cmd_util_editor_CONSUMERS", packages = [ "//pkg/kubectl/cmd", + "//pkg/kubectl/cmd/create", "//pkg/kubectl/cmd/util", ], ) @@ -290,6 +301,7 @@ package_group( "//pkg/kubectl/cmd", "//pkg/kubectl/cmd/auth", "//pkg/kubectl/cmd/config", + "//pkg/kubectl/cmd/create", "//pkg/kubectl/cmd/resource", "//pkg/kubectl/cmd/rollout", "//pkg/kubectl/cmd/set", diff --git a/hack/.golint_failures b/hack/.golint_failures index 5323085626..1cec2f3c51 100644 --- a/hack/.golint_failures +++ b/hack/.golint_failures @@ -139,6 +139,7 @@ pkg/kubectl/categories pkg/kubectl/cmd pkg/kubectl/cmd/auth pkg/kubectl/cmd/config +pkg/kubectl/cmd/create pkg/kubectl/cmd/rollout pkg/kubectl/cmd/set pkg/kubectl/cmd/templates diff --git a/pkg/kubectl/cmd/BUILD b/pkg/kubectl/cmd/BUILD index 26811796c3..92a1356e5d 100644 --- a/pkg/kubectl/cmd/BUILD +++ b/pkg/kubectl/cmd/BUILD @@ -24,21 +24,6 @@ go_library( "completion.go", "convert.go", "cp.go", - "create.go", - "create_clusterrole.go", - "create_clusterrolebinding.go", - "create_configmap.go", - "create_deployment.go", - "create_job.go", - "create_namespace.go", - "create_pdb.go", - "create_priorityclass.go", - "create_quota.go", - "create_role.go", - "create_rolebinding.go", - "create_secret.go", - "create_service.go", - "create_serviceaccount.go", "delete.go", "describe.go", "diff.go", @@ -82,6 +67,7 @@ go_library( "//pkg/kubectl/apply/strategy:go_default_library", "//pkg/kubectl/cmd/auth:go_default_library", "//pkg/kubectl/cmd/config:go_default_library", + "//pkg/kubectl/cmd/create:go_default_library", "//pkg/kubectl/cmd/resource:go_default_library", "//pkg/kubectl/cmd/rollout:go_default_library", "//pkg/kubectl/cmd/scalejob:go_default_library", @@ -114,11 +100,8 @@ go_library( "//vendor/github.com/renstrom/dedent:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -144,9 +127,7 @@ go_library( "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", "//vendor/k8s.io/client-go/discovery:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/scale:go_default_library", "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", @@ -171,21 +152,6 @@ go_test( "cmd_test.go", "convert_test.go", "cp_test.go", - "create_clusterrole_test.go", - "create_clusterrolebinding_test.go", - "create_configmap_test.go", - "create_deployment_test.go", - "create_job_test.go", - "create_namespace_test.go", - "create_pdb_test.go", - "create_priorityclass_test.go", - "create_quota_test.go", - "create_role_test.go", - "create_rolebinding_test.go", - "create_secret_test.go", - "create_service_test.go", - "create_serviceaccount_test.go", - "create_test.go", "delete_test.go", "describe_test.go", "diff_test.go", @@ -222,6 +188,7 @@ go_test( "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/kubectl:go_default_library", + "//pkg/kubectl/cmd/create:go_default_library", "//pkg/kubectl/cmd/resource:go_default_library", "//pkg/kubectl/cmd/testing:go_default_library", "//pkg/kubectl/cmd/util:go_default_library", @@ -235,16 +202,10 @@ go_test( "//pkg/util/strings:go_default_library", "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", - "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/gopkg.in/yaml.v2:go_default_library", "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", @@ -261,7 +222,6 @@ go_test( "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", "//vendor/k8s.io/client-go/dynamic:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/rest/fake:go_default_library", "//vendor/k8s.io/client-go/scale/fake:go_default_library", @@ -286,6 +246,7 @@ filegroup( ":package-srcs", "//pkg/kubectl/cmd/auth:all-srcs", "//pkg/kubectl/cmd/config:all-srcs", + "//pkg/kubectl/cmd/create:all-srcs", "//pkg/kubectl/cmd/resource:all-srcs", "//pkg/kubectl/cmd/rollout:all-srcs", "//pkg/kubectl/cmd/scalejob:all-srcs", diff --git a/pkg/kubectl/cmd/apply.go b/pkg/kubectl/cmd/apply.go index 1e40495460..cae4fb129c 100644 --- a/pkg/kubectl/cmd/apply.go +++ b/pkg/kubectl/cmd/apply.go @@ -302,9 +302,11 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti if !dryRun { // Then create the resource and skip the three-way merge - if err := createAndRefresh(info); err != nil { + obj, err := resource.NewHelper(info.Client, info.Mapping).Create(info.Namespace, true, info.Object) + if err != nil { return cmdutil.AddSourceToErr("creating", info.Source, err) } + info.Refresh(obj, true) if uid, err := info.Mapping.UID(info.Object); err != nil { return err } else { diff --git a/pkg/kubectl/cmd/autoscale.go b/pkg/kubectl/cmd/autoscale.go index 2f4e520207..434849fa0d 100644 --- a/pkg/kubectl/cmd/autoscale.go +++ b/pkg/kubectl/cmd/autoscale.go @@ -129,7 +129,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s ScaleRefApiVersion: mapping.GroupVersionKind.GroupVersion().String(), } default: - return errUnsupportedGenerator(cmd, generatorName) + return cmdutil.UsageErrorf(cmd, "Generator %s not supported. ", generatorName) } // Generate new object diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index c6fdab1748..cec570a49b 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -25,6 +25,7 @@ import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/kubernetes/pkg/kubectl/cmd/auth" cmdconfig "k8s.io/kubernetes/pkg/kubectl/cmd/config" + "k8s.io/kubernetes/pkg/kubectl/cmd/create" "k8s.io/kubernetes/pkg/kubectl/cmd/resource" "k8s.io/kubernetes/pkg/kubectl/cmd/rollout" "k8s.io/kubernetes/pkg/kubectl/cmd/set" @@ -249,7 +250,7 @@ func NewKubectlCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cob { Message: "Basic Commands (Beginner):", Commands: []*cobra.Command{ - NewCmdCreate(f, out, err), + create.NewCmdCreate(f, out, err), NewCmdExposeService(f, out), NewCmdRun(f, in, out, err), set.NewCmdSet(f, in, out, err), diff --git a/pkg/kubectl/cmd/create/BUILD b/pkg/kubectl/cmd/create/BUILD new file mode 100644 index 0000000000..9f42f29e85 --- /dev/null +++ b/pkg/kubectl/cmd/create/BUILD @@ -0,0 +1,108 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = [ + "create.go", + "create_clusterrole.go", + "create_clusterrolebinding.go", + "create_configmap.go", + "create_deployment.go", + "create_job.go", + "create_namespace.go", + "create_pdb.go", + "create_priorityclass.go", + "create_quota.go", + "create_role.go", + "create_rolebinding.go", + "create_secret.go", + "create_service.go", + "create_serviceaccount.go", + ], + importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/create", + visibility = ["//build/visible_to:pkg_kubectl_cmd_create_CONSUMERS"], + deps = [ + "//pkg/kubectl:go_default_library", + "//pkg/kubectl/cmd/templates:go_default_library", + "//pkg/kubectl/cmd/util:go_default_library", + "//pkg/kubectl/cmd/util/editor:go_default_library", + "//pkg/kubectl/resource:go_default_library", + "//pkg/kubectl/util/i18n:go_default_library", + "//vendor/github.com/spf13/cobra:go_default_library", + "//vendor/k8s.io/api/batch/v1:go_default_library", + "//vendor/k8s.io/api/batch/v1beta1:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/api/rbac/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", + ], +) + +go_test( + name = "go_default_test", + srcs = [ + "create_clusterrole_test.go", + "create_clusterrolebinding_test.go", + "create_configmap_test.go", + "create_deployment_test.go", + "create_job_test.go", + "create_namespace_test.go", + "create_pdb_test.go", + "create_priorityclass_test.go", + "create_quota_test.go", + "create_role_test.go", + "create_rolebinding_test.go", + "create_secret_test.go", + "create_service_test.go", + "create_serviceaccount_test.go", + "create_test.go", + ], + data = [ + "//examples:config", + ], + embed = [":go_default_library"], + deps = [ + "//pkg/api/legacyscheme:go_default_library", + "//pkg/api/testing:go_default_library", + "//pkg/apis/core:go_default_library", + "//pkg/kubectl:go_default_library", + "//pkg/kubectl/cmd/testing:go_default_library", + "//pkg/kubectl/cmd/util:go_default_library", + "//pkg/kubectl/scheme:go_default_library", + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/k8s.io/api/batch/v1:go_default_library", + "//vendor/k8s.io/api/batch/v1beta1:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/api/rbac/v1:go_default_library", + "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/client-go/dynamic:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/rest/fake:go_default_library", + "//vendor/k8s.io/client-go/testing: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"], +) diff --git a/pkg/kubectl/cmd/create.go b/pkg/kubectl/cmd/create/create.go similarity index 99% rename from pkg/kubectl/cmd/create.go rename to pkg/kubectl/cmd/create/create.go index 3f4eb25364..1ef0a86c66 100644 --- a/pkg/kubectl/cmd/create.go +++ b/pkg/kubectl/cmd/create/create.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "fmt" diff --git a/pkg/kubectl/cmd/create_clusterrole.go b/pkg/kubectl/cmd/create/create_clusterrole.go similarity index 99% rename from pkg/kubectl/cmd/create_clusterrole.go rename to pkg/kubectl/cmd/create/create_clusterrole.go index 7346907d4e..e30e84e034 100644 --- a/pkg/kubectl/cmd/create_clusterrole.go +++ b/pkg/kubectl/cmd/create/create_clusterrole.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "fmt" diff --git a/pkg/kubectl/cmd/create_clusterrole_test.go b/pkg/kubectl/cmd/create/create_clusterrole_test.go similarity index 96% rename from pkg/kubectl/cmd/create_clusterrole_test.go rename to pkg/kubectl/cmd/create/create_clusterrole_test.go index 6f2db36f15..61e32ab5f3 100644 --- a/pkg/kubectl/cmd/create_clusterrole_test.go +++ b/pkg/kubectl/cmd/create/create_clusterrole_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" @@ -24,9 +24,12 @@ import ( "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + restclient "k8s.io/client-go/rest" "k8s.io/client-go/rest/fake" "k8s.io/kubernetes/pkg/api/legacyscheme" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" + "k8s.io/kubernetes/pkg/kubectl/scheme" ) func TestCreateClusterRole(t *testing.T) { @@ -445,3 +448,14 @@ func TestClusterRoleValidate(t *testing.T) { }) } } + +func defaultClientConfig() *restclient.Config { + return &restclient.Config{ + APIPath: "/api", + ContentConfig: restclient.ContentConfig{ + NegotiatedSerializer: scheme.Codecs, + ContentType: runtime.ContentTypeJSON, + GroupVersion: &schema.GroupVersion{Version: "v1"}, + }, + } +} diff --git a/pkg/kubectl/cmd/create_clusterrolebinding.go b/pkg/kubectl/cmd/create/create_clusterrolebinding.go similarity index 99% rename from pkg/kubectl/cmd/create_clusterrolebinding.go rename to pkg/kubectl/cmd/create/create_clusterrolebinding.go index c7ce180c34..e15c3dddc4 100644 --- a/pkg/kubectl/cmd/create_clusterrolebinding.go +++ b/pkg/kubectl/cmd/create/create_clusterrolebinding.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_clusterrolebinding_test.go b/pkg/kubectl/cmd/create/create_clusterrolebinding_test.go similarity index 97% rename from pkg/kubectl/cmd/create_clusterrolebinding_test.go rename to pkg/kubectl/cmd/create/create_clusterrolebinding_test.go index 762edac824..c08e1dc894 100644 --- a/pkg/kubectl/cmd/create_clusterrolebinding_test.go +++ b/pkg/kubectl/cmd/create/create_clusterrolebinding_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" @@ -145,3 +145,9 @@ func (c *ClusterRoleBindingRESTClient) Post() *restclient.Request { } return restclient.NewRequest(c, "POST", &url.URL{Host: "localhost"}, c.VersionedAPIPath, config, serializers, nil, nil, 0) } + +func defaultHeader() http.Header { + header := http.Header{} + header.Set("Content-Type", runtime.ContentTypeJSON) + return header +} diff --git a/pkg/kubectl/cmd/create_configmap.go b/pkg/kubectl/cmd/create/create_configmap.go similarity index 99% rename from pkg/kubectl/cmd/create_configmap.go rename to pkg/kubectl/cmd/create/create_configmap.go index cb80b83e9f..f8b46eadab 100644 --- a/pkg/kubectl/cmd/create_configmap.go +++ b/pkg/kubectl/cmd/create/create_configmap.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_configmap_test.go b/pkg/kubectl/cmd/create/create_configmap_test.go similarity index 89% rename from pkg/kubectl/cmd/create_configmap_test.go rename to pkg/kubectl/cmd/create/create_configmap_test.go index a0d5bdaecb..fd0c995000 100644 --- a/pkg/kubectl/cmd/create_configmap_test.go +++ b/pkg/kubectl/cmd/create/create_configmap_test.go @@ -14,14 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" + "io" + "io/ioutil" "net/http" "testing" "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/rest/fake" "k8s.io/kubernetes/pkg/api/legacyscheme" @@ -61,3 +64,7 @@ func TestCreateConfigMap(t *testing.T) { t.Errorf("expected output: %s, but got: %s", expectedOutput, buf.String()) } } + +func objBody(codec runtime.Codec, obj runtime.Object) io.ReadCloser { + return ioutil.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(codec, obj)))) +} diff --git a/pkg/kubectl/cmd/create_deployment.go b/pkg/kubectl/cmd/create/create_deployment.go similarity index 99% rename from pkg/kubectl/cmd/create_deployment.go rename to pkg/kubectl/cmd/create/create_deployment.go index 74c73af250..96f5c4d27f 100644 --- a/pkg/kubectl/cmd/create_deployment.go +++ b/pkg/kubectl/cmd/create/create_deployment.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_deployment_test.go b/pkg/kubectl/cmd/create/create_deployment_test.go similarity index 99% rename from pkg/kubectl/cmd/create_deployment_test.go rename to pkg/kubectl/cmd/create/create_deployment_test.go index 37f11d4cec..edceac8ec1 100644 --- a/pkg/kubectl/cmd/create_deployment_test.go +++ b/pkg/kubectl/cmd/create/create_deployment_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_job.go b/pkg/kubectl/cmd/create/create_job.go similarity index 99% rename from pkg/kubectl/cmd/create_job.go rename to pkg/kubectl/cmd/create/create_job.go index 33c7ca0301..62ccd1f7c7 100644 --- a/pkg/kubectl/cmd/create_job.go +++ b/pkg/kubectl/cmd/create/create_job.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "fmt" diff --git a/pkg/kubectl/cmd/create_job_test.go b/pkg/kubectl/cmd/create/create_job_test.go similarity index 99% rename from pkg/kubectl/cmd/create_job_test.go rename to pkg/kubectl/cmd/create/create_job_test.go index 2e6989dc85..228a046e19 100644 --- a/pkg/kubectl/cmd/create_job_test.go +++ b/pkg/kubectl/cmd/create/create_job_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_namespace.go b/pkg/kubectl/cmd/create/create_namespace.go similarity index 99% rename from pkg/kubectl/cmd/create_namespace.go rename to pkg/kubectl/cmd/create/create_namespace.go index 7a0f2ec327..f9a97a48c0 100644 --- a/pkg/kubectl/cmd/create_namespace.go +++ b/pkg/kubectl/cmd/create/create_namespace.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_namespace_test.go b/pkg/kubectl/cmd/create/create_namespace_test.go similarity index 99% rename from pkg/kubectl/cmd/create_namespace_test.go rename to pkg/kubectl/cmd/create/create_namespace_test.go index c743ce7cf3..21e5021a1c 100644 --- a/pkg/kubectl/cmd/create_namespace_test.go +++ b/pkg/kubectl/cmd/create/create_namespace_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_pdb.go b/pkg/kubectl/cmd/create/create_pdb.go similarity index 99% rename from pkg/kubectl/cmd/create_pdb.go rename to pkg/kubectl/cmd/create/create_pdb.go index 83232cafb7..cbae47be2a 100644 --- a/pkg/kubectl/cmd/create_pdb.go +++ b/pkg/kubectl/cmd/create/create_pdb.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_pdb_test.go b/pkg/kubectl/cmd/create/create_pdb_test.go similarity index 99% rename from pkg/kubectl/cmd/create_pdb_test.go rename to pkg/kubectl/cmd/create/create_pdb_test.go index 2fb0956a4e..034a8cb42a 100644 --- a/pkg/kubectl/cmd/create_pdb_test.go +++ b/pkg/kubectl/cmd/create/create_pdb_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_priorityclass.go b/pkg/kubectl/cmd/create/create_priorityclass.go similarity index 99% rename from pkg/kubectl/cmd/create_priorityclass.go rename to pkg/kubectl/cmd/create/create_priorityclass.go index a01b50921d..96e8001569 100644 --- a/pkg/kubectl/cmd/create_priorityclass.go +++ b/pkg/kubectl/cmd/create/create_priorityclass.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_priorityclass_test.go b/pkg/kubectl/cmd/create/create_priorityclass_test.go similarity index 99% rename from pkg/kubectl/cmd/create_priorityclass_test.go rename to pkg/kubectl/cmd/create/create_priorityclass_test.go index 92f51774af..bf456095f1 100644 --- a/pkg/kubectl/cmd/create_priorityclass_test.go +++ b/pkg/kubectl/cmd/create/create_priorityclass_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_quota.go b/pkg/kubectl/cmd/create/create_quota.go similarity index 99% rename from pkg/kubectl/cmd/create_quota.go rename to pkg/kubectl/cmd/create/create_quota.go index d66d68a940..bc74aede06 100644 --- a/pkg/kubectl/cmd/create_quota.go +++ b/pkg/kubectl/cmd/create/create_quota.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_quota_test.go b/pkg/kubectl/cmd/create/create_quota_test.go similarity index 99% rename from pkg/kubectl/cmd/create_quota_test.go rename to pkg/kubectl/cmd/create/create_quota_test.go index 618ff36176..a3c27b788d 100644 --- a/pkg/kubectl/cmd/create_quota_test.go +++ b/pkg/kubectl/cmd/create/create_quota_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_role.go b/pkg/kubectl/cmd/create/create_role.go similarity index 99% rename from pkg/kubectl/cmd/create_role.go rename to pkg/kubectl/cmd/create/create_role.go index 89449e8ba1..36b167e267 100644 --- a/pkg/kubectl/cmd/create_role.go +++ b/pkg/kubectl/cmd/create/create_role.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "fmt" diff --git a/pkg/kubectl/cmd/create_role_test.go b/pkg/kubectl/cmd/create/create_role_test.go similarity index 99% rename from pkg/kubectl/cmd/create_role_test.go rename to pkg/kubectl/cmd/create/create_role_test.go index 5ed22e0436..6596f13cd3 100644 --- a/pkg/kubectl/cmd/create_role_test.go +++ b/pkg/kubectl/cmd/create/create_role_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_rolebinding.go b/pkg/kubectl/cmd/create/create_rolebinding.go similarity index 99% rename from pkg/kubectl/cmd/create_rolebinding.go rename to pkg/kubectl/cmd/create/create_rolebinding.go index 49eca5706f..760ae68600 100644 --- a/pkg/kubectl/cmd/create_rolebinding.go +++ b/pkg/kubectl/cmd/create/create_rolebinding.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_rolebinding_test.go b/pkg/kubectl/cmd/create/create_rolebinding_test.go similarity index 99% rename from pkg/kubectl/cmd/create_rolebinding_test.go rename to pkg/kubectl/cmd/create/create_rolebinding_test.go index d227857eb1..5e5db16406 100644 --- a/pkg/kubectl/cmd/create_rolebinding_test.go +++ b/pkg/kubectl/cmd/create/create_rolebinding_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_secret.go b/pkg/kubectl/cmd/create/create_secret.go similarity index 99% rename from pkg/kubectl/cmd/create_secret.go rename to pkg/kubectl/cmd/create/create_secret.go index 249aa760d2..65a5f7f214 100644 --- a/pkg/kubectl/cmd/create_secret.go +++ b/pkg/kubectl/cmd/create/create_secret.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" @@ -135,7 +135,7 @@ var ( When using the Docker command line to push images, you can authenticate to a given registry by running: '$ docker login DOCKER_REGISTRY_SERVER --username=DOCKER_USER --password=DOCKER_PASSWORD --email=DOCKER_EMAIL'. - That produces a ~/.dockercfg file that is used by subsequent 'docker push' and 'docker pull' commands to + That produces a ~/.dockercfg file that is used by subsequent 'docker push' and 'docker pull' commands to authenticate to the registry. The email address is optional. When creating applications, you may have a Docker registry that requires authentication. In order for the diff --git a/pkg/kubectl/cmd/create_secret_test.go b/pkg/kubectl/cmd/create/create_secret_test.go similarity index 99% rename from pkg/kubectl/cmd/create_secret_test.go rename to pkg/kubectl/cmd/create/create_secret_test.go index 1e3f739797..b4b80f5d0c 100644 --- a/pkg/kubectl/cmd/create_secret_test.go +++ b/pkg/kubectl/cmd/create/create_secret_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_service.go b/pkg/kubectl/cmd/create/create_service.go similarity index 99% rename from pkg/kubectl/cmd/create_service.go rename to pkg/kubectl/cmd/create/create_service.go index 72437b3501..7ee4c4597d 100644 --- a/pkg/kubectl/cmd/create_service.go +++ b/pkg/kubectl/cmd/create/create_service.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" @@ -236,7 +236,7 @@ var ( that exist off platform, on other clusters, or locally.`)) serviceExternalNameExample = templates.Examples(i18n.T(` - # Create a new ExternalName service named my-ns + # Create a new ExternalName service named my-ns kubectl create service externalname my-ns --external-name bar.com`)) ) diff --git a/pkg/kubectl/cmd/create_service_test.go b/pkg/kubectl/cmd/create/create_service_test.go similarity index 99% rename from pkg/kubectl/cmd/create_service_test.go rename to pkg/kubectl/cmd/create/create_service_test.go index 9abd224dac..2c204725ae 100644 --- a/pkg/kubectl/cmd/create_service_test.go +++ b/pkg/kubectl/cmd/create/create_service_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_serviceaccount.go b/pkg/kubectl/cmd/create/create_serviceaccount.go similarity index 99% rename from pkg/kubectl/cmd/create_serviceaccount.go rename to pkg/kubectl/cmd/create/create_serviceaccount.go index c4302c64cc..fb5379dd0d 100644 --- a/pkg/kubectl/cmd/create_serviceaccount.go +++ b/pkg/kubectl/cmd/create/create_serviceaccount.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "io" diff --git a/pkg/kubectl/cmd/create_serviceaccount_test.go b/pkg/kubectl/cmd/create/create_serviceaccount_test.go similarity index 99% rename from pkg/kubectl/cmd/create_serviceaccount_test.go rename to pkg/kubectl/cmd/create/create_serviceaccount_test.go index 7997ea7214..42d216a945 100644 --- a/pkg/kubectl/cmd/create_serviceaccount_test.go +++ b/pkg/kubectl/cmd/create/create_serviceaccount_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" diff --git a/pkg/kubectl/cmd/create_test.go b/pkg/kubectl/cmd/create/create_test.go similarity index 71% rename from pkg/kubectl/cmd/create_test.go rename to pkg/kubectl/cmd/create/create_test.go index 9b160374f0..a70247e1e9 100644 --- a/pkg/kubectl/cmd/create_test.go +++ b/pkg/kubectl/cmd/create/create_test.go @@ -14,17 +14,22 @@ See the License for the specific language governing permissions and limitations under the License. */ -package cmd +package create import ( "bytes" "net/http" "testing" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/dynamic" "k8s.io/client-go/rest/fake" "k8s.io/kubernetes/pkg/api/legacyscheme" + apitesting "k8s.io/kubernetes/pkg/api/testing" + api "k8s.io/kubernetes/pkg/apis/core" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" + cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/scheme" ) @@ -71,7 +76,7 @@ func TestCreateObject(t *testing.T) { errBuf := bytes.NewBuffer([]byte{}) cmd := NewCmdCreate(tf, buf, errBuf) - cmd.Flags().Set("filename", "../../../examples/guestbook/legacy/redis-master-controller.yaml") + cmd.Flags().Set("filename", "../../../../examples/guestbook/legacy/redis-master-controller.yaml") cmd.Flags().Set("output", "name") cmd.Run(cmd, []string{}) @@ -110,8 +115,8 @@ func TestCreateMultipleObject(t *testing.T) { errBuf := bytes.NewBuffer([]byte{}) cmd := NewCmdCreate(tf, buf, errBuf) - cmd.Flags().Set("filename", "../../../examples/guestbook/legacy/redis-master-controller.yaml") - cmd.Flags().Set("filename", "../../../examples/guestbook/frontend-service.yaml") + cmd.Flags().Set("filename", "../../../../examples/guestbook/legacy/redis-master-controller.yaml") + cmd.Flags().Set("filename", "../../../../examples/guestbook/frontend-service.yaml") cmd.Flags().Set("output", "name") cmd.Run(cmd, []string{}) @@ -149,7 +154,7 @@ func TestCreateDirectory(t *testing.T) { errBuf := bytes.NewBuffer([]byte{}) cmd := NewCmdCreate(tf, buf, errBuf) - cmd.Flags().Set("filename", "../../../examples/guestbook/legacy") + cmd.Flags().Set("filename", "../../../../examples/guestbook/legacy") cmd.Flags().Set("output", "name") cmd.Run(cmd, []string{}) @@ -157,3 +162,57 @@ func TestCreateDirectory(t *testing.T) { t.Errorf("unexpected output: %s", buf.String()) } } + +var unstructuredSerializer = dynamic.ContentConfig().NegotiatedSerializer + +func initTestErrorHandler(t *testing.T) { + cmdutil.BehaviorOnFatal(func(str string, code int) { + t.Errorf("Error running command (exit code %d): %s", code, str) + }) +} + +func testData() (*api.PodList, *api.ServiceList, *api.ReplicationControllerList) { + pods := &api.PodList{ + ListMeta: metav1.ListMeta{ + ResourceVersion: "15", + }, + Items: []api.Pod{ + { + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test", ResourceVersion: "10"}, + Spec: apitesting.DeepEqualSafePodSpec(), + }, + { + ObjectMeta: metav1.ObjectMeta{Name: "bar", Namespace: "test", ResourceVersion: "11"}, + Spec: apitesting.DeepEqualSafePodSpec(), + }, + }, + } + svc := &api.ServiceList{ + ListMeta: metav1.ListMeta{ + ResourceVersion: "16", + }, + Items: []api.Service{ + { + ObjectMeta: metav1.ObjectMeta{Name: "baz", Namespace: "test", ResourceVersion: "12"}, + Spec: api.ServiceSpec{ + SessionAffinity: "None", + Type: api.ServiceTypeClusterIP, + }, + }, + }, + } + rc := &api.ReplicationControllerList{ + ListMeta: metav1.ListMeta{ + ResourceVersion: "17", + }, + Items: []api.ReplicationController{ + { + ObjectMeta: metav1.ObjectMeta{Name: "rc1", Namespace: "test", ResourceVersion: "18"}, + Spec: api.ReplicationControllerSpec{ + Replicas: 1, + }, + }, + }, + } + return pods, svc, rc +} diff --git a/pkg/kubectl/cmd/edit_test.go b/pkg/kubectl/cmd/edit_test.go index fddc0c7e45..30fced8102 100644 --- a/pkg/kubectl/cmd/edit_test.go +++ b/pkg/kubectl/cmd/edit_test.go @@ -36,6 +36,7 @@ import ( "k8s.io/apimachinery/pkg/util/diff" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/rest/fake" + "k8s.io/kubernetes/pkg/kubectl/cmd/create" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/resource" @@ -236,7 +237,7 @@ func TestEdit(t *testing.T) { case "edit": cmd = NewCmdEdit(tf, buf, errBuf) case "create": - cmd = NewCmdCreate(tf, buf, errBuf) + cmd = create.NewCmdCreate(tf, buf, errBuf) cmd.Flags().Set("edit", "true") case "edit-last-applied": cmd = NewCmdApplyEditLastApplied(tf, buf, errBuf)