Get rid of DeleteAllEtcdKeys

This commit is contained in:
Wojciech Tyczynski 2016-07-05 13:25:56 +02:00
parent 5e7c309b29
commit 4fa3aba0c2
7 changed files with 17 additions and 44 deletions

View File

@ -71,7 +71,7 @@ type passthroughLogger struct{}
// Addf logs info immediately. // Addf logs info immediately.
func (passthroughLogger) Addf(format string, data ...interface{}) { func (passthroughLogger) Addf(format string, data ...interface{}) {
glog.InfoDepth(1, fmt.Sprintf(format, data...)) glog.V(2).Info(fmt.Sprintf(format, data...))
} }
// DefaultStacktracePred is the default implementation of StacktracePred. // DefaultStacktracePred is the default implementation of StacktracePred.

View File

@ -294,6 +294,14 @@ func (r *masterCountEndpointReconciler) ReconcileEndpoints(serviceName string, i
}, },
} }
} }
if errors.IsNotFound(err) {
// Simply create non-existing endpoints for the service.
e.Subsets = []api.EndpointSubset{{
Addresses: []api.EndpointAddress{{IP: ip.String()}},
Ports: endpointPorts,
}}
return r.endpointRegistry.UpdateEndpoints(ctx, e)
}
// First, determine if the endpoint is in the format we expect (one // First, determine if the endpoint is in the format we expect (one
// subset, ports matching endpointPorts, N IP addresses). // subset, ports matching endpointPorts, N IP addresses).
@ -304,7 +312,7 @@ func (r *masterCountEndpointReconciler) ReconcileEndpoints(serviceName string, i
Addresses: []api.EndpointAddress{{IP: ip.String()}}, Addresses: []api.EndpointAddress{{IP: ip.String()}},
Ports: endpointPorts, Ports: endpointPorts,
}} }}
glog.Warningf("Resetting endpoints for master service %q to %v", serviceName, e) glog.Warningf("Resetting endpoints for master service %q to %#v", serviceName, e)
return r.endpointRegistry.UpdateEndpoints(ctx, e) return r.endpointRegistry.UpdateEndpoints(ctx, e)
} }
if ipCorrect && portsCorrect { if ipCorrect && portsCorrect {

View File

@ -791,14 +791,13 @@ func runSelfLinkTestOnNamespace(t *testing.T, c *client.Client, namespace string
} }
func TestSelfLinkOnNamespace(t *testing.T) { func TestSelfLinkOnNamespace(t *testing.T) {
// TODO: Limit the test to a single non-default namespace and clean this up at the end.
framework.DeleteAllEtcdKeys()
_, s := framework.RunAMaster(nil) _, s := framework.RunAMaster(nil)
defer s.Close() defer s.Close()
ns := framework.CreateTestingNamespace("selflink", s, t)
defer framework.DeleteTestingNamespace(ns, s, t)
c := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}) c := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
runSelfLinkTestOnNamespace(t, c, api.NamespaceDefault) runSelfLinkTestOnNamespace(t, c, ns.Name)
runSelfLinkTestOnNamespace(t, c, "other-namespace")
} }

View File

@ -62,21 +62,3 @@ func WithEtcdKey(f func(string)) {
defer etcd.NewKeysAPI(NewEtcdClient()).Delete(context.TODO(), prefix, &etcd.DeleteOptions{Recursive: true}) defer etcd.NewKeysAPI(NewEtcdClient()).Delete(context.TODO(), prefix, &etcd.DeleteOptions{Recursive: true})
f(prefix) f(prefix)
} }
// DeleteAllEtcdKeys deletes all keys from etcd.
// TODO: Instead of sprinkling calls to this throughout the code, adjust the
// prefix in etcdtest package; then just delete everything once at the end
// of the test run.
func DeleteAllEtcdKeys() {
glog.Infof("Deleting all etcd keys")
keysAPI := etcd.NewKeysAPI(NewEtcdClient())
keys, err := keysAPI.Get(context.TODO(), "/", nil)
if err != nil {
glog.Fatalf("Unable to list root etcd keys: %v", err)
}
for _, node := range keys.Node.Nodes {
if _, err := keysAPI.Delete(context.TODO(), node.Key, &etcd.DeleteOptions{Recursive: true}); err != nil {
glog.Fatalf("Unable delete key: %v", err)
}
}
}

View File

@ -91,8 +91,6 @@ type Config struct {
// If nil, a default is used, partially filled configs will not get populated. // If nil, a default is used, partially filled configs will not get populated.
MasterConfig *master.Config MasterConfig *master.Config
StartReplicationManager bool StartReplicationManager bool
// If true, all existing etcd keys are purged before starting master components
DeleteEtcdKeys bool
// Client throttling qps // Client throttling qps
QPS float32 QPS float32
// Client burst qps, also burst replicas allowed in rc manager // Client burst qps, also burst replicas allowed in rc manager
@ -105,9 +103,6 @@ func NewMasterComponents(c *Config) *MasterComponents {
m, s := startMasterOrDie(c.MasterConfig) m, s := startMasterOrDie(c.MasterConfig)
// TODO: Allow callers to pipe through a different master url and create a client/start components using it. // TODO: Allow callers to pipe through a different master url and create a client/start components using it.
glog.Infof("Master %+v", s.URL) glog.Infof("Master %+v", s.URL)
if c.DeleteEtcdKeys {
DeleteAllEtcdKeys()
}
// TODO: caesarxuchao: remove this client when the refactoring of client libraray is done. // TODO: caesarxuchao: remove this client when the refactoring of client libraray is done.
restClient := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst}) restClient := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst})
clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst}) clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst})

View File

@ -24,7 +24,6 @@ import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"net/http/httptest"
"strings" "strings"
"testing" "testing"
"time" "time"
@ -36,7 +35,6 @@ import (
"k8s.io/kubernetes/pkg/apis/batch/v2alpha1" "k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/master"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
) )
@ -392,21 +390,12 @@ func countEndpoints(eps *api.Endpoints) int {
} }
func TestMasterService(t *testing.T) { func TestMasterService(t *testing.T) {
// TODO: Limit the test to a single non-default namespace and clean this up at the end. _, s := framework.RunAMaster(framework.NewIntegrationTestMasterConfig())
framework.DeleteAllEtcdKeys()
m, err := master.New(framework.NewIntegrationTestMasterConfig())
if err != nil {
t.Fatalf("Error in bringing up the master: %v", err)
}
s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
m.Handler.ServeHTTP(w, req)
}))
defer s.Close() defer s.Close()
client := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}) client := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
err = wait.Poll(time.Second, time.Minute, func() (bool, error) { err := wait.Poll(time.Second, time.Minute, func() (bool, error) {
svcList, err := client.Services(api.NamespaceDefault).List(api.ListOptions{}) svcList, err := client.Services(api.NamespaceDefault).List(api.ListOptions{})
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)

View File

@ -67,7 +67,7 @@ func scrapeMetrics(s *httptest.Server) ([]*prometheuspb.MetricFamily, error) {
if err := proto.UnmarshalText(scanner.Text(), &metric); err != nil { if err := proto.UnmarshalText(scanner.Text(), &metric); err != nil {
return nil, fmt.Errorf("Failed to unmarshal line of metrics response: %v", err) return nil, fmt.Errorf("Failed to unmarshal line of metrics response: %v", err)
} }
glog.Infof("Got metric %q", metric.GetName()) glog.V(4).Infof("Got metric %q", metric.GetName())
metrics = append(metrics, &metric) metrics = append(metrics, &metric)
} }
return metrics, nil return metrics, nil