Merge pull request #54846 from zjj2wry/remove-kubectl-dep

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

Remove kubectl dependency internal version

**What this PR does / why we need it**:
ref kubernetes/kubectl#83

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes #

**Special notes for your reviewer**:
use `k8s.io/api/core/v1` replace `k8s.io/kubernetes/pkg/api`

use `k8s.io/client-go/kubernetes/typed/core/v1` replace `k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion`

**Release note**:

```release-note
NONE
```
This commit is contained in:
Kubernetes Submit Queue 2017-11-06 06:34:40 -08:00 committed by GitHub
commit 658024c2d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 139 additions and 139 deletions

View File

@ -139,6 +139,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/kubernetes: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/kubernetes/typed/rbac/v1:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",

View File

@ -22,10 +22,10 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"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/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/kubernetes/pkg/api" corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/metricsutil" "k8s.io/kubernetes/pkg/kubectl/metricsutil"
@ -36,7 +36,7 @@ import (
type TopNodeOptions struct { type TopNodeOptions struct {
ResourceName string ResourceName string
Selector string Selector string
NodeClient coreclient.NodesGetter NodeClient corev1.CoreV1Interface
HeapsterOptions HeapsterTopOptions HeapsterOptions HeapsterTopOptions
Client *metricsutil.HeapsterMetricsClient Client *metricsutil.HeapsterMetricsClient
Printer *metricsutil.TopCmdPrinter Printer *metricsutil.TopCmdPrinter
@ -118,7 +118,7 @@ func (o *TopNodeOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
return cmdutil.UsageErrorf(cmd, "%s", cmd.Use) return cmdutil.UsageErrorf(cmd, "%s", cmd.Use)
} }
clientset, err := f.ClientSet() clientset, err := f.KubernetesClientSet()
if err != nil { if err != nil {
return err return err
} }
@ -149,7 +149,7 @@ func (o TopNodeOptions) RunTopNode() error {
return errors.New("metrics not available yet") return errors.New("metrics not available yet")
} }
var nodes []api.Node var nodes []v1.Node
if len(o.ResourceName) > 0 { if len(o.ResourceName) > 0 {
node, err := o.NodeClient.Nodes().Get(o.ResourceName, metav1.GetOptions{}) node, err := o.NodeClient.Nodes().Get(o.ResourceName, metav1.GetOptions{})
if err != nil { if err != nil {
@ -166,7 +166,7 @@ func (o TopNodeOptions) RunTopNode() error {
nodes = append(nodes, nodeList.Items...) nodes = append(nodes, nodeList.Items...)
} }
allocatable := make(map[string]api.ResourceList) allocatable := make(map[string]v1.ResourceList)
for _, n := range nodes { for _, n := range nodes {
allocatable[n.Name] = n.Status.Allocatable allocatable[n.Name] = n.Status.Allocatable

View File

@ -25,8 +25,8 @@ import (
"net/url" "net/url"
"k8s.io/api/core/v1"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/metrics/pkg/apis/metrics/v1alpha1" "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
) )
@ -188,7 +188,7 @@ func TestTopNodeWithLabelSelectorMetrics(t *testing.T) {
ListMeta: metrics.ListMeta, ListMeta: metrics.ListMeta,
Items: metrics.Items[0:1], Items: metrics.Items[0:1],
} }
expectedNodes := api.NodeList{ expectedNodes := v1.NodeList{
ListMeta: nodes.ListMeta, ListMeta: nodes.ListMeta,
Items: nodes.Items[0:1], Items: nodes.Items[0:1],
} }

View File

@ -22,10 +22,10 @@ import (
"io" "io"
"time" "time"
"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/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/kubernetes/pkg/api" corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/metricsutil" "k8s.io/kubernetes/pkg/kubectl/metricsutil"
@ -41,7 +41,7 @@ type TopPodOptions struct {
Selector string Selector string
AllNamespaces bool AllNamespaces bool
PrintContainers bool PrintContainers bool
PodClient coreclient.PodsGetter PodClient corev1.PodsGetter
HeapsterOptions HeapsterTopOptions HeapsterOptions HeapsterTopOptions
Client *metricsutil.HeapsterMetricsClient Client *metricsutil.HeapsterMetricsClient
Printer *metricsutil.TopCmdPrinter Printer *metricsutil.TopCmdPrinter
@ -114,7 +114,7 @@ func (o *TopPodOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []s
if err != nil { if err != nil {
return err return err
} }
clientset, err := f.ClientSet() clientset, err := f.KubernetesClientSet()
if err != nil { if err != nil {
return err return err
} }
@ -185,7 +185,7 @@ func verifyEmptyMetrics(o TopPodOptions, selector labels.Selector) error {
return errors.New("metrics not available yet") return errors.New("metrics not available yet")
} }
func checkPodAge(pod *api.Pod) error { func checkPodAge(pod *v1.Pod) error {
age := time.Since(pod.CreationTimestamp.Time) age := time.Since(pod.CreationTimestamp.Time)
if age > metricsCreationDelay { if age > metricsCreationDelay {
message := fmt.Sprintf("Metrics not available for pod %s/%s, age: %s", pod.Namespace, pod.Name, age.String()) message := fmt.Sprintf("Metrics not available for pod %s/%s, age: %s", pod.Namespace, pod.Name, age.String())

View File

@ -28,7 +28,6 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/api"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1" metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
) )
@ -59,7 +58,7 @@ func marshallBody(metrics interface{}) (io.ReadCloser, error) {
return ioutil.NopCloser(bytes.NewReader(result)), nil return ioutil.NopCloser(bytes.NewReader(result)), nil
} }
func testNodeMetricsData() (*metricsapi.NodeMetricsList, *api.NodeList) { func testNodeMetricsData() (*metricsapi.NodeMetricsList, *v1.NodeList) {
metrics := &metricsapi.NodeMetricsList{ metrics := &metricsapi.NodeMetricsList{
ListMeta: metav1.ListMeta{ ListMeta: metav1.ListMeta{
ResourceVersion: "1", ResourceVersion: "1",
@ -85,28 +84,28 @@ func testNodeMetricsData() (*metricsapi.NodeMetricsList, *api.NodeList) {
}, },
}, },
} }
nodes := &api.NodeList{ nodes := &v1.NodeList{
ListMeta: metav1.ListMeta{ ListMeta: metav1.ListMeta{
ResourceVersion: "15", ResourceVersion: "15",
}, },
Items: []api.Node{ Items: []v1.Node{
{ {
ObjectMeta: metav1.ObjectMeta{Name: "node1", ResourceVersion: "10"}, ObjectMeta: metav1.ObjectMeta{Name: "node1", ResourceVersion: "10"},
Status: api.NodeStatus{ Status: v1.NodeStatus{
Allocatable: api.ResourceList{ Allocatable: v1.ResourceList{
api.ResourceCPU: *resource.NewMilliQuantity(10, resource.DecimalSI), v1.ResourceCPU: *resource.NewMilliQuantity(10, resource.DecimalSI),
api.ResourceMemory: *resource.NewQuantity(20*(1024*1024), resource.DecimalSI), v1.ResourceMemory: *resource.NewQuantity(20*(1024*1024), resource.DecimalSI),
api.ResourceStorage: *resource.NewQuantity(30*(1024*1024), resource.DecimalSI), v1.ResourceStorage: *resource.NewQuantity(30*(1024*1024), resource.DecimalSI),
}, },
}, },
}, },
{ {
ObjectMeta: metav1.ObjectMeta{Name: "node2", ResourceVersion: "11"}, ObjectMeta: metav1.ObjectMeta{Name: "node2", ResourceVersion: "11"},
Status: api.NodeStatus{ Status: v1.NodeStatus{
Allocatable: api.ResourceList{ Allocatable: v1.ResourceList{
api.ResourceCPU: *resource.NewMilliQuantity(50, resource.DecimalSI), v1.ResourceCPU: *resource.NewMilliQuantity(50, resource.DecimalSI),
api.ResourceMemory: *resource.NewQuantity(60*(1024*1024), resource.DecimalSI), v1.ResourceMemory: *resource.NewQuantity(60*(1024*1024), resource.DecimalSI),
api.ResourceStorage: *resource.NewQuantity(70*(1024*1024), resource.DecimalSI), v1.ResourceStorage: *resource.NewQuantity(70*(1024*1024), resource.DecimalSI),
}, },
}, },
}, },

View File

@ -14,15 +14,15 @@ go_library(
"//build/visible_to:pkg_kubectl_metricsutil_CONSUMERS", "//build/visible_to:pkg_kubectl_metricsutil_CONSUMERS",
], ],
deps = [ deps = [
"//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library", "//pkg/api/legacyscheme:go_default_library",
"//pkg/api/validation:go_default_library", "//pkg/api/validation:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/printers:go_default_library", "//pkg/printers:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/metrics/v1alpha1:go_default_library", "//vendor/k8s.io/metrics/pkg/apis/metrics/v1alpha1:go_default_library",
], ],
) )

View File

@ -24,8 +24,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/kubernetes/pkg/api/validation" "k8s.io/kubernetes/pkg/api/validation"
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1" metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
) )
@ -46,14 +46,14 @@ var (
) )
type HeapsterMetricsClient struct { type HeapsterMetricsClient struct {
SVCClient coreclient.ServicesGetter SVCClient corev1.ServicesGetter
HeapsterNamespace string HeapsterNamespace string
HeapsterScheme string HeapsterScheme string
HeapsterService string HeapsterService string
HeapsterPort string HeapsterPort string
} }
func NewHeapsterMetricsClient(svcClient coreclient.ServicesGetter, namespace, scheme, service, port string) *HeapsterMetricsClient { func NewHeapsterMetricsClient(svcClient corev1.ServicesGetter, namespace, scheme, service, port string) *HeapsterMetricsClient {
return &HeapsterMetricsClient{ return &HeapsterMetricsClient{
SVCClient: svcClient, SVCClient: svcClient,
HeapsterNamespace: namespace, HeapsterNamespace: namespace,
@ -63,7 +63,7 @@ func NewHeapsterMetricsClient(svcClient coreclient.ServicesGetter, namespace, sc
} }
} }
func DefaultHeapsterMetricsClient(svcClient coreclient.ServicesGetter) *HeapsterMetricsClient { func DefaultHeapsterMetricsClient(svcClient corev1.ServicesGetter) *HeapsterMetricsClient {
return NewHeapsterMetricsClient(svcClient, DefaultHeapsterNamespace, DefaultHeapsterScheme, DefaultHeapsterService, DefaultHeapsterPort) return NewHeapsterMetricsClient(svcClient, DefaultHeapsterNamespace, DefaultHeapsterScheme, DefaultHeapsterService, DefaultHeapsterPort)
} }

View File

@ -21,17 +21,17 @@ import (
"io" "io"
"sort" "sort"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1" metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
) )
var ( var (
MeasuredResources = []api.ResourceName{ MeasuredResources = []v1.ResourceName{
api.ResourceCPU, v1.ResourceCPU,
api.ResourceMemory, v1.ResourceMemory,
} }
NodeColumns = []string{"NAME", "CPU(cores)", "CPU%", "MEMORY(bytes)", "MEMORY%"} NodeColumns = []string{"NAME", "CPU(cores)", "CPU%", "MEMORY(bytes)", "MEMORY%"}
PodColumns = []string{"NAME", "CPU(cores)", "MEMORY(bytes)"} PodColumns = []string{"NAME", "CPU(cores)", "MEMORY(bytes)"}
@ -41,8 +41,8 @@ var (
type ResourceMetricsInfo struct { type ResourceMetricsInfo struct {
Name string Name string
Metrics api.ResourceList Metrics v1.ResourceList
Available api.ResourceList Available v1.ResourceList
} }
type TopCmdPrinter struct { type TopCmdPrinter struct {
@ -53,7 +53,7 @@ func NewTopCmdPrinter(out io.Writer) *TopCmdPrinter {
return &TopCmdPrinter{out: out} return &TopCmdPrinter{out: out}
} }
func (printer *TopCmdPrinter) PrintNodeMetrics(metrics []metricsapi.NodeMetrics, availableResources map[string]api.ResourceList) error { func (printer *TopCmdPrinter) PrintNodeMetrics(metrics []metricsapi.NodeMetrics, availableResources map[string]v1.ResourceList) error {
if len(metrics) == 0 { if len(metrics) == 0 {
return nil return nil
} }
@ -65,7 +65,7 @@ func (printer *TopCmdPrinter) PrintNodeMetrics(metrics []metricsapi.NodeMetrics,
}) })
printColumnNames(w, NodeColumns) printColumnNames(w, NodeColumns)
var usage api.ResourceList var usage v1.ResourceList
for _, m := range metrics { for _, m := range metrics {
err := legacyscheme.Scheme.Convert(&m.Usage, &usage, nil) err := legacyscheme.Scheme.Convert(&m.Usage, &usage, nil)
if err != nil { if err != nil {
@ -119,14 +119,14 @@ func printColumnNames(out io.Writer, names []string) {
} }
func printSinglePodMetrics(out io.Writer, m *metricsapi.PodMetrics, printContainersOnly bool, withNamespace bool) error { func printSinglePodMetrics(out io.Writer, m *metricsapi.PodMetrics, printContainersOnly bool, withNamespace bool) error {
containers := make(map[string]api.ResourceList) containers := make(map[string]v1.ResourceList)
podMetrics := make(api.ResourceList) podMetrics := make(v1.ResourceList)
for _, res := range MeasuredResources { for _, res := range MeasuredResources {
podMetrics[res], _ = resource.ParseQuantity("0") podMetrics[res], _ = resource.ParseQuantity("0")
} }
for _, c := range m.Containers { for _, c := range m.Containers {
var usage api.ResourceList var usage v1.ResourceList
err := legacyscheme.Scheme.Convert(&c.Usage, &usage, nil) err := legacyscheme.Scheme.Convert(&c.Usage, &usage, nil)
if err != nil { if err != nil {
return err return err
@ -149,7 +149,7 @@ func printSinglePodMetrics(out io.Writer, m *metricsapi.PodMetrics, printContain
printMetricsLine(out, &ResourceMetricsInfo{ printMetricsLine(out, &ResourceMetricsInfo{
Name: contName, Name: contName,
Metrics: containers[contName], Metrics: containers[contName],
Available: api.ResourceList{}, Available: v1.ResourceList{},
}) })
} }
} else { } else {
@ -159,7 +159,7 @@ func printSinglePodMetrics(out io.Writer, m *metricsapi.PodMetrics, printContain
printMetricsLine(out, &ResourceMetricsInfo{ printMetricsLine(out, &ResourceMetricsInfo{
Name: m.Name, Name: m.Name,
Metrics: podMetrics, Metrics: podMetrics,
Available: api.ResourceList{}, Available: v1.ResourceList{},
}) })
} }
return nil return nil
@ -187,11 +187,11 @@ func printAllResourceUsages(out io.Writer, metrics *ResourceMetricsInfo) {
} }
} }
func printSingleResourceUsage(out io.Writer, resourceType api.ResourceName, quantity resource.Quantity) { func printSingleResourceUsage(out io.Writer, resourceType v1.ResourceName, quantity resource.Quantity) {
switch resourceType { switch resourceType {
case api.ResourceCPU: case v1.ResourceCPU:
fmt.Fprintf(out, "%vm", quantity.MilliValue()) fmt.Fprintf(out, "%vm", quantity.MilliValue())
case api.ResourceMemory: case v1.ResourceMemory:
fmt.Fprintf(out, "%vMi", quantity.Value()/(1024*1024)) fmt.Fprintf(out, "%vMi", quantity.Value()/(1024*1024))
default: default:
fmt.Fprintf(out, "%v", quantity.Value()) fmt.Fprintf(out, "%v", quantity.Value())

View File

@ -21,10 +21,10 @@ import (
"strconv" "strconv"
"strings" "strings"
"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/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/kubernetes/pkg/api"
) )
// 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.
@ -113,7 +113,7 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
isHeadlessService := params["cluster-ip"] == "None" isHeadlessService := params["cluster-ip"] == "None"
ports := []api.ServicePort{} ports := []v1.ServicePort{}
servicePortName, found := params["port-name"] servicePortName, found := params["port-name"]
if !found { if !found {
// Leave the port unnamed. // Leave the port unnamed.
@ -168,20 +168,20 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
protocol = exposeProtocol protocol = exposeProtocol
} }
} }
ports = append(ports, api.ServicePort{ ports = append(ports, v1.ServicePort{
Name: name, Name: name,
Port: int32(port), Port: int32(port),
Protocol: api.Protocol(protocol), Protocol: v1.Protocol(protocol),
}) })
} }
} }
service := api.Service{ service := v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: name, Name: name,
Labels: labels, Labels: labels,
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: selector, Selector: selector,
Ports: ports, Ports: ports,
}, },
@ -213,24 +213,24 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
service.Spec.ExternalIPs = []string{params["external-ip"]} service.Spec.ExternalIPs = []string{params["external-ip"]}
} }
if len(params["type"]) != 0 { if len(params["type"]) != 0 {
service.Spec.Type = api.ServiceType(params["type"]) service.Spec.Type = v1.ServiceType(params["type"])
} }
if service.Spec.Type == api.ServiceTypeLoadBalancer { if service.Spec.Type == v1.ServiceTypeLoadBalancer {
service.Spec.LoadBalancerIP = params["load-balancer-ip"] service.Spec.LoadBalancerIP = params["load-balancer-ip"]
} }
if len(params["session-affinity"]) != 0 { if len(params["session-affinity"]) != 0 {
switch api.ServiceAffinity(params["session-affinity"]) { switch v1.ServiceAffinity(params["session-affinity"]) {
case api.ServiceAffinityNone: case v1.ServiceAffinityNone:
service.Spec.SessionAffinity = api.ServiceAffinityNone service.Spec.SessionAffinity = v1.ServiceAffinityNone
case api.ServiceAffinityClientIP: case v1.ServiceAffinityClientIP:
service.Spec.SessionAffinity = api.ServiceAffinityClientIP service.Spec.SessionAffinity = v1.ServiceAffinityClientIP
default: default:
return nil, fmt.Errorf("unknown session affinity: %s", params["session-affinity"]) return nil, fmt.Errorf("unknown session affinity: %s", params["session-affinity"])
} }
} }
if len(params["cluster-ip"]) != 0 { if len(params["cluster-ip"]) != 0 {
if params["cluster-ip"] == "None" { if params["cluster-ip"] == "None" {
service.Spec.ClusterIP = api.ClusterIPNone service.Spec.ClusterIP = v1.ClusterIPNone
} else { } else {
service.Spec.ClusterIP = params["cluster-ip"] service.Spec.ClusterIP = params["cluster-ip"]
} }

View File

@ -20,16 +20,16 @@ import (
"reflect" "reflect"
"testing" "testing"
"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/api"
) )
func TestGenerateService(t *testing.T) { func TestGenerateService(t *testing.T) {
tests := []struct { tests := []struct {
generator Generator generator Generator
params map[string]interface{} params map[string]interface{}
expected api.Service expected v1.Service
}{ }{
{ {
generator: ServiceGeneratorV2{}, generator: ServiceGeneratorV2{},
@ -40,16 +40,16 @@ func TestGenerateService(t *testing.T) {
"protocol": "TCP", "protocol": "TCP",
"container-port": "1234", "container-port": "1234",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "TCP", Protocol: "TCP",
@ -69,16 +69,16 @@ func TestGenerateService(t *testing.T) {
"protocol": "UDP", "protocol": "UDP",
"container-port": "foobar", "container-port": "foobar",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "UDP", Protocol: "UDP",
@ -98,7 +98,7 @@ func TestGenerateService(t *testing.T) {
"protocol": "TCP", "protocol": "TCP",
"container-port": "1234", "container-port": "1234",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
Labels: map[string]string{ Labels: map[string]string{
@ -106,12 +106,12 @@ func TestGenerateService(t *testing.T) {
"key2": "value2", "key2": "value2",
}, },
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "TCP", Protocol: "TCP",
@ -131,16 +131,16 @@ func TestGenerateService(t *testing.T) {
"container-port": "foobar", "container-port": "foobar",
"external-ip": "1.2.3.4", "external-ip": "1.2.3.4",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "UDP", Protocol: "UDP",
@ -162,23 +162,23 @@ func TestGenerateService(t *testing.T) {
"external-ip": "1.2.3.4", "external-ip": "1.2.3.4",
"type": "LoadBalancer", "type": "LoadBalancer",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "UDP", Protocol: "UDP",
TargetPort: intstr.FromString("foobar"), TargetPort: intstr.FromString("foobar"),
}, },
}, },
Type: api.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalIPs: []string{"1.2.3.4"}, ExternalIPs: []string{"1.2.3.4"},
}, },
}, },
@ -191,25 +191,25 @@ func TestGenerateService(t *testing.T) {
"port": "80", "port": "80",
"protocol": "UDP", "protocol": "UDP",
"container-port": "foobar", "container-port": "foobar",
"type": string(api.ServiceTypeNodePort), "type": string(v1.ServiceTypeNodePort),
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "UDP", Protocol: "UDP",
TargetPort: intstr.FromString("foobar"), TargetPort: intstr.FromString("foobar"),
}, },
}, },
Type: api.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
}, },
}, },
}, },
@ -222,25 +222,25 @@ func TestGenerateService(t *testing.T) {
"protocol": "UDP", "protocol": "UDP",
"container-port": "foobar", "container-port": "foobar",
"create-external-load-balancer": "true", // ignored when type is present "create-external-load-balancer": "true", // ignored when type is present
"type": string(api.ServiceTypeNodePort), "type": string(v1.ServiceTypeNodePort),
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "UDP", Protocol: "UDP",
TargetPort: intstr.FromString("foobar"), TargetPort: intstr.FromString("foobar"),
}, },
}, },
Type: api.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
}, },
}, },
}, },
@ -253,16 +253,16 @@ func TestGenerateService(t *testing.T) {
"protocol": "TCP", "protocol": "TCP",
"container-port": "1234", "container-port": "1234",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "default", Name: "default",
Port: 80, Port: 80,
@ -283,16 +283,16 @@ func TestGenerateService(t *testing.T) {
"container-port": "1234", "container-port": "1234",
"session-affinity": "ClientIP", "session-affinity": "ClientIP",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "default", Name: "default",
Port: 80, Port: 80,
@ -300,7 +300,7 @@ func TestGenerateService(t *testing.T) {
TargetPort: intstr.FromInt(1234), TargetPort: intstr.FromInt(1234),
}, },
}, },
SessionAffinity: api.ServiceAffinityClientIP, SessionAffinity: v1.ServiceAffinityClientIP,
}, },
}, },
}, },
@ -314,16 +314,16 @@ func TestGenerateService(t *testing.T) {
"container-port": "1234", "container-port": "1234",
"cluster-ip": "10.10.10.10", "cluster-ip": "10.10.10.10",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "TCP", Protocol: "TCP",
@ -344,23 +344,23 @@ func TestGenerateService(t *testing.T) {
"container-port": "1234", "container-port": "1234",
"cluster-ip": "None", "cluster-ip": "None",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Port: 80, Port: 80,
Protocol: "TCP", Protocol: "TCP",
TargetPort: intstr.FromInt(1234), TargetPort: intstr.FromInt(1234),
}, },
}, },
ClusterIP: api.ClusterIPNone, ClusterIP: v1.ClusterIPNone,
}, },
}, },
}, },
@ -373,25 +373,25 @@ func TestGenerateService(t *testing.T) {
"protocol": "TCP", "protocol": "TCP",
"container-port": "foobar", "container-port": "foobar",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "port-1", Name: "port-1",
Port: 80, Port: 80,
Protocol: api.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromString("foobar"), TargetPort: intstr.FromString("foobar"),
}, },
{ {
Name: "port-2", Name: "port-2",
Port: 443, Port: 443,
Protocol: api.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromString("foobar"), TargetPort: intstr.FromString("foobar"),
}, },
}, },
@ -407,25 +407,25 @@ func TestGenerateService(t *testing.T) {
"protocol": "UDP", "protocol": "UDP",
"target-port": "1234", "target-port": "1234",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "port-1", Name: "port-1",
Port: 80, Port: 80,
Protocol: api.ProtocolUDP, Protocol: v1.ProtocolUDP,
TargetPort: intstr.FromInt(1234), TargetPort: intstr.FromInt(1234),
}, },
{ {
Name: "port-2", Name: "port-2",
Port: 443, Port: 443,
Protocol: api.ProtocolUDP, Protocol: v1.ProtocolUDP,
TargetPort: intstr.FromInt(1234), TargetPort: intstr.FromInt(1234),
}, },
}, },
@ -440,25 +440,25 @@ func TestGenerateService(t *testing.T) {
"ports": "80,443", "ports": "80,443",
"protocol": "TCP", "protocol": "TCP",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "port-1", Name: "port-1",
Port: 80, Port: 80,
Protocol: api.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromInt(80), TargetPort: intstr.FromInt(80),
}, },
{ {
Name: "port-2", Name: "port-2",
Port: 443, Port: 443,
Protocol: api.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromInt(443), TargetPort: intstr.FromInt(443),
}, },
}, },
@ -473,25 +473,25 @@ func TestGenerateService(t *testing.T) {
"ports": "80,8080", "ports": "80,8080",
"protocols": "8080/UDP", "protocols": "8080/UDP",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "port-1", Name: "port-1",
Port: 80, Port: 80,
Protocol: api.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromInt(80), TargetPort: intstr.FromInt(80),
}, },
{ {
Name: "port-2", Name: "port-2",
Port: 8080, Port: 8080,
Protocol: api.ProtocolUDP, Protocol: v1.ProtocolUDP,
TargetPort: intstr.FromInt(8080), TargetPort: intstr.FromInt(8080),
}, },
}, },
@ -506,31 +506,31 @@ func TestGenerateService(t *testing.T) {
"ports": "80,8080,8081", "ports": "80,8080,8081",
"protocols": "8080/UDP,8081/TCP", "protocols": "8080/UDP,8081/TCP",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
}, },
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "port-1", Name: "port-1",
Port: 80, Port: 80,
Protocol: api.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromInt(80), TargetPort: intstr.FromInt(80),
}, },
{ {
Name: "port-2", Name: "port-2",
Port: 8080, Port: 8080,
Protocol: api.ProtocolUDP, Protocol: v1.ProtocolUDP,
TargetPort: intstr.FromInt(8080), TargetPort: intstr.FromInt(8080),
}, },
{ {
Name: "port-3", Name: "port-3",
Port: 8081, Port: 8081,
Protocol: api.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromInt(8081), TargetPort: intstr.FromInt(8081),
}, },
}, },
@ -546,17 +546,17 @@ func TestGenerateService(t *testing.T) {
"container-port": "1234", "container-port": "1234",
"cluster-ip": "None", "cluster-ip": "None",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
"baz": "blah", "baz": "blah",
}, },
Ports: []api.ServicePort{}, Ports: []v1.ServicePort{},
ClusterIP: api.ClusterIPNone, ClusterIP: v1.ClusterIPNone,
}, },
}, },
}, },
@ -567,16 +567,16 @@ func TestGenerateService(t *testing.T) {
"name": "test", "name": "test",
"cluster-ip": "None", "cluster-ip": "None",
}, },
expected: api.Service{ expected: v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test", Name: "test",
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: map[string]string{ Selector: map[string]string{
"foo": "bar", "foo": "bar",
}, },
Ports: []api.ServicePort{}, Ports: []v1.ServicePort{},
ClusterIP: api.ClusterIPNone, ClusterIP: v1.ClusterIPNone,
}, },
}, },
}, },