cleaned up api a bit

pull/2342/head
John Welsh 9 years ago
parent f70b1db6f9
commit 8602ba648f

@ -21,30 +21,36 @@ import "google/protobuf/timestamp.proto";
option go_package = "release"; option go_package = "release";
// Allows filtering by log event source
enum LogSource {
HOOK = 0;
TEST = 1;
POD = 2;
SYSTEM = 3;
}
// Syslog log levels
enum LogLevel {
EMERG = 0;
ALERT = 1;
CRIT = 2;
ERR = 3;
WARNING = 4;
NOTICE = 5;
INFO = 6;
DEBUG = 7;
}
message LogSubscription {
string release = 1;
LogLevel level = 2;
repeated LogSource sources = 3;
}
message Log { message Log {
// Allows filtering by log event source string release = 1;
enum Source { LogLevel level = 2;
HOOK = 0; LogSource source = 3;
TEST = 1;
POD = 2;
SYSTEM = 3;
}
// Syslog log levels
enum Level {
EMERG = 0;
ALERT = 1;
CRIT = 2;
ERR = 3;
WARNING = 4;
NOTICE = 5;
INFO = 6;
DEBUG = 7;
}
Source source = 1;
Level level = 2;
string release = 3;
string log = 4; string log = 4;
google.protobuf.Timestamp timestamp = 5; google.protobuf.Timestamp timestamp = 5;
} }

@ -57,7 +57,7 @@ service ReleaseService {
} }
// GetReleaseLogs returns a stream of logging information from the release // GetReleaseLogs returns a stream of logging information from the release
rpc GetReleaseLogs(GetReleaseLogsRequest) returns (stream GetReleaseLogsResponse) { rpc GetReleaseLogs(stream GetReleaseLogsRequest) returns (stream GetReleaseLogsResponse) {
} }
// UpdateRelease updates release content. // UpdateRelease updates release content.
@ -188,10 +188,7 @@ message GetReleaseContentResponse {
} }
message GetReleaseLogsRequest { message GetReleaseLogsRequest {
// Name is the name of the release hapi.release.LogSubscription subscription = 1;
string name = 1;
// Version is the version of the release
int32 version = 2;
} }
message GetReleaseLogsResponse { message GetReleaseLogsResponse {

@ -177,22 +177,22 @@ func newInstallCmd(c helm.Interface, out io.Writer) *cobra.Command {
return cmd return cmd
} }
func streamLogs(client helm.Interface, rlsName string, done <-chan struct{}) error { //func streamLogs(client helm.Interface, rlsName string, done <-chan struct{}) error {
logs, err := client.ReleaseLogs(rlsName, done) // logs, err := client.ReleaseLogs(rlsName, done)
if err != nil { // if err != nil {
return err // return err
} // }
//
go func() { // go func() {
select { // select {
case log := <-logs: // case log := <-logs:
fmt.Println(log.Log) // fmt.Println(log.Log)
case <-done: // case <-done:
return // return
} // }
}() // }()
return nil // return nil
} //}
func (i *installCmd) run() error { func (i *installCmd) run() error {
debug("CHART PATH: %s\n", i.chartPath) debug("CHART PATH: %s\n", i.chartPath)
@ -226,8 +226,8 @@ func (i *installCmd) run() error {
checkDependencies(chartRequested, req, i.out) checkDependencies(chartRequested, req, i.out)
} }
done := make(chan struct{}) //done := make(chan struct{})
streamLogs(i.client, i.name, done) //streamLogs(i.client, i.name, done)
res, err := i.client.InstallReleaseFromChart( res, err := i.client.InstallReleaseFromChart(
chartRequested, chartRequested,
i.namespace, i.namespace,

@ -22,6 +22,7 @@ import (
"k8s.io/helm/pkg/helm" "k8s.io/helm/pkg/helm"
"fmt" "fmt"
"k8s.io/helm/pkg/proto/hapi/release"
) )
var logsHelp = ` var logsHelp = `
@ -63,7 +64,7 @@ func newLogsCmd(client helm.Interface, out io.Writer) *cobra.Command {
func (l *logsCmd) run() error { func (l *logsCmd) run() error {
done := make(chan struct{}) done := make(chan struct{})
stream, err := l.client.ReleaseLogs(l.release, done) stream, err := l.client.ReleaseLogs(l.release, release.LogLevel_DEBUG, done, release.LogSource_SYSTEM, release.LogSource_POD)
fmt.Println("Listening for logs") fmt.Println("Listening for logs")
for { for {
@ -77,6 +78,7 @@ func (l *logsCmd) run() error {
} }
if err != nil { if err != nil {
done <- struct{}{}
return prettyError(err) return prettyError(err)
} }

@ -28,6 +28,7 @@ import (
"k8s.io/helm/pkg/proto/hapi/chart" "k8s.io/helm/pkg/proto/hapi/chart"
rls "k8s.io/helm/pkg/proto/hapi/services" rls "k8s.io/helm/pkg/proto/hapi/services"
"fmt" "fmt"
"k8s.io/helm/pkg/proto/hapi/release"
) )
// Client manages client side of the helm-tiller protocol // Client manages client side of the helm-tiller protocol
@ -217,9 +218,10 @@ func (h *Client) RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.R
} }
// ReleaseLogs returns a channel streaming log data from the release // ReleaseLogs returns a channel streaming log data from the release
func (h *Client) ReleaseLogs(rlsName string, done <-chan struct{}) (<-chan *rls.GetReleaseLogsResponse, error) { func (h *Client) ReleaseLogs(rlsName string, level release.LogLevel, done <-chan struct{}, sources ...release.LogSource) (<-chan *rls.GetReleaseLogsResponse, error) {
ctx := NewContext() ctx := NewContext()
req := &rls.GetReleaseLogsRequest{Name: rlsName} sub := &release.LogSubscription{Release: rlsName, Level: level, Sources: sources}
req := &rls.GetReleaseLogsRequest{Subscription: sub}
return h.logs(ctx, req, done) return h.logs(ctx, req, done)
} }

@ -19,6 +19,7 @@ package helm
import ( import (
"k8s.io/helm/pkg/proto/hapi/chart" "k8s.io/helm/pkg/proto/hapi/chart"
rls "k8s.io/helm/pkg/proto/hapi/services" rls "k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/proto/hapi/release"
) )
// Interface for helm client for mocking in tests // Interface for helm client for mocking in tests
@ -28,7 +29,7 @@ type Interface interface {
InstallReleaseFromChart(chart *chart.Chart, namespace string, opts ...InstallOption) (*rls.InstallReleaseResponse, error) InstallReleaseFromChart(chart *chart.Chart, namespace string, opts ...InstallOption) (*rls.InstallReleaseResponse, error)
DeleteRelease(rlsName string, opts ...DeleteOption) (*rls.UninstallReleaseResponse, error) DeleteRelease(rlsName string, opts ...DeleteOption) (*rls.UninstallReleaseResponse, error)
ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error) ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error)
ReleaseLogs(rlsName string, done <-chan struct{}) (<-chan *rls.GetReleaseLogsResponse, error) ReleaseLogs(rlsName string, level release.LogLevel, done <-chan struct{}, sources ...release.LogSource) (<-chan *rls.GetReleaseLogsResponse, error)
UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error) UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error)
UpdateReleaseFromChart(rlsName string, chart *chart.Chart, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error) UpdateReleaseFromChart(rlsName string, chart *chart.Chart, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error)
RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error) RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error)

@ -17,6 +17,7 @@ It is generated from these files:
It has these top-level messages: It has these top-level messages:
Hook Hook
Info Info
LogSubscription
Log Log
Release Release
Status Status

