Let pre/post upgrade hook use extended watch

pull/3479/head
Qiu Yu 8 years ago committed by Timofey Kirillov
parent cb3a0fd90a
commit c84c66f985

@ -58,7 +58,7 @@ service ReleaseService {
}
// UpdateRelease updates release content.
rpc UpdateRelease(UpdateReleaseRequest) returns (UpdateReleaseResponse) {
rpc UpdateRelease(UpdateReleaseRequest) returns (stream UpdateReleaseResponse) { // TODO: backward compatibility
}
// InstallRelease requests installation of a chart as a new release.
@ -218,6 +218,7 @@ message UpdateReleaseRequest {
// UpdateReleaseResponse is the response to an update request.
message UpdateReleaseResponse {
hapi.release.Release release = 1;
hapi.release.WatchFeed watch_feed = 2; // TODO: think about compatibility
}
message RollbackReleaseRequest {

@ -444,7 +444,52 @@ func (h *Client) update(ctx context.Context, req *rls.UpdateReleaseRequest) (*rl
defer c.Close()
rlc := rls.NewReleaseServiceClient(c)
return rlc.UpdateRelease(ctx, req)
var finalResp *rls.UpdateReleaseResponse
currentLogHeader := ""
setLogHeader := func(logHeader string) {
if currentLogHeader != logHeader {
if currentLogHeader != "" {
fmt.Println()
}
fmt.Printf("%s\n", logHeader)
currentLogHeader = logHeader
}
}
formatJobHeader := func(jobName string, podName string, containerName string) string {
// tail -f on multiple files prints similar headers
return fmt.Sprintf("==> Job \"%s\", Pod \"%s\", Container \"%s\" <==", jobName, podName, containerName)
}
stream, err := rlc.UpdateRelease(ctx, req)
for {
resp, err := stream.Recv()
if err == io.EOF {
return finalResp, nil
}
if err != nil {
return resp, err
}
if resp.WatchFeed.GetJobLogChunk() != nil {
chunk := resp.WatchFeed.GetJobLogChunk()
setLogHeader(formatJobHeader(chunk.JobName, chunk.PodName, chunk.ContainerName))
for _, line := range chunk.LogLines {
fmt.Println(line.Data)
}
} else if resp.WatchFeed.GetJobPodError() != nil {
jobPodError := resp.WatchFeed.GetJobPodError()
setLogHeader(formatJobHeader(jobPodError.JobName, jobPodError.PodName, jobPodError.ContainerName))
fmt.Fprintf(os.Stderr, "Error: %s\n", jobPodError.Message)
} else {
finalResp = resp // TODO verify/debug this code
}
}
}
// Executes tiller.RollbackRelease RPC.

@ -476,6 +476,7 @@ func (m *UpdateReleaseRequest) GetDescription() string {
// UpdateReleaseResponse is the response to an update request.
type UpdateReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
WatchFeed *hapi_release6.WatchFeed `protobuf:"bytes,2,opt,name=watch_feed,json=watchFeed" json:"watch_feed,omitempty"`
}
func (m *UpdateReleaseResponse) Reset() { *m = UpdateReleaseResponse{} }
@ -490,6 +491,13 @@ func (m *UpdateReleaseResponse) GetRelease() *hapi_release5.Release {
return nil
}
func (m *UpdateReleaseResponse) GetWatchFeed() *hapi_release6.WatchFeed {
if m != nil {
return m.WatchFeed
}
return nil
}
type RollbackReleaseRequest struct {
// The name of the release
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
@ -992,7 +1000,7 @@ type ReleaseServiceClient interface {
// GetReleaseContent retrieves the release content (chart + value) for the specified release.
GetReleaseContent(ctx context.Context, in *GetReleaseContentRequest, opts ...grpc.CallOption) (*GetReleaseContentResponse, error)
// UpdateRelease updates release content.
UpdateRelease(ctx context.Context, in *UpdateReleaseRequest, opts ...grpc.CallOption) (*UpdateReleaseResponse, error)
UpdateRelease(ctx context.Context, in *UpdateReleaseRequest, opts ...grpc.CallOption) (ReleaseService_UpdateReleaseClient, error)
// InstallRelease requests installation of a chart as a new release.
InstallRelease(ctx context.Context, in *InstallReleaseRequest, opts ...grpc.CallOption) (ReleaseService_InstallReleaseClient, error)
// UninstallRelease requests deletion of a named release.
@ -1065,17 +1073,40 @@ func (c *releaseServiceClient) GetReleaseContent(ctx context.Context, in *GetRel
return out, nil
}
func (c *releaseServiceClient) UpdateRelease(ctx context.Context, in *UpdateReleaseRequest, opts ...grpc.CallOption) (*UpdateReleaseResponse, error) {
out := new(UpdateReleaseResponse)
err := grpc.Invoke(ctx, "/hapi.services.tiller.ReleaseService/UpdateRelease", in, out, c.cc, opts...)
func (c *releaseServiceClient) UpdateRelease(ctx context.Context, in *UpdateReleaseRequest, opts ...grpc.CallOption) (ReleaseService_UpdateReleaseClient, error) {
stream, err := grpc.NewClientStream(ctx, &_ReleaseService_serviceDesc.Streams[1], c.cc, "/hapi.services.tiller.ReleaseService/UpdateRelease", opts...)
if err != nil {
return nil, err
}
return out, nil
x := &releaseServiceUpdateReleaseClient{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_UpdateReleaseClient interface {
Recv() (*UpdateReleaseResponse, error)
grpc.ClientStream
}
type releaseServiceUpdateReleaseClient struct {
grpc.ClientStream
}
func (x *releaseServiceUpdateReleaseClient) Recv() (*UpdateReleaseResponse, error) {
m := new(UpdateReleaseResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
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...)
stream, err := grpc.NewClientStream(ctx, &_ReleaseService_serviceDesc.Streams[2], c.cc, "/hapi.services.tiller.ReleaseService/InstallRelease", opts...)
if err != nil {
return nil, err
}
@ -1143,7 +1174,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[2], c.cc, "/hapi.services.tiller.ReleaseService/RunReleaseTest", opts...)
stream, err := grpc.NewClientStream(ctx, &_ReleaseService_serviceDesc.Streams[3], c.cc, "/hapi.services.tiller.ReleaseService/RunReleaseTest", opts...)
if err != nil {
return nil, err
}
@ -1187,7 +1218,7 @@ type ReleaseServiceServer interface {
// GetReleaseContent retrieves the release content (chart + value) for the specified release.
GetReleaseContent(context.Context, *GetReleaseContentRequest) (*GetReleaseContentResponse, error)
// UpdateRelease updates release content.
UpdateRelease(context.Context, *UpdateReleaseRequest) (*UpdateReleaseResponse, error)
UpdateRelease(*UpdateReleaseRequest, ReleaseService_UpdateReleaseServer) error
// InstallRelease requests installation of a chart as a new release.
InstallRelease(*InstallReleaseRequest, ReleaseService_InstallReleaseServer) error
// UninstallRelease requests deletion of a named release.
@ -1263,22 +1294,25 @@ func _ReleaseService_GetReleaseContent_Handler(srv interface{}, ctx context.Cont
return interceptor(ctx, in, info, handler)
}
func _ReleaseService_UpdateRelease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateReleaseRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ReleaseServiceServer).UpdateRelease(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/hapi.services.tiller.ReleaseService/UpdateRelease",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ReleaseServiceServer).UpdateRelease(ctx, req.(*UpdateReleaseRequest))
func _ReleaseService_UpdateRelease_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(UpdateReleaseRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return interceptor(ctx, in, info, handler)
return srv.(ReleaseServiceServer).UpdateRelease(m, &releaseServiceUpdateReleaseServer{stream})
}
type ReleaseService_UpdateReleaseServer interface {
Send(*UpdateReleaseResponse) error
grpc.ServerStream
}
type releaseServiceUpdateReleaseServer struct {
grpc.ServerStream
}
func (x *releaseServiceUpdateReleaseServer) Send(m *UpdateReleaseResponse) error {
return x.ServerStream.SendMsg(m)
}
func _ReleaseService_InstallRelease_Handler(srv interface{}, stream grpc.ServerStream) error {
@ -1407,10 +1441,6 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
MethodName: "GetReleaseContent",
Handler: _ReleaseService_GetReleaseContent_Handler,
},
{
MethodName: "UpdateRelease",
Handler: _ReleaseService_UpdateRelease_Handler,
},
{
MethodName: "UninstallRelease",
Handler: _ReleaseService_UninstallRelease_Handler,
@ -1434,6 +1464,11 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
Handler: _ReleaseService_ListReleases_Handler,
ServerStreams: true,
},
{
StreamName: "UpdateRelease",
Handler: _ReleaseService_UpdateRelease_Handler,
ServerStreams: true,
},
{
StreamName: "InstallRelease",
Handler: _ReleaseService_InstallRelease_Handler,
@ -1451,87 +1486,88 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1310 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x6d, 0x6f, 0xdc, 0x44,
0x10, 0x8e, 0xcf, 0xf7, 0x3a, 0x97, 0x1e, 0xd7, 0x6d, 0x9a, 0xb8, 0xa6, 0x45, 0xc1, 0x08, 0x7a,
0x2d, 0xf4, 0x02, 0x01, 0x21, 0x21, 0x21, 0xa4, 0xf4, 0x1a, 0x92, 0x42, 0x48, 0x25, 0xa7, 0x2f,
0x12, 0x02, 0x9d, 0x1c, 0x7b, 0xaf, 0x31, 0xf5, 0xd9, 0x87, 0x77, 0x9d, 0x36, 0x1f, 0xf9, 0x00,
0x12, 0xff, 0x83, 0x1f, 0xc2, 0x1f, 0xe1, 0x67, 0xf0, 0x1d, 0x79, 0x5f, 0x1c, 0xaf, 0xcf, 0xbe,
0x9a, 0x7c, 0x39, 0xef, 0xee, 0xcc, 0xce, 0xcc, 0x3e, 0xcf, 0xce, 0xec, 0x1c, 0x98, 0x67, 0xce,
0xc2, 0xdf, 0x21, 0x38, 0x3e, 0xf7, 0x5d, 0x4c, 0x76, 0xa8, 0x1f, 0x04, 0x38, 0x1e, 0x2f, 0xe2,
0x88, 0x46, 0x68, 0x23, 0x95, 0x8d, 0xa5, 0x6c, 0xcc, 0x65, 0xe6, 0x26, 0xdb, 0xe1, 0x9e, 0x39,
0x31, 0xe5, 0xbf, 0x5c, 0xdb, 0xdc, 0xca, 0xaf, 0x47, 0xe1, 0xcc, 0x7f, 0x29, 0x04, 0xdc, 0x45,
0x8c, 0x03, 0xec, 0x10, 0x2c, 0xbf, 0xca, 0x26, 0x29, 0xf3, 0xc3, 0x59, 0x24, 0x04, 0xef, 0x2a,
0x02, 0x8a, 0x09, 0x9d, 0xc6, 0x49, 0x28, 0x84, 0xb7, 0x14, 0x21, 0xa1, 0x0e, 0x4d, 0x88, 0x10,
0xdd, 0x51, 0x44, 0xaf, 0x1d, 0xea, 0x9e, 0x4d, 0x67, 0x18, 0x7b, 0x4a, 0x2c, 0xe7, 0x38, 0x26,
0x7e, 0x14, 0xca, 0x2f, 0x97, 0x59, 0x7f, 0x37, 0xe0, 0xc6, 0x91, 0x4f, 0xa8, 0xcd, 0x37, 0x13,
0x1b, 0xff, 0x9a, 0x60, 0x42, 0xd1, 0x06, 0xb4, 0x02, 0x7f, 0xee, 0x53, 0x43, 0xdb, 0xd6, 0x46,
0xba, 0xcd, 0x27, 0x68, 0x13, 0xda, 0xd1, 0x6c, 0x46, 0x30, 0x35, 0x1a, 0xdb, 0xda, 0xa8, 0x67,
0x8b, 0x19, 0xfa, 0x06, 0x3a, 0x24, 0x8a, 0xe9, 0xf4, 0xf4, 0xc2, 0xd0, 0xb7, 0xb5, 0xd1, 0x60,
0xf7, 0xc3, 0x71, 0x19, 0x8c, 0xe3, 0xd4, 0xd3, 0x49, 0x14, 0xd3, 0x71, 0xfa, 0xf3, 0xf0, 0xc2,
0x6e, 0x13, 0xf6, 0x4d, 0xed, 0xce, 0xfc, 0x80, 0xe2, 0xd8, 0x68, 0x72, 0xbb, 0x7c, 0x86, 0x0e,
0x00, 0x98, 0xdd, 0x28, 0xf6, 0x70, 0x6c, 0xb4, 0x98, 0xe9, 0x51, 0x0d, 0xd3, 0x4f, 0x52, 0x7d,
0xbb, 0x47, 0xe4, 0x10, 0x7d, 0x0d, 0xeb, 0x1c, 0xb1, 0xa9, 0x1b, 0x79, 0x98, 0x18, 0xed, 0x6d,
0x7d, 0x34, 0xd8, 0xbd, 0xc5, 0x4d, 0x49, 0x76, 0x4e, 0x38, 0xa6, 0x93, 0xc8, 0xc3, 0x76, 0x9f,
0xab, 0xa7, 0x63, 0x82, 0x6e, 0x43, 0x2f, 0x74, 0xe6, 0x98, 0x2c, 0x1c, 0x17, 0x1b, 0x1d, 0x16,
0xe1, 0xe5, 0x82, 0x15, 0x42, 0x57, 0x3a, 0xb7, 0x1e, 0x42, 0x9b, 0x1f, 0x0d, 0xf5, 0xa1, 0xf3,
0xec, 0xf8, 0xfb, 0xe3, 0x27, 0x2f, 0x8e, 0x87, 0x6b, 0xa8, 0x0b, 0xcd, 0xe3, 0xbd, 0x1f, 0xf6,
0x87, 0x1a, 0xba, 0x0e, 0xd7, 0x8e, 0xf6, 0x4e, 0x9e, 0x4e, 0xed, 0xfd, 0xa3, 0xfd, 0xbd, 0x93,
0xfd, 0x47, 0xc3, 0x06, 0x1a, 0x00, 0x4c, 0x0e, 0xf7, 0xec, 0xa7, 0x53, 0xa6, 0xa2, 0x5b, 0xef,
0x41, 0x2f, 0x3b, 0x03, 0xea, 0x80, 0xbe, 0x77, 0x32, 0xe1, 0x26, 0x1e, 0xed, 0x9f, 0x4c, 0x86,
0x9a, 0xf5, 0xa7, 0x06, 0x1b, 0x2a, 0x65, 0x64, 0x11, 0x85, 0x04, 0xa7, 0x9c, 0xb9, 0x51, 0x12,
0x66, 0x9c, 0xb1, 0x09, 0x42, 0xd0, 0x0c, 0xf1, 0x1b, 0xc9, 0x18, 0x1b, 0xa7, 0x9a, 0x34, 0xa2,
0x4e, 0xc0, 0xd8, 0xd2, 0x6d, 0x3e, 0x41, 0x9f, 0x41, 0x57, 0x40, 0x41, 0x8c, 0xe6, 0xb6, 0x3e,
0xea, 0xef, 0xde, 0x54, 0x01, 0x12, 0x1e, 0xed, 0x4c, 0xcd, 0x3a, 0x80, 0xad, 0x03, 0x2c, 0x23,
0xe1, 0xf8, 0xc9, 0x1b, 0x94, 0xfa, 0x75, 0xe6, 0x98, 0x05, 0x93, 0xfa, 0x75, 0xe6, 0x18, 0x19,
0xd0, 0x11, 0xd7, 0x8f, 0x85, 0xd3, 0xb2, 0xe5, 0xd4, 0xa2, 0x60, 0x2c, 0x1b, 0x12, 0xe7, 0x2a,
0xb3, 0xf4, 0x11, 0x34, 0xd3, 0xc4, 0x61, 0x66, 0xfa, 0xbb, 0x48, 0x8d, 0xf3, 0x71, 0x38, 0x8b,
0x6c, 0x26, 0x57, 0xa9, 0xd3, 0x8b, 0xd4, 0x1d, 0xe6, 0xbd, 0x4e, 0xa2, 0x90, 0xe2, 0x90, 0x5e,
0x2d, 0xfe, 0x23, 0xb8, 0x55, 0x62, 0x49, 0x1c, 0x60, 0x07, 0x3a, 0x22, 0x34, 0x66, 0xad, 0x12,
0x57, 0xa9, 0x65, 0xfd, 0xae, 0xc3, 0xc6, 0xb3, 0x85, 0xe7, 0x50, 0x2c, 0x45, 0x2b, 0x82, 0xba,
0x0b, 0x2d, 0x56, 0x80, 0x04, 0x16, 0xd7, 0xb9, 0x6d, 0x5e, 0xa5, 0x26, 0xe9, 0xaf, 0xcd, 0xe5,
0xe8, 0x3e, 0xb4, 0xcf, 0x9d, 0x20, 0xc1, 0x84, 0x01, 0x91, 0xa1, 0x26, 0x34, 0x59, 0xf5, 0xb2,
0x85, 0x06, 0xda, 0x82, 0x8e, 0x17, 0x5f, 0xa4, 0xe5, 0x87, 0xa5, 0x64, 0xd7, 0x6e, 0x7b, 0xf1,
0x85, 0x9d, 0x84, 0xe8, 0x03, 0xb8, 0xe6, 0xf9, 0xc4, 0x39, 0x0d, 0xf0, 0xf4, 0x2c, 0x8a, 0x5e,
0x11, 0x96, 0x95, 0x5d, 0x7b, 0x5d, 0x2c, 0x1e, 0xa6, 0x6b, 0xc8, 0x4c, 0x6f, 0x92, 0x1b, 0x63,
0x87, 0x62, 0xa3, 0xcd, 0xe4, 0xd9, 0x3c, 0xc5, 0x90, 0xfa, 0x73, 0x1c, 0x25, 0x94, 0xa5, 0x92,
0x6e, 0xcb, 0x29, 0x7a, 0x1f, 0xd6, 0x63, 0x4c, 0x30, 0x9d, 0x8a, 0x28, 0xbb, 0x6c, 0x67, 0x9f,
0xad, 0x3d, 0xe7, 0x61, 0x21, 0x68, 0xbe, 0x76, 0x7c, 0x6a, 0xf4, 0x98, 0x88, 0x8d, 0xf9, 0xb6,
0x84, 0x60, 0xb9, 0x0d, 0xe4, 0xb6, 0x84, 0x60, 0xb1, 0x6d, 0x03, 0x5a, 0xb3, 0x28, 0x76, 0xb1,
0xd1, 0x67, 0x32, 0x3e, 0x41, 0xdb, 0xd0, 0xf7, 0x30, 0x71, 0x63, 0x7f, 0x41, 0x53, 0x46, 0xd7,
0x19, 0xa6, 0xf9, 0x25, 0xeb, 0x10, 0x6e, 0x16, 0x68, 0xb8, 0x2a, 0xa3, 0x7f, 0x34, 0x60, 0xd3,
0x8e, 0x82, 0xe0, 0xd4, 0x71, 0x5f, 0xd5, 0xe0, 0x34, 0x07, 0x7f, 0x63, 0x35, 0xfc, 0x7a, 0x09,
0xfc, 0xb9, 0x6b, 0xda, 0x54, 0xae, 0xa9, 0x42, 0x4c, 0xab, 0x9a, 0x98, 0xb6, 0x4a, 0x8c, 0x44,
0xbd, 0x93, 0x43, 0x3d, 0x83, 0xb4, 0xbb, 0x02, 0xd2, 0xde, 0x32, 0xa4, 0xdf, 0xc1, 0xd6, 0x12,
0x0e, 0x57, 0x05, 0xf5, 0xdf, 0x06, 0xdc, 0x7c, 0x1c, 0x12, 0xea, 0x04, 0x41, 0x01, 0xd3, 0x2c,
0x27, 0xb4, 0xda, 0x39, 0xd1, 0xf8, 0x3f, 0x39, 0xa1, 0x2b, 0xa4, 0x48, 0x06, 0x9b, 0x39, 0x06,
0x6b, 0xe5, 0x89, 0x52, 0x9d, 0xda, 0x85, 0xea, 0x84, 0xee, 0x00, 0xf0, 0x8b, 0xcd, 0x8c, 0x73,
0xf0, 0x7b, 0x6c, 0xe5, 0x58, 0x14, 0x23, 0xc9, 0x57, 0xb7, 0x9c, 0xaf, 0x7c, 0x96, 0x8c, 0x60,
0x28, 0xe3, 0x71, 0x63, 0x8f, 0xc5, 0x24, 0x32, 0x65, 0x20, 0xd6, 0x27, 0xb1, 0x97, 0x46, 0x55,
0xe4, 0xb0, 0xbf, 0xcc, 0xe1, 0x6f, 0x1a, 0x6c, 0x16, 0x71, 0xbf, 0x22, 0x87, 0xe8, 0x4b, 0x80,
0xcb, 0x86, 0x45, 0x90, 0xb0, 0xa5, 0xee, 0x79, 0x91, 0xca, 0xbf, 0xc5, 0xd8, 0xb3, 0x7b, 0xaf,
0xe5, 0xd0, 0xfa, 0x4b, 0x83, 0xad, 0x67, 0xa1, 0x5f, 0xca, 0x7e, 0x59, 0x46, 0x2d, 0xf1, 0xd1,
0x28, 0xe1, 0x63, 0x03, 0x5a, 0x8b, 0x24, 0x7e, 0x89, 0x05, 0xbf, 0x7c, 0x92, 0x07, 0xba, 0xa9,
0x02, 0x5d, 0x80, 0xaa, 0xb5, 0x0c, 0xd5, 0x14, 0x8c, 0xe5, 0x28, 0xaf, 0x8a, 0x15, 0xca, 0x3d,
0x7a, 0x3d, 0xfe, 0xc0, 0x59, 0x37, 0xe0, 0xfa, 0x01, 0xa6, 0xcf, 0x79, 0x7e, 0x0b, 0x00, 0xac,
0x7d, 0x40, 0xf9, 0xc5, 0x4b, 0x7f, 0x62, 0x49, 0xf5, 0x27, 0x3b, 0x42, 0xa9, 0x2f, 0xb5, 0xac,
0xaf, 0x98, 0xed, 0x43, 0x9f, 0xd0, 0x28, 0xbe, 0x58, 0x05, 0xee, 0x10, 0xf4, 0xb9, 0xf3, 0x46,
0xbc, 0x89, 0xe9, 0xd0, 0x3a, 0x60, 0x11, 0x64, 0x5b, 0x45, 0x04, 0xf9, 0x0e, 0x43, 0xab, 0xd7,
0x61, 0xfc, 0x04, 0xe8, 0x29, 0xce, 0x9a, 0x9d, 0xb7, 0x3c, 0xce, 0x92, 0xa6, 0x86, 0x4a, 0x93,
0x01, 0x1d, 0x37, 0xc0, 0x4e, 0x98, 0x2c, 0x04, 0xb1, 0x72, 0x6a, 0xfd, 0x0c, 0x37, 0x14, 0xeb,
0x22, 0xce, 0xf4, 0x3c, 0xe4, 0xa5, 0xb0, 0x9e, 0x0e, 0xd1, 0x17, 0xd0, 0xe6, 0x1d, 0x21, 0xb3,
0x3d, 0xd8, 0xbd, 0xad, 0xc6, 0xcd, 0x8c, 0x24, 0xa1, 0x68, 0x21, 0x6d, 0xa1, 0xbb, 0xfb, 0x4f,
0x17, 0x06, 0xb2, 0xa7, 0xe1, 0xfd, 0x2a, 0xf2, 0x61, 0x3d, 0xdf, 0xbc, 0xa1, 0x7b, 0xd5, 0xed,
0x6c, 0xa1, 0x27, 0x37, 0xef, 0xd7, 0x51, 0xe5, 0x27, 0xb0, 0xd6, 0x3e, 0xd5, 0x10, 0x81, 0x61,
0xb1, 0xa7, 0x42, 0x0f, 0xca, 0x6d, 0x54, 0x34, 0x71, 0xe6, 0xb8, 0xae, 0xba, 0x74, 0x8b, 0xce,
0xd9, 0x9d, 0x51, 0x1b, 0x21, 0xf4, 0x56, 0x33, 0x6a, 0xef, 0x65, 0xee, 0xd4, 0xd6, 0xcf, 0xfc,
0xfe, 0x02, 0xd7, 0x94, 0xa7, 0x1a, 0x55, 0xa0, 0x55, 0xd6, 0x56, 0x99, 0x1f, 0xd7, 0xd2, 0xcd,
0x7c, 0x45, 0x30, 0x50, 0xcb, 0x1f, 0xaa, 0x30, 0x50, 0xfa, 0x38, 0x99, 0x9f, 0xd4, 0x53, 0x56,
0x99, 0x2c, 0x56, 0x91, 0x2a, 0x26, 0x2b, 0x6a, 0x62, 0x15, 0x93, 0x55, 0xc5, 0xc9, 0x5a, 0x43,
0x0e, 0xc0, 0x65, 0x11, 0x41, 0x77, 0x2b, 0x29, 0x51, 0x6b, 0x8f, 0x39, 0x7a, 0xbb, 0x62, 0xe6,
0x62, 0x01, 0xef, 0x14, 0x9a, 0x01, 0x54, 0x01, 0x4e, 0x79, 0xef, 0x64, 0x3e, 0xa8, 0xa9, 0x5d,
0x38, 0x94, 0xa8, 0x4b, 0x2b, 0x0e, 0xa5, 0x16, 0xbd, 0x15, 0x87, 0x2a, 0x94, 0x38, 0x6b, 0x0d,
0xf9, 0x30, 0xb0, 0x93, 0x50, 0xb8, 0x4e, 0x0b, 0x03, 0xaa, 0xd8, 0xbd, 0x5c, 0xd7, 0xcc, 0x7b,
0x35, 0x34, 0x2f, 0xef, 0xc5, 0x43, 0xf8, 0xb1, 0x2b, 0x55, 0x4f, 0xdb, 0xec, 0x0f, 0xfd, 0xe7,
0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x6e, 0xfd, 0x45, 0xdd, 0x10, 0x00, 0x00,
// 1316 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x6d, 0x6f, 0xdc, 0xc4,
0x13, 0x8f, 0xcf, 0xf7, 0x38, 0x97, 0xde, 0xff, 0xba, 0x4d, 0x13, 0xd7, 0xff, 0x16, 0x05, 0x23,
0xe8, 0xb5, 0xd0, 0x0b, 0x04, 0x84, 0x84, 0x84, 0x90, 0xd2, 0xeb, 0x91, 0x14, 0x42, 0x2a, 0xf9,
0xfa, 0x20, 0x21, 0xd0, 0xc9, 0xb1, 0xf7, 0x1a, 0xab, 0x3e, 0xfb, 0xf0, 0xae, 0xd3, 0xe6, 0x1d,
0xbc, 0x00, 0x89, 0xef, 0xc1, 0x07, 0xe1, 0x9b, 0xf0, 0x29, 0x78, 0x8f, 0xbc, 0x0f, 0x17, 0xaf,
0xcf, 0xbe, 0x9a, 0xbc, 0xe0, 0xcd, 0x79, 0x77, 0x67, 0x76, 0x66, 0xf6, 0xf7, 0xdb, 0x99, 0x1d,
0x1d, 0x98, 0x67, 0xce, 0xc2, 0xdf, 0x23, 0x38, 0x3e, 0xf7, 0x5d, 0x4c, 0xf6, 0xa8, 0x1f, 0x04,
0x38, 0x1e, 0x2e, 0xe2, 0x88, 0x46, 0x68, 0x2b, 0x95, 0x0d, 0xa5, 0x6c, 0xc8, 0x65, 0xe6, 0x36,
0xdb, 0xe1, 0x9e, 0x39, 0x31, 0xe5, 0xbf, 0x5c, 0xdb, 0xdc, 0xc9, 0xae, 0x47, 0xe1, 0xcc, 0x7f,
0x29, 0x04, 0xdc, 0x45, 0x8c, 0x03, 0xec, 0x10, 0x2c, 0xbf, 0xca, 0x26, 0x29, 0xf3, 0xc3, 0x59,
0x24, 0x04, 0xff, 0x57, 0x04, 0x14, 0x13, 0x3a, 0x8d, 0x93, 0x50, 0x08, 0x6f, 0x29, 0x42, 0x42,
0x1d, 0x9a, 0x10, 0x21, 0xba, 0xa3, 0x88, 0x5e, 0x3b, 0xd4, 0x3d, 0x9b, 0xce, 0x30, 0xf6, 0x94,
0x58, 0xce, 0x71, 0x4c, 0xfc, 0x28, 0x94, 0x5f, 0x2e, 0xb3, 0xfe, 0xac, 0xc1, 0x8d, 0x63, 0x9f,
0x50, 0x9b, 0x6f, 0x26, 0x36, 0xfe, 0x29, 0xc1, 0x84, 0xa2, 0x2d, 0x68, 0x04, 0xfe, 0xdc, 0xa7,
0x86, 0xb6, 0xab, 0x0d, 0x74, 0x9b, 0x4f, 0xd0, 0x36, 0x34, 0xa3, 0xd9, 0x8c, 0x60, 0x6a, 0xd4,
0x76, 0xb5, 0x41, 0xc7, 0x16, 0x33, 0xf4, 0x15, 0xb4, 0x48, 0x14, 0xd3, 0xe9, 0xe9, 0x85, 0xa1,
0xef, 0x6a, 0x83, 0xde, 0xfe, 0xfb, 0xc3, 0x22, 0x18, 0x87, 0xa9, 0xa7, 0x49, 0x14, 0xd3, 0x61,
0xfa, 0xf3, 0xf0, 0xc2, 0x6e, 0x12, 0xf6, 0x4d, 0xed, 0xce, 0xfc, 0x80, 0xe2, 0xd8, 0xa8, 0x73,
0xbb, 0x7c, 0x86, 0x0e, 0x01, 0x98, 0xdd, 0x28, 0xf6, 0x70, 0x6c, 0x34, 0x98, 0xe9, 0x41, 0x05,
0xd3, 0x4f, 0x52, 0x7d, 0xbb, 0x43, 0xe4, 0x10, 0x7d, 0x09, 0x9b, 0x1c, 0xb1, 0xa9, 0x1b, 0x79,
0x98, 0x18, 0xcd, 0x5d, 0x7d, 0xd0, 0xdb, 0xbf, 0xc5, 0x4d, 0x49, 0x76, 0x26, 0x1c, 0xd3, 0x51,
0xe4, 0x61, 0xbb, 0xcb, 0xd5, 0xd3, 0x31, 0x41, 0xb7, 0xa1, 0x13, 0x3a, 0x73, 0x4c, 0x16, 0x8e,
0x8b, 0x8d, 0x16, 0x8b, 0xf0, 0x72, 0xc1, 0x0a, 0xa1, 0x2d, 0x9d, 0x5b, 0x0f, 0xa1, 0xc9, 0x8f,
0x86, 0xba, 0xd0, 0x7a, 0x76, 0xf2, 0xed, 0xc9, 0x93, 0x17, 0x27, 0xfd, 0x0d, 0xd4, 0x86, 0xfa,
0xc9, 0xc1, 0x77, 0xe3, 0xbe, 0x86, 0xae, 0xc3, 0xb5, 0xe3, 0x83, 0xc9, 0xd3, 0xa9, 0x3d, 0x3e,
0x1e, 0x1f, 0x4c, 0xc6, 0x8f, 0xfa, 0x35, 0xd4, 0x03, 0x18, 0x1d, 0x1d, 0xd8, 0x4f, 0xa7, 0x4c,
0x45, 0xb7, 0xde, 0x81, 0xce, 0xf2, 0x0c, 0xa8, 0x05, 0xfa, 0xc1, 0x64, 0xc4, 0x4d, 0x3c, 0x1a,
0x4f, 0x46, 0x7d, 0xcd, 0xfa, 0x5d, 0x83, 0x2d, 0x95, 0x32, 0xb2, 0x88, 0x42, 0x82, 0x53, 0xce,
0xdc, 0x28, 0x09, 0x97, 0x9c, 0xb1, 0x09, 0x42, 0x50, 0x0f, 0xf1, 0x1b, 0xc9, 0x18, 0x1b, 0xa7,
0x9a, 0x34, 0xa2, 0x4e, 0xc0, 0xd8, 0xd2, 0x6d, 0x3e, 0x41, 0x9f, 0x40, 0x5b, 0x40, 0x41, 0x8c,
0xfa, 0xae, 0x3e, 0xe8, 0xee, 0xdf, 0x54, 0x01, 0x12, 0x1e, 0xed, 0xa5, 0x9a, 0x75, 0x08, 0x3b,
0x87, 0x58, 0x46, 0xc2, 0xf1, 0x93, 0x37, 0x28, 0xf5, 0xeb, 0xcc, 0x31, 0x0b, 0x26, 0xf5, 0xeb,
0xcc, 0x31, 0x32, 0xa0, 0x25, 0xae, 0x1f, 0x0b, 0xa7, 0x61, 0xcb, 0xa9, 0x45, 0xc1, 0x58, 0x35,
0x24, 0xce, 0x55, 0x64, 0xe9, 0x03, 0xa8, 0xa7, 0x89, 0xc3, 0xcc, 0x74, 0xf7, 0x91, 0x1a, 0xe7,
0xe3, 0x70, 0x16, 0xd9, 0x4c, 0xae, 0x52, 0xa7, 0xe7, 0xa9, 0x3b, 0xca, 0x7a, 0x1d, 0x45, 0x21,
0xc5, 0x21, 0xbd, 0x5a, 0xfc, 0xc7, 0x70, 0xab, 0xc0, 0x92, 0x38, 0xc0, 0x1e, 0xb4, 0x44, 0x68,
0xcc, 0x5a, 0x29, 0xae, 0x52, 0xcb, 0xfa, 0x55, 0x87, 0xad, 0x67, 0x0b, 0xcf, 0xa1, 0x58, 0x8a,
0xd6, 0x04, 0x75, 0x17, 0x1a, 0xac, 0x00, 0x09, 0x2c, 0xae, 0x73, 0xdb, 0xbc, 0x4a, 0x8d, 0xd2,
0x5f, 0x9b, 0xcb, 0xd1, 0x7d, 0x68, 0x9e, 0x3b, 0x41, 0x82, 0x09, 0x03, 0x62, 0x89, 0x9a, 0xd0,
0x64, 0xd5, 0xcb, 0x16, 0x1a, 0x68, 0x07, 0x5a, 0x5e, 0x7c, 0x91, 0x96, 0x1f, 0x96, 0x92, 0x6d,
0xbb, 0xe9, 0xc5, 0x17, 0x76, 0x12, 0xa2, 0xf7, 0xe0, 0x9a, 0xe7, 0x13, 0xe7, 0x34, 0xc0, 0xd3,
0xb3, 0x28, 0x7a, 0x45, 0x58, 0x56, 0xb6, 0xed, 0x4d, 0xb1, 0x78, 0x94, 0xae, 0x21, 0x33, 0xbd,
0x49, 0x6e, 0x8c, 0x1d, 0x8a, 0x8d, 0x26, 0x93, 0x2f, 0xe7, 0x29, 0x86, 0xd4, 0x9f, 0xe3, 0x28,
0xa1, 0x2c, 0x95, 0x74, 0x5b, 0x4e, 0xd1, 0xbb, 0xb0, 0x19, 0x63, 0x82, 0xe9, 0x54, 0x44, 0xd9,
0x66, 0x3b, 0xbb, 0x6c, 0xed, 0x39, 0x0f, 0x0b, 0x41, 0xfd, 0xb5, 0xe3, 0x53, 0xa3, 0xc3, 0x44,
0x6c, 0xcc, 0xb7, 0x25, 0x04, 0xcb, 0x6d, 0x20, 0xb7, 0x25, 0x04, 0x8b, 0x6d, 0x5b, 0xd0, 0x98,
0x45, 0xb1, 0x8b, 0x8d, 0x2e, 0x93, 0xf1, 0x09, 0xda, 0x85, 0xae, 0x87, 0x89, 0x1b, 0xfb, 0x0b,
0x9a, 0x32, 0xba, 0xc9, 0x30, 0xcd, 0x2e, 0x59, 0x3f, 0x6b, 0x70, 0x33, 0xc7, 0xc3, 0x15, 0x29,
0x45, 0x9f, 0x03, 0x5c, 0x16, 0x66, 0x41, 0xd5, 0x8e, 0xba, 0xe7, 0x45, 0x2a, 0xff, 0x1a, 0x63,
0xcf, 0xee, 0xbc, 0x96, 0x43, 0xeb, 0xb7, 0x1a, 0x6c, 0xdb, 0x51, 0x10, 0x9c, 0x3a, 0xee, 0xab,
0x0a, 0x97, 0x21, 0xc3, 0x5b, 0x6d, 0x3d, 0x6f, 0x7a, 0x01, 0x6f, 0x99, 0xfb, 0x5d, 0x57, 0xee,
0xb7, 0xc2, 0x68, 0xa3, 0x9c, 0xd1, 0xa6, 0xca, 0xa8, 0xa4, 0xab, 0x95, 0xa1, 0x6b, 0xc9, 0x45,
0x7b, 0x0d, 0x17, 0x9d, 0x55, 0x2e, 0xbe, 0x81, 0x9d, 0x15, 0x1c, 0xae, 0x9a, 0x5f, 0x7f, 0xd7,
0xe0, 0xe6, 0xe3, 0x90, 0x50, 0x27, 0x08, 0x72, 0x98, 0x2e, 0x93, 0x49, 0xab, 0x9c, 0x4c, 0xb5,
0x7f, 0x93, 0x4c, 0xba, 0x42, 0x8a, 0x64, 0xb0, 0x9e, 0x61, 0xb0, 0x52, 0x82, 0x29, 0x65, 0xad,
0x99, 0x2b, 0x6b, 0xe8, 0x0e, 0x00, 0xcf, 0x08, 0x66, 0x9c, 0x83, 0xdf, 0x61, 0x2b, 0x27, 0xa2,
0x8a, 0x49, 0xbe, 0xda, 0xc5, 0x7c, 0x65, 0xd3, 0x6b, 0x00, 0x7d, 0x19, 0x8f, 0x1b, 0x7b, 0x2c,
0x26, 0x91, 0x62, 0x3d, 0xb1, 0x3e, 0x8a, 0xbd, 0x34, 0xaa, 0x3c, 0x87, 0xdd, 0x55, 0x0e, 0x7f,
0xd1, 0x60, 0x3b, 0x8f, 0xfb, 0x7f, 0x9d, 0x50, 0x7f, 0x68, 0xb0, 0xf3, 0x2c, 0xf4, 0x0b, 0xd9,
0x2f, 0xca, 0xa8, 0x15, 0x3e, 0x6a, 0x05, 0x7c, 0x6c, 0x41, 0x63, 0x91, 0xc4, 0x2f, 0xb1, 0xe0,
0x97, 0x4f, 0xb2, 0x40, 0xd7, 0x55, 0xa0, 0x73, 0x50, 0x35, 0x56, 0xa1, 0x9a, 0x82, 0xb1, 0x1a,
0xe5, 0x55, 0xb1, 0x42, 0x99, 0xd7, 0xb2, 0xc3, 0x5f, 0x46, 0xeb, 0x06, 0x5c, 0x3f, 0xc4, 0xf4,
0x39, 0xcf, 0x6f, 0x01, 0x80, 0x35, 0x06, 0x94, 0x5d, 0xbc, 0xf4, 0x27, 0x96, 0x54, 0x7f, 0xb2,
0x95, 0x94, 0xfa, 0x52, 0xcb, 0xfa, 0x82, 0xd9, 0x3e, 0xf2, 0x09, 0x8d, 0xe2, 0x8b, 0x75, 0xe0,
0xf6, 0x41, 0x9f, 0x3b, 0x6f, 0xc4, 0x63, 0x9a, 0x0e, 0xad, 0x43, 0x16, 0xc1, 0x72, 0xab, 0x88,
0x20, 0xdb, 0x9a, 0x68, 0xd5, 0x5a, 0x93, 0x1f, 0x00, 0x3d, 0xc5, 0xcb, 0x2e, 0xe9, 0x2d, 0xaf,
0xba, 0xa4, 0xa9, 0xa6, 0xd2, 0x64, 0x40, 0xcb, 0x0d, 0xb0, 0x13, 0x26, 0x0b, 0x41, 0xac, 0x9c,
0x5a, 0x3f, 0xc2, 0x0d, 0xc5, 0xba, 0x88, 0x33, 0x3d, 0x0f, 0x79, 0x29, 0xac, 0xa7, 0x43, 0xf4,
0x19, 0x34, 0x79, 0x2b, 0xc9, 0x6c, 0xf7, 0xf6, 0x6f, 0xab, 0x71, 0x33, 0x23, 0x49, 0x28, 0x7a,
0x4f, 0x5b, 0xe8, 0xee, 0xff, 0xd5, 0x86, 0x9e, 0x6c, 0x86, 0x78, 0xa3, 0x8b, 0x7c, 0xd8, 0xcc,
0x76, 0x7d, 0xe8, 0x5e, 0x79, 0x1f, 0x9c, 0x6b, 0xe6, 0xcd, 0xfb, 0x55, 0x54, 0xf9, 0x09, 0xac,
0x8d, 0x8f, 0x35, 0x44, 0xa0, 0x9f, 0x6f, 0xc6, 0xd0, 0x83, 0x62, 0x1b, 0x25, 0xdd, 0x9f, 0x39,
0xac, 0xaa, 0x2e, 0xdd, 0xa2, 0x73, 0x76, 0x67, 0xd4, 0x0e, 0x0a, 0xbd, 0xd5, 0x8c, 0xda, 0xb4,
0x99, 0x7b, 0x95, 0xf5, 0x97, 0x7e, 0x03, 0xb8, 0xa6, 0x3c, 0xf1, 0xa8, 0x04, 0xad, 0xa2, 0x7e,
0xcc, 0xfc, 0xb0, 0x92, 0x6e, 0x06, 0xda, 0x08, 0x7a, 0x6a, 0x01, 0x44, 0x25, 0x26, 0x0a, 0x9f,
0x27, 0xf3, 0xa3, 0x6a, 0xca, 0x2a, 0x97, 0xf9, 0x3a, 0x52, 0xc6, 0x65, 0x49, 0x55, 0x2c, 0xe3,
0xb2, 0xac, 0x3c, 0x59, 0x1b, 0xc8, 0x01, 0xb8, 0x2c, 0x23, 0xe8, 0x6e, 0x29, 0x29, 0x6a, 0xf5,
0x31, 0x07, 0x6f, 0x57, 0x5c, 0xba, 0x58, 0xc0, 0xff, 0x72, 0xed, 0x00, 0x2a, 0x01, 0xa7, 0xb8,
0x7b, 0x32, 0x1f, 0x54, 0xd4, 0xce, 0x1d, 0x4a, 0x54, 0xa6, 0x35, 0x87, 0x52, 0xcb, 0xde, 0x9a,
0x43, 0xe5, 0x8a, 0x9c, 0xb5, 0x81, 0x7c, 0xe8, 0xd9, 0x49, 0x28, 0x5c, 0xa7, 0xa5, 0x01, 0x95,
0xec, 0x5e, 0xad, 0x6c, 0xe6, 0xbd, 0x0a, 0x9a, 0x97, 0xf7, 0xe2, 0x21, 0x7c, 0xdf, 0x96, 0xaa,
0xa7, 0x4d, 0xf6, 0x5f, 0xc0, 0xa7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x29, 0x74, 0x9d, 0x48,
0x18, 0x11, 0x00, 0x00,
}

@ -20,52 +20,60 @@ import (
"fmt"
"strings"
ctx "golang.org/x/net/context"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/hooks"
"k8s.io/helm/pkg/kube"
"k8s.io/helm/pkg/proto/hapi/release"
"k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/timeconv"
)
// UpdateRelease takes an existing release and new information, and upgrades the release.
func (s *ReleaseServer) UpdateRelease(c ctx.Context, req *services.UpdateReleaseRequest) (*services.UpdateReleaseResponse, error) {
func (s *ReleaseServer) UpdateRelease(req *services.UpdateReleaseRequest, stream services.ReleaseService_UpdateReleaseServer) error {
if err := validateReleaseName(req.Name); err != nil {
s.Log("updateRelease: Release name is invalid: %s", req.Name)
return nil, err
return err
}
s.Log("preparing update for %s", req.Name)
currentRelease, updatedRelease, err := s.prepareUpdate(req)
if err != nil {
if req.Force {
if !req.Force {
return err
}
// Use the --force, Luke.
return s.performUpdateForce(req)
res, err := s.performUpdateForce(req, stream)
if err != nil {
s.Log("failed force update perform step: %s", err)
}
if sendErr := stream.Send(res); sendErr != nil {
return sendErr
}
return nil, err
}
if !req.DryRun {
s.Log("creating updated release for %s", req.Name)
if err := s.env.Releases.Create(updatedRelease); err != nil {
return nil, err
return err
}
}
s.Log("performing update for %s", req.Name)
res, err := s.performUpdate(currentRelease, updatedRelease, req)
res, err := s.performUpdate(currentRelease, updatedRelease, req, stream)
if err != nil {
return res, err
s.Log("failed update perform step: %s", err)
}
if sendErr := stream.Send(res); sendErr != nil {
return sendErr
}
if !req.DryRun {
s.Log("updating status for updated release for %s", req.Name)
if err := s.env.Releases.Update(updatedRelease); err != nil {
return res, err
return err
}
}
return res, nil
return err
}
// prepareUpdate builds an updated release for an update operation.
@ -143,7 +151,7 @@ func (s *ReleaseServer) prepareUpdate(req *services.UpdateReleaseRequest) (*rele
}
// performUpdateForce performs the same action as a `helm delete && helm install --replace`.
func (s *ReleaseServer) performUpdateForce(req *services.UpdateReleaseRequest) (*services.UpdateReleaseResponse, error) {
func (s *ReleaseServer) performUpdateForce(req *services.UpdateReleaseRequest, stream services.ReleaseService_UpdateReleaseServer) (*services.UpdateReleaseResponse, error) {
// find the last release with the given name
oldRelease, err := s.env.Releases.Last(req.Name)
if err != nil {
@ -262,9 +270,47 @@ func (s *ReleaseServer) performUpdateForce(req *services.UpdateReleaseRequest) (
return res, nil
}
func (s *ReleaseServer) performUpdate(originalRelease, updatedRelease *release.Release, req *services.UpdateReleaseRequest) (*services.UpdateReleaseResponse, error) {
func (s *ReleaseServer) performUpdate(originalRelease, updatedRelease *release.Release, req *services.UpdateReleaseRequest, stream services.ReleaseService_UpdateReleaseServer) (*services.UpdateReleaseResponse, error) {
res := &services.UpdateReleaseResponse{Release: updatedRelease}
watchFeed := &kube.WatchFeedProto{
WriteJobLogChunkFunc: func(chunk kube.JobLogChunk) error {
chunkResp := &services.UpdateReleaseResponse{
WatchFeed: &release.WatchFeed{
JobLogChunk: &release.JobLogChunk{
JobName: chunk.JobName,
PodName: chunk.PodName,
ContainerName: chunk.ContainerName,
LogLines: make([]*release.LogLine, 0),
},
},
}
for _, line := range chunk.LogLines {
ll := &release.LogLine{
Timestamp: line.Timestamp,
Data: line.Data,
}
chunkResp.WatchFeed.JobLogChunk.LogLines = append(chunkResp.WatchFeed.JobLogChunk.LogLines, ll)
}
return stream.Send(chunkResp)
},
WriteJobPodErrorFunc: func(obj kube.JobPodError) error {
chunkResp := &services.UpdateReleaseResponse{
WatchFeed: &release.WatchFeed{
JobPodError: &release.JobPodError{
JobName: obj.JobName,
PodName: obj.PodName,
ContainerName: obj.ContainerName,
Message: obj.Message,
},
},
}
return stream.Send(chunkResp)
},
}
if req.DryRun {
s.Log("dry run for %s", updatedRelease.Name)
res.Release.Info.Description = "Dry run complete"
@ -273,7 +319,7 @@ func (s *ReleaseServer) performUpdate(originalRelease, updatedRelease *release.R
// pre-upgrade hooks
if !req.DisableHooks {
if err := s.execHook(updatedRelease.Hooks, updatedRelease.Name, updatedRelease.Namespace, hooks.PreUpgrade, req.Timeout); err != nil {
if err := s.execHookWithWatchFeed(updatedRelease.Hooks, updatedRelease.Name, updatedRelease.Namespace, hooks.PreUpgrade, req.Timeout, watchFeed); err != nil {
return res, err
}
} else {
@ -291,7 +337,7 @@ func (s *ReleaseServer) performUpdate(originalRelease, updatedRelease *release.R
// post-upgrade hooks
if !req.DisableHooks {
if err := s.execHook(updatedRelease.Hooks, updatedRelease.Name, updatedRelease.Namespace, hooks.PostUpgrade, req.Timeout); err != nil {
if err := s.execHookWithWatchFeed(updatedRelease.Hooks, updatedRelease.Name, updatedRelease.Namespace, hooks.PostUpgrade, req.Timeout, watchFeed); err != nil {
return res, err
}
}

Loading…
Cancel
Save