21123: Add container_requests/{uuid}/container_status endpoint.
[arvados.git] / lib / controller / rpc / conn.go
index fd42a0403f6a905e567a7a3bb5f41d42ff5eb65d..c6be679a256cb2e860d5ce179646e3378219d1c6 100644 (file)
@@ -208,7 +208,7 @@ func (conn *Conn) DiscoveryDocument(ctx context.Context) (arvados.DiscoveryDocum
                return dd, err
        }
        conn.discoveryDocument = &dd
-       discoveryDocumentExpires = time.Now().Add(time.Hour)
+       conn.discoveryDocumentExpires = time.Now().Add(time.Hour)
        return *conn.discoveryDocument, nil
 }
 
@@ -482,11 +482,11 @@ func (conn *Conn) socket(ctx context.Context, u *url.URL, upgradeHeader string,
                } else {
                        message = fmt.Sprintf("%q", body)
                }
-               return connresp, fmt.Errorf("server did not provide a tunnel: %s: %s", resp.Status, message)
+               return connresp, httpserver.ErrorWithStatus(fmt.Errorf("server did not provide a tunnel: %s: %s", resp.Status, message), resp.StatusCode)
        }
        if strings.ToLower(resp.Header.Get("Upgrade")) != upgradeHeader ||
                strings.ToLower(resp.Header.Get("Connection")) != "upgrade" {
-               return connresp, fmt.Errorf("bad response from server: Upgrade %q Connection %q", resp.Header.Get("Upgrade"), resp.Header.Get("Connection"))
+               return connresp, httpserver.ErrorWithStatus(fmt.Errorf("bad response from server: Upgrade %q Connection %q", resp.Header.Get("Upgrade"), resp.Header.Get("Connection")), http.StatusBadGateway)
        }
        connresp.Conn = netconn
        connresp.Bufrw = &bufio.ReadWriter{Reader: bufr, Writer: bufw}
@@ -529,6 +529,13 @@ func (conn *Conn) ContainerRequestDelete(ctx context.Context, options arvados.De
        return resp, err
 }
 
+func (conn *Conn) ContainerRequestContainerStatus(ctx context.Context, options arvados.GetOptions) (arvados.ContainerStatus, error) {
+       ep := arvados.EndpointContainerRequestContainerStatus
+       var resp arvados.ContainerStatus
+       err := conn.requestAndDecode(ctx, &resp, ep, nil, options)
+       return resp, err
+}
+
 func (conn *Conn) ContainerRequestLog(ctx context.Context, options arvados.ContainerLogOptions) (resp http.Handler, err error) {
        proxy := &httputil.ReverseProxy{
                Transport: conn.httpClient.Transport,