@ -15,48 +15,48 @@ var _ = fmt.Errorf
var _ = math.Inf var _ = math.Inf
// Allows filtering by log event source // Allows filtering by log event source
type Log_Source int32 type LogSource int32
const ( const (
Log_HOOK Log_Source = 0 LogSource_HOOK LogSource = 0
Log_TEST Log_Source = 1 LogSource_TEST LogSource = 1
Log_POD Log_Source = 2 LogSource_POD LogSource = 2
Log_SYSTEM Log_Source = 3 LogSource_SYSTEM LogSource = 3
) )
var Log_Source_name = map[int32]string{ var LogSource_name = map[int32]string{
0: "HOOK", 0: "HOOK",
1: "TEST", 1: "TEST",
2: "POD", 2: "POD",
3: "SYSTEM", 3: "SYSTEM",
} }
var Log_Source_value = map[string]int32{ var LogSource_value = map[string]int32{
"HOOK": 0, "HOOK": 0,
"TEST": 1, "TEST": 1,
"POD": 2, "POD": 2,
"SYSTEM": 3, "SYSTEM": 3,
} }
func (x Log_Source) String() string { func (x LogSource) String() string {
return proto.EnumName(Log_Source_name, int32(x)) return proto.EnumName(LogSource_name, int32(x))
} }
func (Log_Source) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } func (LogSource) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
// Syslog log levels // Syslog log levels
type Log_Level int32 type LogLevel int32
const ( const (
Log_EMERG Log_Level = 0 LogLevel_EMERG LogLevel = 0
Log_ALERT Log_Level = 1 LogLevel_ALERT LogLevel = 1
Log_CRIT Log_Level = 2 LogLevel_CRIT LogLevel = 2
Log_ERR Log_Level = 3 LogLevel_ERR LogLevel = 3
Log_WARNING Log_Level = 4 LogLevel_WARNING LogLevel = 4
Log_NOTICE Log_Level = 5 LogLevel_NOTICE LogLevel = 5
Log_INFO Log_Level = 6 LogLevel_INFO LogLevel = 6
Log_DEBUG Log_Level = 7 LogLevel_DEBUG LogLevel = 7
) )
var Log_Level_name = map[int32]string{ var LogLevel_name = map[int32]string{
0: "EMERG", 0: "EMERG",
1: "ALERT", 1: "ALERT",
2: "CRIT", 2: "CRIT",
@ -66,7 +66,7 @@ var Log_Level_name = map[int32]string{
6: "INFO", 6: "INFO",
7: "DEBUG", 7: "DEBUG",
} }
var Log_Level_value = map[string]int32{ var LogLevel_value = map[string]int32{
"EMERG": 0, "EMERG": 0,
"ALERT": 1, "ALERT": 1,
"CRIT": 2, "CRIT": 2,
@ -77,15 +77,26 @@ var Log_Level_value = map[string]int32{
"DEBUG": 7, "DEBUG": 7,
} }
func (x Log_Level) String() string { func (x LogLevel) String() string {
return proto.EnumName(Log_Level_name, int32(x)) return proto.EnumName(LogLevel_name, int32(x))
} }
func (Log_Level) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 1} } func (LogLevel) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
type LogSubscription struct {
Release string `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
Level LogLevel `protobuf:"varint,2,opt,name=level,enum=hapi.release.LogLevel" json:"level,omitempty"`
Sources []LogSource `protobuf:"varint,3,rep,packed,name=sources,enum=hapi.release.LogSource" json:"sources,omitempty"`
}
func (m *LogSubscription) Reset() { *m = LogSubscription{} }
func (m *LogSubscription) String() string { return proto.CompactTextString(m) }
func (*LogSubscription) ProtoMessage() {}
func (*LogSubscription) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
type Log struct { type Log struct {
Source Log_Source `protobuf:"varint,1,opt,name=source,enum=hapi.release.Log_Source" json:"source,omitempty"` Release string `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
Level Log_Level `protobuf:"varint,2,opt,name=level,enum=hapi.release.Log_Level" json:"level,omitempty"` Level LogLevel `protobuf:"varint,2,opt,name=level,enum=hapi.release.LogLevel" json:"level,omitempty"`
Release string `protobuf:"bytes,3,opt,name=release" json:"release,omitempty"` Source LogSource `protobuf:"varint,3,opt,name=source,enum=hapi.release.LogSource" json:"source,omitempty"`
Log string `protobuf:"bytes,4,opt,name=log" json:"log,omitempty"` Log string `protobuf:"bytes,4,opt,name=log" json:"log,omitempty"`
Timestamp *google_protobuf.Timestamp `protobuf:"bytes,5,opt,name=timestamp" json:"timestamp,omitempty"` Timestamp *google_protobuf.Timestamp `protobuf:"bytes,5,opt,name=timestamp" json:"timestamp,omitempty"`
} }
@ -93,7 +104,7 @@ type Log struct {
func (m *Log) Reset() { *m = Log{} } func (m *Log) Reset() { *m = Log{} }
func (m *Log) String() string { return proto.CompactTextString(m) } func (m *Log) String() string { return proto.CompactTextString(m) }
func (*Log) ProtoMessage() {} func (*Log) ProtoMessage() {}
func (*Log) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } func (*Log) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
func (m *Log) GetTimestamp() *google_protobuf.Timestamp { func (m *Log) GetTimestamp() *google_protobuf.Timestamp {
if m != nil { if m != nil {
@ -103,33 +114,37 @@ func (m *Log) GetTimestamp() *google_protobuf.Timestamp {
} }
func init() { func init() {
proto.RegisterType((*LogSubscription)(nil), "hapi.release.LogSubscription")
proto.RegisterType((*Log)(nil), "hapi.release.Log") proto.RegisterType((*Log)(nil), "hapi.release.Log")
proto.RegisterEnum("hapi.release.Log_Source", Log_Source_name, Log_Source_value) proto.RegisterEnum("hapi.release.LogSource", LogSource_name, LogSource_value)
proto.RegisterEnum("hapi.release.Log_Level", Log_Level_name, Log_Level_value) proto.RegisterEnum("hapi.release.LogLevel", LogLevel_name, LogLevel_value)
} }
func init() { proto.RegisterFile("hapi/release/log.proto", fileDescriptor2) } func init() { proto.RegisterFile("hapi/release/log.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{ var fileDescriptor2 = []byte{
// 317 bytes of a gzipped FileDescriptorProto // 359 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x8f, 0x4b, 0x4b, 0xfb, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x90, 0xcf, 0x6e, 0x9b, 0x40,
0x14, 0xc5, 0x9b, 0x77, 0x73, 0xfb, 0xe7, 0xcf, 0x65, 0x16, 0x3a, 0x74, 0x63, 0xe9, 0xaa, 0x1b, 0x10, 0xc6, 0x8d, 0x97, 0x3f, 0x66, 0x5c, 0xb9, 0xab, 0x3d, 0xb8, 0xc8, 0x97, 0x22, 0x9f, 0x90,
0x27, 0x5a, 0x37, 0x6e, 0xfb, 0x18, 0x6b, 0x30, 0x4d, 0x64, 0x12, 0x11, 0x5d, 0x08, 0xad, 0x8c, 0x55, 0x81, 0xea, 0xf6, 0xd0, 0xab, 0xff, 0x6c, 0x5d, 0x54, 0x0c, 0xd5, 0x42, 0x55, 0xb5, 0x37,
0xb1, 0x90, 0x32, 0xa5, 0x0f, 0xbf, 0xae, 0x5f, 0x45, 0x66, 0xd2, 0xa8, 0xe0, 0xee, 0xde, 0x7b, 0x6c, 0x6d, 0x09, 0x12, 0xce, 0x22, 0xc0, 0x79, 0x8a, 0x3c, 0x59, 0x9e, 0x2a, 0x5a, 0x30, 0x4e,
0x7e, 0xe7, 0x72, 0x0e, 0x9c, 0xbc, 0x2f, 0x36, 0xab, 0x68, 0x2b, 0x2b, 0xb9, 0xd8, 0xc9, 0xa8, 0xa4, 0x28, 0xb7, 0xdc, 0x66, 0x77, 0x7e, 0xf3, 0x7d, 0x33, 0x1f, 0x4c, 0x6f, 0xd2, 0x32, 0xf7,
0x52, 0x25, 0xdb, 0x6c, 0xd5, 0x5e, 0x91, 0x7f, 0xfa, 0xce, 0x8e, 0xf7, 0xee, 0x59, 0xa9, 0x54, 0x2a, 0x5e, 0xf0, 0xb4, 0xe6, 0x5e, 0x21, 0x32, 0xb7, 0xac, 0x44, 0x23, 0xc8, 0x3b, 0xf9, 0xef,
0x59, 0xc9, 0xc8, 0x68, 0xcb, 0xc3, 0x5b, 0xb4, 0x5f, 0xad, 0xe5, 0x6e, 0xbf, 0x58, 0x6f, 0x6a, 0x5e, 0xfe, 0x67, 0x1f, 0x33, 0x21, 0xb2, 0x82, 0x7b, 0x6d, 0xef, 0x70, 0xfe, 0xef, 0x35, 0xf9,
0xbc, 0xff, 0x69, 0x83, 0x93, 0xa8, 0x92, 0x5c, 0x80, 0xbf, 0x53, 0x87, 0xed, 0xab, 0xa4, 0x56, 0x89, 0xd7, 0x4d, 0x7a, 0x2a, 0x3b, 0x7c, 0x7e, 0xaf, 0xc0, 0xfb, 0x40, 0x64, 0xf1, 0xf9, 0x50,
0xcf, 0x1a, 0xfc, 0x1f, 0x52, 0xf6, 0xfb, 0x0f, 0x4b, 0x54, 0xc9, 0x72, 0xa3, 0x8b, 0x23, 0x47, 0x1f, 0xab, 0xbc, 0x6c, 0x72, 0x71, 0x4b, 0x2c, 0x30, 0x2e, 0xf3, 0x96, 0x62, 0x2b, 0x8e, 0xc9,
0xce, 0xc1, 0xab, 0xe4, 0x87, 0xac, 0xa8, 0x6d, 0x0c, 0xa7, 0x7f, 0x0d, 0x89, 0x96, 0x45, 0x4d, 0xfa, 0x27, 0xf9, 0x04, 0x5a, 0xc1, 0xef, 0x78, 0x61, 0x0d, 0x6d, 0xc5, 0x99, 0x2c, 0xa7, 0xee,
0x11, 0x0a, 0xc1, 0x51, 0xa3, 0x4e, 0xcf, 0x1a, 0x84, 0xa2, 0x59, 0x09, 0x82, 0x53, 0xa9, 0x92, 0x73, 0x33, 0x37, 0x10, 0x59, 0x20, 0xbb, 0xac, 0x83, 0xc8, 0x67, 0x30, 0x6a, 0x71, 0xae, 0x8e,
0xba, 0xe6, 0xaa, 0x47, 0x72, 0x0d, 0xe1, 0x77, 0x4e, 0xea, 0xf5, 0xac, 0x41, 0x67, 0xd8, 0x65, 0xbc, 0xb6, 0x90, 0x8d, 0x9c, 0xc9, 0xf2, 0xc3, 0x0b, 0x3e, 0x6e, 0xfb, 0xac, 0xe7, 0xe6, 0x0f,
0x75, 0x13, 0xd6, 0x34, 0x61, 0x45, 0x43, 0x88, 0x1f, 0xb8, 0x7f, 0x09, 0x7e, 0x1d, 0x93, 0xb4, 0x0a, 0xa0, 0x40, 0x64, 0x6f, 0xb6, 0x82, 0x07, 0x7a, 0x27, 0x6d, 0xa1, 0x16, 0x7f, 0x75, 0x83,
0xc1, 0xbd, 0xcd, 0xb2, 0x3b, 0x6c, 0xe9, 0xa9, 0xe0, 0x79, 0x81, 0x16, 0x09, 0xc0, 0xb9, 0xcf, 0x0b, 0x46, 0x30, 0xa0, 0x42, 0x64, 0x96, 0xda, 0x9a, 0xca, 0x92, 0x7c, 0x03, 0xf3, 0x1a, 0x9a,
0xa6, 0x68, 0x13, 0x00, 0x3f, 0x7f, 0xca, 0x0b, 0x3e, 0x47, 0xa7, 0xff, 0x02, 0x9e, 0x09, 0x4a, 0xa5, 0xd9, 0x8a, 0x33, 0x5e, 0xce, 0xdc, 0x2e, 0x56, 0xb7, 0x8f, 0xd5, 0x4d, 0x7a, 0x82, 0x3d,
0x42, 0xf0, 0xf8, 0x9c, 0x8b, 0x19, 0xb6, 0xf4, 0x38, 0x4a, 0xb8, 0xd0, 0x9e, 0x36, 0xb8, 0x13, 0xc1, 0x8b, 0xaf, 0x60, 0x5e, 0x0d, 0xc8, 0x08, 0xd4, 0x1f, 0x51, 0xf4, 0x13, 0x0f, 0x64, 0x95,
0x11, 0x17, 0x68, 0x6b, 0x37, 0x17, 0x02, 0x1d, 0xd2, 0x81, 0xe0, 0x71, 0x24, 0xd2, 0x38, 0x9d, 0xd0, 0x38, 0xc1, 0x0a, 0x31, 0x00, 0xfd, 0x8a, 0xb6, 0x78, 0x48, 0x00, 0xf4, 0xf8, 0x6f, 0x9c,
0xa1, 0xab, 0x5f, 0xa5, 0x59, 0x11, 0x4f, 0x38, 0x7a, 0x9a, 0x8d, 0xd3, 0x9b, 0x0c, 0x7d, 0xfd, 0xd0, 0x3d, 0x46, 0x8b, 0x14, 0x46, 0xfd, 0x15, 0xc4, 0x04, 0x8d, 0xee, 0x29, 0xdb, 0xe1, 0x81,
0x60, 0xca, 0xc7, 0x0f, 0x33, 0x0c, 0xc6, 0xe1, 0x73, 0xd3, 0x74, 0xe9, 0x9b, 0xf0, 0x57, 0x5f, 0x2c, 0x57, 0x01, 0x65, 0x72, 0x6c, 0x04, 0xea, 0x86, 0xf9, 0x09, 0x1e, 0x4a, 0x01, 0xca, 0x18,
0x01, 0x00, 0x00, 0xff, 0xff, 0xe3, 0x7b, 0x56, 0xb1, 0xbc, 0x01, 0x00, 0x00, 0x46, 0x64, 0x0c, 0xc6, 0x9f, 0x15, 0x0b, 0xfd, 0x70, 0x87, 0x55, 0xa9, 0x16, 0x46, 0x89, 0xbf,
0xa1, 0x58, 0x93, 0xac, 0x1f, 0x7e, 0x8f, 0xb0, 0x2e, 0x05, 0xb6, 0x74, 0xfd, 0x7b, 0x87, 0x8d,
0xb5, 0xf9, 0xaf, 0x8f, 0xf3, 0xa0, 0xb7, 0x27, 0x7c, 0x79, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x5f,
0x53, 0x1a, 0x42, 0x4f, 0x02, 0x00, 0x00,
} }

@ -242,10 +242,7 @@ func (m *GetReleaseContentResponse) GetRelease() *hapi_release5.Release {
} }
type GetReleaseLogsRequest struct { type GetReleaseLogsRequest struct {
// Name is the name of the release Subscription *hapi_release6.LogSubscription `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"`
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// Version is the version of the release
Version int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"`
} }
func (m *GetReleaseLogsRequest) Reset() { *m = GetReleaseLogsRequest{} } func (m *GetReleaseLogsRequest) Reset() { *m = GetReleaseLogsRequest{} }
@ -253,6 +250,13 @@ func (m *GetReleaseLogsRequest) String() string { return proto.Compac
func (*GetReleaseLogsRequest) ProtoMessage() {} func (*GetReleaseLogsRequest) ProtoMessage() {}
func (*GetReleaseLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (*GetReleaseLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *GetReleaseLogsRequest) GetSubscription() *hapi_release6.LogSubscription {
if m != nil {
return m.Subscription
}
return nil
}
type GetReleaseLogsResponse struct { type GetReleaseLogsResponse struct {
Log *hapi_release6.Log `protobuf:"bytes,1,opt,name=log" json:"log,omitempty"` Log *hapi_release6.Log `protobuf:"bytes,1,opt,name=log" json:"log,omitempty"`
} }
@ -1099,83 +1103,84 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) } func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 1233 bytes of a gzipped FileDescriptorProto // 1257 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x72, 0xdb, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdb, 0x6e, 0xdb, 0x46,
0x14, 0x8e, 0x2c, 0xc7, 0x3f, 0x27, 0x69, 0x70, 0xb7, 0x89, 0xa3, 0x6a, 0x80, 0x09, 0xea, 0x40, 0x10, 0x35, 0x45, 0x59, 0x97, 0xb1, 0xe3, 0x3a, 0x1b, 0x5f, 0x18, 0xa2, 0x29, 0x5c, 0x06, 0x6d,
0xdd, 0x96, 0x3a, 0xc5, 0x5c, 0x31, 0x03, 0xcc, 0xa4, 0xa9, 0x27, 0x29, 0x98, 0x74, 0x46, 0x6e, 0x94, 0xa4, 0x91, 0x53, 0xf7, 0xa9, 0x40, 0x5b, 0xc0, 0x71, 0x04, 0x3b, 0xad, 0xea, 0x00, 0x54,
0xcb, 0x0c, 0xc3, 0xe0, 0x51, 0xec, 0xb5, 0x2b, 0x2a, 0x6b, 0x5d, 0xed, 0x2a, 0x34, 0xb7, 0xdc, 0x92, 0x02, 0x41, 0x51, 0x81, 0x96, 0x56, 0x32, 0x1b, 0x8a, 0xab, 0x70, 0x97, 0x6e, 0xfc, 0xda,
0xf1, 0x28, 0xbc, 0x05, 0x2f, 0x40, 0x9f, 0x89, 0xd1, 0xfe, 0xc8, 0x5e, 0x45, 0x4a, 0x84, 0x6f, 0xb7, 0x7e, 0x4a, 0xff, 0xa2, 0x3f, 0xd0, 0x7c, 0x53, 0xc1, 0xbd, 0x50, 0x5c, 0x8a, 0xb4, 0x59,
0xac, 0xdd, 0x3d, 0x67, 0xcf, 0xcf, 0x77, 0x4e, 0xbe, 0x3d, 0x01, 0xfb, 0x8d, 0xb7, 0xf0, 0x0f, 0xbf, 0x88, 0xdc, 0x9d, 0xd9, 0x33, 0x33, 0x67, 0x86, 0xb3, 0x23, 0xb0, 0xcf, 0xbd, 0xb9, 0xbf,
0x29, 0x8e, 0x2e, 0xfc, 0x31, 0xa6, 0x87, 0xcc, 0x0f, 0x02, 0x1c, 0x75, 0x17, 0x11, 0x61, 0x04, 0x4f, 0x71, 0x74, 0xe1, 0x8f, 0x30, 0xdd, 0x67, 0x7e, 0x10, 0xe0, 0xa8, 0x3b, 0x8f, 0x08, 0x23,
0xed, 0x26, 0xb2, 0xae, 0x92, 0x75, 0x85, 0xcc, 0x6e, 0xf3, 0x1b, 0xe3, 0x37, 0x5e, 0xc4, 0xc4, 0x68, 0x2b, 0x91, 0x75, 0x95, 0xac, 0x2b, 0x64, 0xf6, 0x0e, 0x3f, 0x31, 0x3a, 0xf7, 0x22, 0x26,
0xaf, 0xd0, 0xb6, 0xf7, 0x57, 0xcf, 0x49, 0x38, 0xf5, 0x67, 0x52, 0x20, 0x5c, 0x44, 0x38, 0xc0, 0x7e, 0x85, 0xb6, 0xbd, 0x9b, 0xdd, 0x27, 0xe1, 0xc4, 0x9f, 0x4a, 0x81, 0x30, 0x11, 0xe1, 0x00,
0x1e, 0xc5, 0xea, 0x2b, 0x65, 0x6d, 0x4d, 0x16, 0x90, 0x99, 0x66, 0x4c, 0x9d, 0xfb, 0xe1, 0x94, 0x7b, 0x14, 0xab, 0xa7, 0x94, 0xed, 0x68, 0xb2, 0x80, 0x4c, 0x35, 0x30, 0xb5, 0xef, 0x87, 0x13,
0x48, 0xc1, 0x5d, 0x4d, 0x40, 0x99, 0xc7, 0x62, 0xaa, 0xf9, 0xb9, 0xc0, 0x11, 0xf5, 0x49, 0xa8, 0x22, 0x05, 0x77, 0x35, 0x01, 0x65, 0x1e, 0x8b, 0xa9, 0x66, 0xe7, 0x02, 0x47, 0xd4, 0x27, 0xa1,
0xbe, 0x42, 0xe6, 0xfc, 0x53, 0x81, 0x3b, 0x03, 0x9f, 0x32, 0x57, 0x5c, 0xa4, 0x2e, 0x7e, 0x17, 0x7a, 0x0a, 0x99, 0xf3, 0x4f, 0x0d, 0xee, 0xf4, 0x7d, 0xca, 0x5c, 0x71, 0x90, 0xba, 0xf8, 0x7d,
0x63, 0xca, 0xd0, 0x2e, 0x6c, 0x06, 0xfe, 0xdc, 0x67, 0x96, 0x71, 0x60, 0x74, 0x4c, 0x57, 0x6c, 0x8c, 0x29, 0x43, 0x5b, 0xb0, 0x1a, 0xf8, 0x33, 0x9f, 0x59, 0xc6, 0x9e, 0xd1, 0x31, 0x5d, 0xb1,
0x50, 0x1b, 0x6a, 0x64, 0x3a, 0xa5, 0x98, 0x59, 0x95, 0x03, 0xa3, 0xd3, 0x74, 0xe5, 0x0e, 0x7d, 0x40, 0x3b, 0xd0, 0x20, 0x93, 0x09, 0xc5, 0xcc, 0xaa, 0xed, 0x19, 0x9d, 0xb6, 0x2b, 0x57, 0xe8,
0x0f, 0x75, 0x4a, 0x22, 0x36, 0x3a, 0xbf, 0xb4, 0xcc, 0x03, 0xa3, 0xb3, 0xd3, 0xfb, 0xbc, 0x9b, 0x07, 0x68, 0x52, 0x12, 0xb1, 0xe1, 0xd9, 0xa5, 0x65, 0xee, 0x19, 0x9d, 0x8d, 0x83, 0x2f, 0xba,
0x07, 0x51, 0x37, 0xf1, 0x34, 0x24, 0x11, 0xeb, 0x26, 0x3f, 0x4f, 0x2f, 0xdd, 0x1a, 0xe5, 0xdf, 0x45, 0x14, 0x75, 0x13, 0x4b, 0x03, 0x12, 0xb1, 0x6e, 0xf2, 0xf3, 0xec, 0xd2, 0x6d, 0x50, 0xfe,
0xc4, 0xee, 0xd4, 0x0f, 0x18, 0x8e, 0xac, 0xaa, 0xb0, 0x2b, 0x76, 0xe8, 0x04, 0x80, 0xdb, 0x25, 0x4c, 0x70, 0x27, 0x7e, 0xc0, 0x70, 0x64, 0xd5, 0x05, 0xae, 0x58, 0xa1, 0x63, 0x00, 0x8e, 0x4b,
0xd1, 0x04, 0x47, 0xd6, 0x26, 0x37, 0xdd, 0x29, 0x61, 0xfa, 0x45, 0xa2, 0xef, 0x36, 0xa9, 0x5a, 0xa2, 0x31, 0x8e, 0xac, 0x55, 0x0e, 0xdd, 0xa9, 0x00, 0xfd, 0x32, 0xd1, 0x77, 0xdb, 0x54, 0xbd,
0xa2, 0x6f, 0x61, 0x5b, 0x40, 0x32, 0x1a, 0x93, 0x09, 0xa6, 0x56, 0xed, 0xc0, 0xec, 0xec, 0xf4, 0xa2, 0xef, 0x60, 0x5d, 0x50, 0x32, 0x1c, 0x91, 0x31, 0xa6, 0x56, 0x63, 0xcf, 0xec, 0x6c, 0x1c,
0xee, 0x0a, 0x53, 0x0a, 0xf9, 0xa1, 0x00, 0xed, 0x98, 0x4c, 0xb0, 0xbb, 0x25, 0xd4, 0x93, 0x35, 0xdc, 0x15, 0x50, 0x8a, 0xf9, 0x81, 0x20, 0xed, 0x88, 0x8c, 0xb1, 0xbb, 0x26, 0xd4, 0x93, 0x77,
0x45, 0x1f, 0x43, 0x33, 0xf4, 0xe6, 0x98, 0x2e, 0xbc, 0x31, 0xb6, 0xea, 0x3c, 0xc2, 0xe5, 0x81, 0x8a, 0x3e, 0x85, 0x76, 0xe8, 0xcd, 0x30, 0x9d, 0x7b, 0x23, 0x6c, 0x35, 0xb9, 0x87, 0x8b, 0x0d,
0xf3, 0x1b, 0x34, 0x94, 0x73, 0xa7, 0x07, 0x35, 0x91, 0x1a, 0xda, 0x82, 0xfa, 0xab, 0xb3, 0x1f, 0xe7, 0x37, 0x68, 0x29, 0xe3, 0xce, 0x01, 0x34, 0x44, 0x68, 0x68, 0x0d, 0x9a, 0xaf, 0x4f, 0x7f,
0xcf, 0x5e, 0xfc, 0x7c, 0xd6, 0xda, 0x40, 0x0d, 0xa8, 0x9e, 0x1d, 0xfd, 0xd4, 0x6f, 0x19, 0xe8, 0x3a, 0x7d, 0xf9, 0xcb, 0xe9, 0xe6, 0x0a, 0x6a, 0x41, 0xfd, 0xf4, 0xf0, 0xe7, 0xde, 0xa6, 0x81,
0x36, 0xdc, 0x1a, 0x1c, 0x0d, 0x5f, 0x8e, 0xdc, 0xfe, 0xa0, 0x7f, 0x34, 0xec, 0x3f, 0x6b, 0x55, 0x6e, 0xc3, 0xad, 0xfe, 0xe1, 0xe0, 0xd5, 0xd0, 0xed, 0xf5, 0x7b, 0x87, 0x83, 0xde, 0xf3, 0xcd,
0x9c, 0x4f, 0xa1, 0x99, 0xc6, 0x8c, 0xea, 0x60, 0x1e, 0x0d, 0x8f, 0xc5, 0x95, 0x67, 0xfd, 0xe1, 0x9a, 0xf3, 0x19, 0xb4, 0x53, 0x9f, 0x51, 0x13, 0xcc, 0xc3, 0xc1, 0x91, 0x38, 0xf2, 0xbc, 0x37,
0x71, 0xcb, 0x70, 0xfe, 0x32, 0x60, 0x57, 0x2f, 0x11, 0x5d, 0x90, 0x90, 0xe2, 0xa4, 0x46, 0x63, 0x38, 0xda, 0x34, 0x9c, 0xbf, 0x0c, 0xd8, 0xd2, 0x53, 0x44, 0xe7, 0x24, 0xa4, 0x38, 0xc9, 0xd1,
0x12, 0x87, 0x69, 0x8d, 0xf8, 0x06, 0x21, 0xa8, 0x86, 0xf8, 0xbd, 0xaa, 0x10, 0x5f, 0x27, 0x9a, 0x88, 0xc4, 0x61, 0x9a, 0x23, 0xbe, 0x40, 0x08, 0xea, 0x21, 0xfe, 0xa0, 0x32, 0xc4, 0xdf, 0x13,
0x8c, 0x30, 0x2f, 0xe0, 0xd5, 0x31, 0x5d, 0xb1, 0x41, 0x5f, 0x41, 0x43, 0xa6, 0x4e, 0xad, 0xea, 0x4d, 0x46, 0x98, 0x17, 0xf0, 0xec, 0x98, 0xae, 0x58, 0xa0, 0xaf, 0xa1, 0x25, 0x43, 0xa7, 0x56,
0x81, 0xd9, 0xd9, 0xea, 0xed, 0xe9, 0x80, 0x48, 0x8f, 0x6e, 0xaa, 0xe6, 0x9c, 0xc0, 0xfe, 0x09, 0x7d, 0xcf, 0xec, 0xac, 0x1d, 0x6c, 0xeb, 0x84, 0x48, 0x8b, 0x6e, 0xaa, 0xe6, 0x1c, 0xc3, 0xee,
0x56, 0x91, 0x08, 0xbc, 0x54, 0xc7, 0x24, 0x7e, 0xbd, 0x39, 0xe6, 0xc1, 0x24, 0x7e, 0xbd, 0x39, 0x31, 0x56, 0x9e, 0x08, 0xbe, 0x54, 0xc5, 0x24, 0x76, 0xbd, 0x19, 0xe6, 0xce, 0x24, 0x76, 0xbd,
0x46, 0x16, 0xd4, 0x65, 0xbb, 0xf1, 0x70, 0x36, 0x5d, 0xb5, 0x75, 0x18, 0x58, 0x57, 0x0d, 0xc9, 0x19, 0x46, 0x16, 0x34, 0x65, 0xb9, 0x71, 0x77, 0x56, 0x5d, 0xb5, 0x74, 0x18, 0x58, 0xcb, 0x40,
0xbc, 0xf2, 0x2c, 0x7d, 0x01, 0xd5, 0xa4, 0xd9, 0xb9, 0x99, 0xad, 0x1e, 0xd2, 0xe3, 0x7c, 0x1e, 0x32, 0xae, 0x22, 0xa4, 0x2f, 0xa1, 0x9e, 0x14, 0x3b, 0x87, 0x59, 0x3b, 0x40, 0xba, 0x9f, 0x2f,
0x4e, 0x89, 0xcb, 0xe5, 0x7a, 0xa9, 0xcc, 0x6c, 0xa9, 0x4e, 0x57, 0xbd, 0x1e, 0x93, 0x90, 0xe1, 0xc2, 0x09, 0x71, 0xb9, 0x5c, 0x4f, 0x95, 0x99, 0x4f, 0xd5, 0x49, 0xd6, 0xea, 0x11, 0x09, 0x19,
0x90, 0xad, 0x17, 0xff, 0x00, 0xee, 0xe6, 0x58, 0x92, 0x09, 0x1c, 0x42, 0x5d, 0x86, 0xc6, 0xad, 0x0e, 0xd9, 0xcd, 0xfc, 0xef, 0xc3, 0xdd, 0x02, 0x24, 0x19, 0xc0, 0x3e, 0x34, 0xa5, 0x6b, 0x1c,
0x15, 0xe2, 0xaa, 0xb4, 0x9c, 0x3e, 0xec, 0x2d, 0xad, 0x0d, 0xc8, 0x6c, 0x4d, 0x50, 0xbf, 0x83, 0xad, 0x94, 0x57, 0xa5, 0xe5, 0xbc, 0x85, 0xed, 0x05, 0x5a, 0x9f, 0x4c, 0x53, 0x52, 0x0f, 0x61,
0x76, 0xd6, 0x8c, 0x8c, 0xe8, 0x1e, 0x98, 0x01, 0x99, 0xc9, 0x68, 0x6e, 0xeb, 0xd1, 0x0c, 0xc8, 0x9d, 0xc6, 0x67, 0x74, 0x14, 0xf9, 0x73, 0x96, 0x78, 0x21, 0xe0, 0xee, 0xe9, 0x70, 0x7d, 0x32,
0xcc, 0x4d, 0xa4, 0xce, 0xbf, 0x15, 0xd8, 0x7d, 0xb5, 0x98, 0x78, 0x0c, 0xab, 0x00, 0xaf, 0x89, 0x1d, 0x64, 0x94, 0x5c, 0xed, 0x88, 0xf3, 0x3d, 0xec, 0xe4, 0xb1, 0xa5, 0x9b, 0xf7, 0xc1, 0x0c,
0xe2, 0x3e, 0x6c, 0x72, 0x4a, 0x93, 0x15, 0x91, 0x36, 0x05, 0xef, 0x1d, 0x27, 0xbf, 0xae, 0x90, 0xc8, 0x54, 0x62, 0xde, 0x5e, 0xc2, 0x74, 0x13, 0xa9, 0xf3, 0x6f, 0x0d, 0xb6, 0x5e, 0xcf, 0xc7,
0xa3, 0x87, 0x50, 0xbb, 0xf0, 0x82, 0x18, 0x53, 0x5e, 0x8e, 0xb4, 0x76, 0x52, 0x93, 0xf3, 0xa1, 0x1e, 0xc3, 0xca, 0xeb, 0x2b, 0xf8, 0x7a, 0x00, 0xab, 0xbc, 0xcf, 0xc9, 0x34, 0x49, 0x4c, 0xd1,
0x2b, 0x35, 0xd0, 0x3e, 0xd4, 0x27, 0xd1, 0xe5, 0x28, 0x8a, 0x43, 0x4e, 0x04, 0x0d, 0xb7, 0x36, 0x0c, 0x8f, 0x92, 0x5f, 0x57, 0xc8, 0xd1, 0x23, 0x68, 0x5c, 0x78, 0x41, 0x8c, 0x29, 0xcf, 0x51,
0x89, 0x2e, 0xdd, 0x38, 0x44, 0xf7, 0xe0, 0xd6, 0xc4, 0xa7, 0xde, 0x79, 0x80, 0x47, 0x6f, 0x08, 0x9a, 0x50, 0xa9, 0xc9, 0x9b, 0xa4, 0x2b, 0x35, 0xd0, 0x2e, 0x34, 0xc7, 0xd1, 0xe5, 0x30, 0x8a,
0x79, 0x4b, 0x39, 0x17, 0x34, 0xdc, 0x6d, 0x79, 0x78, 0x9a, 0x9c, 0x21, 0x3b, 0xe9, 0xe7, 0x71, 0x43, 0xde, 0x1d, 0x5a, 0x6e, 0x63, 0x1c, 0x5d, 0xba, 0x71, 0x88, 0xee, 0xc3, 0xad, 0xb1, 0x4f,
0x84, 0x3d, 0x86, 0xad, 0x1a, 0x97, 0xa7, 0xfb, 0x04, 0x34, 0xe6, 0xcf, 0x31, 0x89, 0x19, 0xff, 0xbd, 0xb3, 0x00, 0x0f, 0xcf, 0x09, 0x79, 0x47, 0x79, 0x83, 0x68, 0xb9, 0xeb, 0x72, 0xf3, 0x24,
0x03, 0x36, 0x5d, 0xb5, 0x45, 0x9f, 0xc1, 0x76, 0x84, 0x29, 0x66, 0x23, 0x19, 0x65, 0x83, 0xdf, 0xd9, 0x43, 0x76, 0x52, 0xe4, 0xa3, 0x08, 0x7b, 0x0c, 0x5b, 0x0d, 0x2e, 0x4f, 0xd7, 0x49, 0x7a,
0xdc, 0xe2, 0x67, 0xaf, 0x45, 0x58, 0x08, 0xaa, 0x7f, 0x78, 0x3e, 0xb3, 0x9a, 0x5c, 0xc4, 0xd7, 0x99, 0x3f, 0xc3, 0x24, 0x66, 0xfc, 0xab, 0x36, 0x5d, 0xb5, 0x44, 0x9f, 0xc3, 0x7a, 0x84, 0x29,
0xe2, 0x5a, 0x4c, 0xb1, 0xba, 0x06, 0xea, 0x5a, 0x4c, 0xb1, 0xb8, 0xe6, 0x9c, 0xc2, 0x5e, 0x06, 0x66, 0x43, 0xe9, 0x65, 0x8b, 0x9f, 0x5c, 0xe3, 0x7b, 0x6f, 0x84, 0x5b, 0x08, 0xea, 0x7f, 0x78,
0xce, 0x75, 0xfb, 0xe3, 0x83, 0x01, 0x6d, 0x97, 0x04, 0xc1, 0xb9, 0x37, 0x7e, 0x5b, 0xa2, 0x36, 0x3e, 0xb3, 0xda, 0x5c, 0xc4, 0xdf, 0xc5, 0xb1, 0x98, 0x62, 0x75, 0x0c, 0xd4, 0xb1, 0x98, 0x62,
0x2b, 0x30, 0x56, 0xae, 0x87, 0xd1, 0xcc, 0x81, 0x71, 0xa5, 0xbf, 0xaa, 0x5a, 0x7f, 0x69, 0x00, 0x71, 0xcc, 0x39, 0x81, 0xed, 0x1c, 0x9d, 0x37, 0x2d, 0x9a, 0x8f, 0x06, 0xec, 0xb8, 0x24, 0x08,
0x6f, 0x16, 0x03, 0x5c, 0xd3, 0x01, 0x56, 0xe8, 0xd5, 0x97, 0xe8, 0x39, 0x3f, 0xc0, 0xfe, 0x95, 0xce, 0xbc, 0xd1, 0xbb, 0x0a, 0xb9, 0xc9, 0xd0, 0x58, 0xbb, 0x9a, 0x46, 0xb3, 0x80, 0xc6, 0xcc,
0x7c, 0xd6, 0x05, 0xe7, 0xef, 0x0a, 0xec, 0x3d, 0x0f, 0x29, 0xf3, 0x82, 0x20, 0x83, 0x4d, 0xda, 0x97, 0x50, 0xd7, 0xbe, 0x04, 0x8d, 0xe0, 0xd5, 0x72, 0x82, 0x1b, 0x3a, 0xc1, 0x8a, 0xbd, 0xe6,
0xa3, 0x46, 0xe9, 0x1e, 0xad, 0xfc, 0x9f, 0x1e, 0x35, 0x35, 0x70, 0x55, 0x25, 0xaa, 0x2b, 0x95, 0x82, 0x3d, 0xe7, 0x47, 0xd8, 0x5d, 0x8a, 0xe7, 0xa6, 0xe4, 0xfc, 0x5d, 0x83, 0xed, 0x17, 0x21,
0x28, 0xd5, 0xb7, 0x1a, 0x67, 0xd5, 0x32, 0x9c, 0x85, 0x3e, 0x01, 0x10, 0x8d, 0xc6, 0x8d, 0x0b, 0x65, 0x5e, 0x10, 0xe4, 0xb8, 0x49, 0x6b, 0xd4, 0xa8, 0x5c, 0xa3, 0xb5, 0xff, 0x53, 0xa3, 0xa6,
0x10, 0x9b, 0xfc, 0xe4, 0x4c, 0xb2, 0x81, 0xc2, 0xbd, 0x91, 0x8f, 0xfb, 0x4a, 0xd7, 0x3a, 0xcf, 0x46, 0xae, 0xca, 0x44, 0x3d, 0x93, 0x89, 0x4a, 0x75, 0xab, 0x35, 0xb2, 0x46, 0xae, 0x91, 0xa1,
0xa1, 0x9d, 0x85, 0x6a, 0x5d, 0xd8, 0xff, 0x34, 0x60, 0xff, 0x55, 0xe8, 0xe7, 0x02, 0x9f, 0xd7, 0x7b, 0x00, 0xa2, 0xd0, 0x38, 0xb8, 0x20, 0xb1, 0xcd, 0x77, 0x4e, 0x65, 0xdf, 0x52, 0xbc, 0xb7,
0x94, 0x57, 0xa0, 0xa8, 0xe4, 0x40, 0xb1, 0x0b, 0x9b, 0x8b, 0x38, 0x9a, 0x61, 0x09, 0xad, 0xd8, 0x8a, 0x79, 0xcf, 0x54, 0xad, 0xf3, 0x02, 0x76, 0xf2, 0x54, 0xdd, 0x94, 0xf6, 0x3f, 0x0d, 0xd8,
0xac, 0xe6, 0x58, 0xd5, 0x72, 0x74, 0x46, 0x60, 0x5d, 0x8d, 0x61, 0xcd, 0x8c, 0x92, 0xa8, 0xd3, 0x7d, 0x1d, 0xfa, 0x85, 0xc4, 0x17, 0x15, 0xe5, 0x12, 0x15, 0xb5, 0x02, 0x2a, 0xb6, 0x60, 0x75,
0x37, 0xa6, 0x29, 0xde, 0x13, 0xe7, 0x0e, 0xdc, 0x3e, 0xc1, 0xec, 0xb5, 0xf8, 0x03, 0x90, 0xe9, 0x1e, 0x47, 0x53, 0x2c, 0xa9, 0x15, 0x8b, 0x6c, 0x8c, 0x75, 0x2d, 0x46, 0x67, 0x08, 0xd6, 0xb2,
0x39, 0x7d, 0x40, 0xab, 0x87, 0x4b, 0x7f, 0xf2, 0x48, 0xf7, 0xa7, 0x06, 0x2e, 0xa5, 0x9f, 0xd2, 0x0f, 0x37, 0x8c, 0x28, 0xf1, 0x3a, 0xbd, 0x78, 0xda, 0xe2, 0x92, 0x71, 0xee, 0xc0, 0xed, 0x63,
0xf5, 0x37, 0xdc, 0xf6, 0xa9, 0x4f, 0x19, 0x89, 0x2e, 0xaf, 0x83, 0xae, 0x05, 0xe6, 0xdc, 0x7b, 0xcc, 0xde, 0x88, 0x0f, 0x40, 0x86, 0xe7, 0xf4, 0x00, 0x65, 0x37, 0x17, 0xf6, 0xe4, 0x96, 0x6e,
0x2f, 0xd9, 0x3e, 0x59, 0x3a, 0x27, 0x3c, 0x82, 0xf4, 0xaa, 0x8c, 0x60, 0xf5, 0x41, 0x37, 0xca, 0x4f, 0x4d, 0x61, 0x4a, 0x3f, 0xbd, 0x58, 0xbe, 0xe5, 0xd8, 0x27, 0x3e, 0x65, 0x24, 0xba, 0xbc,
0x3d, 0xe8, 0xbf, 0x02, 0x7a, 0x89, 0xd3, 0xd9, 0xe2, 0x86, 0x67, 0x47, 0x15, 0xa1, 0xa2, 0x37, 0x8a, 0xba, 0x4d, 0x30, 0x67, 0xde, 0x07, 0x79, 0x2f, 0x25, 0xaf, 0xce, 0x31, 0xf7, 0x20, 0x3d,
0x9a, 0x05, 0xf5, 0x71, 0x80, 0xbd, 0x30, 0x5e, 0xc8, 0xb2, 0xa9, 0xad, 0x73, 0x1f, 0xee, 0x68, 0x2a, 0x3d, 0xc8, 0xde, 0xf2, 0x46, 0xb5, 0x5b, 0xfe, 0x57, 0x40, 0xaf, 0x70, 0x3a, 0x70, 0x5c,
0xd6, 0x65, 0x9c, 0x49, 0x3e, 0x74, 0x26, 0xad, 0x27, 0xcb, 0xde, 0x87, 0x26, 0xec, 0xa8, 0x61, 0x73, 0x41, 0xaa, 0x24, 0xd4, 0xf4, 0x42, 0xb3, 0xa0, 0x39, 0x0a, 0xb0, 0x17, 0xc6, 0x73, 0x99,
0x40, 0x0c, 0x76, 0xc8, 0x87, 0xed, 0xd5, 0xa9, 0x07, 0x3d, 0x28, 0x9e, 0xfb, 0x32, 0xc3, 0xab, 0x36, 0xb5, 0x74, 0x1e, 0xc0, 0x1d, 0x0d, 0x5d, 0xfa, 0x99, 0xc4, 0x43, 0xa7, 0x12, 0x3d, 0x79,
0xfd, 0xb0, 0x8c, 0xaa, 0x88, 0xc5, 0xd9, 0x78, 0x62, 0x20, 0x0a, 0xad, 0xec, 0x30, 0x82, 0x1e, 0x3d, 0xf8, 0xd8, 0x86, 0x0d, 0x35, 0x21, 0x88, 0x69, 0x0f, 0xf9, 0xb0, 0x9e, 0x1d, 0x85, 0xd0,
0xe7, 0xdb, 0x28, 0x98, 0x7e, 0xec, 0x6e, 0x59, 0x75, 0xe5, 0x16, 0x5d, 0xf0, 0xea, 0xeb, 0x13, 0xc3, 0xf2, 0x61, 0x30, 0x37, 0xd1, 0xda, 0x8f, 0xaa, 0xa8, 0x0a, 0x5f, 0x9c, 0x95, 0xa7, 0x06,
0x04, 0xba, 0xd1, 0x8c, 0x3e, 0xb4, 0xd8, 0x87, 0xa5, 0xf5, 0x53, 0xbf, 0xef, 0x60, 0x47, 0x1f, 0xa2, 0xb0, 0x99, 0x9f, 0x50, 0xd0, 0x93, 0x62, 0x8c, 0x92, 0x91, 0xc8, 0xee, 0x56, 0x55, 0x57,
0x12, 0xd0, 0xa3, 0x9b, 0x8c, 0xac, 0x4c, 0x24, 0xf6, 0x97, 0xe5, 0x94, 0x95, 0xbb, 0x8e, 0xf1, 0x66, 0xd1, 0x05, 0xcf, 0xbe, 0x3e, 0x56, 0xa0, 0x6b, 0x61, 0xf4, 0x49, 0xc6, 0xde, 0xaf, 0xac,
0xc4, 0x40, 0xbf, 0xc3, 0x2d, 0xed, 0x21, 0x44, 0x05, 0x05, 0xca, 0x1b, 0x3e, 0xec, 0x47, 0xa5, 0x9f, 0xda, 0x7d, 0x0f, 0x1b, 0xfa, 0x90, 0x80, 0x1e, 0x5f, 0x07, 0x92, 0x19, 0x53, 0xec, 0xaf,
0x74, 0xd3, 0xf4, 0xe6, 0xb0, 0xa3, 0x33, 0x5c, 0x51, 0x7a, 0xb9, 0x4f, 0x46, 0x51, 0x7a, 0xf9, 0xaa, 0x29, 0x2b, 0x73, 0x1d, 0xe3, 0xa9, 0x81, 0x7e, 0x87, 0x5b, 0xda, 0x45, 0x88, 0x4a, 0x12,
0xa4, 0xe9, 0x6c, 0x24, 0xad, 0x93, 0x25, 0xa0, 0xa2, 0xd6, 0x29, 0x20, 0xcb, 0xa2, 0xd6, 0x29, 0x54, 0x34, 0x7c, 0xd8, 0x8f, 0x2b, 0xe9, 0xa6, 0xe1, 0xcd, 0x60, 0x43, 0xef, 0x70, 0x65, 0xe1,
0xe2, 0x35, 0x67, 0x03, 0x79, 0x00, 0x4b, 0xfe, 0x41, 0xf7, 0x0b, 0x2b, 0xa2, 0xd3, 0x96, 0xdd, 0x15, 0x5e, 0x19, 0x65, 0xe1, 0x15, 0x37, 0x4d, 0x67, 0x25, 0x29, 0x9d, 0x7c, 0x03, 0x2a, 0x2b,
0xb9, 0x59, 0x31, 0x75, 0xb1, 0x80, 0x8f, 0x32, 0x0f, 0x34, 0x2a, 0x80, 0x26, 0x7f, 0x2e, 0xb1, 0x9d, 0x92, 0x66, 0x59, 0x56, 0x3a, 0x65, 0x7d, 0xcd, 0x59, 0x41, 0x1e, 0xc0, 0xa2, 0xff, 0xa0,
0x1f, 0x97, 0xd4, 0xce, 0x24, 0x25, 0x29, 0xed, 0x9a, 0xa4, 0x74, 0xbe, 0xbc, 0x26, 0xa9, 0x0c, 0x07, 0xa5, 0x19, 0xd1, 0xdb, 0x96, 0xdd, 0xb9, 0x5e, 0x31, 0x35, 0x31, 0x87, 0x4f, 0x72, 0x17,
0x3b, 0x3a, 0x1b, 0xc8, 0x87, 0x1d, 0x37, 0x0e, 0xa5, 0xeb, 0x84, 0x98, 0x50, 0xc1, 0xed, 0xab, 0x34, 0x2a, 0xa1, 0xa6, 0x78, 0x2e, 0xb1, 0x9f, 0x54, 0xd4, 0xce, 0x05, 0x25, 0x5b, 0xda, 0x15,
0x94, 0x68, 0x3f, 0x28, 0xa1, 0xb9, 0xa4, 0x94, 0xa7, 0xf0, 0x4b, 0x43, 0xa9, 0x9e, 0xd7, 0xf8, 0x41, 0xe9, 0xfd, 0xf2, 0x8a, 0xa0, 0x72, 0xdd, 0xd1, 0x59, 0x41, 0x3e, 0x6c, 0xb8, 0x71, 0x28,
0xbf, 0xda, 0x5f, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x78, 0x8f, 0xed, 0x5d, 0x53, 0x10, 0x00, 0x4d, 0x27, 0x8d, 0x09, 0x95, 0x9c, 0x5e, 0x6e, 0x89, 0xf6, 0xc3, 0x0a, 0x9a, 0x8b, 0x96, 0xf2,
0x00, 0x0c, 0xde, 0xb6, 0x94, 0xea, 0x59, 0x83, 0xff, 0xff, 0xfe, 0xe6, 0xbf, 0x00, 0x00, 0x00, 0xff,
0xff, 0xd2, 0xe7, 0x93, 0xb8, 0x68, 0x10, 0x00, 0x00,
} }

