Commit 570930be authored by Taylor Thomas's avatar Taylor Thomas Committed by GitHub

Merge pull request #2046 from thomastaylor312/fix/2043-wait-panic

fix(tiller): Fixes `--wait` panic on upgrade
parents 59bb5aa1 9afa04b7
...@@ -391,6 +391,11 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object, ...@@ -391,6 +391,11 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
} }
if patch == nil { if patch == nil {
log.Printf("Looks like there are no changes for %s", target.Name) log.Printf("Looks like there are no changes for %s", target.Name)
// This needs to happen to make sure that tiller has the latest info from the API
// Otherwise there will be no labels and other functions that use labels will panic
if err := target.Get(); err != nil {
return fmt.Errorf("error trying to refresh resource information: %v", err)
}
return nil return nil
} }
......
...@@ -147,14 +147,14 @@ func TestUpdate(t *testing.T) { ...@@ -147,14 +147,14 @@ func TestUpdate(t *testing.T) {
listB.Items[0].Spec.Containers[0].Ports = []api.ContainerPort{{Name: "https", ContainerPort: 443}} listB.Items[0].Spec.Containers[0].Ports = []api.ContainerPort{{Name: "https", ContainerPort: 443}}
listC.Items[0].Spec.Containers[0].Ports = []api.ContainerPort{{Name: "https", ContainerPort: 443}} listC.Items[0].Spec.Containers[0].Ports = []api.ContainerPort{{Name: "https", ContainerPort: 443}}
actions := make(map[string]string) var actions []string
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
p, m := req.URL.Path, req.Method p, m := req.URL.Path, req.Method
actions[p] = m actions = append(actions, p+":"+m)
t.Logf("got request %s %s", p, m) t.Logf("got request %s %s", p, m)
switch { switch {
case p == "/namespaces/default/pods/starfish" && m == "GET": case p == "/namespaces/default/pods/starfish" && m == "GET":
...@@ -201,16 +201,21 @@ func TestUpdate(t *testing.T) { ...@@ -201,16 +201,21 @@ func TestUpdate(t *testing.T) {
// if err := c.Update("test", objBody(codec, &listC), objBody(codec, &listA), false, 2, true); err != nil { // if err := c.Update("test", objBody(codec, &listC), objBody(codec, &listA), false, 2, true); err != nil {
// t.Fatal(err) // t.Fatal(err)
// } // }
expectedActions := map[string]string{ expectedActions := []string{
"/namespaces/default/pods/dolphin": "GET", "/namespaces/default/pods/starfish:GET",
"/namespaces/default/pods/otter": "GET", "/namespaces/default/pods/starfish:PATCH",
"/namespaces/default/pods/starfish": "PATCH", "/namespaces/default/pods/otter:GET",
"/namespaces/default/pods": "POST", "/namespaces/default/pods/otter:GET",
"/namespaces/default/pods/dolphin:GET",
"/namespaces/default/pods:POST",
}
if len(expectedActions) != len(actions) {
t.Errorf("unexpected number of requests, expected %d, got %d", len(expectedActions), len(actions))
return
} }
for k, v := range expectedActions { for k, v := range expectedActions {
if m, ok := actions[k]; !ok || m != v { if actions[k] != v {
t.Errorf("expected a %s request to %s", k, v) t.Errorf("expected %s request got %s", v, actions[k])
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment