|
|
|
@@ -23,9 +23,9 @@ import (
|
|
|
|
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
|
|
|
|
_ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta1"
|
|
|
|
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver"
|
|
|
|
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/apitools"
|
|
|
|
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
|
|
|
|
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/registry/registrytest"
|
|
|
|
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
|
|
|
|
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/tools"
|
|
|
|
|
|
|
|
|
|
"github.com/coreos/go-etcd/etcd"
|
|
|
|
@@ -41,7 +41,7 @@ func NewTestEtcdRegistry(client tools.EtcdClient) *Registry {
|
|
|
|
|
|
|
|
|
|
func TestEtcdGetPod(t *testing.T) {
|
|
|
|
|
fakeClient := tools.NewFakeEtcdClient(t)
|
|
|
|
|
fakeClient.Set("/registry/pods/foo", apitools.EncodeOrDie(api.Pod{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
fakeClient.Set("/registry/pods/foo", runtime.EncodeOrDie(api.Pod{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
pod, err := registry.GetPod("foo")
|
|
|
|
|
if err != nil {
|
|
|
|
@@ -77,7 +77,7 @@ func TestEtcdCreatePod(t *testing.T) {
|
|
|
|
|
},
|
|
|
|
|
E: tools.EtcdErrorNotFound,
|
|
|
|
|
}
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", apitools.EncodeOrDie(&api.ContainerManifestList{}), 0)
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", runtime.EncodeOrDie(&api.ContainerManifestList{}), 0)
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
err := registry.CreatePod(api.Pod{
|
|
|
|
|
JSONBase: api.JSONBase{
|
|
|
|
@@ -108,7 +108,7 @@ func TestEtcdCreatePod(t *testing.T) {
|
|
|
|
|
t.Fatalf("Unexpected error %v", err)
|
|
|
|
|
}
|
|
|
|
|
var pod api.Pod
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &pod)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &pod)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
@@ -122,7 +122,7 @@ func TestEtcdCreatePod(t *testing.T) {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &manifests)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &manifests)
|
|
|
|
|
if len(manifests.Items) != 1 || manifests.Items[0].ID != "foo" {
|
|
|
|
|
t.Errorf("Unexpected manifest list: %#v", manifests)
|
|
|
|
|
}
|
|
|
|
@@ -133,7 +133,7 @@ func TestEtcdCreatePodAlreadyExisting(t *testing.T) {
|
|
|
|
|
fakeClient.Data["/registry/pods/foo"] = tools.EtcdResponseWithError{
|
|
|
|
|
R: &etcd.Response{
|
|
|
|
|
Node: &etcd.Node{
|
|
|
|
|
Value: apitools.EncodeOrDie(api.Pod{JSONBase: api.JSONBase{ID: "foo"}}),
|
|
|
|
|
Value: runtime.EncodeOrDie(api.Pod{JSONBase: api.JSONBase{ID: "foo"}}),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
E: nil,
|
|
|
|
@@ -235,7 +235,7 @@ func TestEtcdCreatePodWithContainersNotFound(t *testing.T) {
|
|
|
|
|
t.Fatalf("Unexpected error %v", err)
|
|
|
|
|
}
|
|
|
|
|
var pod api.Pod
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &pod)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &pod)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
@@ -249,7 +249,7 @@ func TestEtcdCreatePodWithContainersNotFound(t *testing.T) {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &manifests)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &manifests)
|
|
|
|
|
if len(manifests.Items) != 1 || manifests.Items[0].ID != "foo" {
|
|
|
|
|
t.Errorf("Unexpected manifest list: %#v", manifests)
|
|
|
|
|
}
|
|
|
|
@@ -264,7 +264,7 @@ func TestEtcdCreatePodWithExistingContainers(t *testing.T) {
|
|
|
|
|
},
|
|
|
|
|
E: tools.EtcdErrorNotFound,
|
|
|
|
|
}
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", apitools.EncodeOrDie(api.ContainerManifestList{
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", runtime.EncodeOrDie(api.ContainerManifestList{
|
|
|
|
|
Items: []api.ContainerManifest{
|
|
|
|
|
{ID: "bar"},
|
|
|
|
|
},
|
|
|
|
@@ -300,7 +300,7 @@ func TestEtcdCreatePodWithExistingContainers(t *testing.T) {
|
|
|
|
|
t.Fatalf("Unexpected error %v", err)
|
|
|
|
|
}
|
|
|
|
|
var pod api.Pod
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &pod)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &pod)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
@@ -314,7 +314,7 @@ func TestEtcdCreatePodWithExistingContainers(t *testing.T) {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &manifests)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &manifests)
|
|
|
|
|
if len(manifests.Items) != 2 || manifests.Items[1].ID != "foo" {
|
|
|
|
|
t.Errorf("Unexpected manifest list: %#v", manifests)
|
|
|
|
|
}
|
|
|
|
@@ -325,11 +325,11 @@ func TestEtcdDeletePod(t *testing.T) {
|
|
|
|
|
fakeClient.TestIndex = true
|
|
|
|
|
|
|
|
|
|
key := "/registry/pods/foo"
|
|
|
|
|
fakeClient.Set(key, apitools.EncodeOrDie(api.Pod{
|
|
|
|
|
fakeClient.Set(key, runtime.EncodeOrDie(api.Pod{
|
|
|
|
|
JSONBase: api.JSONBase{ID: "foo"},
|
|
|
|
|
DesiredState: api.PodState{Host: "machine"},
|
|
|
|
|
}), 0)
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", apitools.EncodeOrDie(&api.ContainerManifestList{
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", runtime.EncodeOrDie(&api.ContainerManifestList{
|
|
|
|
|
Items: []api.ContainerManifest{
|
|
|
|
|
{ID: "foo"},
|
|
|
|
|
},
|
|
|
|
@@ -350,7 +350,7 @@ func TestEtcdDeletePod(t *testing.T) {
|
|
|
|
|
t.Fatalf("Unexpected error %v", err)
|
|
|
|
|
}
|
|
|
|
|
var manifests api.ContainerManifestList
|
|
|
|
|
apitools.DecodeInto([]byte(response.Node.Value), &manifests)
|
|
|
|
|
runtime.DecodeInto([]byte(response.Node.Value), &manifests)
|
|
|
|
|
if len(manifests.Items) != 0 {
|
|
|
|
|
t.Errorf("Unexpected container set: %s, expected empty", response.Node.Value)
|
|
|
|
|
}
|
|
|
|
@@ -361,11 +361,11 @@ func TestEtcdDeletePodMultipleContainers(t *testing.T) {
|
|
|
|
|
fakeClient.TestIndex = true
|
|
|
|
|
|
|
|
|
|
key := "/registry/pods/foo"
|
|
|
|
|
fakeClient.Set(key, apitools.EncodeOrDie(api.Pod{
|
|
|
|
|
fakeClient.Set(key, runtime.EncodeOrDie(api.Pod{
|
|
|
|
|
JSONBase: api.JSONBase{ID: "foo"},
|
|
|
|
|
DesiredState: api.PodState{Host: "machine"},
|
|
|
|
|
}), 0)
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", apitools.EncodeOrDie(&api.ContainerManifestList{
|
|
|
|
|
fakeClient.Set("/registry/hosts/machine/kubelet", runtime.EncodeOrDie(&api.ContainerManifestList{
|
|
|
|
|
Items: []api.ContainerManifest{
|
|
|
|
|
{ID: "foo"},
|
|
|
|
|
{ID: "bar"},
|
|
|
|
@@ -388,7 +388,7 @@ func TestEtcdDeletePodMultipleContainers(t *testing.T) {
|
|
|
|
|
t.Fatalf("Unexpected error %v", err)
|
|
|
|
|
}
|
|
|
|
|
var manifests api.ContainerManifestList
|
|
|
|
|
apitools.DecodeInto([]byte(response.Node.Value), &manifests)
|
|
|
|
|
runtime.DecodeInto([]byte(response.Node.Value), &manifests)
|
|
|
|
|
if len(manifests.Items) != 1 {
|
|
|
|
|
t.Fatalf("Unexpected manifest set: %#v, expected empty", manifests)
|
|
|
|
|
}
|
|
|
|
@@ -445,13 +445,13 @@ func TestEtcdListPods(t *testing.T) {
|
|
|
|
|
Node: &etcd.Node{
|
|
|
|
|
Nodes: []*etcd.Node{
|
|
|
|
|
{
|
|
|
|
|
Value: apitools.EncodeOrDie(api.Pod{
|
|
|
|
|
Value: runtime.EncodeOrDie(api.Pod{
|
|
|
|
|
JSONBase: api.JSONBase{ID: "foo"},
|
|
|
|
|
DesiredState: api.PodState{Host: "machine"},
|
|
|
|
|
}),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
Value: apitools.EncodeOrDie(api.Pod{
|
|
|
|
|
Value: runtime.EncodeOrDie(api.Pod{
|
|
|
|
|
JSONBase: api.JSONBase{ID: "bar"},
|
|
|
|
|
DesiredState: api.PodState{Host: "machine"},
|
|
|
|
|
}),
|
|
|
|
@@ -520,10 +520,10 @@ func TestEtcdListControllers(t *testing.T) {
|
|
|
|
|
Node: &etcd.Node{
|
|
|
|
|
Nodes: []*etcd.Node{
|
|
|
|
|
{
|
|
|
|
|
Value: apitools.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}),
|
|
|
|
|
Value: runtime.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
Value: apitools.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "bar"}}),
|
|
|
|
|
Value: runtime.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "bar"}}),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
@@ -543,7 +543,7 @@ func TestEtcdListControllers(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
func TestEtcdGetController(t *testing.T) {
|
|
|
|
|
fakeClient := tools.NewFakeEtcdClient(t)
|
|
|
|
|
fakeClient.Set("/registry/controllers/foo", apitools.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
fakeClient.Set("/registry/controllers/foo", runtime.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
ctrl, err := registry.GetController("foo")
|
|
|
|
|
if err != nil {
|
|
|
|
@@ -607,7 +607,7 @@ func TestEtcdCreateController(t *testing.T) {
|
|
|
|
|
t.Fatalf("Unexpected error %v", err)
|
|
|
|
|
}
|
|
|
|
|
var ctrl api.ReplicationController
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &ctrl)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &ctrl)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
@@ -619,7 +619,7 @@ func TestEtcdCreateController(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
func TestEtcdCreateControllerAlreadyExisting(t *testing.T) {
|
|
|
|
|
fakeClient := tools.NewFakeEtcdClient(t)
|
|
|
|
|
fakeClient.Set("/registry/controllers/foo", apitools.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
fakeClient.Set("/registry/controllers/foo", runtime.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
err := registry.CreateController(api.ReplicationController{
|
|
|
|
@@ -636,7 +636,7 @@ func TestEtcdUpdateController(t *testing.T) {
|
|
|
|
|
fakeClient := tools.NewFakeEtcdClient(t)
|
|
|
|
|
fakeClient.TestIndex = true
|
|
|
|
|
|
|
|
|
|
resp, _ := fakeClient.Set("/registry/controllers/foo", apitools.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
resp, _ := fakeClient.Set("/registry/controllers/foo", runtime.EncodeOrDie(api.ReplicationController{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
err := registry.UpdateController(api.ReplicationController{
|
|
|
|
|
JSONBase: api.JSONBase{ID: "foo", ResourceVersion: resp.Node.ModifiedIndex},
|
|
|
|
@@ -662,10 +662,10 @@ func TestEtcdListServices(t *testing.T) {
|
|
|
|
|
Node: &etcd.Node{
|
|
|
|
|
Nodes: []*etcd.Node{
|
|
|
|
|
{
|
|
|
|
|
Value: apitools.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}),
|
|
|
|
|
Value: runtime.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
Value: apitools.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "bar"}}),
|
|
|
|
|
Value: runtime.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "bar"}}),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
@@ -699,7 +699,7 @@ func TestEtcdCreateService(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var service api.Service
|
|
|
|
|
err = apitools.DecodeInto([]byte(resp.Node.Value), &service)
|
|
|
|
|
err = runtime.DecodeInto([]byte(resp.Node.Value), &service)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
@@ -711,7 +711,7 @@ func TestEtcdCreateService(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
func TestEtcdCreateServiceAlreadyExisting(t *testing.T) {
|
|
|
|
|
fakeClient := tools.NewFakeEtcdClient(t)
|
|
|
|
|
fakeClient.Set("/registry/services/specs/foo", apitools.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
fakeClient.Set("/registry/services/specs/foo", runtime.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
err := registry.CreateService(api.Service{
|
|
|
|
|
JSONBase: api.JSONBase{ID: "foo"},
|
|
|
|
@@ -723,7 +723,7 @@ func TestEtcdCreateServiceAlreadyExisting(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
func TestEtcdGetService(t *testing.T) {
|
|
|
|
|
fakeClient := tools.NewFakeEtcdClient(t)
|
|
|
|
|
fakeClient.Set("/registry/services/specs/foo", apitools.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
fakeClient.Set("/registry/services/specs/foo", runtime.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
service, err := registry.GetService("foo")
|
|
|
|
|
if err != nil {
|
|
|
|
@@ -775,7 +775,7 @@ func TestEtcdUpdateService(t *testing.T) {
|
|
|
|
|
fakeClient := tools.NewFakeEtcdClient(t)
|
|
|
|
|
fakeClient.TestIndex = true
|
|
|
|
|
|
|
|
|
|
resp, _ := fakeClient.Set("/registry/services/specs/foo", apitools.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
resp, _ := fakeClient.Set("/registry/services/specs/foo", runtime.EncodeOrDie(api.Service{JSONBase: api.JSONBase{ID: "foo"}}), 0)
|
|
|
|
|
registry := NewTestEtcdRegistry(fakeClient)
|
|
|
|
|
testService := api.Service{
|
|
|
|
|
JSONBase: api.JSONBase{ID: "foo", ResourceVersion: resp.Node.ModifiedIndex},
|
|
|
|
@@ -812,7 +812,7 @@ func TestEtcdGetEndpoints(t *testing.T) {
|
|
|
|
|
Endpoints: []string{"127.0.0.1:34855"},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fakeClient.Set("/registry/services/endpoints/foo", apitools.EncodeOrDie(endpoints), 0)
|
|
|
|
|
fakeClient.Set("/registry/services/endpoints/foo", runtime.EncodeOrDie(endpoints), 0)
|
|
|
|
|
|
|
|
|
|
got, err := registry.GetEndpoints("foo")
|
|
|
|
|
if err != nil {
|
|
|
|
@@ -833,7 +833,7 @@ func TestEtcdUpdateEndpoints(t *testing.T) {
|
|
|
|
|
Endpoints: []string{"baz", "bar"},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fakeClient.Set("/registry/services/endpoints/foo", apitools.EncodeOrDie(api.Endpoints{}), 0)
|
|
|
|
|
fakeClient.Set("/registry/services/endpoints/foo", runtime.EncodeOrDie(api.Endpoints{}), 0)
|
|
|
|
|
|
|
|
|
|
err := registry.UpdateEndpoints(endpoints)
|
|
|
|
|
if err != nil {
|
|
|
|
@@ -845,7 +845,7 @@ func TestEtcdUpdateEndpoints(t *testing.T) {
|
|
|
|
|
t.Fatalf("Unexpected error %v", err)
|
|
|
|
|
}
|
|
|
|
|
var endpointsOut api.Endpoints
|
|
|
|
|
err = apitools.DecodeInto([]byte(response.Node.Value), &endpointsOut)
|
|
|
|
|
err = runtime.DecodeInto([]byte(response.Node.Value), &endpointsOut)
|
|
|
|
|
if !reflect.DeepEqual(endpoints, endpointsOut) {
|
|
|
|
|
t.Errorf("Unexpected endpoints: %#v, expected %#v", endpointsOut, endpoints)
|
|
|
|
|
}
|
|
|
|
|