Merge pull request #745 from smarterclayton/add_structured_reason
Evolve the api.Status object with Reason/Details
This commit is contained in:
@@ -246,13 +246,18 @@ func (r *Request) Do() Result {
|
||||
if err != nil {
|
||||
if statusErr, ok := err.(*StatusErr); ok {
|
||||
if statusErr.Status.Status == api.StatusWorking && r.pollPeriod != 0 {
|
||||
glog.Infof("Waiting for completion of /operations/%s", statusErr.Status.Details)
|
||||
time.Sleep(r.pollPeriod)
|
||||
// Make a poll request
|
||||
pollOp := r.c.PollFor(statusErr.Status.Details).PollPeriod(r.pollPeriod)
|
||||
// Could also say "return r.Do()" but this way doesn't grow the callstack.
|
||||
r = pollOp
|
||||
continue
|
||||
if statusErr.Status.Details != nil {
|
||||
id := statusErr.Status.Details.ID
|
||||
if len(id) > 0 {
|
||||
glog.Infof("Waiting for completion of /operations/%s", id)
|
||||
time.Sleep(r.pollPeriod)
|
||||
// Make a poll request
|
||||
pollOp := r.c.PollFor(id).PollPeriod(r.pollPeriod)
|
||||
// Could also say "return r.Do()" but this way doesn't grow the callstack.
|
||||
r = pollOp
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -258,10 +258,10 @@ func TestSetPollPeriod(t *testing.T) {
|
||||
|
||||
func TestPolling(t *testing.T) {
|
||||
objects := []interface{}{
|
||||
&api.Status{Status: api.StatusWorking, Details: "1234"},
|
||||
&api.Status{Status: api.StatusWorking, Details: "1234"},
|
||||
&api.Status{Status: api.StatusWorking, Details: "1234"},
|
||||
&api.Status{Status: api.StatusWorking, Details: "1234"},
|
||||
&api.Status{Status: api.StatusWorking, Details: &api.StatusDetails{ID: "1234"}},
|
||||
&api.Status{Status: api.StatusWorking, Details: &api.StatusDetails{ID: "1234"}},
|
||||
&api.Status{Status: api.StatusWorking, Details: &api.StatusDetails{ID: "1234"}},
|
||||
&api.Status{Status: api.StatusWorking, Details: &api.StatusDetails{ID: "1234"}},
|
||||
&api.Status{Status: api.StatusSuccess},
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user