Initial logs streaming at release install.

pull/3263/head
Garanzha Dmitriy 8 years ago
parent 782f855ad9
commit 8ca8b30173

@ -61,7 +61,7 @@ service ReleaseService {
}
// InstallRelease requests installation of a chart as a new release.
rpc InstallRelease(InstallReleaseRequest) returns (InstallReleaseResponse) {
rpc InstallRelease(InstallReleaseRequest) returns (stream InstallReleaseResponse) {
}
// UninstallRelease requests deletion of a named release.
@ -273,9 +273,23 @@ message InstallReleaseRequest {
bool wait = 9;
}
message LogItem {
enum Level {
INFO = 0;
ERROR = 1;
}
Level level = 1;
string message = 2;
}
// InstallReleaseResponse is the response from a release installation.
message InstallReleaseResponse {
hapi.release.Release release = 1;
// One of the following will be filled in.
oneof response {
hapi.release.Release release = 1;
LogItem logItem = 2;
}
}
// UninstallReleaseRequest represents a request to uninstall a named release.

@ -266,6 +266,9 @@ func ensureHelmClient(h helm.Interface) helm.Interface {
func newClient() helm.Interface {
options := []helm.Option{helm.Host(settings.TillerHost)}
logger := new(helm.ConsoleLogger)
options = append(options, helm.WithLogger(logger))
if tlsVerify || tlsEnable {
if tlsCaCertFile == "" {
tlsCaCertFile = settings.Home.TLSCaCert()

@ -334,7 +334,34 @@ func (h *Client) install(ctx context.Context, req *rls.InstallReleaseRequest) (*
defer c.Close()
rlc := rls.NewReleaseServiceClient(c)
return rlc.InstallRelease(ctx, req)
client, err := rlc.InstallRelease(ctx, req)
if err != nil {
return nil, err
}
var releaseResponse *rls.InstallReleaseResponse
for {
result, err := client.Recv()
if err == io.EOF {
return releaseResponse, nil
}
if err != nil {
return nil, err
}
switch x := result.Response.(type) {
case *rls.InstallReleaseResponse_Release:
releaseResponse = result
break
case *rls.InstallReleaseResponse_LogItem:
h.opts.logger.Log(x.LogItem.Level, x.LogItem.Message)
break
}
}
}
// Executes tiller.UninstallRelease RPC.

@ -80,7 +80,9 @@ func (c *FakeClient) InstallReleaseFromChart(chart *chart.Chart, ns string, opts
c.Rels = append(c.Rels, release)
return &rls.InstallReleaseResponse{
Release: release,
Response: &rls.InstallReleaseResponse_Release {
Release: release,
},
}, nil
}

@ -143,7 +143,9 @@ func TestFakeClient_InstallReleaseFromChart(t *testing.T) {
opts: []InstallOption{ReleaseName("new-release")},
},
want: &rls.InstallReleaseResponse{
Release: ReleaseMock(&MockReleaseOptions{Name: "new-release"}),
Response: &rls.InstallReleaseResponse_Release{
Release: ReleaseMock(&MockReleaseOptions{Name: "new-release"}),
},
},
relsAfter: []*release.Release{
ReleaseMock(&MockReleaseOptions{Name: "new-release"}),

@ -0,0 +1,23 @@
package helm
import (
"fmt"
rls "k8s.io/helm/pkg/proto/hapi/services"
)
type TillerOutputLogger interface {
Log(level rls.LogItem_Level, message string)
}
type ConsoleLogger struct {}
func (logger *ConsoleLogger) Log(level rls.LogItem_Level, message string) {
switch level {
case rls.LogItem_INFO:
fmt.Println(message)
break
case rls.LogItem_ERROR:
fmt.Println(fmt.Sprintf("Error: %s", message))
break
}
}

@ -78,6 +78,8 @@ type options struct {
reuseValues bool
// release test options are applied directly to the test release history request
testReq rls.TestReleaseRequest
// logger for tiller output messages
logger TillerOutputLogger
}
// Host specifies the host address of the Tiller release server, (default = ":44134").
@ -87,6 +89,12 @@ func Host(host string) Option {
}
}
func WithLogger(logger TillerOutputLogger) Option {
return func(opts *options) {
opts.logger = logger
}
}
// WithTLS specifies the tls configuration if the helm client is enabled to use TLS.
func WithTLS(cfg *tls.Config) Option {
return func(opts *options) {

@ -1,5 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// Code generated by protoc-gen-go.
// source: hapi/services/tiller.proto
// DO NOT EDIT!
/*
Package services is a generated protocol buffer package.
@ -20,6 +21,7 @@ It has these top-level messages:
RollbackReleaseRequest
RollbackReleaseResponse
InstallReleaseRequest
LogItem
InstallReleaseResponse
UninstallReleaseRequest
UninstallReleaseResponse
@ -106,6 +108,27 @@ func (x ListSort_SortOrder) String() string {
}
func (ListSort_SortOrder) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
type LogItem_Level int32
const (
LogItem_INFO LogItem_Level = 0
LogItem_ERROR LogItem_Level = 1
)
var LogItem_Level_name = map[int32]string{
0: "INFO",
1: "ERROR",
}
var LogItem_Level_value = map[string]int32{
"INFO": 0,
"ERROR": 1,
}
func (x LogItem_Level) String() string {
return proto.EnumName(LogItem_Level_name, int32(x))
}
func (LogItem_Level) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{12, 0} }
// ListReleasesRequest requests a list of releases.
//
// Releases can be retrieved in chunks by setting limit and offset.
@ -138,55 +161,6 @@ func (m *ListReleasesRequest) String() string { return proto.CompactT
func (*ListReleasesRequest) ProtoMessage() {}
func (*ListReleasesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *ListReleasesRequest) GetLimit() int64 {
if m != nil {
return m.Limit
}
return 0
}
func (m *ListReleasesRequest) GetOffset() string {
if m != nil {
return m.Offset
}
return ""
}
func (m *ListReleasesRequest) GetSortBy() ListSort_SortBy {
if m != nil {
return m.SortBy
}
return ListSort_UNKNOWN
}
func (m *ListReleasesRequest) GetFilter() string {
if m != nil {
return m.Filter
}
return ""
}
func (m *ListReleasesRequest) GetSortOrder() ListSort_SortOrder {
if m != nil {
return m.SortOrder
}
return ListSort_ASC
}
func (m *ListReleasesRequest) GetStatusCodes() []hapi_release3.Status_Code {
if m != nil {
return m.StatusCodes
}
return nil
}
func (m *ListReleasesRequest) GetNamespace() string {
if m != nil {
return m.Namespace
}
return ""
}
// ListSort defines sorting fields on a release list.
type ListSort struct {
}
@ -214,27 +188,6 @@ func (m *ListReleasesResponse) String() string { return proto.Compact
func (*ListReleasesResponse) ProtoMessage() {}
func (*ListReleasesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (m *ListReleasesResponse) GetCount() int64 {
if m != nil {
return m.Count
}
return 0
}
func (m *ListReleasesResponse) GetNext() string {
if m != nil {
return m.Next
}
return ""
}
func (m *ListReleasesResponse) GetTotal() int64 {
if m != nil {
return m.Total
}
return 0
}
func (m *ListReleasesResponse) GetReleases() []*hapi_release5.Release {
if m != nil {
return m.Releases
@ -255,20 +208,6 @@ func (m *GetReleaseStatusRequest) String() string { return proto.Comp
func (*GetReleaseStatusRequest) ProtoMessage() {}
func (*GetReleaseStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
func (m *GetReleaseStatusRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *GetReleaseStatusRequest) GetVersion() int32 {
if m != nil {
return m.Version
}
return 0
}
// GetReleaseStatusResponse is the response indicating the status of the named release.
type GetReleaseStatusResponse struct {
// Name is the name of the release.
@ -284,13 +223,6 @@ func (m *GetReleaseStatusResponse) String() string { return proto.Com
func (*GetReleaseStatusResponse) ProtoMessage() {}
func (*GetReleaseStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
func (m *GetReleaseStatusResponse) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *GetReleaseStatusResponse) GetInfo() *hapi_release4.Info {
if m != nil {
return m.Info
@ -298,13 +230,6 @@ func (m *GetReleaseStatusResponse) GetInfo() *hapi_release4.Info {
return nil
}
func (m *GetReleaseStatusResponse) GetNamespace() string {
if m != nil {
return m.Namespace
}
return ""
}
// GetReleaseContentRequest is a request to get the contents of a release.
type GetReleaseContentRequest struct {
// The name of the release
@ -318,20 +243,6 @@ func (m *GetReleaseContentRequest) String() string { return proto.Com
func (*GetReleaseContentRequest) ProtoMessage() {}
func (*GetReleaseContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *GetReleaseContentRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *GetReleaseContentRequest) GetVersion() int32 {
if m != nil {
return m.Version
}
return 0
}
// GetReleaseContentResponse is a response containing the contents of a release.
type GetReleaseContentResponse struct {
// The release content
@ -383,13 +294,6 @@ func (m *UpdateReleaseRequest) String() string { return proto.Compact
func (*UpdateReleaseRequest) ProtoMessage() {}
func (*UpdateReleaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *UpdateReleaseRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *UpdateReleaseRequest) GetChart() *hapi_chart3.Chart {
if m != nil {
return m.Chart
@ -404,62 +308,6 @@ func (m *UpdateReleaseRequest) GetValues() *hapi_chart.Config {
return nil
}
func (m *UpdateReleaseRequest) GetDryRun() bool {
if m != nil {
return m.DryRun
}
return false
}
func (m *UpdateReleaseRequest) GetDisableHooks() bool {
if m != nil {
return m.DisableHooks
}
return false
}
func (m *UpdateReleaseRequest) GetRecreate() bool {
if m != nil {
return m.Recreate
}
return false
}
func (m *UpdateReleaseRequest) GetTimeout() int64 {
if m != nil {
return m.Timeout
}
return 0
}
func (m *UpdateReleaseRequest) GetResetValues() bool {
if m != nil {
return m.ResetValues
}
return false
}
func (m *UpdateReleaseRequest) GetWait() bool {
if m != nil {
return m.Wait
}
return false
}
func (m *UpdateReleaseRequest) GetReuseValues() bool {
if m != nil {
return m.ReuseValues
}
return false
}
func (m *UpdateReleaseRequest) GetForce() bool {
if m != nil {
return m.Force
}
return false
}
// UpdateReleaseResponse is the response to an update request.
type UpdateReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
@ -502,62 +350,6 @@ func (m *RollbackReleaseRequest) String() string { return proto.Compa
func (*RollbackReleaseRequest) ProtoMessage() {}
func (*RollbackReleaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (m *RollbackReleaseRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *RollbackReleaseRequest) GetDryRun() bool {
if m != nil {
return m.DryRun
}
return false
}
func (m *RollbackReleaseRequest) GetDisableHooks() bool {
if m != nil {
return m.DisableHooks
}
return false
}
func (m *RollbackReleaseRequest) GetVersion() int32 {
if m != nil {
return m.Version
}
return 0
}
func (m *RollbackReleaseRequest) GetRecreate() bool {
if m != nil {
return m.Recreate
}
return false
}
func (m *RollbackReleaseRequest) GetTimeout() int64 {
if m != nil {
return m.Timeout
}
return 0
}
func (m *RollbackReleaseRequest) GetWait() bool {
if m != nil {
return m.Wait
}
return false
}
func (m *RollbackReleaseRequest) GetForce() bool {
if m != nil {
return m.Force
}
return false
}
// RollbackReleaseResponse is the response to an update request.
type RollbackReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
@ -621,72 +413,140 @@ func (m *InstallReleaseRequest) GetValues() *hapi_chart.Config {
return nil
}
func (m *InstallReleaseRequest) GetDryRun() bool {
if m != nil {
return m.DryRun
}
return false
type LogItem struct {
Level LogItem_Level `protobuf:"varint,1,opt,name=level,enum=hapi.services.tiller.LogItem_Level" json:"level,omitempty"`
Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
}
func (m *InstallReleaseRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *LogItem) Reset() { *m = LogItem{} }
func (m *LogItem) String() string { return proto.CompactTextString(m) }
func (*LogItem) ProtoMessage() {}
func (*LogItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *InstallReleaseRequest) GetDisableHooks() bool {
if m != nil {
return m.DisableHooks
}
return false
// InstallReleaseResponse is the response from a release installation.
type InstallReleaseResponse struct {
// One of the following will be filled in.
//
// Types that are valid to be assigned to Response:
// *InstallReleaseResponse_Release
// *InstallReleaseResponse_LogItem
Response isInstallReleaseResponse_Response `protobuf_oneof:"response"`
}
func (m *InstallReleaseRequest) GetNamespace() string {
if m != nil {
return m.Namespace
}
return ""
func (m *InstallReleaseResponse) Reset() { *m = InstallReleaseResponse{} }
func (m *InstallReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*InstallReleaseResponse) ProtoMessage() {}
func (*InstallReleaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
type isInstallReleaseResponse_Response interface {
isInstallReleaseResponse_Response()
}
func (m *InstallReleaseRequest) GetReuseName() bool {
if m != nil {
return m.ReuseName
}
return false
type InstallReleaseResponse_Release struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release,oneof"`
}
type InstallReleaseResponse_LogItem struct {
LogItem *LogItem `protobuf:"bytes,2,opt,name=logItem,oneof"`
}
func (m *InstallReleaseRequest) GetTimeout() int64 {
func (*InstallReleaseResponse_Release) isInstallReleaseResponse_Response() {}
func (*InstallReleaseResponse_LogItem) isInstallReleaseResponse_Response() {}
func (m *InstallReleaseResponse) GetResponse() isInstallReleaseResponse_Response {
if m != nil {
return m.Timeout
return m.Response
}
return 0
return nil
}
func (m *InstallReleaseRequest) GetWait() bool {
if m != nil {
return m.Wait
func (m *InstallReleaseResponse) GetRelease() *hapi_release5.Release {
if x, ok := m.GetResponse().(*InstallReleaseResponse_Release); ok {
return x.Release
}
return false
return nil
}
// InstallReleaseResponse is the response from a release installation.
type InstallReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
func (m *InstallReleaseResponse) GetLogItem() *LogItem {
if x, ok := m.GetResponse().(*InstallReleaseResponse_LogItem); ok {
return x.LogItem
}
return nil
}
func (m *InstallReleaseResponse) Reset() { *m = InstallReleaseResponse{} }
func (m *InstallReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*InstallReleaseResponse) ProtoMessage() {}
func (*InstallReleaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *InstallReleaseResponse) GetRelease() *hapi_release5.Release {
if m != nil {
return m.Release
// XXX_OneofFuncs is for the internal use of the proto package.
func (*InstallReleaseResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _InstallReleaseResponse_OneofMarshaler, _InstallReleaseResponse_OneofUnmarshaler, _InstallReleaseResponse_OneofSizer, []interface{}{
(*InstallReleaseResponse_Release)(nil),
(*InstallReleaseResponse_LogItem)(nil),
}
}
func _InstallReleaseResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*InstallReleaseResponse)
// response
switch x := m.Response.(type) {
case *InstallReleaseResponse_Release:
b.EncodeVarint(1<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Release); err != nil {
return err
}
case *InstallReleaseResponse_LogItem:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.LogItem); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("InstallReleaseResponse.Response has unexpected type %T", x)
}
return nil
}
func _InstallReleaseResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*InstallReleaseResponse)
switch tag {
case 1: // response.release
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(hapi_release5.Release)
err := b.DecodeMessage(msg)
m.Response = &InstallReleaseResponse_Release{msg}
return true, err
case 2: // response.logItem
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(LogItem)
err := b.DecodeMessage(msg)
m.Response = &InstallReleaseResponse_LogItem{msg}
return true, err
default:
return false, nil
}
}
func _InstallReleaseResponse_OneofSizer(msg proto.Message) (n int) {
m := msg.(*InstallReleaseResponse)
// response
switch x := m.Response.(type) {
case *InstallReleaseResponse_Release:
s := proto.Size(x.Release)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *InstallReleaseResponse_LogItem:
s := proto.Size(x.LogItem)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// UninstallReleaseRequest represents a request to uninstall a named release.
type UninstallReleaseRequest struct {
// Name is the name of the release to delete.
@ -702,35 +562,7 @@ type UninstallReleaseRequest struct {
func (m *UninstallReleaseRequest) Reset() { *m = UninstallReleaseRequest{} }
func (m *UninstallReleaseRequest) String() string { return proto.CompactTextString(m) }
func (*UninstallReleaseRequest) ProtoMessage() {}
func (*UninstallReleaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (m *UninstallReleaseRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *UninstallReleaseRequest) GetDisableHooks() bool {
if m != nil {
return m.DisableHooks
}
return false
}
func (m *UninstallReleaseRequest) GetPurge() bool {
if m != nil {
return m.Purge
}
return false
}
func (m *UninstallReleaseRequest) GetTimeout() int64 {
if m != nil {
return m.Timeout
}
return 0
}
func (*UninstallReleaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
// UninstallReleaseResponse represents a successful response to an uninstall request.
type UninstallReleaseResponse struct {
@ -743,7 +575,7 @@ type UninstallReleaseResponse struct {
func (m *UninstallReleaseResponse) Reset() { *m = UninstallReleaseResponse{} }
func (m *UninstallReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*UninstallReleaseResponse) ProtoMessage() {}
func (*UninstallReleaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (*UninstallReleaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (m *UninstallReleaseResponse) GetRelease() *hapi_release5.Release {
if m != nil {
@ -752,13 +584,6 @@ func (m *UninstallReleaseResponse) GetRelease() *hapi_release5.Release {
return nil
}
func (m *UninstallReleaseResponse) GetInfo() string {
if m != nil {
return m.Info
}
return ""
}
// GetVersionRequest requests for version information.
type GetVersionRequest struct {
}
@ -766,7 +591,7 @@ type GetVersionRequest struct {
func (m *GetVersionRequest) Reset() { *m = GetVersionRequest{} }
func (m *GetVersionRequest) String() string { return proto.CompactTextString(m) }
func (*GetVersionRequest) ProtoMessage() {}
func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
type GetVersionResponse struct {
Version *hapi_version.Version `protobuf:"bytes,1,opt,name=Version" json:"Version,omitempty"`
@ -775,7 +600,7 @@ type GetVersionResponse struct {
func (m *GetVersionResponse) Reset() { *m = GetVersionResponse{} }
func (m *GetVersionResponse) String() string { return proto.CompactTextString(m) }
func (*GetVersionResponse) ProtoMessage() {}
func (*GetVersionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (*GetVersionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *GetVersionResponse) GetVersion() *hapi_version.Version {
if m != nil {
@ -795,21 +620,7 @@ type GetHistoryRequest struct {
func (m *GetHistoryRequest) Reset() { *m = GetHistoryRequest{} }
func (m *GetHistoryRequest) String() string { return proto.CompactTextString(m) }
func (*GetHistoryRequest) ProtoMessage() {}
func (*GetHistoryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *GetHistoryRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *GetHistoryRequest) GetMax() int32 {
if m != nil {
return m.Max
}
return 0
}
func (*GetHistoryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
// GetHistoryResponse is received in response to a GetHistory rpc.
type GetHistoryResponse struct {
@ -819,7 +630,7 @@ type GetHistoryResponse struct {
func (m *GetHistoryResponse) Reset() { *m = GetHistoryResponse{} }
func (m *GetHistoryResponse) String() string { return proto.CompactTextString(m) }
func (*GetHistoryResponse) ProtoMessage() {}
func (*GetHistoryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (*GetHistoryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *GetHistoryResponse) GetReleases() []*hapi_release5.Release {
if m != nil {
@ -841,28 +652,7 @@ type TestReleaseRequest struct {
func (m *TestReleaseRequest) Reset() { *m = TestReleaseRequest{} }
func (m *TestReleaseRequest) String() string { return proto.CompactTextString(m) }
func (*TestReleaseRequest) ProtoMessage() {}
func (*TestReleaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *TestReleaseRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *TestReleaseRequest) GetTimeout() int64 {
if m != nil {
return m.Timeout
}
return 0
}
func (m *TestReleaseRequest) GetCleanup() bool {
if m != nil {
return m.Cleanup
}
return false
}
func (*TestReleaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
// TestReleaseResponse represents a message from executing a test
type TestReleaseResponse struct {
@ -873,21 +663,7 @@ type TestReleaseResponse struct {
func (m *TestReleaseResponse) Reset() { *m = TestReleaseResponse{} }
func (m *TestReleaseResponse) String() string { return proto.CompactTextString(m) }
func (*TestReleaseResponse) ProtoMessage() {}
func (*TestReleaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (m *TestReleaseResponse) GetMsg() string {
if m != nil {
return m.Msg
}
return ""
}
func (m *TestReleaseResponse) GetStatus() hapi_release1.TestRun_Status {
if m != nil {
return m.Status
}
return hapi_release1.TestRun_UNKNOWN
}
func (*TestReleaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func init() {
proto.RegisterType((*ListReleasesRequest)(nil), "hapi.services.tiller.ListReleasesRequest")
@ -902,6 +678,7 @@ func init() {
proto.RegisterType((*RollbackReleaseRequest)(nil), "hapi.services.tiller.RollbackReleaseRequest")
proto.RegisterType((*RollbackReleaseResponse)(nil), "hapi.services.tiller.RollbackReleaseResponse")
proto.RegisterType((*InstallReleaseRequest)(nil), "hapi.services.tiller.InstallReleaseRequest")
proto.RegisterType((*LogItem)(nil), "hapi.services.tiller.LogItem")
proto.RegisterType((*InstallReleaseResponse)(nil), "hapi.services.tiller.InstallReleaseResponse")
proto.RegisterType((*UninstallReleaseRequest)(nil), "hapi.services.tiller.UninstallReleaseRequest")
proto.RegisterType((*UninstallReleaseResponse)(nil), "hapi.services.tiller.UninstallReleaseResponse")
@ -913,6 +690,7 @@ func init() {
proto.RegisterType((*TestReleaseResponse)(nil), "hapi.services.tiller.TestReleaseResponse")
proto.RegisterEnum("hapi.services.tiller.ListSort_SortBy", ListSort_SortBy_name, ListSort_SortBy_value)
proto.RegisterEnum("hapi.services.tiller.ListSort_SortOrder", ListSort_SortOrder_name, ListSort_SortOrder_value)
proto.RegisterEnum("hapi.services.tiller.LogItem_Level", LogItem_Level_name, LogItem_Level_value)
}
// Reference imports to suppress errors if they are not otherwise used.
@ -938,7 +716,7 @@ type ReleaseServiceClient interface {
// UpdateRelease updates release content.
UpdateRelease(ctx context.Context, in *UpdateReleaseRequest, opts ...grpc.CallOption) (*UpdateReleaseResponse, error)
// InstallRelease requests installation of a chart as a new release.
InstallRelease(ctx context.Context, in *InstallReleaseRequest, opts ...grpc.CallOption) (*InstallReleaseResponse, error)
InstallRelease(ctx context.Context, in *InstallReleaseRequest, opts ...grpc.CallOption) (ReleaseService_InstallReleaseClient, error)
// UninstallRelease requests deletion of a named release.
UninstallRelease(ctx context.Context, in *UninstallReleaseRequest, opts ...grpc.CallOption) (*UninstallReleaseResponse, error)
// GetVersion returns the current version of the server.
@ -1018,13 +796,36 @@ func (c *releaseServiceClient) UpdateRelease(ctx context.Context, in *UpdateRele
return out, nil
}
func (c *releaseServiceClient) InstallRelease(ctx context.Context, in *InstallReleaseRequest, opts ...grpc.CallOption) (*InstallReleaseResponse, error) {
out := new(InstallReleaseResponse)
err := grpc.Invoke(ctx, "/hapi.services.tiller.ReleaseService/InstallRelease", in, out, c.cc, opts...)
func (c *releaseServiceClient) InstallRelease(ctx context.Context, in *InstallReleaseRequest, opts ...grpc.CallOption) (ReleaseService_InstallReleaseClient, error) {
stream, err := grpc.NewClientStream(ctx, &_ReleaseService_serviceDesc.Streams[1], c.cc, "/hapi.services.tiller.ReleaseService/InstallRelease", opts...)
if err != nil {
return nil, err
}
return out, nil
x := &releaseServiceInstallReleaseClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type ReleaseService_InstallReleaseClient interface {
Recv() (*InstallReleaseResponse, error)
grpc.ClientStream
}
type releaseServiceInstallReleaseClient struct {
grpc.ClientStream
}
func (x *releaseServiceInstallReleaseClient) Recv() (*InstallReleaseResponse, error) {
m := new(InstallReleaseResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *releaseServiceClient) UninstallRelease(ctx context.Context, in *UninstallReleaseRequest, opts ...grpc.CallOption) (*UninstallReleaseResponse, error) {
@ -1064,7 +865,7 @@ func (c *releaseServiceClient) GetHistory(ctx context.Context, in *GetHistoryReq
}
func (c *releaseServiceClient) RunReleaseTest(ctx context.Context, in *TestReleaseRequest, opts ...grpc.CallOption) (ReleaseService_RunReleaseTestClient, error) {
stream, err := grpc.NewClientStream(ctx, &_ReleaseService_serviceDesc.Streams[1], c.cc, "/hapi.services.tiller.ReleaseService/RunReleaseTest", opts...)
stream, err := grpc.NewClientStream(ctx, &_ReleaseService_serviceDesc.Streams[2], c.cc, "/hapi.services.tiller.ReleaseService/RunReleaseTest", opts...)
if err != nil {
return nil, err
}
@ -1110,7 +911,7 @@ type ReleaseServiceServer interface {
// UpdateRelease updates release content.
UpdateRelease(context.Context, *UpdateReleaseRequest) (*UpdateReleaseResponse, error)
// InstallRelease requests installation of a chart as a new release.
InstallRelease(context.Context, *InstallReleaseRequest) (*InstallReleaseResponse, error)
InstallRelease(*InstallReleaseRequest, ReleaseService_InstallReleaseServer) error
// UninstallRelease requests deletion of a named release.
UninstallRelease(context.Context, *UninstallReleaseRequest) (*UninstallReleaseResponse, error)
// GetVersion returns the current version of the server.
@ -1202,22 +1003,25 @@ func _ReleaseService_UpdateRelease_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler)
}
func _ReleaseService_InstallRelease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(InstallReleaseRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ReleaseServiceServer).InstallRelease(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/hapi.services.tiller.ReleaseService/InstallRelease",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ReleaseServiceServer).InstallRelease(ctx, req.(*InstallReleaseRequest))
func _ReleaseService_InstallRelease_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(InstallReleaseRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return interceptor(ctx, in, info, handler)
return srv.(ReleaseServiceServer).InstallRelease(m, &releaseServiceInstallReleaseServer{stream})
}
type ReleaseService_InstallReleaseServer interface {
Send(*InstallReleaseResponse) error
grpc.ServerStream
}
type releaseServiceInstallReleaseServer struct {
grpc.ServerStream
}
func (x *releaseServiceInstallReleaseServer) Send(m *InstallReleaseResponse) error {
return x.ServerStream.SendMsg(m)
}
func _ReleaseService_UninstallRelease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
@ -1329,10 +1133,6 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
MethodName: "UpdateRelease",
Handler: _ReleaseService_UpdateRelease_Handler,
},
{
MethodName: "InstallRelease",
Handler: _ReleaseService_InstallRelease_Handler,
},
{
MethodName: "UninstallRelease",
Handler: _ReleaseService_UninstallRelease_Handler,
@ -1356,6 +1156,11 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
Handler: _ReleaseService_ListReleases_Handler,
ServerStreams: true,
},
{
StreamName: "InstallRelease",
Handler: _ReleaseService_InstallRelease_Handler,
ServerStreams: true,
},
{
StreamName: "RunReleaseTest",
Handler: _ReleaseService_RunReleaseTest_Handler,
@ -1368,82 +1173,87 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1217 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x6e, 0xe3, 0xc4,
0x17, 0xaf, 0xf3, 0x9d, 0x93, 0x36, 0xff, 0x74, 0x9a, 0xb6, 0xae, 0xff, 0x0b, 0x2a, 0x46, 0xb0,
0xd9, 0x85, 0x4d, 0x21, 0x70, 0x83, 0x84, 0x90, 0xba, 0xdd, 0xa8, 0x2d, 0x94, 0xae, 0xe4, 0x6c,
0x17, 0x09, 0x01, 0x91, 0x9b, 0x4c, 0x5a, 0xb3, 0x8e, 0x27, 0x78, 0xc6, 0x65, 0x7b, 0xcb, 0x1d,
0x8f, 0xc2, 0x5b, 0xf0, 0x1e, 0x5c, 0xc2, 0x83, 0x20, 0xcf, 0x87, 0xeb, 0x49, 0xed, 0xd6, 0xf4,
0x26, 0x9e, 0x99, 0xf3, 0xfd, 0x3b, 0x67, 0xce, 0x9c, 0x80, 0x75, 0xe9, 0x2e, 0xbc, 0x3d, 0x8a,
0xc3, 0x2b, 0x6f, 0x82, 0xe9, 0x1e, 0xf3, 0x7c, 0x1f, 0x87, 0xfd, 0x45, 0x48, 0x18, 0x41, 0xdd,
0x98, 0xd6, 0x57, 0xb4, 0xbe, 0xa0, 0x59, 0x5b, 0x5c, 0x62, 0x72, 0xe9, 0x86, 0x4c, 0xfc, 0x0a,
0x6e, 0x6b, 0x3b, 0x7d, 0x4e, 0x82, 0x99, 0x77, 0x21, 0x09, 0xc2, 0x44, 0x88, 0x7d, 0xec, 0x52,
0xac, 0xbe, 0x9a, 0x90, 0xa2, 0x79, 0xc1, 0x8c, 0x48, 0xc2, 0xff, 0x35, 0x02, 0xc3, 0x94, 0x8d,
0xc3, 0x28, 0x90, 0xc4, 0x1d, 0x8d, 0x48, 0x99, 0xcb, 0x22, 0xaa, 0x19, 0xbb, 0xc2, 0x21, 0xf5,
0x48, 0xa0, 0xbe, 0x82, 0x66, 0xff, 0x59, 0x82, 0x8d, 0x13, 0x8f, 0x32, 0x47, 0x08, 0x52, 0x07,
0xff, 0x12, 0x61, 0xca, 0x50, 0x17, 0xaa, 0xbe, 0x37, 0xf7, 0x98, 0x69, 0xec, 0x1a, 0xbd, 0xb2,
0x23, 0x36, 0x68, 0x0b, 0x6a, 0x64, 0x36, 0xa3, 0x98, 0x99, 0xa5, 0x5d, 0xa3, 0xd7, 0x74, 0xe4,
0x0e, 0x7d, 0x05, 0x75, 0x4a, 0x42, 0x36, 0x3e, 0xbf, 0x36, 0xcb, 0xbb, 0x46, 0xaf, 0x3d, 0xf8,
0xa0, 0x9f, 0x85, 0x53, 0x3f, 0xb6, 0x34, 0x22, 0x21, 0xeb, 0xc7, 0x3f, 0xcf, 0xaf, 0x9d, 0x1a,
0xe5, 0xdf, 0x58, 0xef, 0xcc, 0xf3, 0x19, 0x0e, 0xcd, 0x8a, 0xd0, 0x2b, 0x76, 0xe8, 0x10, 0x80,
0xeb, 0x25, 0xe1, 0x14, 0x87, 0x66, 0x95, 0xab, 0xee, 0x15, 0x50, 0xfd, 0x32, 0xe6, 0x77, 0x9a,
0x54, 0x2d, 0xd1, 0x97, 0xb0, 0x2a, 0x20, 0x19, 0x4f, 0xc8, 0x14, 0x53, 0xb3, 0xb6, 0x5b, 0xee,
0xb5, 0x07, 0x3b, 0x42, 0x95, 0x82, 0x7f, 0x24, 0x40, 0x3b, 0x20, 0x53, 0xec, 0xb4, 0x04, 0x7b,
0xbc, 0xa6, 0xe8, 0x11, 0x34, 0x03, 0x77, 0x8e, 0xe9, 0xc2, 0x9d, 0x60, 0xb3, 0xce, 0x3d, 0xbc,
0x39, 0xb0, 0x7f, 0x82, 0x86, 0x32, 0x6e, 0x0f, 0xa0, 0x26, 0x42, 0x43, 0x2d, 0xa8, 0x9f, 0x9d,
0x7e, 0x73, 0xfa, 0xf2, 0xbb, 0xd3, 0xce, 0x0a, 0x6a, 0x40, 0xe5, 0x74, 0xff, 0xdb, 0x61, 0xc7,
0x40, 0xeb, 0xb0, 0x76, 0xb2, 0x3f, 0x7a, 0x35, 0x76, 0x86, 0x27, 0xc3, 0xfd, 0xd1, 0xf0, 0x45,
0xa7, 0x64, 0xbf, 0x0b, 0xcd, 0xc4, 0x67, 0x54, 0x87, 0xf2, 0xfe, 0xe8, 0x40, 0x88, 0xbc, 0x18,
0x8e, 0x0e, 0x3a, 0x86, 0xfd, 0xbb, 0x01, 0x5d, 0x3d, 0x45, 0x74, 0x41, 0x02, 0x8a, 0xe3, 0x1c,
0x4d, 0x48, 0x14, 0x24, 0x39, 0xe2, 0x1b, 0x84, 0xa0, 0x12, 0xe0, 0xb7, 0x2a, 0x43, 0x7c, 0x1d,
0x73, 0x32, 0xc2, 0x5c, 0x9f, 0x67, 0xa7, 0xec, 0x88, 0x0d, 0xfa, 0x14, 0x1a, 0x32, 0x74, 0x6a,
0x56, 0x76, 0xcb, 0xbd, 0xd6, 0x60, 0x53, 0x07, 0x44, 0x5a, 0x74, 0x12, 0x36, 0xfb, 0x10, 0xb6,
0x0f, 0xb1, 0xf2, 0x44, 0xe0, 0xa5, 0x2a, 0x26, 0xb6, 0xeb, 0xce, 0x31, 0x77, 0x26, 0xb6, 0xeb,
0xce, 0x31, 0x32, 0xa1, 0x2e, 0xcb, 0x8d, 0xbb, 0x53, 0x75, 0xd4, 0xd6, 0x66, 0x60, 0xde, 0x56,
0x24, 0xe3, 0xca, 0xd2, 0xf4, 0x21, 0x54, 0xe2, 0x9b, 0xc0, 0xd5, 0xb4, 0x06, 0x48, 0xf7, 0xf3,
0x38, 0x98, 0x11, 0x87, 0xd3, 0xf5, 0x54, 0x95, 0x97, 0x53, 0x75, 0x94, 0xb6, 0x7a, 0x40, 0x02,
0x86, 0x03, 0xf6, 0x30, 0xff, 0x4f, 0x60, 0x27, 0x43, 0x93, 0x0c, 0x60, 0x0f, 0xea, 0xd2, 0x35,
0xae, 0x2d, 0x17, 0x57, 0xc5, 0x65, 0xff, 0x5d, 0x82, 0xee, 0xd9, 0x62, 0xea, 0x32, 0xac, 0x48,
0x77, 0x38, 0xf5, 0x18, 0xaa, 0xbc, 0xa3, 0x48, 0x2c, 0xd6, 0x85, 0x6e, 0xd1, 0x76, 0x0e, 0xe2,
0x5f, 0x47, 0xd0, 0xd1, 0x53, 0xa8, 0x5d, 0xb9, 0x7e, 0x84, 0x29, 0x07, 0x22, 0x41, 0x4d, 0x72,
0xf2, 0x76, 0xe4, 0x48, 0x0e, 0xb4, 0x0d, 0xf5, 0x69, 0x78, 0x1d, 0xf7, 0x13, 0x7e, 0x05, 0x1b,
0x4e, 0x6d, 0x1a, 0x5e, 0x3b, 0x51, 0x80, 0xde, 0x87, 0xb5, 0xa9, 0x47, 0xdd, 0x73, 0x1f, 0x8f,
0x2f, 0x09, 0x79, 0x43, 0xf9, 0x2d, 0x6c, 0x38, 0xab, 0xf2, 0xf0, 0x28, 0x3e, 0x43, 0x56, 0x5c,
0x49, 0x93, 0x10, 0xbb, 0x0c, 0x9b, 0x35, 0x4e, 0x4f, 0xf6, 0x31, 0x86, 0xcc, 0x9b, 0x63, 0x12,
0x31, 0x7e, 0x75, 0xca, 0x8e, 0xda, 0xa2, 0xf7, 0x60, 0x35, 0xc4, 0x14, 0xb3, 0xb1, 0xf4, 0xb2,
0xc1, 0x25, 0x5b, 0xfc, 0xec, 0xb5, 0x70, 0x0b, 0x41, 0xe5, 0x57, 0xd7, 0x63, 0x66, 0x93, 0x93,
0xf8, 0x5a, 0x88, 0x45, 0x14, 0x2b, 0x31, 0x50, 0x62, 0x11, 0xc5, 0x52, 0xac, 0x0b, 0xd5, 0x19,
0x09, 0x27, 0xd8, 0x6c, 0x71, 0x9a, 0xd8, 0xd8, 0x47, 0xb0, 0xb9, 0x04, 0xf2, 0x43, 0xf3, 0xf5,
0x8f, 0x01, 0x5b, 0x0e, 0xf1, 0xfd, 0x73, 0x77, 0xf2, 0xa6, 0x40, 0xc6, 0x52, 0xe0, 0x96, 0xee,
0x06, 0xb7, 0x9c, 0x01, 0x6e, 0xaa, 0x08, 0x2b, 0x5a, 0x11, 0x6a, 0xb0, 0x57, 0xf3, 0x61, 0xaf,
0xe9, 0xb0, 0x2b, 0x4c, 0xeb, 0x29, 0x4c, 0x13, 0xc0, 0x1a, 0x69, 0xc0, 0xbe, 0x86, 0xed, 0x5b,
0x51, 0x3e, 0x14, 0xb2, 0x3f, 0x4a, 0xb0, 0x79, 0x1c, 0x50, 0xe6, 0xfa, 0xfe, 0x12, 0x62, 0x49,
0x3d, 0x1b, 0x85, 0xeb, 0xb9, 0xf4, 0x5f, 0xea, 0xb9, 0xac, 0x41, 0xae, 0xf2, 0x53, 0x49, 0xe5,
0xa7, 0x50, 0x8d, 0x6b, 0x9d, 0xa5, 0xb6, 0xd4, 0x59, 0xd0, 0x3b, 0x00, 0xa2, 0x28, 0xb9, 0x72,
0x01, 0x6d, 0x93, 0x9f, 0x9c, 0xca, 0x46, 0xa2, 0xb2, 0xd1, 0xc8, 0xce, 0x46, 0xaa, 0xc2, 0xed,
0x63, 0xd8, 0x5a, 0x86, 0xea, 0xa1, 0xb0, 0xff, 0x66, 0xc0, 0xf6, 0x59, 0xe0, 0x65, 0x02, 0x9f,
0x55, 0xaa, 0xb7, 0xa0, 0x28, 0x65, 0x40, 0xd1, 0x85, 0xea, 0x22, 0x0a, 0x2f, 0xb0, 0x84, 0x56,
0x6c, 0xd2, 0x31, 0x56, 0xb4, 0x18, 0xed, 0x31, 0x98, 0xb7, 0x7d, 0x78, 0x60, 0x44, 0xb1, 0xd7,
0xc9, 0x4b, 0xd0, 0x14, 0x5d, 0xdf, 0xde, 0x80, 0xf5, 0x43, 0xcc, 0x5e, 0x8b, 0x6b, 0x21, 0xc3,
0xb3, 0x87, 0x80, 0xd2, 0x87, 0x37, 0xf6, 0xe4, 0x91, 0x6e, 0x4f, 0x8d, 0x45, 0x8a, 0x5f, 0x71,
0xd9, 0x5f, 0x70, 0xdd, 0x47, 0x1e, 0x65, 0x24, 0xbc, 0xbe, 0x0b, 0xba, 0x0e, 0x94, 0xe7, 0xee,
0x5b, 0xf9, 0x50, 0xc4, 0x4b, 0xfb, 0x90, 0x7b, 0x90, 0x88, 0x4a, 0x0f, 0xd2, 0xcf, 0xae, 0x51,
0xec, 0xd9, 0xfd, 0x01, 0xd0, 0x2b, 0x9c, 0x4c, 0x00, 0xf7, 0xbc, 0x58, 0x2a, 0x09, 0x25, 0xbd,
0xd0, 0x4c, 0xa8, 0x4f, 0x7c, 0xec, 0x06, 0xd1, 0x42, 0xa6, 0x4d, 0x6d, 0xed, 0x1f, 0x61, 0x43,
0xd3, 0x2e, 0xfd, 0x8c, 0xe3, 0xa1, 0x17, 0x52, 0x7b, 0xbc, 0x44, 0x9f, 0x43, 0x4d, 0x8c, 0x45,
0x5c, 0x77, 0x7b, 0xf0, 0x48, 0xf7, 0x9b, 0x2b, 0x89, 0x02, 0x39, 0x47, 0x39, 0x92, 0x77, 0xf0,
0x57, 0x03, 0xda, 0xea, 0xa1, 0x17, 0x43, 0x1b, 0xf2, 0x60, 0x35, 0x3d, 0xd1, 0xa0, 0x27, 0xf9,
0x33, 0xdd, 0xd2, 0x60, 0x6a, 0x3d, 0x2d, 0xc2, 0x2a, 0x22, 0xb0, 0x57, 0x3e, 0x31, 0x10, 0x85,
0xce, 0xf2, 0xa0, 0x81, 0x9e, 0x65, 0xeb, 0xc8, 0x99, 0x6c, 0xac, 0x7e, 0x51, 0x76, 0x65, 0x16,
0x5d, 0xf1, 0x9a, 0xd1, 0xa7, 0x03, 0x74, 0xaf, 0x1a, 0x7d, 0x20, 0xb1, 0xf6, 0x0a, 0xf3, 0x27,
0x76, 0x7f, 0x86, 0x35, 0xed, 0x85, 0x43, 0x39, 0x68, 0x65, 0xcd, 0x1a, 0xd6, 0x47, 0x85, 0x78,
0x13, 0x5b, 0x73, 0x68, 0xeb, 0x4d, 0x0a, 0xe5, 0x28, 0xc8, 0xec, 0xfa, 0xd6, 0xc7, 0xc5, 0x98,
0x13, 0x73, 0x14, 0x3a, 0xcb, 0x3d, 0x24, 0x2f, 0x8f, 0x39, 0xfd, 0x2e, 0x2f, 0x8f, 0x79, 0xad,
0xc9, 0x5e, 0x41, 0x2e, 0xc0, 0x4d, 0x0b, 0x41, 0x8f, 0x73, 0x13, 0xa2, 0x77, 0x1e, 0xab, 0x77,
0x3f, 0x63, 0x62, 0x62, 0x01, 0xff, 0x5b, 0x7a, 0x63, 0x51, 0x0e, 0x34, 0xd9, 0x03, 0x87, 0xf5,
0xac, 0x20, 0xf7, 0x52, 0x50, 0xb2, 0x2b, 0xdd, 0x11, 0x94, 0xde, 0xf2, 0xee, 0x08, 0x6a, 0xa9,
0xc1, 0xd9, 0x2b, 0xc8, 0x83, 0xb6, 0x13, 0x05, 0xd2, 0x74, 0xdc, 0x16, 0x50, 0x8e, 0xf4, 0xed,
0xae, 0x66, 0x3d, 0x29, 0xc0, 0x79, 0x73, 0xbf, 0x9f, 0xc3, 0xf7, 0x0d, 0xc5, 0x7a, 0x5e, 0xe3,
0xff, 0x69, 0x3f, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x7c, 0x9c, 0x49, 0xc1, 0x0f, 0x00,
0x00,
// 1312 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x6e, 0x1b, 0x45,
0x14, 0xce, 0xfa, 0xdf, 0x27, 0xa9, 0x71, 0xa7, 0x69, 0xb2, 0x35, 0x2d, 0x0a, 0x5b, 0x41, 0xdd,
0x42, 0x1d, 0x6a, 0xb8, 0xa9, 0x84, 0x90, 0xd2, 0xd4, 0x24, 0x81, 0x90, 0x48, 0x93, 0xb6, 0x48,
0x08, 0xb0, 0x36, 0xf6, 0x38, 0x5d, 0xba, 0xde, 0x31, 0x3b, 0xb3, 0xa1, 0x91, 0xb8, 0xe2, 0x8e,
0x5b, 0xde, 0x82, 0xb7, 0xe0, 0x45, 0xb8, 0x82, 0x07, 0x41, 0xf3, 0xb7, 0xf1, 0x38, 0xbb, 0xc9,
0x92, 0x9b, 0x78, 0x67, 0xce, 0xef, 0x7c, 0xdf, 0x99, 0x33, 0x27, 0xd0, 0x79, 0xed, 0xcf, 0x82,
0x4d, 0x46, 0xe2, 0xd3, 0x60, 0x44, 0xd8, 0x26, 0x0f, 0xc2, 0x90, 0xc4, 0xbd, 0x59, 0x4c, 0x39,
0x45, 0xab, 0x42, 0xd6, 0x33, 0xb2, 0x9e, 0x92, 0x75, 0xd6, 0xa4, 0xc5, 0xe8, 0xb5, 0x1f, 0x73,
0xf5, 0x57, 0x69, 0x77, 0xd6, 0xe7, 0xf7, 0x69, 0x34, 0x09, 0x4e, 0xb4, 0x40, 0x85, 0x88, 0x49,
0x48, 0x7c, 0x46, 0xcc, 0xaf, 0x65, 0x64, 0x64, 0x41, 0x34, 0xa1, 0x5a, 0xf0, 0xae, 0x25, 0xe0,
0x84, 0xf1, 0x61, 0x9c, 0x44, 0x5a, 0x78, 0xc7, 0x12, 0x32, 0xee, 0xf3, 0x84, 0x59, 0xc1, 0x4e,
0x49, 0xcc, 0x02, 0x1a, 0x99, 0x5f, 0x25, 0xf3, 0xfe, 0x2a, 0xc1, 0xad, 0xfd, 0x80, 0x71, 0xac,
0x0c, 0x19, 0x26, 0x3f, 0x27, 0x84, 0x71, 0xb4, 0x0a, 0xd5, 0x30, 0x98, 0x06, 0xdc, 0x75, 0x36,
0x9c, 0x6e, 0x19, 0xab, 0x05, 0x5a, 0x83, 0x1a, 0x9d, 0x4c, 0x18, 0xe1, 0x6e, 0x69, 0xc3, 0xe9,
0x36, 0xb1, 0x5e, 0xa1, 0x2f, 0xa0, 0xce, 0x68, 0xcc, 0x87, 0xc7, 0x67, 0x6e, 0x79, 0xc3, 0xe9,
0xb6, 0xfa, 0x1f, 0xf4, 0xb2, 0x70, 0xea, 0x89, 0x48, 0x47, 0x34, 0xe6, 0x3d, 0xf1, 0xe7, 0xd9,
0x19, 0xae, 0x31, 0xf9, 0x2b, 0xfc, 0x4e, 0x82, 0x90, 0x93, 0xd8, 0xad, 0x28, 0xbf, 0x6a, 0x85,
0x76, 0x00, 0xa4, 0x5f, 0x1a, 0x8f, 0x49, 0xec, 0x56, 0xa5, 0xeb, 0x6e, 0x01, 0xd7, 0x87, 0x42,
0x1f, 0x37, 0x99, 0xf9, 0x44, 0x9f, 0xc3, 0x8a, 0x82, 0x64, 0x38, 0xa2, 0x63, 0xc2, 0xdc, 0xda,
0x46, 0xb9, 0xdb, 0xea, 0xdf, 0x51, 0xae, 0x0c, 0xfc, 0x47, 0x0a, 0xb4, 0x6d, 0x3a, 0x26, 0x78,
0x59, 0xa9, 0x8b, 0x6f, 0x86, 0xee, 0x42, 0x33, 0xf2, 0xa7, 0x84, 0xcd, 0xfc, 0x11, 0x71, 0xeb,
0x32, 0xc3, 0xf3, 0x0d, 0xef, 0x47, 0x68, 0x98, 0xe0, 0x5e, 0x1f, 0x6a, 0xea, 0x68, 0x68, 0x19,
0xea, 0x2f, 0x0f, 0xbe, 0x3e, 0x38, 0xfc, 0xf6, 0xa0, 0xbd, 0x84, 0x1a, 0x50, 0x39, 0xd8, 0xfa,
0x66, 0xd0, 0x76, 0xd0, 0x4d, 0xb8, 0xb1, 0xbf, 0x75, 0xf4, 0x62, 0x88, 0x07, 0xfb, 0x83, 0xad,
0xa3, 0xc1, 0xf3, 0x76, 0xc9, 0x7b, 0x0f, 0x9a, 0x69, 0xce, 0xa8, 0x0e, 0xe5, 0xad, 0xa3, 0x6d,
0x65, 0xf2, 0x7c, 0x70, 0xb4, 0xdd, 0x76, 0xbc, 0xdf, 0x1d, 0x58, 0xb5, 0x29, 0x62, 0x33, 0x1a,
0x31, 0x22, 0x38, 0x1a, 0xd1, 0x24, 0x4a, 0x39, 0x92, 0x0b, 0x84, 0xa0, 0x12, 0x91, 0xb7, 0x86,
0x21, 0xf9, 0x2d, 0x34, 0x39, 0xe5, 0x7e, 0x28, 0xd9, 0x29, 0x63, 0xb5, 0x40, 0x4f, 0xa0, 0xa1,
0x8f, 0xce, 0xdc, 0xca, 0x46, 0xb9, 0xbb, 0xdc, 0xbf, 0x6d, 0x03, 0xa2, 0x23, 0xe2, 0x54, 0xcd,
0xdb, 0x81, 0xf5, 0x1d, 0x62, 0x32, 0x51, 0x78, 0x99, 0x8a, 0x11, 0x71, 0xfd, 0x29, 0x91, 0xc9,
0x88, 0xb8, 0xfe, 0x94, 0x20, 0x17, 0xea, 0xba, 0xdc, 0x64, 0x3a, 0x55, 0x6c, 0x96, 0x1e, 0x07,
0xf7, 0xa2, 0x23, 0x7d, 0xae, 0x2c, 0x4f, 0x1f, 0x42, 0x45, 0xdc, 0x04, 0xe9, 0x66, 0xb9, 0x8f,
0xec, 0x3c, 0xf7, 0xa2, 0x09, 0xc5, 0x52, 0x6e, 0x53, 0x55, 0x5e, 0xa4, 0x6a, 0x77, 0x3e, 0xea,
0x36, 0x8d, 0x38, 0x89, 0xf8, 0xf5, 0xf2, 0xdf, 0x87, 0x3b, 0x19, 0x9e, 0xf4, 0x01, 0x36, 0xa1,
0xae, 0x53, 0x93, 0xde, 0x72, 0x71, 0x35, 0x5a, 0xde, 0x3f, 0x25, 0x58, 0x7d, 0x39, 0x1b, 0xfb,
0x9c, 0x18, 0xd1, 0x25, 0x49, 0x3d, 0x80, 0xaa, 0xec, 0x28, 0x1a, 0x8b, 0x9b, 0xca, 0xb7, 0x6a,
0x3b, 0xdb, 0xe2, 0x2f, 0x56, 0x72, 0xf4, 0x08, 0x6a, 0xa7, 0x7e, 0x98, 0x10, 0x26, 0x81, 0x48,
0x51, 0xd3, 0x9a, 0xb2, 0x1d, 0x61, 0xad, 0x81, 0xd6, 0xa1, 0x3e, 0x8e, 0xcf, 0x44, 0x3f, 0x91,
0x57, 0xb0, 0x81, 0x6b, 0xe3, 0xf8, 0x0c, 0x27, 0x11, 0xba, 0x0f, 0x37, 0xc6, 0x01, 0xf3, 0x8f,
0x43, 0x32, 0x7c, 0x4d, 0xe9, 0x1b, 0x26, 0x6f, 0x61, 0x03, 0xaf, 0xe8, 0xcd, 0x5d, 0xb1, 0x87,
0x3a, 0xa2, 0x92, 0x46, 0x31, 0xf1, 0x39, 0x71, 0x6b, 0x52, 0x9e, 0xae, 0x05, 0x86, 0x3c, 0x98,
0x12, 0x9a, 0x70, 0x79, 0x75, 0xca, 0xd8, 0x2c, 0xd1, 0xfb, 0xb0, 0x12, 0x13, 0x46, 0xf8, 0x50,
0x67, 0xd9, 0x90, 0x96, 0xcb, 0x72, 0xef, 0x95, 0x4a, 0x0b, 0x41, 0xe5, 0x17, 0x3f, 0xe0, 0x6e,
0x53, 0x8a, 0xe4, 0xb7, 0x32, 0x4b, 0x18, 0x31, 0x66, 0x60, 0xcc, 0x12, 0x46, 0xb4, 0xd9, 0x2a,
0x54, 0x27, 0x34, 0x1e, 0x11, 0x77, 0x59, 0xca, 0xd4, 0xc2, 0xdb, 0x85, 0xdb, 0x0b, 0x20, 0x5f,
0x97, 0xaf, 0x7f, 0x1d, 0x58, 0xc3, 0x34, 0x0c, 0x8f, 0xfd, 0xd1, 0x9b, 0x02, 0x8c, 0xcd, 0x81,
0x5b, 0xba, 0x1c, 0xdc, 0x72, 0x06, 0xb8, 0x73, 0x45, 0x58, 0xb1, 0x8a, 0xd0, 0x82, 0xbd, 0x9a,
0x0f, 0x7b, 0xcd, 0x86, 0xdd, 0x60, 0x5a, 0x9f, 0xc3, 0x34, 0x05, 0xac, 0x31, 0x0f, 0xd8, 0x57,
0xb0, 0x7e, 0xe1, 0x94, 0xd7, 0x85, 0xec, 0xcf, 0x12, 0xdc, 0xde, 0x8b, 0x18, 0xf7, 0xc3, 0x70,
0x01, 0xb1, 0xb4, 0x9e, 0x9d, 0xc2, 0xf5, 0x5c, 0xfa, 0x3f, 0xf5, 0x5c, 0xb6, 0x20, 0x37, 0xfc,
0x54, 0xe6, 0xf8, 0x29, 0x54, 0xe3, 0x56, 0x67, 0xa9, 0x2d, 0x74, 0x16, 0x74, 0x0f, 0x40, 0x15,
0xa5, 0x74, 0xae, 0xa0, 0x6d, 0xca, 0x9d, 0x03, 0xdd, 0x48, 0x0c, 0x1b, 0x8d, 0x6c, 0x36, 0xe6,
0x2a, 0xdc, 0xfb, 0x15, 0xea, 0xfb, 0xf4, 0x64, 0x8f, 0x93, 0x29, 0x7a, 0x0a, 0xd5, 0x90, 0x9c,
0x92, 0x50, 0x82, 0xd3, 0xea, 0xdf, 0xcf, 0x79, 0xfc, 0x94, 0x76, 0x6f, 0x5f, 0xa8, 0x62, 0x65,
0x21, 0x62, 0x4e, 0x09, 0x63, 0xfe, 0x09, 0xd1, 0x6f, 0x81, 0x59, 0x7a, 0x77, 0xa1, 0x2a, 0x35,
0xc5, 0x23, 0xb3, 0x77, 0xf0, 0xe5, 0x61, 0x7b, 0x09, 0x35, 0xa1, 0x3a, 0xc0, 0xf8, 0x10, 0xb7,
0x1d, 0xef, 0x0f, 0x07, 0xd6, 0x16, 0x99, 0xd2, 0xac, 0x3f, 0x29, 0xc6, 0xfa, 0xee, 0x52, 0xca,
0x3b, 0x7a, 0x0a, 0xf5, 0x50, 0x65, 0xa7, 0x59, 0xbb, 0x77, 0xe9, 0x11, 0x84, 0xa9, 0xd6, 0x7f,
0x06, 0xa2, 0xbc, 0x55, 0x64, 0xef, 0x37, 0x07, 0xd6, 0x5f, 0x46, 0x41, 0x66, 0x01, 0x65, 0x5d,
0xb9, 0x0b, 0x94, 0x96, 0x32, 0x28, 0x5d, 0x85, 0xea, 0x2c, 0x89, 0x4f, 0x88, 0x2e, 0x11, 0xb5,
0x98, 0xe7, 0xaa, 0x62, 0x71, 0xe5, 0x0d, 0xc1, 0xbd, 0x98, 0xc3, 0x35, 0x2f, 0x84, 0xc8, 0x3a,
0x7d, 0xd1, 0x9a, 0xea, 0xf5, 0xf2, 0x6e, 0xc1, 0xcd, 0x1d, 0xc2, 0x5f, 0xa9, 0xeb, 0xad, 0x8f,
0xe7, 0x0d, 0x00, 0xcd, 0x6f, 0x9e, 0xc7, 0xd3, 0x5b, 0x76, 0x3c, 0x33, 0xde, 0x19, 0x7d, 0xa3,
0xe5, 0x3d, 0x95, 0xbe, 0x77, 0x03, 0xc6, 0x69, 0x7c, 0x76, 0x19, 0x74, 0x6d, 0x28, 0x4f, 0xfd,
0xb7, 0xfa, 0xc1, 0x13, 0x9f, 0xde, 0x8e, 0xcc, 0x20, 0x35, 0x4d, 0x8b, 0xe1, 0x7c, 0x7c, 0x70,
0x8a, 0x8d, 0x0f, 0xdf, 0x03, 0x7a, 0x41, 0xd2, 0x49, 0xe6, 0x8a, 0x97, 0xd7, 0x90, 0x50, 0xb2,
0x2f, 0x8c, 0x0b, 0xf5, 0x51, 0x48, 0xfc, 0x28, 0x99, 0x69, 0xda, 0xcc, 0xd2, 0xfb, 0x01, 0x6e,
0x59, 0xde, 0x75, 0x9e, 0xe2, 0x3c, 0xec, 0x44, 0x7b, 0x17, 0x9f, 0xe8, 0x33, 0xa8, 0xa9, 0xf1,
0x4e, 0xfa, 0x6e, 0xf5, 0xef, 0xda, 0x79, 0x4b, 0x27, 0x49, 0xa4, 0xe7, 0x41, 0xac, 0x75, 0xfb,
0x7f, 0x37, 0xa0, 0x65, 0x06, 0x16, 0x55, 0xbc, 0x28, 0x80, 0x95, 0xf9, 0xc9, 0x0c, 0x3d, 0xcc,
0x9f, 0x4d, 0x17, 0x06, 0xec, 0xce, 0xa3, 0x22, 0xaa, 0xba, 0xf8, 0x97, 0x3e, 0x71, 0x10, 0x83,
0xf6, 0xe2, 0xc0, 0x84, 0x1e, 0x67, 0xfb, 0xc8, 0x99, 0xd0, 0x3a, 0xbd, 0xa2, 0xea, 0x26, 0x2c,
0x3a, 0x95, 0x35, 0x63, 0x4f, 0x39, 0xe8, 0x4a, 0x37, 0xf6, 0x60, 0xd5, 0xd9, 0x2c, 0xac, 0x9f,
0xc6, 0xfd, 0x09, 0x6e, 0x58, 0x2f, 0x35, 0xca, 0x41, 0x2b, 0x6b, 0x66, 0xea, 0x7c, 0x54, 0x48,
0x37, 0x8d, 0x45, 0xa1, 0x65, 0x77, 0x3b, 0x94, 0xe3, 0x20, 0xf3, 0xf5, 0xea, 0x7c, 0x5c, 0x4c,
0xd9, 0x66, 0x72, 0xb1, 0x8b, 0xe4, 0x31, 0x99, 0xd3, 0xf1, 0xf2, 0x98, 0xcc, 0x6b, 0x4e, 0xde,
0x12, 0xf2, 0x01, 0xce, 0x9b, 0x08, 0x7a, 0x90, 0x4b, 0x89, 0xdd, 0x7b, 0x3a, 0xdd, 0xab, 0x15,
0xd3, 0x10, 0x33, 0x78, 0x67, 0x61, 0x5a, 0x40, 0x39, 0xe0, 0x64, 0x8f, 0x4e, 0x9d, 0xc7, 0x05,
0xb5, 0x17, 0x0e, 0xa5, 0xfb, 0xd2, 0x25, 0x87, 0xb2, 0x9b, 0xde, 0x25, 0x87, 0x5a, 0x68, 0x71,
0xde, 0x12, 0x0a, 0xa0, 0x85, 0x93, 0x48, 0x87, 0x16, 0x8d, 0x01, 0xe5, 0x58, 0x5f, 0xec, 0x6b,
0x9d, 0x87, 0x05, 0x34, 0xcf, 0xeb, 0xe2, 0x19, 0x7c, 0xd7, 0x30, 0xaa, 0xc7, 0x35, 0xf9, 0xdf,
0xf9, 0xa7, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x67, 0x31, 0x71, 0xbf, 0x8b, 0x10, 0x00, 0x00,
}

@ -20,8 +20,6 @@ import (
"fmt"
"strings"
ctx "golang.org/x/net/context"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/hooks"
"k8s.io/helm/pkg/proto/hapi/release"
@ -30,28 +28,71 @@ import (
"k8s.io/helm/pkg/timeconv"
)
type ClientLogger struct {
stream services.ReleaseService_InstallReleaseServer
}
func (logger *ClientLogger) log(level services.LogItem_Level, message string) (error) {
log := &services.InstallReleaseResponse{
Response: &services.InstallReleaseResponse_LogItem {
&services.LogItem{
Level: level,
Message: message,
},
},
}
return logger.stream.Send(log)
}
func (logger *ClientLogger) Info(message string) (error) {
return logger.log(services.LogItem_INFO, message)
}
func (logger *ClientLogger) Error(message string) (error) {
return logger.log(services.LogItem_ERROR, message)
}
// InstallRelease installs a release and stores the release record.
func (s *ReleaseServer) InstallRelease(c ctx.Context, req *services.InstallReleaseRequest) (*services.InstallReleaseResponse, error) {
func (s *ReleaseServer) InstallRelease(req *services.InstallReleaseRequest, stream services.ReleaseService_InstallReleaseServer) (error) {
clientLogger := ClientLogger{
stream: stream,
}
s.Log("preparing install for %s", req.Name)
rel, err := s.prepareRelease(req)
if err != nil {
s.Log("failed install prepare step: %s", err)
res := &services.InstallReleaseResponse{Release: rel}
// On dry run, append the manifest contents to a failed release. This is
// a stop-gap until we can revisit an error backchannel post-2.0.
if req.DryRun && strings.HasPrefix(err.Error(), "YAML parse error") {
err = fmt.Errorf("%s\n%s", err, rel.Manifest)
}
return res, err
return err
}
s.Log("performing install for %s", req.Name)
err = clientLogger.Info(fmt.Sprintf("performing install for %s", req.Name))
if err != nil {
return err
}
res, err := s.performRelease(rel, req)
if err != nil {
s.Log("failed install perform step: %s", err)
}
return res, err
sendErr := stream.Send(res)
if sendErr != nil {
return sendErr
}
return err
}
// prepareRelease builds a release for an install operation.
@ -133,11 +174,17 @@ func (s *ReleaseServer) prepareRelease(req *services.InstallReleaseRequest) (*re
// performRelease runs a release.
func (s *ReleaseServer) performRelease(r *release.Release, req *services.InstallReleaseRequest) (*services.InstallReleaseResponse, error) {
res := &services.InstallReleaseResponse{Release: r}
res := &services.InstallReleaseResponse{
Response: &services.InstallReleaseResponse_Release {
Release: r,
},
}
if req.DryRun {
s.Log("dry run for %s", r.Name)
res.Release.Info.Description = "Dry run complete"
releaseResponse := res.Response.(*services.InstallReleaseResponse_Release)
releaseResponse.Release.Info.Description = "Dry run complete"
return res, nil
}

@ -29,7 +29,6 @@ import (
)
func TestInstallRelease(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
// TODO: Refactor this into a mock.
@ -43,7 +42,10 @@ func TestInstallRelease(t *testing.T) {
},
},
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err != nil {
t.Fatalf("Failed install: %s", err)
}
@ -93,7 +95,6 @@ func TestInstallRelease(t *testing.T) {
}
func TestInstallRelease_WithNotes(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
// TODO: Refactor this into a mock.
@ -108,7 +109,9 @@ func TestInstallRelease_WithNotes(t *testing.T) {
},
},
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err != nil {
t.Fatalf("Failed install: %s", err)
}
@ -162,7 +165,6 @@ func TestInstallRelease_WithNotes(t *testing.T) {
}
func TestInstallRelease_WithNotesRendered(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
// TODO: Refactor this into a mock.
@ -177,7 +179,9 @@ func TestInstallRelease_WithNotesRendered(t *testing.T) {
},
},
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err != nil {
t.Fatalf("Failed install: %s", err)
}
@ -233,7 +237,6 @@ func TestInstallRelease_WithNotesRendered(t *testing.T) {
func TestInstallRelease_TillerVersion(t *testing.T) {
version.Version = "2.2.0"
c := helm.NewContext()
rs := rsFixture()
// TODO: Refactor this into a mock.
@ -247,7 +250,8 @@ func TestInstallRelease_TillerVersion(t *testing.T) {
},
},
}
_, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
if err != nil {
t.Fatalf("Expected valid range. Got %q", err)
}
@ -255,7 +259,6 @@ func TestInstallRelease_TillerVersion(t *testing.T) {
func TestInstallRelease_WrongTillerVersion(t *testing.T) {
version.Version = "2.2.0"
c := helm.NewContext()
rs := rsFixture()
// TODO: Refactor this into a mock.
@ -269,7 +272,8 @@ func TestInstallRelease_WrongTillerVersion(t *testing.T) {
},
},
}
_, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
if err == nil {
t.Fatalf("Expected to fail because of wrong version")
}
@ -281,7 +285,6 @@ func TestInstallRelease_WrongTillerVersion(t *testing.T) {
}
func TestInstallRelease_WithChartAndDependencyNotes(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
// TODO: Refactor this into a mock.
@ -307,7 +310,9 @@ func TestInstallRelease_WithChartAndDependencyNotes(t *testing.T) {
},
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err != nil {
t.Fatalf("Failed install: %s", err)
}
@ -332,14 +337,15 @@ func TestInstallRelease_WithChartAndDependencyNotes(t *testing.T) {
}
func TestInstallRelease_DryRun(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
req := &services.InstallReleaseRequest{
Chart: chartStub(),
DryRun: true,
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err != nil {
t.Errorf("Failed install: %s", err)
}
@ -385,7 +391,6 @@ func TestInstallRelease_DryRun(t *testing.T) {
}
func TestInstallRelease_NoHooks(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
rs.env.Releases.Create(releaseStub())
@ -393,7 +398,9 @@ func TestInstallRelease_NoHooks(t *testing.T) {
Chart: chartStub(),
DisableHooks: true,
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err != nil {
t.Errorf("Failed install: %s", err)
}
@ -404,7 +411,6 @@ func TestInstallRelease_NoHooks(t *testing.T) {
}
func TestInstallRelease_FailedHooks(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
rs.env.Releases.Create(releaseStub())
rs.env.KubeClient = newHookFailingKubeClient()
@ -412,7 +418,9 @@ func TestInstallRelease_FailedHooks(t *testing.T) {
req := &services.InstallReleaseRequest{
Chart: chartStub(),
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err == nil {
t.Error("Expected failed install")
}
@ -434,7 +442,9 @@ func TestInstallRelease_ReuseName(t *testing.T) {
ReuseName: true,
Name: rel.Name,
}
res, err := rs.InstallRelease(c, req)
mrs := &mockInstallServer{}
err := rs.InstallRelease(req, mrs)
res := mrs.val.Response.(*services.InstallReleaseResponse_Release)
if err != nil {
t.Fatalf("Failed install: %s", err)
}

@ -340,6 +340,22 @@ func (l *mockListServer) SendHeader(m metadata.MD) error { return nil }
func (l *mockListServer) SetTrailer(m metadata.MD) {}
func (l *mockListServer) SetHeader(m metadata.MD) error { return nil }
type mockInstallServer struct {
val *services.InstallReleaseResponse
}
func (l *mockInstallServer) Send(res *services.InstallReleaseResponse) error {
l.val = res
return nil
}
func (l *mockInstallServer) Context() context.Context { return helm.NewContext() }
func (l *mockInstallServer) SendMsg(v interface{}) error { return nil }
func (l *mockInstallServer) RecvMsg(v interface{}) error { return nil }
func (l *mockInstallServer) SendHeader(m metadata.MD) error { return nil }
func (l *mockInstallServer) SetTrailer(m metadata.MD) {}
func (l *mockInstallServer) SetHeader(m metadata.MD) error { return nil }
type mockRunReleaseTestServer struct {
stream grpc.ServerStream
}

Loading…
Cancel
Save