From 0b9683e193c0ac10f58cfb96ff22e3425cace372 Mon Sep 17 00:00:00 2001 From: Matt Butcher Date: Mon, 18 Apr 2016 12:33:25 -0600 Subject: [PATCH] feat(tiller): add release server stub --- _proto/hapi/chart/chart.proto | 15 +++-- _proto/hapi/chart/config.proto | 1 + _proto/hapi/services/tiller.proto | 7 +++ cmd/tiller/releases_server.go | 47 ++++++++++++++ cmd/tiller/server.go | 46 -------------- cmd/tiller/server_test.go | 7 +-- cmd/tiller/tiller.go | 20 +++++- pkg/proto/hapi/chart/chart.pb.go | 37 +++++++---- pkg/proto/hapi/chart/config.pb.go | 10 +-- pkg/proto/hapi/services/tiller.pb.go | 94 +++++++++++++++++++--------- 10 files changed, 180 insertions(+), 104 deletions(-) create mode 100644 cmd/tiller/releases_server.go delete mode 100644 cmd/tiller/server.go diff --git a/_proto/hapi/chart/chart.proto b/_proto/hapi/chart/chart.proto index 67bb79ee4..150bd6a14 100644 --- a/_proto/hapi/chart/chart.proto +++ b/_proto/hapi/chart/chart.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package hapi.chart; +import "hapi/chart/config.proto"; import "hapi/chart/metadata.proto"; import "hapi/chart/template.proto"; @@ -13,12 +14,16 @@ option go_package = "chart"; // optionally parameterizable templates, and zero or more charts (dependencies). // message Chart { - // TODO + // Contents of the Chartfile. hapi.chart.Metadata metadata = 1; - - // TODO + + // Templates for this chart. hapi.chart.Templates templates = 2; - - // TODO + + // Charts that this chart depends on. repeated Chart dependencies = 3; + + // Default config for this template. + hapi.chart.Config values = 4; + } diff --git a/_proto/hapi/chart/config.proto b/_proto/hapi/chart/config.proto index e5c51e9a7..541564268 100644 --- a/_proto/hapi/chart/config.proto +++ b/_proto/hapi/chart/config.proto @@ -10,4 +10,5 @@ option go_package = "chart"; // A config supplies values to the parametrizable templates of a chart. // message Config { + string raw = 1; } diff --git a/_proto/hapi/services/tiller.proto b/_proto/hapi/services/tiller.proto index 6704477f8..34fd9687a 100644 --- a/_proto/hapi/services/tiller.proto +++ b/_proto/hapi/services/tiller.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package hapi.services.tiller; +import "hapi/chart/chart.proto"; +import "hapi/chart/config.proto"; import "hapi/release/release.proto"; import "hapi/release/status.proto"; @@ -163,6 +165,10 @@ message UpdateReleaseResponse { // TODO // message InstallReleaseRequest { + // Chart is the protobuf representation of a chart. + hapi.chart.Chart chart = 1; + // Values is a string containing (unparsed) TOML values. + hapi.chart.Config values = 2; } // @@ -171,6 +177,7 @@ message InstallReleaseRequest { // TODO // message InstallReleaseResponse { + hapi.release.Release release = 1; } // diff --git a/cmd/tiller/releases_server.go b/cmd/tiller/releases_server.go new file mode 100644 index 000000000..a5b0da9ae --- /dev/null +++ b/cmd/tiller/releases_server.go @@ -0,0 +1,47 @@ +package main + +import ( + "errors" + + "github.com/deis/tiller/cmd/tiller/environment" + "github.com/deis/tiller/pkg/proto/hapi/services" + ctx "golang.org/x/net/context" +) + +func init() { + srv := &releaseServer{ + env: env, + } + services.RegisterReleaseServiceServer(rootServer, srv) +} + +type releaseServer struct { + env *environment.Environment +} + +// errNotImplemented is a temporary error for uninmplemented callbacks. +var errNotImplemented = errors.New("not implemented") + +func (s *releaseServer) ListReleases(req *services.ListReleasesRequest, stream services.ReleaseService_ListReleasesServer) error { + return errNotImplemented +} + +func (s *releaseServer) GetReleaseStatus(c ctx.Context, req *services.GetReleaseStatusRequest) (*services.GetReleaseStatusResponse, error) { + return nil, errNotImplemented +} + +func (s *releaseServer) GetReleaseContent(c ctx.Context, req *services.GetReleaseContentRequest) (*services.GetReleaseContentResponse, error) { + return nil, errNotImplemented +} + +func (s *releaseServer) UpdateRelease(c ctx.Context, req *services.UpdateReleaseRequest) (*services.UpdateReleaseResponse, error) { + return nil, errNotImplemented +} + +func (s *releaseServer) InstallRelease(c ctx.Context, req *services.InstallReleaseRequest) (*services.InstallReleaseResponse, error) { + return &services.InstallReleaseResponse{}, errNotImplemented +} + +func (s *releaseServer) UninstallRelease(c ctx.Context, req *services.UninstallReleaseRequest) (*services.UninstallReleaseResponse, error) { + return nil, errNotImplemented +} diff --git a/cmd/tiller/server.go b/cmd/tiller/server.go deleted file mode 100644 index 5a98244db..000000000 --- a/cmd/tiller/server.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -import ( - "net" - - "github.com/deis/tiller/cmd/tiller/environment" - "github.com/deis/tiller/pkg/hapi" - ctx "golang.org/x/net/context" - "google.golang.org/grpc" -) - -type server struct { - Environment *environment.Environment -} - -// newServer creates a new server with the default environment. -// -// TODO: This can take a configuration object of some sort so that we can -// initialize the environment with the correct stuff. -func newServer() *server { - return &server{ - Environment: environment.New(), - } -} - -func (s *server) Ready(c ctx.Context, req *hapi.PingRequest) (*hapi.PingResponse, error) { - return &hapi.PingResponse{Status: "OK"}, nil -} - -// startServer starts a new gRPC server listening on the given address. -// -// addr must conform to the requirements of "net.Listen". -func startServer(addr string) error { - lstn, err := net.Listen("tcp", addr) - if err != nil { - return nil - } - - hserver := newServer() - - srv := grpc.NewServer() - hapi.RegisterProbeServer(srv, hserver) - srv.Serve(lstn) - - return nil -} diff --git a/cmd/tiller/server_test.go b/cmd/tiller/server_test.go index 82efbfe6a..58a79744e 100644 --- a/cmd/tiller/server_test.go +++ b/cmd/tiller/server_test.go @@ -13,18 +13,17 @@ import ( var _ environment.Engine = &engine.Engine{} var _ environment.ReleaseStorage = storage.NewMemory() -func TestNewServer(t *testing.T) { +func TestInit(t *testing.T) { defer func() { if recover() != nil { t.Fatalf("Panic trapped. Check EngineYard.Default()") } }() - s := newServer() // This will panic if it is not correct. - s.Environment.EngineYard.Default() + env.EngineYard.Default() - e, ok := s.Environment.EngineYard.Get(environment.GoTplEngine) + e, ok := env.EngineYard.Get(environment.GoTplEngine) if !ok { t.Fatalf("Could not find GoTplEngine") } diff --git a/cmd/tiller/tiller.go b/cmd/tiller/tiller.go index 5fb3b524b..98ccec73a 100644 --- a/cmd/tiller/tiller.go +++ b/cmd/tiller/tiller.go @@ -2,11 +2,20 @@ package main import ( "fmt" + "net" "os" "github.com/codegangsta/cli" + "github.com/deis/tiller/cmd/tiller/environment" + "google.golang.org/grpc" ) +// rootServer is the root gRPC server. +// +// Each gRPC service registers itself to this server during init(). +var rootServer *grpc.Server = grpc.NewServer() +var env = environment.New() + func main() { app := cli.NewApp() app.Name = "tiller" @@ -17,7 +26,16 @@ func main() { } func start(c *cli.Context) { - if err := startServer(":44134"); err != nil { + addr := ":44134" + lstn, err := net.Listen("tcp", addr) + if err != nil { + fmt.Fprintf(os.Stderr, "Server died: %s\n", err) + os.Exit(1) + } + + fmt.Printf("Tiller is running on %s\n", addr) + + if err := rootServer.Serve(lstn); err != nil { fmt.Fprintf(os.Stderr, "Server died: %s\n", err) os.Exit(1) } diff --git a/pkg/proto/hapi/chart/chart.pb.go b/pkg/proto/hapi/chart/chart.pb.go index 36570e173..86c246e83 100644 --- a/pkg/proto/hapi/chart/chart.pb.go +++ b/pkg/proto/hapi/chart/chart.pb.go @@ -40,12 +40,14 @@ const _ = proto.ProtoPackageIsVersion1 // optionally parameterizable templates, and zero or more charts (dependencies). // type Chart struct { - // TODO + // Contents of the Chartfile. Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` - // TODO + // Templates for this chart. Templates *Templates `protobuf:"bytes,2,opt,name=templates" json:"templates,omitempty"` - // TODO + // Charts that this chart depends on. Dependencies []*Chart `protobuf:"bytes,3,rep,name=dependencies" json:"dependencies,omitempty"` + // Default config for this template. + Values *Config `protobuf:"bytes,4,opt,name=values" json:"values,omitempty"` } func (m *Chart) Reset() { *m = Chart{} } @@ -74,21 +76,30 @@ func (m *Chart) GetDependencies() []*Chart { return nil } +func (m *Chart) GetValues() *Config { + if m != nil { + return m.Values + } + return nil +} + func init() { proto.RegisterType((*Chart)(nil), "hapi.chart.Chart") } var fileDescriptor0 = []byte{ - // 169 bytes of a gzipped FileDescriptorProto + // 200 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x12, 0xcb, 0x48, 0x2c, 0xc8, 0xd4, 0x4f, 0xce, 0x48, 0x2c, 0x2a, 0x81, 0x90, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x5c, - 0x20, 0x71, 0x3d, 0xb0, 0x88, 0x94, 0x24, 0x92, 0x9a, 0xdc, 0xd4, 0x92, 0xc4, 0x94, 0xc4, 0x92, - 0x44, 0x88, 0x32, 0x14, 0xa9, 0x92, 0xd4, 0xdc, 0x82, 0x9c, 0xc4, 0x92, 0x54, 0x88, 0x94, 0xd2, - 0x52, 0x46, 0x2e, 0x56, 0x67, 0x90, 0x84, 0x90, 0x01, 0x17, 0x07, 0x4c, 0x9b, 0x04, 0xa3, 0x02, - 0xa3, 0x06, 0xb7, 0x91, 0x88, 0x1e, 0xc2, 0x78, 0x3d, 0x5f, 0xa8, 0x5c, 0x10, 0x5c, 0x95, 0x90, - 0x31, 0x17, 0x27, 0xcc, 0xb4, 0x62, 0x09, 0x26, 0xb0, 0x16, 0x51, 0x64, 0x2d, 0x21, 0x30, 0xc9, - 0x20, 0x84, 0x3a, 0x21, 0x53, 0x2e, 0x9e, 0x94, 0xd4, 0x82, 0xd4, 0xbc, 0x94, 0xd4, 0xbc, 0xe4, - 0x4c, 0xa0, 0x3e, 0x66, 0x05, 0x66, 0xa0, 0x3e, 0x41, 0x64, 0x7d, 0x60, 0xf7, 0x04, 0xa1, 0x28, - 0x73, 0x62, 0x8f, 0x62, 0x05, 0x4b, 0x26, 0xb1, 0x81, 0xdd, 0x6d, 0x0c, 0x08, 0x00, 0x00, 0xff, - 0xff, 0xd3, 0xb1, 0x38, 0xe5, 0x13, 0x01, 0x00, 0x00, + 0x20, 0x71, 0x3d, 0xb0, 0x88, 0x94, 0x38, 0xb2, 0x9a, 0xfc, 0xbc, 0xb4, 0xcc, 0x74, 0x88, 0x22, + 0x29, 0x49, 0x24, 0x89, 0xdc, 0xd4, 0x92, 0xc4, 0x94, 0xc4, 0x92, 0x44, 0x2c, 0x52, 0x25, 0xa9, + 0xb9, 0x05, 0x39, 0x89, 0x25, 0xa9, 0x10, 0x29, 0xa5, 0x8b, 0x8c, 0x5c, 0xac, 0xce, 0x20, 0x09, + 0x21, 0x03, 0x2e, 0x0e, 0x98, 0x36, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x11, 0x3d, 0x84, + 0xbd, 0x7a, 0xbe, 0x50, 0xb9, 0x20, 0xb8, 0x2a, 0x21, 0x63, 0x2e, 0x4e, 0x98, 0x69, 0xc5, 0x12, + 0x4c, 0x60, 0x2d, 0xa2, 0xc8, 0x5a, 0x42, 0x60, 0x92, 0x41, 0x08, 0x75, 0x42, 0xa6, 0x5c, 0x3c, + 0x29, 0xa9, 0x05, 0xa9, 0x79, 0x29, 0xa9, 0x79, 0xc9, 0x99, 0x40, 0x7d, 0xcc, 0x0a, 0xcc, 0x40, + 0x7d, 0x82, 0xc8, 0xfa, 0xc0, 0xee, 0x09, 0x42, 0x51, 0x26, 0xa4, 0xc5, 0xc5, 0x56, 0x96, 0x98, + 0x53, 0x0a, 0xd4, 0xc0, 0x02, 0xb6, 0x48, 0x08, 0x45, 0x03, 0x38, 0x1c, 0x82, 0xa0, 0x2a, 0x9c, + 0xd8, 0xa3, 0x58, 0xc1, 0xe2, 0x49, 0x6c, 0x60, 0x3f, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x12, 0xa6, 0x6a, 0xa8, 0x58, 0x01, 0x00, 0x00, } diff --git a/pkg/proto/hapi/chart/config.pb.go b/pkg/proto/hapi/chart/config.pb.go index 191a7e304..decab3377 100644 --- a/pkg/proto/hapi/chart/config.pb.go +++ b/pkg/proto/hapi/chart/config.pb.go @@ -19,6 +19,7 @@ var _ = math.Inf // A config supplies values to the parametrizable templates of a chart. // type Config struct { + Raw string `protobuf:"bytes,1,opt,name=raw" json:"raw,omitempty"` } func (m *Config) Reset() { *m = Config{} } @@ -31,10 +32,11 @@ func init() { } var fileDescriptor1 = []byte{ - // 74 bytes of a gzipped FileDescriptorProto + // 89 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x12, 0xcf, 0x48, 0x2c, 0xc8, 0xd4, 0x4f, 0xce, 0x48, 0x2c, 0x2a, 0xd1, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2b, 0x28, - 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x02, 0x49, 0xe8, 0x81, 0x25, 0x94, 0x38, 0xb8, 0xd8, 0x9c, 0xc1, - 0x72, 0x4e, 0xec, 0x51, 0xac, 0x60, 0xa1, 0x24, 0x36, 0xb0, 0x2a, 0x63, 0x40, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x98, 0x3b, 0x34, 0xb8, 0x40, 0x00, 0x00, 0x00, + 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x02, 0x49, 0xe8, 0x81, 0x25, 0x94, 0xa4, 0xb8, 0xd8, 0x9c, 0xc1, + 0x72, 0x42, 0x02, 0x5c, 0xcc, 0x45, 0x89, 0xe5, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x20, + 0xa6, 0x13, 0x7b, 0x14, 0x2b, 0x58, 0x51, 0x12, 0x1b, 0x58, 0x9f, 0x31, 0x20, 0x00, 0x00, 0xff, + 0xff, 0xfe, 0xa0, 0x78, 0x2a, 0x52, 0x00, 0x00, 0x00, } diff --git a/pkg/proto/hapi/services/tiller.pb.go b/pkg/proto/hapi/services/tiller.pb.go index e13d3ea9d..b12567750 100644 --- a/pkg/proto/hapi/services/tiller.pb.go +++ b/pkg/proto/hapi/services/tiller.pb.go @@ -7,6 +7,8 @@ package services import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" +import hapi_chart3 "github.com/deis/tiller/pkg/proto/hapi/chart" +import hapi_chart "github.com/deis/tiller/pkg/proto/hapi/chart" import hapi_release2 "github.com/deis/tiller/pkg/proto/hapi/release" import hapi_release "github.com/deis/tiller/pkg/proto/hapi/release" @@ -173,6 +175,10 @@ func (*UpdateReleaseResponse) Descriptor() ([]byte, []int) { return fileDescript // TODO // type InstallReleaseRequest struct { + // Chart is the protobuf representation of a chart. + Chart *hapi_chart3.Chart `protobuf:"bytes,1,opt,name=chart" json:"chart,omitempty"` + // Values is a string containing (unparsed) TOML values. + Values *hapi_chart.Config `protobuf:"bytes,2,opt,name=values" json:"values,omitempty"` } func (m *InstallReleaseRequest) Reset() { *m = InstallReleaseRequest{} } @@ -180,12 +186,27 @@ func (m *InstallReleaseRequest) String() string { return proto.Compac func (*InstallReleaseRequest) ProtoMessage() {} func (*InstallReleaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } +func (m *InstallReleaseRequest) GetChart() *hapi_chart3.Chart { + if m != nil { + return m.Chart + } + return nil +} + +func (m *InstallReleaseRequest) GetValues() *hapi_chart.Config { + if m != nil { + return m.Values + } + return nil +} + // // InstallReleaseResponse: // // TODO // type InstallReleaseResponse struct { + Release *hapi_release2.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"` } func (m *InstallReleaseResponse) Reset() { *m = InstallReleaseResponse{} } @@ -193,6 +214,13 @@ func (m *InstallReleaseResponse) String() string { return proto.Compa func (*InstallReleaseResponse) ProtoMessage() {} func (*InstallReleaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } +func (m *InstallReleaseResponse) GetRelease() *hapi_release2.Release { + if m != nil { + return m.Release + } + return nil +} + // // UninstallReleaseRequest: // @@ -509,35 +537,39 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{ } var fileDescriptor1 = []byte{ - // 469 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x54, 0xcd, 0xd2, 0xd2, 0x30, - 0x14, 0xfd, 0x2a, 0x7e, 0x88, 0x97, 0x9f, 0xd1, 0x58, 0xa0, 0x64, 0x85, 0x59, 0xe1, 0x5f, 0xab, - 0xb8, 0x54, 0x37, 0xb2, 0x70, 0x9c, 0x61, 0x5c, 0xd4, 0x61, 0xe3, 0xc6, 0xa9, 0x18, 0xc6, 0x38, - 0xa5, 0xad, 0x4d, 0x60, 0xe1, 0x3b, 0xf8, 0x3e, 0x3e, 0x9e, 0x34, 0x3f, 0x1d, 0x5a, 0x9a, 0xa1, - 0xae, 0x98, 0xe4, 0x9c, 0x73, 0xef, 0xb9, 0xb9, 0xa7, 0x00, 0xfe, 0x11, 0x65, 0x2c, 0xe0, 0x34, - 0x3f, 0xb2, 0x2d, 0xe5, 0x81, 0x60, 0x71, 0x4c, 0x73, 0x3f, 0xcb, 0x53, 0x91, 0x22, 0xb7, 0xc0, - 0x7c, 0x83, 0xf9, 0x0a, 0xc3, 0x4a, 0x91, 0xd3, 0x98, 0x46, 0x9c, 0x9a, 0x5f, 0xa5, 0xc0, 0xb3, - 0x0a, 0xc6, 0x45, 0x24, 0x0e, 0x5c, 0x41, 0x64, 0x05, 0x8f, 0xd6, 0x8c, 0x8b, 0x50, 0x61, 0x3c, - 0xa4, 0xbf, 0x0e, 0x94, 0x0b, 0xe4, 0xc2, 0x6d, 0xcc, 0xf6, 0x4c, 0x78, 0xce, 0xdc, 0x59, 0x74, - 0x42, 0x75, 0x40, 0x13, 0xe8, 0xa6, 0xbb, 0x1d, 0xa7, 0xc2, 0xbb, 0x23, 0xaf, 0xf5, 0x89, 0xfc, - 0x71, 0xc0, 0xad, 0x56, 0xe1, 0x59, 0x9a, 0x70, 0x5a, 0x94, 0xd9, 0xa6, 0x87, 0xa4, 0x2c, 0x23, - 0x0f, 0xb6, 0x32, 0x05, 0x5b, 0xa4, 0x22, 0x8a, 0xbd, 0x8e, 0x62, 0xcb, 0x03, 0x7a, 0x05, 0x3d, - 0xed, 0x9c, 0x7b, 0x77, 0xe7, 0x9d, 0x45, 0x7f, 0x39, 0xf6, 0xe5, 0x0b, 0x98, 0x19, 0x75, 0xd7, - 0xb0, 0xa4, 0x91, 0xb7, 0x30, 0xfd, 0x40, 0x8d, 0x9b, 0xcf, 0x72, 0x5c, 0x33, 0xd8, 0x63, 0x18, - 0x68, 0xda, 0xd7, 0x24, 0xda, 0x53, 0x69, 0xec, 0x7e, 0xd8, 0xd7, 0x77, 0x9f, 0x4e, 0x57, 0xe4, - 0x37, 0x78, 0x97, 0x6a, 0x3d, 0xd0, 0x75, 0x39, 0x7a, 0x03, 0x23, 0x43, 0x51, 0x2f, 0x2d, 0xa7, - 0xec, 0x2f, 0xdd, 0xaa, 0x6b, 0x5d, 0x78, 0x98, 0x9f, 0xf7, 0x21, 0xef, 0xce, 0x7b, 0xaf, 0xd2, - 0x44, 0xd0, 0x44, 0xfc, 0x87, 0xf5, 0x35, 0xcc, 0x1a, 0xe4, 0xda, 0x7b, 0x00, 0xf7, 0x34, 0x57, - 0x4a, 0xad, 0xef, 0x68, 0x58, 0x64, 0x02, 0xee, 0x26, 0xfb, 0x1e, 0x09, 0x6a, 0x10, 0x65, 0x84, - 0x4c, 0x61, 0x5c, 0xbb, 0x57, 0x1d, 0x0a, 0xe0, 0x63, 0x72, 0x1a, 0x3a, 0x8e, 0x6b, 0x0a, 0x0f, - 0x26, 0x75, 0x40, 0x4b, 0x66, 0x30, 0xdd, 0x24, 0xac, 0x51, 0x84, 0xc1, 0xbb, 0x84, 0x94, 0x6c, - 0xf9, 0xf7, 0x16, 0x46, 0x66, 0x43, 0xea, 0x43, 0x40, 0x0c, 0x06, 0xe7, 0x19, 0x44, 0x4f, 0xfc, - 0xa6, 0xef, 0xc4, 0x6f, 0x48, 0x3b, 0x7e, 0xda, 0x86, 0xaa, 0x0d, 0xdf, 0xbc, 0x74, 0x10, 0x87, - 0x07, 0xf5, 0x84, 0xa0, 0x17, 0xcd, 0x35, 0x2c, 0x39, 0xc4, 0x7e, 0x5b, 0xba, 0x69, 0x8b, 0x8e, - 0xf0, 0xf0, 0x62, 0xb7, 0xe8, 0x6a, 0x99, 0x6a, 0x86, 0x70, 0xd0, 0x9a, 0x5f, 0xf6, 0xfd, 0x09, - 0xc3, 0xca, 0xb6, 0x91, 0xe5, 0xb5, 0x9a, 0xa2, 0x82, 0x9f, 0xb5, 0xe2, 0x96, 0xbd, 0xf6, 0x30, - 0xaa, 0xe6, 0x04, 0x59, 0x0a, 0x34, 0xc6, 0x0c, 0x3f, 0x6f, 0x47, 0x2e, 0xdb, 0x9d, 0xf6, 0x58, - 0x4f, 0x98, 0x6d, 0x8f, 0x96, 0x90, 0xda, 0xf6, 0x68, 0x0b, 0x2e, 0xb9, 0x79, 0x0f, 0x5f, 0x7a, - 0x86, 0xfd, 0xad, 0x2b, 0xff, 0x84, 0x5f, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x35, 0x75, 0xc2, - 0x92, 0xef, 0x05, 0x00, 0x00, + // 529 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x55, 0x4d, 0x73, 0xd3, 0x30, + 0x10, 0x6d, 0x08, 0x0d, 0x65, 0xd3, 0x66, 0xa8, 0x70, 0x12, 0x47, 0xa7, 0xa2, 0x0b, 0xa5, 0x80, + 0x03, 0xe1, 0x08, 0x5c, 0xc8, 0x81, 0xe9, 0x4c, 0x87, 0x83, 0x99, 0x5e, 0xb8, 0x30, 0x26, 0x28, + 0x54, 0x8c, 0x62, 0x07, 0x4b, 0xc9, 0x81, 0xff, 0xc0, 0xff, 0xe1, 0xe7, 0x61, 0xeb, 0xc3, 0x13, + 0x39, 0xd6, 0xd4, 0xf4, 0xe2, 0x8c, 0xf4, 0xde, 0xee, 0xdb, 0x5d, 0xbd, 0x9d, 0x00, 0xbe, 0x49, + 0xd6, 0x6c, 0x2a, 0x68, 0xbe, 0x65, 0x0b, 0x2a, 0xa6, 0x92, 0x71, 0x4e, 0xf3, 0x68, 0x9d, 0x67, + 0x32, 0x43, 0x41, 0x89, 0x45, 0x16, 0x8b, 0x34, 0x86, 0x47, 0x2a, 0x62, 0x71, 0x93, 0xe4, 0x52, + 0x7f, 0x35, 0x1b, 0x8f, 0x77, 0xef, 0xb3, 0x74, 0xc9, 0x7e, 0x18, 0x40, 0x4b, 0xe4, 0x94, 0xd3, + 0x44, 0x50, 0xfb, 0x6b, 0xb0, 0x89, 0x83, 0x09, 0x99, 0xc8, 0x8d, 0xd0, 0x10, 0x99, 0xc3, 0xe3, + 0x2b, 0x26, 0x64, 0xac, 0x31, 0x11, 0xd3, 0x5f, 0x1b, 0x2a, 0x24, 0x0a, 0xe0, 0x90, 0xb3, 0x15, + 0x93, 0x61, 0xe7, 0xac, 0x73, 0xde, 0x8d, 0xf5, 0x01, 0x8d, 0xa0, 0x97, 0x2d, 0x97, 0x82, 0xca, + 0xf0, 0x9e, 0xba, 0x36, 0x27, 0xf2, 0xa7, 0x03, 0x81, 0x9b, 0x45, 0xac, 0xb3, 0x54, 0xd0, 0x32, + 0xcd, 0x22, 0xdb, 0xa4, 0x55, 0x1a, 0x75, 0xf0, 0xa5, 0x29, 0xd9, 0x32, 0x93, 0x09, 0x0f, 0xbb, + 0x9a, 0xad, 0x0e, 0xe8, 0x35, 0x1c, 0x99, 0xca, 0x45, 0x78, 0xff, 0xac, 0x7b, 0xde, 0x9f, 0x0d, + 0x23, 0x35, 0x32, 0xdb, 0xa3, 0x51, 0x8d, 0x2b, 0x1a, 0x79, 0x07, 0xe3, 0x8f, 0xd4, 0x56, 0xf3, + 0x59, 0xb5, 0x6b, 0x1b, 0x7b, 0x02, 0xc7, 0x86, 0xf6, 0x35, 0x4d, 0x56, 0x54, 0x15, 0xf6, 0x30, + 0xee, 0x9b, 0xbb, 0x4f, 0xc5, 0x15, 0xf9, 0x0d, 0xe1, 0x7e, 0xb4, 0x69, 0xe8, 0xf6, 0x70, 0xf4, + 0x16, 0x06, 0x96, 0xa2, 0x27, 0xad, 0xba, 0xec, 0xcf, 0x02, 0xb7, 0x6a, 0x93, 0xf8, 0x24, 0xdf, + 0xd5, 0x21, 0xef, 0x77, 0xb5, 0xe7, 0x59, 0x2a, 0x69, 0x2a, 0xff, 0xa3, 0xf4, 0x2b, 0x98, 0x34, + 0x84, 0x9b, 0xda, 0xa7, 0xf0, 0xc0, 0x70, 0x55, 0xa8, 0x77, 0x8e, 0x96, 0x45, 0x46, 0x10, 0x5c, + 0xaf, 0xbf, 0x27, 0x92, 0x5a, 0x44, 0x17, 0x42, 0xc6, 0x30, 0xac, 0xdd, 0x6b, 0x05, 0xc2, 0x61, + 0x78, 0x99, 0x16, 0x4d, 0x73, 0xee, 0x46, 0xa0, 0xa7, 0x85, 0x0f, 0x4a, 0xcb, 0x1a, 0xe1, 0x53, + 0x2d, 0xac, 0x7d, 0x3d, 0x2f, 0xbf, 0xb1, 0xc6, 0xd1, 0x05, 0xf4, 0xb6, 0x09, 0x2f, 0x62, 0xcc, + 0xd0, 0x90, 0xc3, 0x54, 0x7e, 0x8f, 0x0d, 0x83, 0x5c, 0xc2, 0xa8, 0xae, 0x76, 0xd7, 0x4e, 0x27, + 0x30, 0xbe, 0x4e, 0x59, 0x53, 0xe9, 0x04, 0x43, 0xb8, 0x0f, 0x69, 0x9d, 0xd9, 0xdf, 0x43, 0x18, + 0x58, 0x9f, 0xe8, 0xfd, 0x45, 0x0c, 0x8e, 0x77, 0x37, 0x01, 0x3d, 0x8b, 0x9a, 0xd6, 0x3b, 0x6a, + 0xd8, 0x39, 0x7c, 0xd1, 0x86, 0x6a, 0x26, 0x7d, 0xf0, 0xaa, 0x83, 0x04, 0x3c, 0xaa, 0xfb, 0x14, + 0xbd, 0x6c, 0xce, 0xe1, 0xd9, 0x06, 0x1c, 0xb5, 0xa5, 0x5b, 0x59, 0xb4, 0x85, 0xd3, 0x3d, 0x87, + 0xa1, 0x5b, 0xd3, 0xb8, 0x4e, 0xc6, 0xd3, 0xd6, 0xfc, 0x4a, 0xf7, 0x27, 0x9c, 0x38, 0x9e, 0x43, + 0x9e, 0x69, 0x35, 0x19, 0x16, 0x3f, 0x6f, 0xc5, 0xad, 0xb4, 0x56, 0x30, 0x70, 0x8d, 0x85, 0x3c, + 0x09, 0x1a, 0xcd, 0x8e, 0x5f, 0xb4, 0x23, 0x57, 0x72, 0xc5, 0x3b, 0xd6, 0x1d, 0xe6, 0x7b, 0x47, + 0x8f, 0x49, 0x7d, 0xef, 0xe8, 0x33, 0x2e, 0x39, 0xf8, 0x00, 0x5f, 0x8e, 0x2c, 0xfb, 0x5b, 0x4f, + 0xfd, 0x15, 0xbc, 0xf9, 0x17, 0x00, 0x00, 0xff, 0xff, 0x75, 0xe1, 0x2e, 0x4f, 0xa6, 0x06, 0x00, + 0x00, }