Move some pkg/kubectl into polymorphichelpers

This commit is contained in:
Sean Sullivan 2019-07-24 17:07:45 -07:00
parent a1f4c2ed21
commit 775b670e8b
23 changed files with 114 additions and 116 deletions

View File

@ -143,6 +143,7 @@ pkg/kubectl/describe/versioned
pkg/kubectl/generate pkg/kubectl/generate
pkg/kubectl/generate/versioned pkg/kubectl/generate/versioned
pkg/kubectl/metricsutil pkg/kubectl/metricsutil
pkg/kubectl/polymorphichelpers
pkg/kubelet pkg/kubelet
pkg/kubelet/apis/config pkg/kubelet/apis/config
pkg/kubelet/apis/config/v1beta1 pkg/kubelet/apis/config/v1beta1

View File

@ -9,25 +9,19 @@ load(
go_test( go_test(
name = "go_default_test", name = "go_default_test",
srcs = [ srcs = [
"history_test.go",
"rollback_test.go",
"rolling_updater_test.go", "rolling_updater_test.go",
"rollout_status_test.go",
"scale_test.go", "scale_test.go",
], ],
embed = [":go_default_library"], embed = [":go_default_library"],
deps = [ deps = [
"//staging/src/k8s.io/api/apps/v1: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/core/v1:go_default_library", "//staging/src/k8s.io/api/core/v1: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/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/testapigroup/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/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/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/diff: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/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
@ -48,45 +42,30 @@ go_library(
srcs = [ srcs = [
"conditions.go", "conditions.go",
"doc.go", "doc.go",
"history.go",
"interfaces.go", "interfaces.go",
"rollback.go",
"rolling_updater.go", "rolling_updater.go",
"rollout_status.go",
"scale.go", "scale.go",
], ],
importpath = "k8s.io/kubernetes/pkg/kubectl", importpath = "k8s.io/kubernetes/pkg/kubectl",
deps = [ deps = [
"//pkg/kubectl/describe/versioned:go_default_library",
"//staging/src/k8s.io/api/apps/v1: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/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/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/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels: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/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types: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/strategicpatch: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/typed/apps/v1:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library",
"//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/util/retry:go_default_library", "//staging/src/k8s.io/client-go/util/retry:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/apps:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util:go_default_library", "//staging/src/k8s.io/kubectl/pkg/util:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/deployment:go_default_library", "//staging/src/k8s.io/kubectl/pkg/util/deployment:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library", "//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/slice:go_default_library",
"//vendor/k8s.io/utils/integer:go_default_library", "//vendor/k8s.io/utils/integer:go_default_library",
"//vendor/k8s.io/utils/pointer:go_default_library", "//vendor/k8s.io/utils/pointer:go_default_library",
], ],

View File

@ -6,8 +6,8 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/annotate", importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/annotate",
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
deps = [ deps = [
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library", "//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/polymorphichelpers:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library", "//pkg/kubectl/util/i18n: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",

View File

@ -36,8 +36,8 @@ import (
"k8s.io/cli-runtime/pkg/resource" "k8s.io/cli-runtime/pkg/resource"
"k8s.io/kubectl/pkg/scheme" "k8s.io/kubectl/pkg/scheme"
"k8s.io/kubectl/pkg/util/templates" "k8s.io/kubectl/pkg/util/templates"
"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/polymorphichelpers"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
) )
@ -334,7 +334,7 @@ func validateNoAnnotationOverwrites(accessor metav1.Object, annotations map[stri
var buf bytes.Buffer var buf bytes.Buffer
for key := range annotations { for key := range annotations {
// change-cause annotation can always be overwritten // change-cause annotation can always be overwritten
if key == kubectl.ChangeCauseAnnotation { if key == polymorphichelpers.ChangeCauseAnnotation {
continue continue
} }
if value, found := accessor.GetAnnotations()[key]; found { if value, found := accessor.GetAnnotations()[key]; found {

View File

@ -297,7 +297,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro
if err != nil { if err != nil {
return err return err
} }
params["labels"] = generate.MakeLabels(labels) params["labels"] = polymorphichelpers.MakeLabels(labels)
} }
if err = generate.ValidateParams(names, params); err != nil { if err = generate.ValidateParams(names, params); err != nil {
return err return err

View File

@ -20,7 +20,6 @@ go_library(
"//build/visible_to:pkg_kubectl_cmd_rollout_CONSUMERS", "//build/visible_to:pkg_kubectl_cmd_rollout_CONSUMERS",
], ],
deps = [ deps = [
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/set:go_default_library", "//pkg/kubectl/cmd/set:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library", "//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/polymorphichelpers:go_default_library", "//pkg/kubectl/polymorphichelpers:go_default_library",

View File

@ -38,7 +38,6 @@ import (
"k8s.io/kubectl/pkg/scheme" "k8s.io/kubectl/pkg/scheme"
"k8s.io/kubectl/pkg/util/interrupt" "k8s.io/kubectl/pkg/util/interrupt"
"k8s.io/kubectl/pkg/util/templates" "k8s.io/kubectl/pkg/util/templates"
"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/polymorphichelpers" "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
@ -72,7 +71,7 @@ type RolloutStatusOptions struct {
Revision int64 Revision int64
Timeout time.Duration Timeout time.Duration
StatusViewerFn func(*meta.RESTMapping) (kubectl.StatusViewer, error) StatusViewerFn func(*meta.RESTMapping) (polymorphichelpers.StatusViewer, error)
Builder func() *resource.Builder Builder func() *resource.Builder
DynamicClient dynamic.Interface DynamicClient dynamic.Interface

View File

@ -174,14 +174,6 @@ func ParseProtocols(protocols interface{}) (map[string]string, error) {
return portProtocolMap, nil return portProtocolMap, nil
} }
func MakeLabels(labels map[string]string) string {
out := []string{}
for key, value := range labels {
out = append(out, fmt.Sprintf("%s=%s", key, value))
}
return strings.Join(out, ",")
}
// ParseLabels turns a string representation of a label set into a map[string]string // ParseLabels turns a string representation of a label set into a map[string]string
func ParseLabels(labelSpec interface{}) (map[string]string, error) { func ParseLabels(labelSpec interface{}) (map[string]string, error) {
labelString, isString := labelSpec.(string) labelString, isString := labelSpec.(string)

View File

@ -17,7 +17,9 @@ limitations under the License.
package generate package generate
import ( import (
"fmt"
"reflect" "reflect"
"strings"
"testing" "testing"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@ -265,6 +267,14 @@ func TestGetBool(t *testing.T) {
} }
} }
func makeLabels(labels map[string]string) string {
out := []string{}
for key, value := range labels {
out = append(out, fmt.Sprintf("%s=%s", key, value))
}
return strings.Join(out, ",")
}
func TestMakeParseLabels(t *testing.T) { func TestMakeParseLabels(t *testing.T) {
successCases := []struct { successCases := []struct {
name string name string
@ -294,7 +304,7 @@ func TestMakeParseLabels(t *testing.T) {
} }
for _, tt := range successCases { for _, tt := range successCases {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
labelString := MakeLabels(tt.labels) labelString := makeLabels(tt.labels)
got, err := ParseLabels(labelString) got, err := ParseLabels(labelString)
if err != nil { if err != nil {
t.Errorf("unexpected error :%v", err) t.Errorf("unexpected error :%v", err)

View File

@ -6,6 +6,7 @@ go_library(
"attachablepodforobject.go", "attachablepodforobject.go",
"canbeexposed.go", "canbeexposed.go",
"helpers.go", "helpers.go",
"history.go",
"historyviewer.go", "historyviewer.go",
"interface.go", "interface.go",
"logsforobject.go", "logsforobject.go",
@ -15,15 +16,16 @@ go_library(
"objectresumer.go", "objectresumer.go",
"portsforobject.go", "portsforobject.go",
"protocolsforobject.go", "protocolsforobject.go",
"rollback.go",
"rollbacker.go", "rollbacker.go",
"rollout_status.go",
"statusviewer.go", "statusviewer.go",
"updatepodspec.go", "updatepodspec.go",
], ],
importpath = "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers", importpath = "k8s.io/kubernetes/pkg/kubectl/polymorphichelpers",
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
deps = [ deps = [
"//pkg/kubectl:go_default_library", "//pkg/kubectl/describe/versioned:go_default_library",
"//pkg/kubectl/generate: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/apps/v1beta1:go_default_library",
"//staging/src/k8s.io/api/apps/v1beta2:go_default_library", "//staging/src/k8s.io/api/apps/v1beta2:go_default_library",
@ -32,19 +34,27 @@ go_library(
"//staging/src/k8s.io/api/batch/v2alpha1: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/apimachinery/pkg/api/equality: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",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels: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/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch: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/cli-runtime/pkg/genericclioptions:go_default_library", "//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library",
"//staging/src/k8s.io/client-go/tools/watch:go_default_library", "//staging/src/k8s.io/client-go/tools/watch:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/apps:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library", "//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/deployment:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library", "//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/slice:go_default_library",
], ],
) )
@ -53,12 +63,15 @@ go_test(
srcs = [ srcs = [
"canbeexposed_test.go", "canbeexposed_test.go",
"helpers_test.go", "helpers_test.go",
"history_test.go",
"logsforobject_test.go", "logsforobject_test.go",
"mapbasedselectorforobject_test.go", "mapbasedselectorforobject_test.go",
"objectpauser_test.go", "objectpauser_test.go",
"objectresumer_test.go", "objectresumer_test.go",
"portsforobject_test.go", "portsforobject_test.go",
"protocolsforobject_test.go", "protocolsforobject_test.go",
"rollback_test.go",
"rollout_status_test.go",
"updatepodspec_test.go", "updatepodspec_test.go",
], ],
embed = [":go_default_library"], embed = [":go_default_library"],
@ -73,13 +86,16 @@ go_test(
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", "//staging/src/k8s.io/api/extensions/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/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/labels:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels: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/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/diff: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/fake:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/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/kubectl/pkg/scheme:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library", "//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library",
], ],
) )

View File

@ -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 polymorphichelpers
import ( import (
"bytes" "bytes"
@ -34,7 +34,7 @@ import (
"k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
clientappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1" clientappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
kapps "k8s.io/kubectl/pkg/apps" "k8s.io/kubectl/pkg/apps"
deploymentutil "k8s.io/kubectl/pkg/util/deployment" deploymentutil "k8s.io/kubectl/pkg/util/deployment"
sliceutil "k8s.io/kubectl/pkg/util/slice" sliceutil "k8s.io/kubectl/pkg/util/slice"
describe "k8s.io/kubernetes/pkg/kubectl/describe/versioned" describe "k8s.io/kubernetes/pkg/kubectl/describe/versioned"
@ -54,27 +54,27 @@ type HistoryVisitor struct {
result HistoryViewer result HistoryViewer
} }
func (v *HistoryVisitor) VisitDeployment(elem kapps.GroupKindElement) { func (v *HistoryVisitor) VisitDeployment(elem apps.GroupKindElement) {
v.result = &DeploymentHistoryViewer{v.clientset} v.result = &DeploymentHistoryViewer{v.clientset}
} }
func (v *HistoryVisitor) VisitStatefulSet(kind kapps.GroupKindElement) { func (v *HistoryVisitor) VisitStatefulSet(kind apps.GroupKindElement) {
v.result = &StatefulSetHistoryViewer{v.clientset} v.result = &StatefulSetHistoryViewer{v.clientset}
} }
func (v *HistoryVisitor) VisitDaemonSet(kind kapps.GroupKindElement) { func (v *HistoryVisitor) VisitDaemonSet(kind apps.GroupKindElement) {
v.result = &DaemonSetHistoryViewer{v.clientset} v.result = &DaemonSetHistoryViewer{v.clientset}
} }
func (v *HistoryVisitor) VisitJob(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitJob(kind apps.GroupKindElement) {}
func (v *HistoryVisitor) VisitPod(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitPod(kind apps.GroupKindElement) {}
func (v *HistoryVisitor) VisitReplicaSet(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitReplicaSet(kind apps.GroupKindElement) {}
func (v *HistoryVisitor) VisitReplicationController(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitReplicationController(kind apps.GroupKindElement) {}
func (v *HistoryVisitor) VisitCronJob(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitCronJob(kind apps.GroupKindElement) {}
// HistoryViewerFor returns an implementation of HistoryViewer interface for the given schema kind // HistoryViewerFor returns an implementation of HistoryViewer interface for the given schema kind
func HistoryViewerFor(kind schema.GroupKind, c kubernetes.Interface) (HistoryViewer, error) { func HistoryViewerFor(kind schema.GroupKind, c kubernetes.Interface) (HistoryViewer, error) {
elem := kapps.GroupKindElement(kind) elem := apps.GroupKindElement(kind)
visitor := &HistoryVisitor{ visitor := &HistoryVisitor{
clientset: c, clientset: c,
} }

View File

@ -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 polymorphichelpers
import ( import (
"reflect" "reflect"

View File

@ -20,11 +20,10 @@ import (
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/kubectl"
) )
// historyViewer Returns a HistoryViewer for viewing change history // historyViewer Returns a HistoryViewer for viewing change history
func historyViewer(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (kubectl.HistoryViewer, error) { func historyViewer(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (HistoryViewer, error) {
clientConfig, err := restClientGetter.ToRESTConfig() clientConfig, err := restClientGetter.ToRESTConfig()
if err != nil { if err != nil {
return nil, err return nil, err
@ -34,5 +33,5 @@ func historyViewer(restClientGetter genericclioptions.RESTClientGetter, mapping
if err != nil { if err != nil {
return nil, err return nil, err
} }
return kubectl.HistoryViewerFor(mapping.GroupVersionKind.GroupKind(), external) return HistoryViewerFor(mapping.GroupVersionKind.GroupKind(), external)
} }

View File

@ -25,7 +25,6 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/kubectl"
) )
// LogsForObjectFunc is a function type that can tell you how to get logs for a runtime.object // LogsForObjectFunc is a function type that can tell you how to get logs for a runtime.object
@ -41,13 +40,13 @@ type AttachablePodForObjectFunc func(restClientGetter genericclioptions.RESTClie
var AttachablePodForObjectFn AttachablePodForObjectFunc = attachablePodForObject var AttachablePodForObjectFn AttachablePodForObjectFunc = attachablePodForObject
// HistoryViewerFunc is a function type that can tell you how to view change history // HistoryViewerFunc is a function type that can tell you how to view change history
type HistoryViewerFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (kubectl.HistoryViewer, error) type HistoryViewerFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (HistoryViewer, error)
// HistoryViewerFn gives a way to easily override the function for unit testing if needed // HistoryViewerFn gives a way to easily override the function for unit testing if needed
var HistoryViewerFn HistoryViewerFunc = historyViewer var HistoryViewerFn HistoryViewerFunc = historyViewer
// StatusViewerFunc is a function type that can tell you how to print rollout status // StatusViewerFunc is a function type that can tell you how to print rollout status
type StatusViewerFunc func(mapping *meta.RESTMapping) (kubectl.StatusViewer, error) type StatusViewerFunc func(mapping *meta.RESTMapping) (StatusViewer, error)
// StatusViewerFn gives a way to easily override the function for unit testing if needed // StatusViewerFn gives a way to easily override the function for unit testing if needed
var StatusViewerFn StatusViewerFunc = statusViewer var StatusViewerFn StatusViewerFunc = statusViewer
@ -102,7 +101,7 @@ type ObjectResumerFunc func(runtime.Object) ([]byte, error)
var ObjectResumerFn ObjectResumerFunc = defaultObjectResumer var ObjectResumerFn ObjectResumerFunc = defaultObjectResumer
// RollbackerFunc gives a way to change the rollback version of the specified RESTMapping type // RollbackerFunc gives a way to change the rollback version of the specified RESTMapping type
type RollbackerFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (kubectl.Rollbacker, error) type RollbackerFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (Rollbacker, error)
// RollbackerFn gives a way to easily override the function for unit testing if needed // RollbackerFn gives a way to easily override the function for unit testing if needed
var RollbackerFn RollbackerFunc = rollbacker var RollbackerFn RollbackerFunc = rollbacker

View File

@ -18,6 +18,7 @@ package polymorphichelpers
import ( import (
"fmt" "fmt"
"strings"
appsv1 "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1"
appsv1beta1 "k8s.io/api/apps/v1beta1" appsv1beta1 "k8s.io/api/apps/v1beta1"
@ -25,7 +26,6 @@ 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/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 generate.MakeLabels(t.Spec.Selector), nil return 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 generate.MakeLabels(t.Labels), nil return 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 generate.MakeLabels(t.Spec.Selector), nil return MakeLabels(t.Spec.Selector), nil
case *extensionsv1beta1.Deployment: case *extensionsv1beta1.Deployment:
// "extensions" deployments use pod template labels if selector is not set. // "extensions" deployments use pod template labels if selector is not set.
@ -65,7 +65,7 @@ func mapBasedSelectorForObject(object runtime.Object) (string, error) {
if len(labels) == 0 { if len(labels) == 0 {
return "", fmt.Errorf("the deployment has no labels or selectors and cannot be exposed") return "", fmt.Errorf("the deployment has no labels or selectors and cannot be exposed")
} }
return generate.MakeLabels(labels), nil return MakeLabels(labels), nil
case *appsv1.Deployment: case *appsv1.Deployment:
// "apps" deployments must have the selector set. // "apps" deployments must have the selector set.
@ -77,7 +77,7 @@ 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 generate.MakeLabels(t.Spec.Selector.MatchLabels), nil return MakeLabels(t.Spec.Selector.MatchLabels), nil
case *appsv1beta2.Deployment: case *appsv1beta2.Deployment:
// "apps" deployments must have the selector set. // "apps" deployments must have the selector set.
@ -89,7 +89,7 @@ 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 generate.MakeLabels(t.Spec.Selector.MatchLabels), nil return MakeLabels(t.Spec.Selector.MatchLabels), nil
case *appsv1beta1.Deployment: case *appsv1beta1.Deployment:
// "apps" deployments must have the selector set. // "apps" deployments must have the selector set.
@ -101,7 +101,7 @@ 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 generate.MakeLabels(t.Spec.Selector.MatchLabels), nil return MakeLabels(t.Spec.Selector.MatchLabels), nil
case *extensionsv1beta1.ReplicaSet: case *extensionsv1beta1.ReplicaSet:
// "extensions" replicasets use pod template labels if selector is not set. // "extensions" replicasets use pod template labels if selector is not set.
@ -119,7 +119,7 @@ func mapBasedSelectorForObject(object runtime.Object) (string, error) {
if len(labels) == 0 { if len(labels) == 0 {
return "", fmt.Errorf("the replica set has no labels or selectors and cannot be exposed") return "", fmt.Errorf("the replica set has no labels or selectors and cannot be exposed")
} }
return generate.MakeLabels(labels), nil return MakeLabels(labels), nil
case *appsv1.ReplicaSet: case *appsv1.ReplicaSet:
// "apps" replicasets must have the selector set. // "apps" replicasets must have the selector set.
@ -131,7 +131,7 @@ 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 generate.MakeLabels(t.Spec.Selector.MatchLabels), nil return MakeLabels(t.Spec.Selector.MatchLabels), nil
case *appsv1beta2.ReplicaSet: case *appsv1beta2.ReplicaSet:
// "apps" replicasets must have the selector set. // "apps" replicasets must have the selector set.
@ -143,10 +143,18 @@ 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 generate.MakeLabels(t.Spec.Selector.MatchLabels), nil return 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)
} }
} }
func MakeLabels(labels map[string]string) string {
out := []string{}
for key, value := range labels {
out = append(out, fmt.Sprintf("%s=%s", key, value))
}
return strings.Join(out, ",")
}

View File

@ -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 polymorphichelpers
import ( import (
"bytes" "bytes"
@ -32,7 +32,7 @@ import (
"k8s.io/apimachinery/pkg/util/json" "k8s.io/apimachinery/pkg/util/json"
"k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
kapps "k8s.io/kubectl/pkg/apps" "k8s.io/kubectl/pkg/apps"
"k8s.io/kubectl/pkg/scheme" "k8s.io/kubectl/pkg/scheme"
deploymentutil "k8s.io/kubectl/pkg/util/deployment" deploymentutil "k8s.io/kubectl/pkg/util/deployment"
) )
@ -52,27 +52,27 @@ type RollbackVisitor struct {
result Rollbacker result Rollbacker
} }
func (v *RollbackVisitor) VisitDeployment(elem kapps.GroupKindElement) { func (v *RollbackVisitor) VisitDeployment(elem apps.GroupKindElement) {
v.result = &DeploymentRollbacker{v.clientset} v.result = &DeploymentRollbacker{v.clientset}
} }
func (v *RollbackVisitor) VisitStatefulSet(kind kapps.GroupKindElement) { func (v *RollbackVisitor) VisitStatefulSet(kind apps.GroupKindElement) {
v.result = &StatefulSetRollbacker{v.clientset} v.result = &StatefulSetRollbacker{v.clientset}
} }
func (v *RollbackVisitor) VisitDaemonSet(kind kapps.GroupKindElement) { func (v *RollbackVisitor) VisitDaemonSet(kind apps.GroupKindElement) {
v.result = &DaemonSetRollbacker{v.clientset} v.result = &DaemonSetRollbacker{v.clientset}
} }
func (v *RollbackVisitor) VisitJob(kind kapps.GroupKindElement) {} func (v *RollbackVisitor) VisitJob(kind apps.GroupKindElement) {}
func (v *RollbackVisitor) VisitPod(kind kapps.GroupKindElement) {} func (v *RollbackVisitor) VisitPod(kind apps.GroupKindElement) {}
func (v *RollbackVisitor) VisitReplicaSet(kind kapps.GroupKindElement) {} func (v *RollbackVisitor) VisitReplicaSet(kind apps.GroupKindElement) {}
func (v *RollbackVisitor) VisitReplicationController(kind kapps.GroupKindElement) {} func (v *RollbackVisitor) VisitReplicationController(kind apps.GroupKindElement) {}
func (v *RollbackVisitor) VisitCronJob(kind kapps.GroupKindElement) {} func (v *RollbackVisitor) VisitCronJob(kind apps.GroupKindElement) {}
// RollbackerFor returns an implementation of Rollbacker interface for the given schema kind // RollbackerFor returns an implementation of Rollbacker interface for the given schema kind
func RollbackerFor(kind schema.GroupKind, c kubernetes.Interface) (Rollbacker, error) { func RollbackerFor(kind schema.GroupKind, c kubernetes.Interface) (Rollbacker, error) {
elem := kapps.GroupKindElement(kind) elem := apps.GroupKindElement(kind)
visitor := &RollbackVisitor{ visitor := &RollbackVisitor{
clientset: c, clientset: c,
} }

View File

@ -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 polymorphichelpers
import ( import (
"reflect" "reflect"

View File

@ -20,11 +20,10 @@ import (
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/kubectl"
) )
// Returns a Rollbacker for changing the rollback version of the specified RESTMapping type or an error // Returns a Rollbacker for changing the rollback version of the specified RESTMapping type or an error
func rollbacker(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (kubectl.Rollbacker, error) { func rollbacker(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (Rollbacker, error) {
clientConfig, err := restClientGetter.ToRESTConfig() clientConfig, err := restClientGetter.ToRESTConfig()
if err != nil { if err != nil {
return nil, err return nil, err
@ -34,5 +33,5 @@ func rollbacker(restClientGetter genericclioptions.RESTClientGetter, mapping *me
return nil, err return nil, err
} }
return kubectl.RollbackerFor(mapping.GroupVersionKind.GroupKind(), external) return RollbackerFor(mapping.GroupVersionKind.GroupKind(), external)
} }

View File

@ -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 polymorphichelpers
import ( import (
"fmt" "fmt"

View File

@ -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 polymorphichelpers
import ( import (
"fmt" "fmt"

View File

@ -18,10 +18,9 @@ package polymorphichelpers
import ( import (
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/kubernetes/pkg/kubectl"
) )
// statusViewer returns a StatusViewer for printing rollout status. // statusViewer returns a StatusViewer for printing rollout status.
func statusViewer(mapping *meta.RESTMapping) (kubectl.StatusViewer, error) { func statusViewer(mapping *meta.RESTMapping) (StatusViewer, error) {
return kubectl.StatusViewerFor(mapping.GroupVersionKind.GroupKind()) return StatusViewerFor(mapping.GroupVersionKind.GroupKind())
} }

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package apps_test package apps
import ( import (
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"

View File

@ -14,13 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package apps_test package apps
import ( import (
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
"k8s.io/kubectl/pkg/apps"
) )
var _ = Describe("When KindVisitor accepts a GroupKind", func() { var _ = Describe("When KindVisitor accepts a GroupKind", func() {
@ -32,7 +30,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit DaemonSet iff the Kind is a DaemonSet", func() { It("should Visit DaemonSet iff the Kind is a DaemonSet", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "DaemonSet", Kind: "DaemonSet",
Group: "apps", Group: "apps",
} }
@ -41,7 +39,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
"DaemonSet": 1, "DaemonSet": 1,
})) }))
kind = apps.GroupKindElement{ kind = GroupKindElement{
Kind: "DaemonSet", Kind: "DaemonSet",
Group: "extensions", Group: "extensions",
} }
@ -52,7 +50,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit Deployment iff the Kind is a Deployment", func() { It("should Visit Deployment iff the Kind is a Deployment", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "Deployment", Kind: "Deployment",
Group: "apps", Group: "apps",
} }
@ -61,7 +59,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
"Deployment": 1, "Deployment": 1,
})) }))
kind = apps.GroupKindElement{ kind = GroupKindElement{
Kind: "Deployment", Kind: "Deployment",
Group: "extensions", Group: "extensions",
} }
@ -72,7 +70,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit Job iff the Kind is a Job", func() { It("should Visit Job iff the Kind is a Job", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "Job", Kind: "Job",
Group: "batch", Group: "batch",
} }
@ -84,7 +82,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit Pod iff the Kind is a Pod", func() { It("should Visit Pod iff the Kind is a Pod", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "Pod", Kind: "Pod",
Group: "", Group: "",
} }
@ -93,7 +91,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
"Pod": 1, "Pod": 1,
})) }))
kind = apps.GroupKindElement{ kind = GroupKindElement{
Kind: "Pod", Kind: "Pod",
Group: "core", Group: "core",
} }
@ -104,7 +102,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit ReplicationController iff the Kind is a ReplicationController", func() { It("should Visit ReplicationController iff the Kind is a ReplicationController", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "ReplicationController", Kind: "ReplicationController",
Group: "", Group: "",
} }
@ -113,7 +111,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
"ReplicationController": 1, "ReplicationController": 1,
})) }))
kind = apps.GroupKindElement{ kind = GroupKindElement{
Kind: "ReplicationController", Kind: "ReplicationController",
Group: "core", Group: "core",
} }
@ -124,7 +122,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit ReplicaSet iff the Kind is a ReplicaSet", func() { It("should Visit ReplicaSet iff the Kind is a ReplicaSet", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "ReplicaSet", Kind: "ReplicaSet",
Group: "extensions", Group: "extensions",
} }
@ -135,7 +133,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit StatefulSet iff the Kind is a StatefulSet", func() { It("should Visit StatefulSet iff the Kind is a StatefulSet", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "StatefulSet", Kind: "StatefulSet",
Group: "apps", Group: "apps",
} }
@ -146,7 +144,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should Visit CronJob iff the Kind is a CronJob", func() { It("should Visit CronJob iff the Kind is a CronJob", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "CronJob", Kind: "CronJob",
Group: "batch", Group: "batch",
} }
@ -157,7 +155,7 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() {
}) })
It("should give an error if the Kind is unknown", func() { It("should give an error if the Kind is unknown", func() {
kind := apps.GroupKindElement{ kind := GroupKindElement{
Kind: "Unknown", Kind: "Unknown",
Group: "apps", Group: "apps",
} }
@ -171,15 +169,15 @@ type TestKindVisitor struct {
visits map[string]int visits map[string]int
} }
var _ apps.KindVisitor = &TestKindVisitor{} var _ KindVisitor = &TestKindVisitor{}
func (t *TestKindVisitor) Visit(kind apps.GroupKindElement) { t.visits[kind.Kind]++ } func (t *TestKindVisitor) Visit(kind GroupKindElement) { t.visits[kind.Kind]++ }
func (t *TestKindVisitor) VisitDaemonSet(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitDaemonSet(kind GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitDeployment(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitDeployment(kind GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitJob(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitJob(kind GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitPod(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitPod(kind GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitReplicaSet(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitReplicaSet(kind GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitReplicationController(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitReplicationController(kind GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitStatefulSet(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitStatefulSet(kind GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitCronJob(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitCronJob(kind GroupKindElement) { t.Visit(kind) }