Update the util/kubernetes client to retrieve logs

This commit is contained in:
Jake Sanders
2019-12-17 16:09:51 +00:00
parent 0415ead504
commit 53ca742c66
7 changed files with 85 additions and 9 deletions

View File

@@ -111,6 +111,17 @@ var tests = []testcase{
URI: "/apis/apps/v1/namespaces/default/deployments/baz",
Header: map[string]string{"foo": "bar"},
},
testcase{
ReqFn: func(opts *Options) *Request {
return NewRequest(opts).
Get().
Resource("pod").
SubResource("log").
Name("foolog")
},
Method: "GET",
URI: "/api/v1/namespaces/default/pods/foolog/log",
},
}
var wrappedHandler = func(test *testcase, t *testing.T) http.HandlerFunc {

View File

@@ -23,6 +23,7 @@ type Request struct {
resource string
resourceName *string
subResource *string
body io.Reader
err error
@@ -79,6 +80,13 @@ func (r *Request) Resource(s string) *Request {
return r
}
// SubResource sets a subresource on a resource,
// e.g. pods/log for pod logs
func (r *Request) SubResource(s string) *Request {
r.subResource = &s
return r
}
// Name is for targeting a specific resource by id
func (r *Request) Name(s string) *Request {
r.resourceName = &s
@@ -154,6 +162,9 @@ func (r *Request) request() (*http.Request, error) {
// append resourceName if it is present
if r.resourceName != nil {
url += *r.resourceName
if r.subResource != nil {
url += "/" + *r.subResource
}
}
// append any query params
@@ -202,6 +213,20 @@ func (r *Request) Do() *Response {
return newResponse(res, err)
}
// Raw performs a Raw HTTP request to the Kubernetes API
func (r *Request) Raw() (*http.Response, error) {
req, err := r.request()
if err != nil {
return nil, err
}
res, err := r.client.Do(req)
if err != nil {
return nil, err
}
return res, nil
}
// Options ...
type Options struct {
Host string