TEST: add option to dump logs during helm test

Signed-off-by: Jeff Knurek <j.knurek@travelaudience.com>
pull/6167/head
Jeff Knurek 6 years ago
parent e04fa72f6f
commit 653541d145

@ -350,6 +350,8 @@ message TestReleaseRequest {
bool cleanup = 3; bool cleanup = 3;
// parallel specifies whether or not to run test pods in parallel // parallel specifies whether or not to run test pods in parallel
bool parallel = 4; bool parallel = 4;
// logs specifies whether or not to dump the logs from the test pods
bool logs = 5;
} }
// TestReleaseResponse represents a message from executing a test // TestReleaseResponse represents a message from executing a test

@ -40,6 +40,7 @@ type releaseTestCmd struct {
timeout int64 timeout int64
cleanup bool cleanup bool
parallel bool parallel bool
logs bool
} }
func newReleaseTestCmd(c helm.Interface, out io.Writer) *cobra.Command { func newReleaseTestCmd(c helm.Interface, out io.Writer) *cobra.Command {
@ -69,6 +70,7 @@ func newReleaseTestCmd(c helm.Interface, out io.Writer) *cobra.Command {
f.Int64Var(&rlsTest.timeout, "timeout", 300, "Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") f.Int64Var(&rlsTest.timeout, "timeout", 300, "Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)")
f.BoolVar(&rlsTest.cleanup, "cleanup", false, "Delete test pods upon completion") f.BoolVar(&rlsTest.cleanup, "cleanup", false, "Delete test pods upon completion")
f.BoolVar(&rlsTest.parallel, "parallel", false, "Run test pods in parallel") f.BoolVar(&rlsTest.parallel, "parallel", false, "Run test pods in parallel")
f.BoolVar(&rlsTest.logs, "logs", false, "Dump the logs from test pods (this runs after all tests are complete, but before any cleanup")
// set defaults from environment // set defaults from environment
settings.InitTLS(f) settings.InitTLS(f)
@ -82,6 +84,7 @@ func (t *releaseTestCmd) run() (err error) {
helm.ReleaseTestTimeout(t.timeout), helm.ReleaseTestTimeout(t.timeout),
helm.ReleaseTestCleanup(t.cleanup), helm.ReleaseTestCleanup(t.cleanup),
helm.ReleaseTestParallel(t.parallel), helm.ReleaseTestParallel(t.parallel),
helm.ReleaseTestLogs(t.logs),
) )
testErr := &testErr{} testErr := &testErr{}

@ -234,6 +234,13 @@ func ReleaseTestParallel(parallel bool) ReleaseTestOption {
} }
} }
// ReleaseTestLogs is a boolean value representing whether to dump the logs from test pods
func ReleaseTestLogs(logs bool) ReleaseTestOption {
return func(opts *options) {
opts.testReq.Logs = logs
}
}
// RollbackTimeout specifies the number of seconds before kubernetes calls timeout // RollbackTimeout specifies the number of seconds before kubernetes calls timeout
func RollbackTimeout(timeout int64) RollbackOption { func RollbackTimeout(timeout int64) RollbackOption {
return func(opts *options) { return func(opts *options) {

@ -929,6 +929,24 @@ func (c *Client) watchPodUntilComplete(timeout time.Duration, info *resource.Inf
return err return err
} }
// GetPodLogs takes pod name and namespace and returns the current logs (streaming is NOT enabled).
func (c *Client) GetPodLogs(name, ns string) (string, error) {
client, _ := c.KubernetesClientSet()
req := client.CoreV1().Pods(ns).GetLogs(name, &v1.PodLogOptions{})
podLogs, err := req.Stream()
if err != nil {
return "", fmt.Errorf("error in opening log stream, got: %s", err)
}
defer podLogs.Close()
buf := new(bytes.Buffer)
_, err = io.Copy(buf, podLogs)
if err != nil {
return "", fmt.Errorf("error in copy information from log stream to buf, got: %s", err)
}
return buf.String(), nil
}
func isPodComplete(event watch.Event) (bool, error) { func isPodComplete(event watch.Event) (bool, error) {
o, ok := event.Object.(*v1.Pod) o, ok := event.Object.(*v1.Pod)
if !ok { if !ok {

@ -53,7 +53,7 @@ func (x ListSort_SortBy) String() string {
return proto.EnumName(ListSort_SortBy_name, int32(x)) return proto.EnumName(ListSort_SortBy_name, int32(x))
} }
func (ListSort_SortBy) EnumDescriptor() ([]byte, []int) { func (ListSort_SortBy) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{1, 0} return fileDescriptor_tiller_4fda016196f30239, []int{1, 0}
} }
// SortOrder defines sort orders to augment sorting operations. // SortOrder defines sort orders to augment sorting operations.
@ -77,7 +77,7 @@ func (x ListSort_SortOrder) String() string {
return proto.EnumName(ListSort_SortOrder_name, int32(x)) return proto.EnumName(ListSort_SortOrder_name, int32(x))
} }
func (ListSort_SortOrder) EnumDescriptor() ([]byte, []int) { func (ListSort_SortOrder) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{1, 1} return fileDescriptor_tiller_4fda016196f30239, []int{1, 1}
} }
// ListReleasesRequest requests a list of releases. // ListReleasesRequest requests a list of releases.
@ -114,7 +114,7 @@ func (m *ListReleasesRequest) Reset() { *m = ListReleasesRequest{} }
func (m *ListReleasesRequest) String() string { return proto.CompactTextString(m) } func (m *ListReleasesRequest) String() string { return proto.CompactTextString(m) }
func (*ListReleasesRequest) ProtoMessage() {} func (*ListReleasesRequest) ProtoMessage() {}
func (*ListReleasesRequest) Descriptor() ([]byte, []int) { func (*ListReleasesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{0} return fileDescriptor_tiller_4fda016196f30239, []int{0}
} }
func (m *ListReleasesRequest) XXX_Unmarshal(b []byte) error { func (m *ListReleasesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListReleasesRequest.Unmarshal(m, b) return xxx_messageInfo_ListReleasesRequest.Unmarshal(m, b)
@ -194,7 +194,7 @@ func (m *ListSort) Reset() { *m = ListSort{} }
func (m *ListSort) String() string { return proto.CompactTextString(m) } func (m *ListSort) String() string { return proto.CompactTextString(m) }
func (*ListSort) ProtoMessage() {} func (*ListSort) ProtoMessage() {}
func (*ListSort) Descriptor() ([]byte, []int) { func (*ListSort) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{1} return fileDescriptor_tiller_4fda016196f30239, []int{1}
} }
func (m *ListSort) XXX_Unmarshal(b []byte) error { func (m *ListSort) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListSort.Unmarshal(m, b) return xxx_messageInfo_ListSort.Unmarshal(m, b)
@ -234,7 +234,7 @@ func (m *ListReleasesResponse) Reset() { *m = ListReleasesResponse{} }
func (m *ListReleasesResponse) String() string { return proto.CompactTextString(m) } func (m *ListReleasesResponse) String() string { return proto.CompactTextString(m) }
func (*ListReleasesResponse) ProtoMessage() {} func (*ListReleasesResponse) ProtoMessage() {}
func (*ListReleasesResponse) Descriptor() ([]byte, []int) { func (*ListReleasesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{2} return fileDescriptor_tiller_4fda016196f30239, []int{2}
} }
func (m *ListReleasesResponse) XXX_Unmarshal(b []byte) error { func (m *ListReleasesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListReleasesResponse.Unmarshal(m, b) return xxx_messageInfo_ListReleasesResponse.Unmarshal(m, b)
@ -297,7 +297,7 @@ func (m *GetReleaseStatusRequest) Reset() { *m = GetReleaseStatusRequest
func (m *GetReleaseStatusRequest) String() string { return proto.CompactTextString(m) } func (m *GetReleaseStatusRequest) String() string { return proto.CompactTextString(m) }
func (*GetReleaseStatusRequest) ProtoMessage() {} func (*GetReleaseStatusRequest) ProtoMessage() {}
func (*GetReleaseStatusRequest) Descriptor() ([]byte, []int) { func (*GetReleaseStatusRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{3} return fileDescriptor_tiller_4fda016196f30239, []int{3}
} }
func (m *GetReleaseStatusRequest) XXX_Unmarshal(b []byte) error { func (m *GetReleaseStatusRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReleaseStatusRequest.Unmarshal(m, b) return xxx_messageInfo_GetReleaseStatusRequest.Unmarshal(m, b)
@ -348,7 +348,7 @@ func (m *GetReleaseStatusResponse) Reset() { *m = GetReleaseStatusRespon
func (m *GetReleaseStatusResponse) String() string { return proto.CompactTextString(m) } func (m *GetReleaseStatusResponse) String() string { return proto.CompactTextString(m) }
func (*GetReleaseStatusResponse) ProtoMessage() {} func (*GetReleaseStatusResponse) ProtoMessage() {}
func (*GetReleaseStatusResponse) Descriptor() ([]byte, []int) { func (*GetReleaseStatusResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{4} return fileDescriptor_tiller_4fda016196f30239, []int{4}
} }
func (m *GetReleaseStatusResponse) XXX_Unmarshal(b []byte) error { func (m *GetReleaseStatusResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReleaseStatusResponse.Unmarshal(m, b) return xxx_messageInfo_GetReleaseStatusResponse.Unmarshal(m, b)
@ -404,7 +404,7 @@ func (m *GetReleaseContentRequest) Reset() { *m = GetReleaseContentReque
func (m *GetReleaseContentRequest) String() string { return proto.CompactTextString(m) } func (m *GetReleaseContentRequest) String() string { return proto.CompactTextString(m) }
func (*GetReleaseContentRequest) ProtoMessage() {} func (*GetReleaseContentRequest) ProtoMessage() {}
func (*GetReleaseContentRequest) Descriptor() ([]byte, []int) { func (*GetReleaseContentRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{5} return fileDescriptor_tiller_4fda016196f30239, []int{5}
} }
func (m *GetReleaseContentRequest) XXX_Unmarshal(b []byte) error { func (m *GetReleaseContentRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReleaseContentRequest.Unmarshal(m, b) return xxx_messageInfo_GetReleaseContentRequest.Unmarshal(m, b)
@ -451,7 +451,7 @@ func (m *GetReleaseContentResponse) Reset() { *m = GetReleaseContentResp
func (m *GetReleaseContentResponse) String() string { return proto.CompactTextString(m) } func (m *GetReleaseContentResponse) String() string { return proto.CompactTextString(m) }
func (*GetReleaseContentResponse) ProtoMessage() {} func (*GetReleaseContentResponse) ProtoMessage() {}
func (*GetReleaseContentResponse) Descriptor() ([]byte, []int) { func (*GetReleaseContentResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{6} return fileDescriptor_tiller_4fda016196f30239, []int{6}
} }
func (m *GetReleaseContentResponse) XXX_Unmarshal(b []byte) error { func (m *GetReleaseContentResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReleaseContentResponse.Unmarshal(m, b) return xxx_messageInfo_GetReleaseContentResponse.Unmarshal(m, b)
@ -519,7 +519,7 @@ func (m *UpdateReleaseRequest) Reset() { *m = UpdateReleaseRequest{} }
func (m *UpdateReleaseRequest) String() string { return proto.CompactTextString(m) } func (m *UpdateReleaseRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateReleaseRequest) ProtoMessage() {} func (*UpdateReleaseRequest) ProtoMessage() {}
func (*UpdateReleaseRequest) Descriptor() ([]byte, []int) { func (*UpdateReleaseRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{7} return fileDescriptor_tiller_4fda016196f30239, []int{7}
} }
func (m *UpdateReleaseRequest) XXX_Unmarshal(b []byte) error { func (m *UpdateReleaseRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateReleaseRequest.Unmarshal(m, b) return xxx_messageInfo_UpdateReleaseRequest.Unmarshal(m, b)
@ -649,7 +649,7 @@ func (m *UpdateReleaseResponse) Reset() { *m = UpdateReleaseResponse{} }
func (m *UpdateReleaseResponse) String() string { return proto.CompactTextString(m) } func (m *UpdateReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateReleaseResponse) ProtoMessage() {} func (*UpdateReleaseResponse) ProtoMessage() {}
func (*UpdateReleaseResponse) Descriptor() ([]byte, []int) { func (*UpdateReleaseResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{8} return fileDescriptor_tiller_4fda016196f30239, []int{8}
} }
func (m *UpdateReleaseResponse) XXX_Unmarshal(b []byte) error { func (m *UpdateReleaseResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateReleaseResponse.Unmarshal(m, b) return xxx_messageInfo_UpdateReleaseResponse.Unmarshal(m, b)
@ -707,7 +707,7 @@ func (m *RollbackReleaseRequest) Reset() { *m = RollbackReleaseRequest{}
func (m *RollbackReleaseRequest) String() string { return proto.CompactTextString(m) } func (m *RollbackReleaseRequest) String() string { return proto.CompactTextString(m) }
func (*RollbackReleaseRequest) ProtoMessage() {} func (*RollbackReleaseRequest) ProtoMessage() {}
func (*RollbackReleaseRequest) Descriptor() ([]byte, []int) { func (*RollbackReleaseRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{9} return fileDescriptor_tiller_4fda016196f30239, []int{9}
} }
func (m *RollbackReleaseRequest) XXX_Unmarshal(b []byte) error { func (m *RollbackReleaseRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RollbackReleaseRequest.Unmarshal(m, b) return xxx_messageInfo_RollbackReleaseRequest.Unmarshal(m, b)
@ -809,7 +809,7 @@ func (m *RollbackReleaseResponse) Reset() { *m = RollbackReleaseResponse
func (m *RollbackReleaseResponse) String() string { return proto.CompactTextString(m) } func (m *RollbackReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*RollbackReleaseResponse) ProtoMessage() {} func (*RollbackReleaseResponse) ProtoMessage() {}
func (*RollbackReleaseResponse) Descriptor() ([]byte, []int) { func (*RollbackReleaseResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{10} return fileDescriptor_tiller_4fda016196f30239, []int{10}
} }
func (m *RollbackReleaseResponse) XXX_Unmarshal(b []byte) error { func (m *RollbackReleaseResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RollbackReleaseResponse.Unmarshal(m, b) return xxx_messageInfo_RollbackReleaseResponse.Unmarshal(m, b)
@ -874,7 +874,7 @@ func (m *InstallReleaseRequest) Reset() { *m = InstallReleaseRequest{} }
func (m *InstallReleaseRequest) String() string { return proto.CompactTextString(m) } func (m *InstallReleaseRequest) String() string { return proto.CompactTextString(m) }
func (*InstallReleaseRequest) ProtoMessage() {} func (*InstallReleaseRequest) ProtoMessage() {}
func (*InstallReleaseRequest) Descriptor() ([]byte, []int) { func (*InstallReleaseRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{11} return fileDescriptor_tiller_4fda016196f30239, []int{11}
} }
func (m *InstallReleaseRequest) XXX_Unmarshal(b []byte) error { func (m *InstallReleaseRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InstallReleaseRequest.Unmarshal(m, b) return xxx_messageInfo_InstallReleaseRequest.Unmarshal(m, b)
@ -990,7 +990,7 @@ func (m *InstallReleaseResponse) Reset() { *m = InstallReleaseResponse{}
func (m *InstallReleaseResponse) String() string { return proto.CompactTextString(m) } func (m *InstallReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*InstallReleaseResponse) ProtoMessage() {} func (*InstallReleaseResponse) ProtoMessage() {}
func (*InstallReleaseResponse) Descriptor() ([]byte, []int) { func (*InstallReleaseResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{12} return fileDescriptor_tiller_4fda016196f30239, []int{12}
} }
func (m *InstallReleaseResponse) XXX_Unmarshal(b []byte) error { func (m *InstallReleaseResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InstallReleaseResponse.Unmarshal(m, b) return xxx_messageInfo_InstallReleaseResponse.Unmarshal(m, b)
@ -1038,7 +1038,7 @@ func (m *UninstallReleaseRequest) Reset() { *m = UninstallReleaseRequest
func (m *UninstallReleaseRequest) String() string { return proto.CompactTextString(m) } func (m *UninstallReleaseRequest) String() string { return proto.CompactTextString(m) }
func (*UninstallReleaseRequest) ProtoMessage() {} func (*UninstallReleaseRequest) ProtoMessage() {}
func (*UninstallReleaseRequest) Descriptor() ([]byte, []int) { func (*UninstallReleaseRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{13} return fileDescriptor_tiller_4fda016196f30239, []int{13}
} }
func (m *UninstallReleaseRequest) XXX_Unmarshal(b []byte) error { func (m *UninstallReleaseRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UninstallReleaseRequest.Unmarshal(m, b) return xxx_messageInfo_UninstallReleaseRequest.Unmarshal(m, b)
@ -1108,7 +1108,7 @@ func (m *UninstallReleaseResponse) Reset() { *m = UninstallReleaseRespon
func (m *UninstallReleaseResponse) String() string { return proto.CompactTextString(m) } func (m *UninstallReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*UninstallReleaseResponse) ProtoMessage() {} func (*UninstallReleaseResponse) ProtoMessage() {}
func (*UninstallReleaseResponse) Descriptor() ([]byte, []int) { func (*UninstallReleaseResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{14} return fileDescriptor_tiller_4fda016196f30239, []int{14}
} }
func (m *UninstallReleaseResponse) XXX_Unmarshal(b []byte) error { func (m *UninstallReleaseResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UninstallReleaseResponse.Unmarshal(m, b) return xxx_messageInfo_UninstallReleaseResponse.Unmarshal(m, b)
@ -1153,7 +1153,7 @@ func (m *GetVersionRequest) Reset() { *m = GetVersionRequest{} }
func (m *GetVersionRequest) String() string { return proto.CompactTextString(m) } func (m *GetVersionRequest) String() string { return proto.CompactTextString(m) }
func (*GetVersionRequest) ProtoMessage() {} func (*GetVersionRequest) ProtoMessage() {}
func (*GetVersionRequest) Descriptor() ([]byte, []int) { func (*GetVersionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{15} return fileDescriptor_tiller_4fda016196f30239, []int{15}
} }
func (m *GetVersionRequest) XXX_Unmarshal(b []byte) error { func (m *GetVersionRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetVersionRequest.Unmarshal(m, b) return xxx_messageInfo_GetVersionRequest.Unmarshal(m, b)
@ -1184,7 +1184,7 @@ func (m *GetVersionResponse) Reset() { *m = GetVersionResponse{} }
func (m *GetVersionResponse) String() string { return proto.CompactTextString(m) } func (m *GetVersionResponse) String() string { return proto.CompactTextString(m) }
func (*GetVersionResponse) ProtoMessage() {} func (*GetVersionResponse) ProtoMessage() {}
func (*GetVersionResponse) Descriptor() ([]byte, []int) { func (*GetVersionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{16} return fileDescriptor_tiller_4fda016196f30239, []int{16}
} }
func (m *GetVersionResponse) XXX_Unmarshal(b []byte) error { func (m *GetVersionResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetVersionResponse.Unmarshal(m, b) return xxx_messageInfo_GetVersionResponse.Unmarshal(m, b)
@ -1226,7 +1226,7 @@ func (m *GetHistoryRequest) Reset() { *m = GetHistoryRequest{} }
func (m *GetHistoryRequest) String() string { return proto.CompactTextString(m) } func (m *GetHistoryRequest) String() string { return proto.CompactTextString(m) }
func (*GetHistoryRequest) ProtoMessage() {} func (*GetHistoryRequest) ProtoMessage() {}
func (*GetHistoryRequest) Descriptor() ([]byte, []int) { func (*GetHistoryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{17} return fileDescriptor_tiller_4fda016196f30239, []int{17}
} }
func (m *GetHistoryRequest) XXX_Unmarshal(b []byte) error { func (m *GetHistoryRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetHistoryRequest.Unmarshal(m, b) return xxx_messageInfo_GetHistoryRequest.Unmarshal(m, b)
@ -1272,7 +1272,7 @@ func (m *GetHistoryResponse) Reset() { *m = GetHistoryResponse{} }
func (m *GetHistoryResponse) String() string { return proto.CompactTextString(m) } func (m *GetHistoryResponse) String() string { return proto.CompactTextString(m) }
func (*GetHistoryResponse) ProtoMessage() {} func (*GetHistoryResponse) ProtoMessage() {}
func (*GetHistoryResponse) Descriptor() ([]byte, []int) { func (*GetHistoryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{18} return fileDescriptor_tiller_4fda016196f30239, []int{18}
} }
func (m *GetHistoryResponse) XXX_Unmarshal(b []byte) error { func (m *GetHistoryResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetHistoryResponse.Unmarshal(m, b) return xxx_messageInfo_GetHistoryResponse.Unmarshal(m, b)
@ -1309,6 +1309,8 @@ type TestReleaseRequest struct {
Cleanup bool `protobuf:"varint,3,opt,name=cleanup,proto3" json:"cleanup,omitempty"` Cleanup bool `protobuf:"varint,3,opt,name=cleanup,proto3" json:"cleanup,omitempty"`
// parallel specifies whether or not to run test pods in parallel // parallel specifies whether or not to run test pods in parallel
Parallel bool `protobuf:"varint,4,opt,name=parallel,proto3" json:"parallel,omitempty"` Parallel bool `protobuf:"varint,4,opt,name=parallel,proto3" json:"parallel,omitempty"`
// logs specifies whether or not to dump the logs from the test pods
Logs bool `protobuf:"varint,5,opt,name=logs,proto3" json:"logs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -1318,7 +1320,7 @@ func (m *TestReleaseRequest) Reset() { *m = TestReleaseRequest{} }
func (m *TestReleaseRequest) String() string { return proto.CompactTextString(m) } func (m *TestReleaseRequest) String() string { return proto.CompactTextString(m) }
func (*TestReleaseRequest) ProtoMessage() {} func (*TestReleaseRequest) ProtoMessage() {}
func (*TestReleaseRequest) Descriptor() ([]byte, []int) { func (*TestReleaseRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{19} return fileDescriptor_tiller_4fda016196f30239, []int{19}
} }
func (m *TestReleaseRequest) XXX_Unmarshal(b []byte) error { func (m *TestReleaseRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestReleaseRequest.Unmarshal(m, b) return xxx_messageInfo_TestReleaseRequest.Unmarshal(m, b)
@ -1366,6 +1368,13 @@ func (m *TestReleaseRequest) GetParallel() bool {
return false return false
} }
func (m *TestReleaseRequest) GetLogs() bool {
if m != nil {
return m.Logs
}
return false
}
// TestReleaseResponse represents a message from executing a test // TestReleaseResponse represents a message from executing a test
type TestReleaseResponse struct { type TestReleaseResponse struct {
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
@ -1379,7 +1388,7 @@ func (m *TestReleaseResponse) Reset() { *m = TestReleaseResponse{} }
func (m *TestReleaseResponse) String() string { return proto.CompactTextString(m) } func (m *TestReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*TestReleaseResponse) ProtoMessage() {} func (*TestReleaseResponse) ProtoMessage() {}
func (*TestReleaseResponse) Descriptor() ([]byte, []int) { func (*TestReleaseResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_tiller_bb72ee4a42494734, []int{20} return fileDescriptor_tiller_4fda016196f30239, []int{20}
} }
func (m *TestReleaseResponse) XXX_Unmarshal(b []byte) error { func (m *TestReleaseResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TestReleaseResponse.Unmarshal(m, b) return xxx_messageInfo_TestReleaseResponse.Unmarshal(m, b)
@ -1889,92 +1898,93 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
Metadata: "hapi/services/tiller.proto", Metadata: "hapi/services/tiller.proto",
} }
func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor_tiller_bb72ee4a42494734) } func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor_tiller_4fda016196f30239) }
var fileDescriptor_tiller_bb72ee4a42494734 = []byte{ var fileDescriptor_tiller_4fda016196f30239 = []byte{
// 1337 bytes of a gzipped FileDescriptorProto // 1349 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0xdd, 0x72, 0xdb, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0xdd, 0x72, 0xdb, 0xc4,
0x14, 0x8e, 0x2d, 0xff, 0x1e, 0x27, 0xae, 0xbb, 0x4d, 0x13, 0xd5, 0x14, 0x26, 0x88, 0xa1, 0x75, 0x17, 0x8f, 0x2d, 0x7f, 0x1e, 0x27, 0xae, 0xbb, 0x4d, 0x13, 0xd5, 0xff, 0xfe, 0x99, 0x20, 0x86,
0x0b, 0x75, 0x20, 0x70, 0xc3, 0x0c, 0xc3, 0x4c, 0xea, 0x86, 0xa4, 0x10, 0xd2, 0x19, 0xb9, 0x2d, 0xd6, 0x2d, 0xd4, 0x81, 0xc0, 0x0d, 0x33, 0x0c, 0x33, 0xa9, 0x1b, 0x92, 0x42, 0x48, 0x67, 0x94,
0x33, 0xcc, 0x30, 0x1e, 0xc5, 0x5e, 0xb7, 0xa2, 0xb2, 0xd6, 0x68, 0x57, 0xa1, 0x79, 0x04, 0x2e, 0xb6, 0xcc, 0x30, 0xc3, 0x78, 0x14, 0x7b, 0x9d, 0x8a, 0xca, 0x5a, 0xa3, 0x5d, 0x85, 0xe6, 0x11,
0x79, 0x07, 0xae, 0x79, 0x06, 0x6e, 0x79, 0x06, 0x5e, 0x86, 0xd9, 0x3f, 0x45, 0x2b, 0x4b, 0xae, 0x98, 0xe1, 0x86, 0x77, 0xe0, 0x9a, 0x67, 0xe0, 0x96, 0x67, 0xe0, 0x65, 0x98, 0xfd, 0x52, 0xb4,
0xc8, 0x4d, 0xac, 0xdd, 0x73, 0xf6, 0xfc, 0x7c, 0xdf, 0x9e, 0xb3, 0x67, 0x02, 0xfd, 0xd7, 0xde, 0xb2, 0xe4, 0x88, 0xdc, 0x58, 0xda, 0x3d, 0x67, 0xcf, 0xc7, 0xef, 0xb7, 0xe7, 0xe8, 0x24, 0xd0,
0xd2, 0xdf, 0xa7, 0x38, 0xba, 0xf0, 0xa7, 0x98, 0xee, 0x33, 0x3f, 0x08, 0x70, 0x34, 0x5c, 0x46, 0x7f, 0xe3, 0x2d, 0xfc, 0x5d, 0x8a, 0xa3, 0x0b, 0x7f, 0x82, 0xe9, 0x2e, 0xf3, 0x83, 0x00, 0x47,
0x84, 0x11, 0xb4, 0xcd, 0x65, 0x43, 0x2d, 0x1b, 0x4a, 0x59, 0x7f, 0x47, 0x9c, 0x98, 0xbe, 0xf6, 0xc3, 0x45, 0x44, 0x18, 0x41, 0x9b, 0x5c, 0x36, 0xd4, 0xb2, 0xa1, 0x94, 0xf5, 0xb7, 0xc4, 0x89,
0x22, 0x26, 0xff, 0x4a, 0xed, 0xfe, 0x6e, 0x7a, 0x9f, 0x84, 0x73, 0xff, 0x95, 0x12, 0x48, 0x17, 0xc9, 0x1b, 0x2f, 0x62, 0xf2, 0x57, 0x6a, 0xf7, 0xb7, 0xd3, 0xfb, 0x24, 0x9c, 0xf9, 0xe7, 0x4a,
0x11, 0x0e, 0xb0, 0x47, 0xb1, 0xfe, 0x35, 0x0e, 0x69, 0x99, 0x1f, 0xce, 0x89, 0x12, 0xbc, 0x67, 0x20, 0x5d, 0x44, 0x38, 0xc0, 0x1e, 0xc5, 0xfa, 0x69, 0x1c, 0xd2, 0x32, 0x3f, 0x9c, 0x11, 0x25,
0x08, 0x18, 0xa6, 0x6c, 0x12, 0xc5, 0xa1, 0x12, 0xde, 0x31, 0x84, 0x94, 0x79, 0x2c, 0xa6, 0x86, 0xf8, 0x9f, 0x21, 0x60, 0x98, 0xb2, 0x71, 0x14, 0x87, 0x4a, 0x78, 0xcf, 0x10, 0x52, 0xe6, 0xb1,
0xb3, 0x0b, 0x1c, 0x51, 0x9f, 0x84, 0xfa, 0x57, 0xca, 0x9c, 0xbf, 0xab, 0x70, 0xeb, 0xd4, 0xa7, 0x98, 0x1a, 0xce, 0x2e, 0x70, 0x44, 0x7d, 0x12, 0xea, 0xa7, 0x94, 0x39, 0x7f, 0x55, 0xe1, 0xce,
0xcc, 0x95, 0x07, 0xa9, 0x8b, 0x7f, 0x8d, 0x31, 0x65, 0x68, 0x1b, 0xea, 0x81, 0xbf, 0xf0, 0x99, 0xb1, 0x4f, 0x99, 0x2b, 0x0f, 0x52, 0x17, 0xff, 0x1c, 0x63, 0xca, 0xd0, 0x26, 0xd4, 0x03, 0x7f,
0x5d, 0xd9, 0xab, 0x0c, 0x2c, 0x57, 0x2e, 0xd0, 0x0e, 0x34, 0xc8, 0x7c, 0x4e, 0x31, 0xb3, 0xab, 0xee, 0x33, 0xbb, 0xb2, 0x53, 0x19, 0x58, 0xae, 0x5c, 0xa0, 0x2d, 0x68, 0x90, 0xd9, 0x8c, 0x62,
0x7b, 0x95, 0x41, 0xdb, 0x55, 0x2b, 0xf4, 0x0d, 0x34, 0x29, 0x89, 0xd8, 0xe4, 0xfc, 0xd2, 0xb6, 0x66, 0x57, 0x77, 0x2a, 0x83, 0xb6, 0xab, 0x56, 0xe8, 0x2b, 0x68, 0x52, 0x12, 0xb1, 0xf1, 0xd9,
0xf6, 0x2a, 0x83, 0xee, 0xc1, 0xc7, 0xc3, 0x3c, 0x9c, 0x86, 0xdc, 0xd3, 0x98, 0x44, 0x6c, 0xc8, 0xa5, 0x6d, 0xed, 0x54, 0x06, 0xdd, 0xbd, 0x0f, 0x87, 0x79, 0x38, 0x0d, 0xb9, 0xa7, 0x53, 0x12,
0xff, 0x3c, 0xbe, 0x74, 0x1b, 0x54, 0xfc, 0x72, 0xbb, 0x73, 0x3f, 0x60, 0x38, 0xb2, 0x6b, 0xd2, 0xb1, 0x21, 0xff, 0x79, 0x7a, 0xe9, 0x36, 0xa8, 0x78, 0x72, 0xbb, 0x33, 0x3f, 0x60, 0x38, 0xb2,
0xae, 0x5c, 0xa1, 0x63, 0x00, 0x61, 0x97, 0x44, 0x33, 0x1c, 0xd9, 0x75, 0x61, 0x7a, 0x50, 0xc2, 0x6b, 0xd2, 0xae, 0x5c, 0xa1, 0x43, 0x00, 0x61, 0x97, 0x44, 0x53, 0x1c, 0xd9, 0x75, 0x61, 0x7a,
0xf4, 0x33, 0xae, 0xef, 0xb6, 0xa9, 0xfe, 0x44, 0x5f, 0xc3, 0xa6, 0x84, 0x64, 0x32, 0x25, 0x33, 0x50, 0xc2, 0xf4, 0x0b, 0xae, 0xef, 0xb6, 0xa9, 0x7e, 0x45, 0x5f, 0xc2, 0xba, 0x84, 0x64, 0x3c,
0x4c, 0xed, 0xc6, 0x9e, 0x35, 0xe8, 0x1e, 0xdc, 0x91, 0xa6, 0x34, 0xfc, 0x63, 0x09, 0xda, 0x88, 0x21, 0x53, 0x4c, 0xed, 0xc6, 0x8e, 0x35, 0xe8, 0xee, 0xdd, 0x93, 0xa6, 0x34, 0xfc, 0xa7, 0x12,
0xcc, 0xb0, 0xdb, 0x91, 0xea, 0xfc, 0x9b, 0xa2, 0xbb, 0xd0, 0x0e, 0xbd, 0x05, 0xa6, 0x4b, 0x6f, 0xb4, 0x11, 0x99, 0x62, 0xb7, 0x23, 0xd5, 0xf9, 0x3b, 0x45, 0xf7, 0xa1, 0x1d, 0x7a, 0x73, 0x4c,
0x8a, 0xed, 0xa6, 0x88, 0xf0, 0x6a, 0xc3, 0x09, 0xa1, 0xa5, 0x9d, 0x3b, 0x8f, 0xa1, 0x21, 0x53, 0x17, 0xde, 0x04, 0xdb, 0x4d, 0x11, 0xe1, 0xd5, 0x86, 0x13, 0x42, 0x4b, 0x3b, 0x77, 0x9e, 0x42,
0x43, 0x1d, 0x68, 0xbe, 0x38, 0xfb, 0xfe, 0xec, 0xd9, 0x8f, 0x67, 0xbd, 0x0d, 0xd4, 0x82, 0xda, 0x43, 0xa6, 0x86, 0x3a, 0xd0, 0x7c, 0x75, 0xf2, 0xed, 0xc9, 0x8b, 0xef, 0x4f, 0x7a, 0x6b, 0xa8,
0xd9, 0xe1, 0x0f, 0x47, 0xbd, 0x0a, 0xba, 0x09, 0x5b, 0xa7, 0x87, 0xe3, 0xe7, 0x13, 0xf7, 0xe8, 0x05, 0xb5, 0x93, 0xfd, 0xef, 0x0e, 0x7a, 0x15, 0x74, 0x1b, 0x36, 0x8e, 0xf7, 0x4f, 0x5f, 0x8e,
0xf4, 0xe8, 0x70, 0x7c, 0xf4, 0xa4, 0x57, 0x45, 0x5d, 0x80, 0xd1, 0xc9, 0xa1, 0xfb, 0x7c, 0x22, 0xdd, 0x83, 0xe3, 0x83, 0xfd, 0xd3, 0x83, 0x67, 0xbd, 0x2a, 0xea, 0x02, 0x8c, 0x8e, 0xf6, 0xdd,
0x54, 0x2c, 0xe7, 0x03, 0x68, 0x27, 0x39, 0xa0, 0x26, 0x58, 0x87, 0xe3, 0x91, 0x34, 0xf1, 0xe4, 0x97, 0x63, 0xa1, 0x62, 0x39, 0xef, 0x41, 0x3b, 0xc9, 0x01, 0x35, 0xc1, 0xda, 0x3f, 0x1d, 0x49,
0x68, 0x3c, 0xea, 0x55, 0x9c, 0xdf, 0x2b, 0xb0, 0x6d, 0x52, 0x46, 0x97, 0x24, 0xa4, 0x98, 0x73, 0x13, 0xcf, 0x0e, 0x4e, 0x47, 0xbd, 0x8a, 0xf3, 0x6b, 0x05, 0x36, 0x4d, 0xca, 0xe8, 0x82, 0x84,
0x36, 0x25, 0x71, 0x98, 0x70, 0x26, 0x16, 0x08, 0x41, 0x2d, 0xc4, 0x6f, 0x35, 0x63, 0xe2, 0x9b, 0x14, 0x73, 0xce, 0x26, 0x24, 0x0e, 0x13, 0xce, 0xc4, 0x02, 0x21, 0xa8, 0x85, 0xf8, 0x9d, 0x66,
0x6b, 0x32, 0xc2, 0xbc, 0x40, 0xb0, 0x65, 0xb9, 0x72, 0x81, 0x3e, 0x87, 0x96, 0x82, 0x82, 0xda, 0x4c, 0xbc, 0x73, 0x4d, 0x46, 0x98, 0x17, 0x08, 0xb6, 0x2c, 0x57, 0x2e, 0xd0, 0xa7, 0xd0, 0x52,
0xb5, 0x3d, 0x6b, 0xd0, 0x39, 0xb8, 0x6d, 0x02, 0xa4, 0x3c, 0xba, 0x89, 0x9a, 0x73, 0x0c, 0xbb, 0x50, 0x50, 0xbb, 0xb6, 0x63, 0x0d, 0x3a, 0x7b, 0x77, 0x4d, 0x80, 0x94, 0x47, 0x37, 0x51, 0x73,
0xc7, 0x58, 0x47, 0x22, 0xf1, 0xd3, 0x37, 0x88, 0xfb, 0xf5, 0x16, 0x58, 0x04, 0xc3, 0xfd, 0x7a, 0x0e, 0x61, 0xfb, 0x10, 0xeb, 0x48, 0x24, 0x7e, 0xfa, 0x06, 0x71, 0xbf, 0xde, 0x1c, 0x8b, 0x60,
0x0b, 0x8c, 0x6c, 0x68, 0xaa, 0xeb, 0x27, 0xc2, 0xa9, 0xbb, 0x7a, 0xe9, 0x30, 0xb0, 0x57, 0x0d, 0xb8, 0x5f, 0x6f, 0x8e, 0x91, 0x0d, 0x4d, 0x75, 0xfd, 0x44, 0x38, 0x75, 0x57, 0x2f, 0x1d, 0x06,
0xa9, 0xbc, 0xf2, 0x2c, 0xdd, 0x83, 0x1a, 0xaf, 0x0c, 0x61, 0xa6, 0x73, 0x80, 0xcc, 0x38, 0x9f, 0xf6, 0xb2, 0x21, 0x95, 0x57, 0x9e, 0xa5, 0x07, 0x50, 0xe3, 0x95, 0x21, 0xcc, 0x74, 0xf6, 0x90,
0x86, 0x73, 0xe2, 0x0a, 0xb9, 0x49, 0x9d, 0x95, 0xa5, 0xee, 0x24, 0xed, 0x75, 0x44, 0x42, 0x86, 0x19, 0xe7, 0xf3, 0x70, 0x46, 0x5c, 0x21, 0x37, 0xa9, 0xb3, 0xb2, 0xd4, 0x1d, 0xa5, 0xbd, 0x8e,
0x43, 0x76, 0xbd, 0xf8, 0x4f, 0xe1, 0x4e, 0x8e, 0x25, 0x95, 0xc0, 0x3e, 0x34, 0x55, 0x68, 0xc2, 0x48, 0xc8, 0x70, 0xc8, 0x6e, 0x16, 0xff, 0x31, 0xdc, 0xcb, 0xb1, 0xa4, 0x12, 0xd8, 0x85, 0xa6,
0x5a, 0x21, 0xae, 0x5a, 0xcb, 0xf9, 0xc7, 0x82, 0xed, 0x17, 0xcb, 0x99, 0xc7, 0xb0, 0x16, 0xad, 0x0a, 0x4d, 0x58, 0x2b, 0xc4, 0x55, 0x6b, 0x39, 0x7f, 0x5b, 0xb0, 0xf9, 0x6a, 0x31, 0xf5, 0x18,
0x09, 0xea, 0x3e, 0xd4, 0x45, 0x87, 0x51, 0x58, 0xdc, 0x94, 0xb6, 0x65, 0x1b, 0x1a, 0xf1, 0xbf, 0xd6, 0xa2, 0x15, 0x41, 0x3d, 0x84, 0xba, 0xe8, 0x30, 0x0a, 0x8b, 0xdb, 0xd2, 0xb6, 0x6c, 0x43,
0xae, 0x94, 0xa3, 0x87, 0xd0, 0xb8, 0xf0, 0x82, 0x18, 0x53, 0x01, 0x44, 0x82, 0x9a, 0xd2, 0x14, 0x23, 0xfe, 0xeb, 0x4a, 0x39, 0x7a, 0x0c, 0x8d, 0x0b, 0x2f, 0x88, 0x31, 0x15, 0x40, 0x24, 0xa8,
0xed, 0xc9, 0x55, 0x1a, 0x68, 0x17, 0x9a, 0xb3, 0xe8, 0x92, 0xf7, 0x17, 0x51, 0x92, 0x2d, 0xb7, 0x29, 0x4d, 0xd1, 0x9e, 0x5c, 0xa5, 0x81, 0xb6, 0xa1, 0x39, 0x8d, 0x2e, 0x79, 0x7f, 0x11, 0x25,
0x31, 0x8b, 0x2e, 0xdd, 0x38, 0x44, 0x1f, 0xc1, 0xd6, 0xcc, 0xa7, 0xde, 0x79, 0x80, 0x27, 0xaf, 0xd9, 0x72, 0x1b, 0xd3, 0xe8, 0xd2, 0x8d, 0x43, 0xf4, 0x01, 0x6c, 0x4c, 0x7d, 0xea, 0x9d, 0x05,
0x09, 0x79, 0x43, 0x45, 0x55, 0xb6, 0xdc, 0x4d, 0xb5, 0x79, 0xc2, 0xf7, 0x50, 0x9f, 0xdf, 0xa4, 0x78, 0xfc, 0x86, 0x90, 0xb7, 0x54, 0x54, 0x65, 0xcb, 0x5d, 0x57, 0x9b, 0x47, 0x7c, 0x0f, 0xf5,
0x69, 0x84, 0x3d, 0x86, 0xed, 0x86, 0x90, 0x27, 0x6b, 0x8e, 0x21, 0xf3, 0x17, 0x98, 0xc4, 0x4c, 0xf9, 0x4d, 0x9a, 0x44, 0xd8, 0x63, 0xd8, 0x6e, 0x08, 0x79, 0xb2, 0xe6, 0x18, 0x32, 0x7f, 0x8e,
0x94, 0x92, 0xe5, 0xea, 0x25, 0xfa, 0x10, 0x36, 0x23, 0x4c, 0x31, 0x9b, 0xa8, 0x28, 0x5b, 0xe2, 0x49, 0xcc, 0x44, 0x29, 0x59, 0xae, 0x5e, 0xa2, 0xf7, 0x61, 0x3d, 0xc2, 0x14, 0xb3, 0xb1, 0x8a,
0x64, 0x47, 0xec, 0xbd, 0x94, 0x61, 0x21, 0xa8, 0xfd, 0xe6, 0xf9, 0xcc, 0x6e, 0x0b, 0x91, 0xf8, 0xb2, 0x25, 0x4e, 0x76, 0xc4, 0xde, 0x6b, 0x19, 0x16, 0x82, 0xda, 0x2f, 0x9e, 0xcf, 0xec, 0xb6,
0x96, 0xc7, 0x62, 0x8a, 0xf5, 0x31, 0xd0, 0xc7, 0x62, 0x8a, 0xd5, 0xb1, 0x6d, 0xa8, 0xcf, 0x49, 0x10, 0x89, 0x77, 0x79, 0x2c, 0xa6, 0x58, 0x1f, 0x03, 0x7d, 0x2c, 0xa6, 0x58, 0x1d, 0xdb, 0x84,
0x34, 0xc5, 0x76, 0x47, 0xc8, 0xe4, 0x02, 0xed, 0x41, 0x67, 0x86, 0xe9, 0x34, 0xf2, 0x97, 0x8c, 0xfa, 0x8c, 0x44, 0x13, 0x6c, 0x77, 0x84, 0x4c, 0x2e, 0xd0, 0x0e, 0x74, 0xa6, 0x98, 0x4e, 0x22,
0x33, 0xba, 0x29, 0x30, 0x4d, 0x6f, 0xf1, 0x3c, 0x68, 0x7c, 0x7e, 0x46, 0x18, 0xa6, 0xf6, 0x96, 0x7f, 0xc1, 0x38, 0xa3, 0xeb, 0x02, 0xd3, 0xf4, 0x16, 0xcf, 0x83, 0xc6, 0x67, 0x27, 0x84, 0x61,
0xcc, 0x43, 0xaf, 0xd1, 0x3d, 0xb8, 0x31, 0x0d, 0xb0, 0x17, 0xc6, 0xcb, 0x09, 0x09, 0x27, 0x73, 0x6a, 0x6f, 0xc8, 0x3c, 0xf4, 0x1a, 0x3d, 0x80, 0x5b, 0x93, 0x00, 0x7b, 0x61, 0xbc, 0x18, 0x93,
0xcf, 0x0f, 0xec, 0xae, 0x50, 0xd9, 0x52, 0xdb, 0xcf, 0xc2, 0x6f, 0x3d, 0x3f, 0x70, 0x4e, 0xe0, 0x70, 0x3c, 0xf3, 0xfc, 0xc0, 0xee, 0x0a, 0x95, 0x0d, 0xb5, 0xfd, 0x22, 0xfc, 0xda, 0xf3, 0x03,
0x76, 0x86, 0xca, 0xeb, 0xde, 0x8a, 0xbf, 0xaa, 0xb0, 0xe3, 0x92, 0x20, 0x38, 0xf7, 0xa6, 0x6f, 0xe7, 0x08, 0xee, 0x66, 0xa8, 0xbc, 0xe9, 0xad, 0xf8, 0xb3, 0x0a, 0x5b, 0x2e, 0x09, 0x82, 0x33,
0x4a, 0xdc, 0x8b, 0x14, 0x85, 0xd5, 0xf5, 0x14, 0x5a, 0x39, 0x14, 0xa6, 0xae, 0x7a, 0xcd, 0xb8, 0x6f, 0xf2, 0xb6, 0xc4, 0xbd, 0x48, 0x51, 0x58, 0x5d, 0x4d, 0xa1, 0x95, 0x43, 0x61, 0xea, 0xaa,
0xea, 0x06, 0xb9, 0xf5, 0x62, 0x72, 0x1b, 0x26, 0xb9, 0x9a, 0xb9, 0x66, 0x8a, 0xb9, 0x84, 0x96, 0xd7, 0x8c, 0xab, 0x6e, 0x90, 0x5b, 0x2f, 0x26, 0xb7, 0x61, 0x92, 0xab, 0x99, 0x6b, 0xa6, 0x98,
0xd6, 0x1a, 0x5a, 0xda, 0xab, 0xb4, 0xe4, 0x40, 0x0f, 0x79, 0xd0, 0x7f, 0x07, 0xbb, 0x2b, 0x78, 0x4b, 0x68, 0x69, 0xad, 0xa0, 0xa5, 0xbd, 0x4c, 0x4b, 0x0e, 0xf4, 0x90, 0x07, 0xfd, 0x37, 0xb0,
0x5d, 0x17, 0xfc, 0x3f, 0x2c, 0xb8, 0xfd, 0x34, 0xa4, 0xcc, 0x0b, 0x82, 0x0c, 0xf6, 0x49, 0xfd, 0xbd, 0x84, 0xd7, 0x4d, 0xc1, 0xff, 0xdd, 0x82, 0xbb, 0xcf, 0x43, 0xca, 0xbc, 0x20, 0xc8, 0x60,
0x55, 0x4a, 0xd7, 0x5f, 0xf5, 0xff, 0xd4, 0x9f, 0x65, 0x90, 0xa7, 0x99, 0xae, 0xa5, 0x98, 0x2e, 0x9f, 0xd4, 0x5f, 0xa5, 0x74, 0xfd, 0x55, 0xff, 0x4b, 0xfd, 0x59, 0x06, 0x79, 0x9a, 0xe9, 0x5a,
0x55, 0x93, 0x46, 0x27, 0x6c, 0x64, 0x3a, 0x21, 0x7a, 0x1f, 0x40, 0x16, 0x91, 0x30, 0x2e, 0x49, 0x8a, 0xe9, 0x52, 0x35, 0x69, 0x74, 0xc2, 0x46, 0xa6, 0x13, 0xa2, 0xff, 0x03, 0xc8, 0x22, 0x12,
0x6a, 0x8b, 0x9d, 0x33, 0xd5, 0xf8, 0x34, 0xaf, 0xad, 0x7c, 0x5e, 0xd3, 0x15, 0x39, 0x80, 0x9e, 0xc6, 0x25, 0x49, 0x6d, 0xb1, 0x73, 0xa2, 0x1a, 0x9f, 0xe6, 0xb5, 0x95, 0xcf, 0x6b, 0xba, 0x22,
0x8e, 0x67, 0x1a, 0xcd, 0x44, 0x4c, 0x8a, 0xa0, 0xae, 0xda, 0x1f, 0x45, 0x33, 0x1e, 0x55, 0x96, 0x07, 0xd0, 0xd3, 0xf1, 0x4c, 0xa2, 0xa9, 0x88, 0x49, 0x11, 0xd4, 0x55, 0xfb, 0xa3, 0x68, 0xca,
0xeb, 0xce, 0xfa, 0x12, 0xdc, 0x34, 0x4b, 0xd0, 0x79, 0x0a, 0x3b, 0x59, 0x4a, 0xae, 0x4b, 0xef, 0xa3, 0xca, 0x72, 0xdd, 0x59, 0x5d, 0x82, 0xeb, 0x66, 0x09, 0x3a, 0xcf, 0x61, 0x2b, 0x4b, 0xc9,
0x9f, 0x15, 0xd8, 0x7d, 0x11, 0xfa, 0xb9, 0x04, 0xe7, 0x15, 0xd7, 0x0a, 0xe4, 0xd5, 0x1c, 0xc8, 0x4d, 0xe9, 0xfd, 0xa3, 0x02, 0xdb, 0xaf, 0x42, 0x3f, 0x97, 0xe0, 0xbc, 0xe2, 0x5a, 0x82, 0xbc,
0xb7, 0xa1, 0xbe, 0x8c, 0xa3, 0x57, 0x58, 0x51, 0x28, 0x17, 0x69, 0x2c, 0x6b, 0x26, 0x96, 0x19, 0x9a, 0x03, 0xf9, 0x26, 0xd4, 0x17, 0x71, 0x74, 0x8e, 0x15, 0x85, 0x72, 0x91, 0xc6, 0xb2, 0x66,
0x34, 0xea, 0x2b, 0x68, 0x38, 0x13, 0xb0, 0x57, 0xa3, 0xbc, 0x66, 0xce, 0x3c, 0xaf, 0xe4, 0x0d, 0x62, 0x99, 0x41, 0xa3, 0xbe, 0x84, 0x86, 0x33, 0x06, 0x7b, 0x39, 0xca, 0x1b, 0xe6, 0xcc, 0xf3,
0x6d, 0xcb, 0xf7, 0xd2, 0xb9, 0x05, 0x37, 0x8f, 0x31, 0x7b, 0x29, 0x4b, 0x5d, 0x01, 0xe0, 0x1c, 0x4a, 0xbe, 0xa1, 0x6d, 0xf9, 0xbd, 0x74, 0xee, 0xc0, 0xed, 0x43, 0xcc, 0x5e, 0xcb, 0x52, 0x57,
0x01, 0x4a, 0x6f, 0x5e, 0xf9, 0x53, 0x5b, 0xa6, 0x3f, 0x3d, 0x60, 0x6a, 0x7d, 0xad, 0xe5, 0x7c, 0x00, 0x38, 0x07, 0x80, 0xd2, 0x9b, 0x57, 0xfe, 0xd4, 0x96, 0xe9, 0x4f, 0x0f, 0x98, 0x5a, 0x5f,
0x25, 0x6c, 0x9f, 0xf8, 0x94, 0x91, 0xe8, 0x72, 0x1d, 0xb8, 0x3d, 0xb0, 0x16, 0xde, 0x5b, 0xf5, 0x6b, 0x39, 0x5f, 0x08, 0xdb, 0x47, 0x3e, 0x65, 0x24, 0xba, 0x5c, 0x05, 0x6e, 0x0f, 0xac, 0xb9,
0xc4, 0xf2, 0x4f, 0xe7, 0x58, 0x44, 0x90, 0x1c, 0x55, 0x11, 0xa4, 0x07, 0x96, 0x4a, 0xb9, 0x81, 0xf7, 0x4e, 0x7d, 0x62, 0xf9, 0xab, 0x73, 0x28, 0x22, 0x48, 0x8e, 0xaa, 0x08, 0xd2, 0x03, 0x4b,
0xe5, 0x2d, 0xa0, 0xe7, 0x38, 0x99, 0x9d, 0xde, 0xf1, 0xd6, 0x6b, 0x9a, 0xaa, 0x26, 0x4d, 0x36, 0xa5, 0xdc, 0xc0, 0xf2, 0x5b, 0x05, 0xd0, 0x4b, 0x9c, 0x0c, 0x4f, 0xd7, 0x7c, 0xec, 0x35, 0x4f,
0x34, 0x55, 0x9f, 0x51, 0xc4, 0xea, 0x25, 0xbf, 0xac, 0x4b, 0x2f, 0xf2, 0x82, 0x00, 0x07, 0xea, 0x55, 0x93, 0x27, 0x1b, 0x9a, 0xaa, 0xd1, 0x28, 0x66, 0xf5, 0x92, 0xdf, 0xd6, 0x85, 0x17, 0x79,
0xd9, 0x4c, 0xd6, 0xce, 0xcf, 0x70, 0xcb, 0xf0, 0xac, 0x72, 0xe0, 0xb9, 0xd2, 0x57, 0xca, 0x33, 0x41, 0x80, 0x03, 0xf5, 0xdd, 0x4c, 0xd6, 0xdc, 0x47, 0x40, 0xce, 0x75, 0x71, 0x8a, 0x77, 0xe7,
0xff, 0x44, 0x5f, 0x42, 0x43, 0x0e, 0x9f, 0xc2, 0x6f, 0xf7, 0xe0, 0xae, 0x99, 0x93, 0x30, 0x12, 0x47, 0xb8, 0x63, 0x44, 0xa3, 0x12, 0xe3, 0x00, 0xd0, 0x73, 0x15, 0x0d, 0x7f, 0x45, 0x9f, 0x43,
0x87, 0x6a, 0x5a, 0x75, 0x95, 0xee, 0xc1, 0xbf, 0x2d, 0xe8, 0xea, 0xf1, 0x49, 0x8e, 0xc6, 0xc8, 0x43, 0x4e, 0xa4, 0x22, 0x96, 0xee, 0xde, 0x7d, 0x33, 0x51, 0x61, 0x24, 0x0e, 0xd5, 0x08, 0xeb,
0x87, 0xcd, 0xf4, 0x9c, 0x88, 0x1e, 0x14, 0x4f, 0xce, 0x99, 0xf1, 0xbf, 0xff, 0xb0, 0x8c, 0xaa, 0x2a, 0xdd, 0xbd, 0x7f, 0x5a, 0xd0, 0xd5, 0x33, 0x95, 0x9c, 0x97, 0x91, 0x0f, 0xeb, 0xe9, 0xe1,
0xcc, 0xc0, 0xd9, 0xf8, 0xac, 0x82, 0x28, 0xf4, 0xb2, 0xe3, 0x1b, 0x7a, 0x94, 0x6f, 0xa3, 0x60, 0x11, 0x3d, 0x2a, 0x1e, 0xa7, 0x33, 0x7f, 0x13, 0xf4, 0x1f, 0x97, 0x51, 0x95, 0x19, 0x38, 0x6b,
0x5e, 0xec, 0x0f, 0xcb, 0xaa, 0x6b, 0xb7, 0xe8, 0x42, 0xdc, 0x27, 0x73, 0xe6, 0x42, 0xef, 0x34, 0x9f, 0x54, 0x10, 0x85, 0x5e, 0x76, 0xa6, 0x43, 0x4f, 0xf2, 0x6d, 0x14, 0x0c, 0x91, 0xfd, 0x61,
0x63, 0x8e, 0x79, 0xfd, 0xfd, 0xd2, 0xfa, 0x89, 0xdf, 0x5f, 0x60, 0xcb, 0x78, 0xd1, 0x51, 0x01, 0x59, 0x75, 0xed, 0x16, 0x5d, 0x88, 0x4b, 0x66, 0x0e, 0x62, 0xe8, 0x5a, 0x33, 0xe6, 0xec, 0xd7,
0x5a, 0x79, 0x13, 0x5c, 0xff, 0x93, 0x52, 0xba, 0x89, 0xaf, 0x05, 0x74, 0xcd, 0x16, 0x87, 0x0a, 0xdf, 0x2d, 0xad, 0x9f, 0xf8, 0xfd, 0x09, 0x36, 0x8c, 0xcf, 0x3c, 0x2a, 0x40, 0x2b, 0x6f, 0xac,
0x0c, 0xe4, 0xbe, 0x4d, 0xfd, 0x4f, 0xcb, 0x29, 0x27, 0xee, 0x28, 0xf4, 0xb2, 0xfd, 0xa5, 0x88, 0xeb, 0x7f, 0x54, 0x4a, 0x37, 0xf1, 0x35, 0x87, 0xae, 0xd9, 0xf7, 0x50, 0x81, 0x81, 0xdc, 0x0f,
0xc7, 0x82, 0x6e, 0x59, 0xc4, 0x63, 0x51, 0xdb, 0x72, 0x36, 0x90, 0x07, 0x70, 0xd5, 0x5e, 0xd0, 0x56, 0xff, 0xe3, 0x72, 0xca, 0x89, 0x3b, 0x0a, 0xbd, 0x6c, 0xd3, 0x29, 0xe2, 0xb1, 0xa0, 0x85,
0xfd, 0x42, 0x42, 0xcc, 0xae, 0xd4, 0x1f, 0xbc, 0x5b, 0x31, 0x71, 0xb1, 0x84, 0x1b, 0x99, 0x49, 0x16, 0xf1, 0x58, 0xd4, 0xcb, 0x9c, 0x35, 0xe4, 0x01, 0x5c, 0xf5, 0x1c, 0xf4, 0xb0, 0x90, 0x10,
0x00, 0x15, 0x40, 0x93, 0x3f, 0x60, 0xf5, 0x1f, 0x95, 0xd4, 0xce, 0x24, 0xa5, 0x3a, 0xd6, 0x9a, 0xb3, 0x55, 0xf5, 0x07, 0xd7, 0x2b, 0x26, 0x2e, 0x16, 0x70, 0x2b, 0x33, 0x1e, 0xa0, 0x02, 0x68,
0xa4, 0xcc, 0x76, 0xb8, 0x26, 0xa9, 0x4c, 0xf3, 0x73, 0x36, 0x90, 0x0f, 0x5d, 0x37, 0x0e, 0x95, 0xf2, 0xa7, 0xae, 0xfe, 0x93, 0x92, 0xda, 0x99, 0xa4, 0x54, 0x1b, 0x5b, 0x91, 0x94, 0xd9, 0x23,
0x6b, 0xde, 0x16, 0x50, 0xc1, 0xe9, 0xd5, 0x8e, 0xd7, 0x7f, 0x50, 0x42, 0xf3, 0xaa, 0xbe, 0x1f, 0x57, 0x24, 0x95, 0xe9, 0x88, 0xce, 0x1a, 0xf2, 0xa1, 0xeb, 0xc6, 0xa1, 0x72, 0xcd, 0xdb, 0x02,
0xc3, 0x4f, 0x2d, 0xad, 0x7a, 0xde, 0x10, 0xff, 0x39, 0xf8, 0xe2, 0xbf, 0x00, 0x00, 0x00, 0xff, 0x2a, 0x38, 0xbd, 0xdc, 0x05, 0xfb, 0x8f, 0x4a, 0x68, 0x5e, 0xd5, 0xf7, 0x53, 0xf8, 0xa1, 0xa5,
0xff, 0x20, 0xcd, 0x9e, 0x3a, 0x27, 0x11, 0x00, 0x00, 0x55, 0xcf, 0x1a, 0xe2, 0xdf, 0x09, 0x9f, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x70, 0x3d, 0x1f,
0x9d, 0x3c, 0x11, 0x00, 0x00,
} }

@ -96,7 +96,7 @@ func (env *Environment) streamError(info string) error {
} }
func (env *Environment) streamFailed(name string) error { func (env *Environment) streamFailed(name string) error {
msg := fmt.Sprintf("FAILED: %s, run `kubectl logs %s --namespace %s` for more info", name, name, env.Namespace) msg := "FAILED: " + name
return env.streamMessage(msg, release.TestRun_FAILURE) return env.streamMessage(msg, release.TestRun_FAILURE)
} }
@ -126,3 +126,21 @@ func (env *Environment) DeleteTestPods(testManifests []string) {
} }
} }
} }
func (env *Environment) GetLogs(testManifests []string) {
for _, testManifest := range testManifests {
infos, err := env.KubeClient.Build(env.Namespace, bytes.NewBufferString(testManifest))
if err != nil {
env.streamError(err.Error())
continue
}
podName := infos[0].Object.(*v1.Pod).Name
logs, err := env.KubeClient.GetPodLogs(podName, env.Namespace)
if err != nil {
env.streamError(err.Error())
continue
}
msg := fmt.Sprintf("\nPOD LOGS: %s\n%s", podName, logs)
env.streamMessage(msg, release.TestRun_UNKNOWN)
}
}

@ -175,6 +175,8 @@ type KubeClient interface {
// and returns said phase (PodSucceeded or PodFailed qualify). // and returns said phase (PodSucceeded or PodFailed qualify).
WaitAndGetCompletedPodPhase(namespace string, reader io.Reader, timeout time.Duration) (v1.PodPhase, error) WaitAndGetCompletedPodPhase(namespace string, reader io.Reader, timeout time.Duration) (v1.PodPhase, error)
GetPodLogs(name, namespace string) (string, error)
WaitUntilCRDEstablished(reader io.Reader, timeout time.Duration) error WaitUntilCRDEstablished(reader io.Reader, timeout time.Duration) error
} }
@ -255,6 +257,11 @@ func (p *PrintingKubeClient) WaitAndGetCompletedPodPhase(namespace string, reade
return v1.PodUnknown, err return v1.PodUnknown, err
} }
// GetPodLogs implements KubeClient GetPodLogs.
func (p *PrintingKubeClient) GetPodLogs(name, ns string) (string, error) {
return "", nil
}
// WaitUntilCRDEstablished implements KubeClient WaitUntilCRDEstablished. // WaitUntilCRDEstablished implements KubeClient WaitUntilCRDEstablished.
func (p *PrintingKubeClient) WaitUntilCRDEstablished(reader io.Reader, timeout time.Duration) error { func (p *PrintingKubeClient) WaitUntilCRDEstablished(reader io.Reader, timeout time.Duration) error {
_, err := io.Copy(p.Out, reader) _, err := io.Copy(p.Out, reader)

@ -64,6 +64,10 @@ func (s *ReleaseServer) RunReleaseTest(req *services.TestReleaseRequest, stream
Results: tSuite.Results, Results: tSuite.Results,
} }
if req.Logs {
testEnv.GetLogs(tSuite.TestManifests)
}
if req.Cleanup { if req.Cleanup {
testEnv.DeleteTestPods(tSuite.TestManifests) testEnv.DeleteTestPods(tSuite.TestManifests)
} }

Loading…
Cancel
Save