@ -7,13 +7,13 @@ import (
type Logsub struct { type Logsub struct {
C chan *rspb.Log C chan *rspb.Log
release string release string
sources []rspb.Log_Source sources []rspb.LogSource
level rspb.Log_Level level rspb.LogLevel
} }
type release struct { type release struct {
name string name string
sourceMappings map[rspb.Log_Source]map[*Logsub]bool sourceMappings map[rspb.LogSource]map[*Logsub]bool
} }
type Pubsub struct { type Pubsub struct {
@ -27,18 +27,18 @@ func New() *Pubsub {
func newRelease(name string) *release { func newRelease(name string) *release {
rs := &release{name: name} rs := &release{name: name}
rs.sourceMappings = make(map[rspb.Log_Source]map[*Logsub]bool, len(rspb.Log_Source_name)) rs.sourceMappings = make(map[rspb.LogSource]map[*Logsub]bool, len(rspb.LogSource_name))
return rs return rs
} }
func (rs *release) subscribe(sub *Logsub) { func (rs *release) subscribe(sub *Logsub) {
for _, source := range sub.sources { for _, source := range sub.sources {
log_source := rspb.Log_Source(source) logSource := rspb.LogSource(source)
if _, ok := rs.sourceMappings[log_source]; !ok { if _, ok := rs.sourceMappings[logSource]; !ok {
subs := make(map[*Logsub]bool, 1) subs := make(map[*Logsub]bool, 1)
rs.sourceMappings[log_source] = subs rs.sourceMappings[logSource] = subs
} }
rs.sourceMappings[log_source][sub] = true rs.sourceMappings[logSource][sub] = true
} }
} }
@ -51,7 +51,7 @@ func (ps *Pubsub) subscribe(sub *Logsub) {
ps.releases[sub.release].subscribe(sub) ps.releases[sub.release].subscribe(sub)
} }
func (ps *Pubsub) Subscribe(release string, level rspb.Log_Level, sources ...rspb.Log_Source) *Logsub { func (ps *Pubsub) Subscribe(release string, level rspb.LogLevel, sources ...rspb.LogSource) *Logsub {
ch := make(chan *rspb.Log) ch := make(chan *rspb.Log)
ls := &Logsub{C: ch, release: release, level: level, sources: sources} ls := &Logsub{C: ch, release: release, level: level, sources: sources}
ps.subscribe(ls) ps.subscribe(ls)
@ -72,7 +72,7 @@ func (ps *Pubsub) Unsubscribe(sub *Logsub) {
} }
} }
func (ps *Pubsub) PubLog(rls string, source rspb.Log_Source, level rspb.Log_Level, message string) { func (ps *Pubsub) PubLog(rls string, source rspb.LogSource, level rspb.LogLevel, message string) {
log := &rspb.Log{Release: rls, Source: source, Level: level, Log: message} log := &rspb.Log{Release: rls, Source: source, Level: level, Log: message}
if rls, ok := ps.releases[log.Release]; ok { if rls, ok := ps.releases[log.Release]; ok {
if subs, ok := rls.sourceMappings[log.Source]; ok { if subs, ok := rls.sourceMappings[log.Source]; ok {

@ -43,7 +43,6 @@ import (
"k8s.io/helm/pkg/timeconv" "k8s.io/helm/pkg/timeconv"
"k8s.io/helm/pkg/version" "k8s.io/helm/pkg/version"
"k8s.io/helm/pkg/tiller/logdistributor" "k8s.io/helm/pkg/tiller/logdistributor"
"time"
) )
// releaseNameMaxLen is the maximum length of a release name. // releaseNameMaxLen is the maximum length of a release name.
@ -255,6 +254,8 @@ func (s *ReleaseServer) GetReleaseStatus(c ctx.Context, req *services.GetRelease
Info: rel.Info, Info: rel.Info,
} }
s.logs.PubLog(req.Name, release.LogSource_SYSTEM, release.LogLevel_INFO, "Got release status for the release")
// Ok, we got the status of the release as we had jotted down, now we need to match the // Ok, we got the status of the release as we had jotted down, now we need to match the
// manifest we stashed away with reality from the cluster. // manifest we stashed away with reality from the cluster.
kubeCli := s.env.KubeClient kubeCli := s.env.KubeClient
@ -286,29 +287,29 @@ func (s *ReleaseServer) GetReleaseContent(c ctx.Context, req *services.GetReleas
} }
func (s *ReleaseServer) GetReleaseLogs(svc services.ReleaseService_GetReleaseLogsServer) error { func (s *ReleaseServer) GetReleaseLogs(svc services.ReleaseService_GetReleaseLogsServer) error {
t := time.NewTicker(time.Second)
done := make(chan struct{}) done := make(chan struct{})
go func() {
for {
select {
case <-t.C:
fmt.Println("Sending a log")
svc.Send(&services.GetReleaseLogsResponse{Log: &release.Log{Log: "Test log!"}})
case <-done:
return
}
}
}()
for { for {
rq, err := svc.Recv() rq, err := svc.Recv()
fmt.Println("Req: ", rq, " Error: ", err)
if err != nil { if err != nil {
fmt.Println("Errored: ", err, ", Closing stream")
done <- struct{}{} done <- struct{}{}
break break
} }
s.logs.Subscribe(rq.Name, )
rq.Name sub := s.logs.Subscribe(rq.Subscription.Release, rq.Subscription.Level, rq.Subscription.Sources...)
go func() {
for {
select {
case l := <-sub.C:
fmt.Println("Sending a log")
svc.Send(&services.GetReleaseLogsResponse{Log: l})
case <-done:
s.logs.Unsubscribe(sub)
return
}
}
}()
} }
return nil return nil

Loading…
Cancel
Save