diff --git a/_proto/hapi/services/tiller.proto b/_proto/hapi/services/tiller.proto index 7e5228359..4cfdda8ba 100644 --- a/_proto/hapi/services/tiller.proto +++ b/_proto/hapi/services/tiller.proto @@ -63,9 +63,9 @@ message ListReleasesRequest { // Offset is the last release name that was seen. The next listing // operation will start with the name after this one. - // Example: If list one returns albert, bernie, carl and we supply - // carl as the offset, the next one should begin with the next release name - // after carl (e.g. dennis). + // Example: If list one returns albert, bernie, carl, and sets 'next: dennis'. + // dennis is the offset. Supplying 'dennis' for the next request should + // cause the next batch to return a set of results starting with 'dennis'. string offset = 2; // SortBy is the sort field that the ListReleases server should sort data before returning. @@ -100,17 +100,15 @@ message ListReleasesResponse { // Count is the expected total number of releases to be returned. int64 count = 1; - // Offset is the last-seen release name, used to offset the next set. - string offset = 2; + // Next is the name of the next release. If this is other than an empty + // string, it means there are more results. + string next = 2; // Total is the total number of queryable releases. int64 total = 3; // Releases is the list of found release objects. repeated hapi.release.Release releases = 4; - - // More indicates whether there are more objects to retrieve. - bool more = 5; } // GetReleaseStatusRequest is a request to get the status of a release. diff --git a/cmd/helm/list.go b/cmd/helm/list.go index c0731159d..6ce0757ed 100644 --- a/cmd/helm/list.go +++ b/cmd/helm/list.go @@ -57,7 +57,7 @@ func init() { f.BoolVarP(&listByDate, "date", "d", false, "sort by release date") f.BoolVarP(&listSortDesc, "reverse", "r", false, "reverse the sort order") f.IntVarP(&listMax, "max", "m", 256, "maximum number of releases to fetch") - f.StringVarP(&listOffset, "offset", "o", "", "the last seen release name, used to offset from start value") + f.StringVarP(&listOffset, "offset", "o", "", "the next release name in the list, used to offset from start value") RootCommand.AddCommand(listCommand) } @@ -83,6 +83,10 @@ func listCmd(cmd *cobra.Command, args []string) error { return prettyError(err) } + if res.Next != "" { + fmt.Printf("\tnext: %s", res.Next) + } + rels := res.Releases if listLong { return formatList(rels) diff --git a/cmd/tiller/release_server.go b/cmd/tiller/release_server.go index 36f6bf087..f08573128 100644 --- a/cmd/tiller/release_server.go +++ b/cmd/tiller/release_server.go @@ -44,7 +44,6 @@ var ( var ListDefaultLimit int64 = 512 func (s *releaseServer) ListReleases(req *services.ListReleasesRequest, stream services.ReleaseService_ListReleasesServer) error { - more := false rels, err := s.env.Releases.List() if err != nil { return err @@ -81,7 +80,7 @@ func (s *releaseServer) ListReleases(req *services.ListReleasesRequest, stream s i := -1 for ii, cur := range rels { if cur.Name == req.Offset { - i = ii + 1 + i = ii } } if i == -1 { @@ -100,22 +99,18 @@ func (s *releaseServer) ListReleases(req *services.ListReleasesRequest, stream s req.Limit = ListDefaultLimit } + next := "" if l > req.Limit { - more = true + next = rels[req.Limit].Name rels = rels[0:req.Limit] l = int64(len(rels)) } - last := "" - if l > 0 { - last = rels[l-1].Name - } res := &services.ListReleasesResponse{ - Offset: last, + Next: next, Count: l, Total: total, Releases: rels, - More: more, } stream.Send(res) return nil diff --git a/pkg/proto/hapi/services/tiller.pb.go b/pkg/proto/hapi/services/tiller.pb.go index eb17fa4cd..6217f67c9 100644 --- a/pkg/proto/hapi/services/tiller.pb.go +++ b/pkg/proto/hapi/services/tiller.pb.go @@ -135,14 +135,13 @@ func (*ListSort) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} type ListReleasesResponse struct { // Count is the expected total number of releases to be returned. Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"` - // Offset is the last-seen release name, used to offset the next set. - Offset string `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"` + // Next is the name of the next release. If this is other than an empty + // string, it means there are more results. + Next string `protobuf:"bytes,2,opt,name=next" json:"next,omitempty"` // Total is the total number of queryable releases. Total int64 `protobuf:"varint,3,opt,name=total" json:"total,omitempty"` // Releases is the list of found release objects. Releases []*hapi_release2.Release `protobuf:"bytes,4,rep,name=releases" json:"releases,omitempty"` - // More indicates whether there are more objects to retrieve. - More bool `protobuf:"varint,5,opt,name=more" json:"more,omitempty"` } func (m *ListReleasesResponse) Reset() { *m = ListReleasesResponse{} } @@ -583,49 +582,48 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{ } var fileDescriptor0 = []byte{ - // 689 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x55, 0xdd, 0x6e, 0xd3, 0x4c, - 0x10, 0xad, 0x9b, 0x34, 0x3f, 0xd3, 0xaf, 0x55, 0x3a, 0x5f, 0x9a, 0x04, 0x5f, 0x20, 0xb4, 0x12, - 0x50, 0x0a, 0x75, 0x20, 0xdc, 0x23, 0xa5, 0x6d, 0x54, 0x55, 0x0d, 0xa9, 0xb4, 0xa1, 0x20, 0x71, - 0x41, 0xe5, 0xb6, 0x1b, 0x6a, 0xe4, 0xd8, 0xc1, 0xbb, 0xa9, 0xd4, 0x07, 0xe0, 0x41, 0x78, 0x0b, - 0x1e, 0x88, 0x07, 0x61, 0xbd, 0xeb, 0xb5, 0xea, 0xd4, 0x86, 0xa8, 0x37, 0xf6, 0xae, 0xcf, 0xd9, - 0x39, 0xb3, 0x67, 0x66, 0x12, 0xb0, 0xaf, 0xdd, 0x99, 0xd7, 0xe5, 0x2c, 0xba, 0xf1, 0x2e, 0x19, - 0xef, 0x0a, 0xcf, 0xf7, 0x59, 0xe4, 0xcc, 0xa2, 0x50, 0x84, 0xd8, 0x8c, 0x31, 0xc7, 0x60, 0x8e, - 0xc6, 0xec, 0x96, 0x3a, 0x71, 0x79, 0xed, 0x46, 0x42, 0x3f, 0x35, 0xdb, 0x6e, 0xdf, 0xfd, 0x1e, - 0x06, 0x13, 0xef, 0x6b, 0x02, 0x68, 0x89, 0x88, 0xf9, 0xcc, 0xe5, 0xcc, 0xbc, 0x33, 0x87, 0x0c, - 0xe6, 0x05, 0x93, 0x50, 0x03, 0xe4, 0xb7, 0x05, 0xff, 0x0f, 0x3d, 0x2e, 0xa8, 0x86, 0x38, 0x65, - 0xdf, 0xe7, 0x8c, 0x0b, 0x6c, 0xc2, 0x9a, 0xef, 0x4d, 0x3d, 0xd1, 0xb1, 0x9e, 0x58, 0x3b, 0x25, - 0xaa, 0x37, 0xd8, 0x82, 0x4a, 0x38, 0x99, 0x70, 0x26, 0x3a, 0xab, 0xf2, 0x73, 0x9d, 0x26, 0x3b, - 0x7c, 0x07, 0x55, 0x1e, 0x46, 0xe2, 0xfc, 0xe2, 0xb6, 0x53, 0x92, 0xc0, 0x66, 0xef, 0xa9, 0x93, - 0x77, 0x27, 0x27, 0x56, 0x1a, 0x4b, 0xa2, 0x13, 0x3f, 0xf6, 0x6f, 0x69, 0x85, 0xab, 0x77, 0x1c, - 0x77, 0xe2, 0xf9, 0x82, 0x45, 0x9d, 0xb2, 0x8e, 0xab, 0x77, 0x78, 0x04, 0xa0, 0xe2, 0x86, 0xd1, - 0x95, 0xc4, 0xd6, 0x54, 0xe8, 0x9d, 0x25, 0x42, 0x9f, 0xc6, 0x7c, 0x5a, 0xe7, 0x66, 0x49, 0xbe, - 0x40, 0xcd, 0x10, 0x48, 0x0f, 0x2a, 0x5a, 0x1e, 0xd7, 0xa1, 0x7a, 0x36, 0x3a, 0x19, 0x9d, 0x7e, - 0x1a, 0x35, 0x56, 0xb0, 0x06, 0xe5, 0x51, 0xff, 0xfd, 0xa0, 0x61, 0xe1, 0x16, 0x6c, 0x0c, 0xfb, - 0xe3, 0x0f, 0xe7, 0x74, 0x30, 0x1c, 0xf4, 0xc7, 0x83, 0xc3, 0xc6, 0x2a, 0x79, 0x0c, 0xf5, 0x34, - 0x2e, 0x56, 0xa1, 0xd4, 0x1f, 0x1f, 0xe8, 0x23, 0x87, 0x03, 0xb9, 0xb2, 0xc8, 0x4f, 0x0b, 0x9a, - 0x59, 0x1b, 0xf9, 0x2c, 0x0c, 0x38, 0x8b, 0x7d, 0xbc, 0x0c, 0xe7, 0x41, 0xea, 0xa3, 0xda, 0x14, - 0xfa, 0x28, 0xd9, 0x22, 0x14, 0xae, 0xaf, 0x5c, 0x94, 0x6c, 0xb5, 0xc1, 0x37, 0x50, 0x4b, 0x2a, - 0xc7, 0xa5, 0x3f, 0xa5, 0x9d, 0xf5, 0xde, 0xb6, 0xf6, 0xc0, 0xd4, 0x38, 0x51, 0xa5, 0x29, 0x0d, - 0x11, 0xca, 0xd3, 0x30, 0x62, 0xca, 0xb2, 0x1a, 0x55, 0x6b, 0xb2, 0x07, 0xed, 0x23, 0x66, 0x32, - 0x1c, 0x0b, 0x57, 0xcc, 0xd3, 0x6a, 0x4b, 0x7a, 0xe0, 0x4e, 0x99, 0x4a, 0xb2, 0x4e, 0xd5, 0x9a, - 0x7c, 0x84, 0xce, 0x7d, 0x7a, 0x72, 0xab, 0x1c, 0x3e, 0x3e, 0x83, 0x72, 0xdc, 0x57, 0xea, 0x46, - 0xeb, 0x3d, 0xcc, 0x66, 0x78, 0x2c, 0x11, 0xaa, 0x70, 0xe2, 0xdc, 0x8d, 0x7b, 0x10, 0x06, 0x82, - 0x05, 0xe2, 0x6f, 0x79, 0x0c, 0xe1, 0x51, 0x0e, 0x3f, 0x49, 0xa4, 0x0b, 0xd5, 0x44, 0x42, 0x9d, - 0x29, 0x74, 0xc6, 0xb0, 0x48, 0x0b, 0x9a, 0x67, 0xb3, 0x2b, 0x57, 0x30, 0x83, 0x68, 0x65, 0xd2, - 0x86, 0xed, 0x85, 0xef, 0x5a, 0x81, 0xfc, 0xb0, 0x60, 0xfb, 0x38, 0xe0, 0xb2, 0x0e, 0x7e, 0xf6, - 0x08, 0x3e, 0x97, 0xa5, 0x8d, 0xa7, 0x30, 0x51, 0xde, 0xd2, 0xca, 0x7a, 0x54, 0x0f, 0xe2, 0x27, - 0xd5, 0x38, 0xee, 0x42, 0xe5, 0xc6, 0xf5, 0xe5, 0x99, 0xac, 0x37, 0x09, 0x53, 0x8d, 0x30, 0x4d, - 0x18, 0xd8, 0x86, 0xea, 0x55, 0x74, 0x7b, 0x1e, 0xcd, 0x03, 0xd5, 0x03, 0x35, 0x5a, 0x91, 0x5b, - 0x3a, 0x0f, 0xc8, 0x31, 0xb4, 0x16, 0xd3, 0x78, 0xa8, 0x07, 0xb2, 0x11, 0xce, 0x02, 0x2f, 0xf7, - 0x4e, 0x79, 0x05, 0x38, 0x81, 0xce, 0x7d, 0xfa, 0x03, 0xb5, 0x7b, 0xbf, 0xd6, 0x60, 0xd3, 0xf4, - 0x94, 0x9e, 0x60, 0xf4, 0xe0, 0xbf, 0xbb, 0xa3, 0x83, 0x2f, 0x8a, 0x07, 0x7c, 0xe1, 0x57, 0xca, - 0xde, 0x5d, 0x86, 0x9a, 0x14, 0x72, 0xe5, 0xb5, 0x85, 0x1c, 0x1a, 0x8b, 0x3d, 0x8d, 0x7b, 0xf9, - 0x31, 0x0a, 0x46, 0xc5, 0x76, 0x96, 0xa5, 0x1b, 0x59, 0xbc, 0x81, 0xad, 0x7b, 0x0d, 0x8c, 0xff, - 0x0c, 0x93, 0x9d, 0x0c, 0xbb, 0xbb, 0x34, 0x3f, 0xd5, 0xfd, 0x06, 0x1b, 0x99, 0x96, 0xc6, 0x02, - 0xb7, 0xf2, 0xe6, 0xc1, 0x7e, 0xb9, 0x14, 0x37, 0xd5, 0x9a, 0xc2, 0x66, 0xb6, 0x3b, 0xb1, 0x20, - 0x40, 0xee, 0x28, 0xd9, 0xaf, 0x96, 0x23, 0xa7, 0x72, 0xb2, 0x8e, 0x8b, 0x2d, 0x59, 0x54, 0xc7, - 0x82, 0x4e, 0x2f, 0xaa, 0x63, 0x51, 0xa7, 0x93, 0x95, 0x7d, 0xf8, 0x5c, 0x33, 0xec, 0x8b, 0x8a, - 0xfa, 0xf7, 0x7c, 0xfb, 0x27, 0x00, 0x00, 0xff, 0xff, 0x81, 0xdd, 0x53, 0x62, 0xd7, 0x07, 0x00, - 0x00, + // 682 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x55, 0xdd, 0x4e, 0x13, 0x41, + 0x14, 0x66, 0x69, 0x69, 0xcb, 0x41, 0x48, 0x39, 0x96, 0xb6, 0xee, 0x85, 0x31, 0x93, 0xa8, 0x88, + 0xb2, 0xd5, 0x7a, 0x6f, 0x52, 0xa0, 0x21, 0x84, 0x5a, 0x92, 0xa9, 0x68, 0xe2, 0x85, 0x64, 0x81, + 0xa9, 0xac, 0x59, 0x76, 0xeb, 0xce, 0x94, 0xc8, 0x03, 0x78, 0xe1, 0x1b, 0xf9, 0x40, 0x3e, 0x88, + 0xb3, 0x33, 0x3b, 0x1b, 0xb6, 0xdd, 0xd5, 0x86, 0x9b, 0xdd, 0x39, 0xfb, 0x7d, 0xe7, 0x7c, 0x67, + 0xce, 0x4f, 0x0b, 0xf6, 0x95, 0x3b, 0xf1, 0x3a, 0x9c, 0x45, 0x37, 0xde, 0x05, 0xe3, 0x1d, 0xe1, + 0xf9, 0x3e, 0x8b, 0x9c, 0x49, 0x14, 0x8a, 0x10, 0x1b, 0x31, 0xe6, 0x18, 0xcc, 0xd1, 0x98, 0xdd, + 0x54, 0x1e, 0x17, 0x57, 0x6e, 0x24, 0xf4, 0x53, 0xb3, 0xed, 0xd6, 0xdd, 0xef, 0x61, 0x30, 0xf6, + 0xbe, 0x26, 0x80, 0x96, 0x88, 0x98, 0xcf, 0x5c, 0xce, 0xcc, 0x3b, 0xe3, 0x64, 0x30, 0x2f, 0x18, + 0x87, 0x1a, 0x20, 0x7f, 0x2c, 0x78, 0x38, 0xf0, 0xb8, 0xa0, 0x1a, 0xe2, 0x94, 0x7d, 0x9f, 0x32, + 0x2e, 0xb0, 0x01, 0x2b, 0xbe, 0x77, 0xed, 0x89, 0xb6, 0xf5, 0xc4, 0xda, 0x2e, 0x51, 0x6d, 0x60, + 0x13, 0x2a, 0xe1, 0x78, 0xcc, 0x99, 0x68, 0x2f, 0xcb, 0xcf, 0xab, 0x34, 0xb1, 0xf0, 0x1d, 0x54, + 0x79, 0x18, 0x89, 0xb3, 0xf3, 0xdb, 0x76, 0x49, 0x02, 0x1b, 0xdd, 0xa7, 0x4e, 0xde, 0x9d, 0x9c, + 0x58, 0x69, 0x24, 0x89, 0x4e, 0xfc, 0xd8, 0xbb, 0xa5, 0x15, 0xae, 0xde, 0x71, 0xdc, 0xb1, 0xe7, + 0x0b, 0x16, 0xb5, 0xcb, 0x3a, 0xae, 0xb6, 0xf0, 0x10, 0x40, 0xc5, 0x0d, 0xa3, 0x4b, 0x89, 0xad, + 0xa8, 0xd0, 0xdb, 0x0b, 0x84, 0x3e, 0x89, 0xf9, 0x74, 0x95, 0x9b, 0x23, 0xf9, 0x02, 0x35, 0x43, + 0x20, 0x5d, 0xa8, 0x68, 0x79, 0x5c, 0x83, 0xea, 0xe9, 0xf0, 0x78, 0x78, 0xf2, 0x69, 0x58, 0x5f, + 0xc2, 0x1a, 0x94, 0x87, 0xbd, 0xf7, 0xfd, 0xba, 0x85, 0x9b, 0xb0, 0x3e, 0xe8, 0x8d, 0x3e, 0x9c, + 0xd1, 0xfe, 0xa0, 0xdf, 0x1b, 0xf5, 0x0f, 0xea, 0xcb, 0xe4, 0x31, 0xac, 0xa6, 0x71, 0xb1, 0x0a, + 0xa5, 0xde, 0x68, 0x5f, 0xbb, 0x1c, 0xf4, 0xe5, 0xc9, 0x22, 0xbf, 0x2c, 0x68, 0x64, 0xcb, 0xc8, + 0x27, 0x61, 0xc0, 0x59, 0x5c, 0xc7, 0x8b, 0x70, 0x1a, 0xa4, 0x75, 0x54, 0x06, 0x22, 0x94, 0x03, + 0xf6, 0xc3, 0x54, 0x51, 0x9d, 0x63, 0xa6, 0x08, 0x85, 0xeb, 0xab, 0x0a, 0x4a, 0xa6, 0x32, 0xf0, + 0x0d, 0xd4, 0x92, 0xae, 0x71, 0x59, 0x9b, 0xd2, 0xf6, 0x5a, 0x77, 0x4b, 0xdf, 0xdf, 0xf4, 0x37, + 0x51, 0xa4, 0x29, 0x8d, 0xec, 0x42, 0xeb, 0x90, 0x99, 0x4c, 0x46, 0xc2, 0x15, 0xd3, 0xb4, 0xab, + 0xb1, 0xae, 0x7b, 0xcd, 0x54, 0x32, 0xb1, 0xae, 0x3c, 0x93, 0x8f, 0xd0, 0x9e, 0xa7, 0x27, 0xd9, + 0xe7, 0xf0, 0xf1, 0x19, 0x94, 0xe3, 0xf9, 0x51, 0xb9, 0xaf, 0x75, 0x31, 0x9b, 0xcd, 0x91, 0x44, + 0xa8, 0xc2, 0x89, 0x73, 0x37, 0xee, 0x7e, 0x18, 0x08, 0x16, 0x88, 0x7f, 0xe5, 0x31, 0x80, 0x47, + 0x39, 0xfc, 0x24, 0x91, 0x0e, 0x54, 0x13, 0x09, 0xe5, 0x53, 0x58, 0x05, 0xc3, 0x22, 0x4d, 0x68, + 0x9c, 0x4e, 0x2e, 0x5d, 0xc1, 0x0c, 0xa2, 0x95, 0x49, 0x0b, 0xb6, 0x66, 0xbe, 0x6b, 0x05, 0xf2, + 0xd3, 0x82, 0xad, 0xa3, 0x80, 0xcb, 0x9a, 0xfb, 0x59, 0x17, 0x7c, 0x2e, 0x5b, 0x18, 0x6f, 0x5b, + 0xa2, 0xbc, 0xa9, 0x95, 0xf5, 0x4a, 0xee, 0xc7, 0x4f, 0xaa, 0x71, 0xdc, 0x81, 0xca, 0x8d, 0xeb, + 0x4b, 0x9f, 0x6c, 0x6d, 0x12, 0xa6, 0x5a, 0x55, 0x9a, 0x30, 0xb0, 0x05, 0xd5, 0xcb, 0xe8, 0xf6, + 0x2c, 0x9a, 0x06, 0xaa, 0xdf, 0x35, 0x5a, 0x91, 0x26, 0x9d, 0x06, 0xe4, 0x08, 0x9a, 0xb3, 0x69, + 0xdc, 0xb7, 0x06, 0x72, 0x10, 0x4e, 0x03, 0x2f, 0xf7, 0x4e, 0x79, 0x0d, 0x38, 0x86, 0xf6, 0x3c, + 0xfd, 0x9e, 0xda, 0xdd, 0xdf, 0x2b, 0xb0, 0x61, 0x66, 0x4a, 0x6f, 0x2a, 0x7a, 0xf0, 0xe0, 0xee, + 0x8a, 0xe0, 0x8b, 0xe2, 0x45, 0x9e, 0xf9, 0x35, 0xb2, 0x77, 0x16, 0xa1, 0x26, 0x8d, 0x5c, 0x7a, + 0x6d, 0x21, 0x87, 0xfa, 0xec, 0x4c, 0xe3, 0x6e, 0x7e, 0x8c, 0x82, 0x55, 0xb1, 0x9d, 0x45, 0xe9, + 0x46, 0x16, 0x6f, 0x60, 0x73, 0x6e, 0x80, 0xf1, 0xbf, 0x61, 0xb2, 0x9b, 0x61, 0x77, 0x16, 0xe6, + 0xa7, 0xba, 0xdf, 0x60, 0x3d, 0x33, 0xd2, 0x58, 0x50, 0xad, 0xbc, 0x7d, 0xb0, 0x5f, 0x2e, 0xc4, + 0x4d, 0xb5, 0xae, 0x61, 0x23, 0x3b, 0x9d, 0x58, 0x10, 0x20, 0x77, 0x95, 0xec, 0x57, 0x8b, 0x91, + 0x53, 0x39, 0xd9, 0xc7, 0xd9, 0x91, 0x2c, 0xea, 0x63, 0xc1, 0xa4, 0x17, 0xf5, 0xb1, 0x68, 0xd2, + 0xc9, 0xd2, 0x1e, 0x7c, 0xae, 0x19, 0xf6, 0x79, 0x45, 0xfd, 0x4b, 0xbe, 0xfd, 0x1b, 0x00, 0x00, + 0xff, 0xff, 0x9a, 0xaa, 0x47, 0x7a, 0xbf, 0x07, 0x00, 0x00, }