internal/runtimeconfig: initial prototype
Adding initial prototype of runtimeconfig package which provides ability
to be notified of runtime config changes from Cloud Runtime Configurator
service.
Change-Id: Id5765e15bc960fd001286ee14678c5ff8e2ec168
Reviewed-on: https://go-review.googlesource.com/69297
Reviewed-by: Ross Light <light@google.com>
diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json
index 8d184c8..e532843 100644
--- a/Godeps/Godeps.json
+++ b/Godeps/Godeps.json
@@ -497,6 +497,10 @@
"Rev": "1e559d0a00eef8a9a43151db4665280bd8dd5886"
},
{
+ "ImportPath": "google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1",
+ "Rev": "1e559d0a00eef8a9a43151db4665280bd8dd5886"
+ },
+ {
"ImportPath": "google.golang.org/genproto/googleapis/logging/type",
"Rev": "1e559d0a00eef8a9a43151db4665280bd8dd5886"
},
@@ -505,6 +509,10 @@
"Rev": "1e559d0a00eef8a9a43151db4665280bd8dd5886"
},
{
+ "ImportPath": "google.golang.org/genproto/googleapis/longrunning",
+ "Rev": "1e559d0a00eef8a9a43151db4665280bd8dd5886"
+ },
+ {
"ImportPath": "google.golang.org/genproto/googleapis/rpc/status",
"Rev": "1e559d0a00eef8a9a43151db4665280bd8dd5886"
},
diff --git a/internal/runtimeconfig/_demo/demo.go b/internal/runtimeconfig/_demo/demo.go
new file mode 100644
index 0000000..82f29ad
--- /dev/null
+++ b/internal/runtimeconfig/_demo/demo.go
@@ -0,0 +1,90 @@
+/*
+This binary demonstrates watching over a Runtime Configurator variable using the runtimeconfig
+package. To cancel the Watcher.Watch call, enter 'x' and '<enter>' keys on the terminal.
+*/
+package main
+
+import (
+ "context"
+ "fmt"
+ "log"
+ "os"
+ "path"
+ "time"
+
+ "github.com/golang/gddo/internal/runtimeconfig"
+)
+
+func main() {
+ if len(os.Args) != 4 {
+ fmt.Fprintf(os.Stderr,
+ "Usage: %s <project-id> <config-name> <var-name>\n\n",
+ path.Base(os.Args[0]))
+ os.Exit(1)
+ }
+
+ projectID := os.Args[1]
+ configName := os.Args[2]
+ varName := os.Args[3]
+
+ ctx := context.Background()
+ client, err := runtimeconfig.NewClient(ctx)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer client.Close()
+
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ w, err := client.NewWatcher(ctx, projectID, configName, varName,
+ &runtimeconfig.WatchOptions{WaitTime: 10 * time.Second})
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ go func() {
+ key := make([]byte, 1)
+ for {
+ n, err := os.Stdin.Read(key)
+ if err != nil {
+ log.Printf("stdin error: %v\n", err)
+ }
+ if n == 1 && key[0] == 'x' {
+ log.Println("quiting demo")
+ cancel()
+ time.Sleep(1 * time.Second)
+ os.Exit(0)
+ }
+ }
+ }()
+
+ vrbl := w.Variable()
+ log.Printf("watching variable %v\n", variableString(&vrbl))
+
+ isWatching := true
+ for isWatching {
+ log.Println("waiting for update...")
+ select {
+ case <-ctx.Done():
+ log.Println("done watching")
+ isWatching = false
+ default:
+ err := w.Watch(ctx)
+ vrbl = w.Variable()
+ if err == nil {
+ log.Printf("Updated: %s\n", variableString(&vrbl))
+ } else {
+ log.Println(err)
+ if runtimeconfig.IsDeleted(err) {
+ log.Printf("Deleted: %s\n", variableString(&vrbl))
+ }
+ }
+ }
+ }
+}
+
+func variableString(v *runtimeconfig.Variable) string {
+ return fmt.Sprintf("<name: %q, value: %q, isDeleted: %t, updateTime: %v>",
+ v.Name, string(v.Value), v.IsDeleted, v.UpdateTime)
+}
diff --git a/internal/runtimeconfig/runtimeconfig.go b/internal/runtimeconfig/runtimeconfig.go
new file mode 100644
index 0000000..a29d1f6
--- /dev/null
+++ b/internal/runtimeconfig/runtimeconfig.go
@@ -0,0 +1,239 @@
+// Package runtimeconfig provides a limited set of client-side APIs for the Cloud Runtime
+// Configurator. The Cloud Runtime Configurator service allows projects to store runtime
+// configurations in the cloud and have clients fetch and get notified of changes to configuration
+// values during runtime.
+//
+// This package provides a Client that sets up a Watcher for detecting updates on a Runtime
+// Configurator variable.
+package runtimeconfig
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "sync"
+ "time"
+
+ "github.com/golang/protobuf/ptypes"
+ "google.golang.org/api/option"
+ transport "google.golang.org/api/transport/grpc"
+ pb "google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
+)
+
+// endpoint is the address of the GCP Runtime Configurator API.
+const endPoint = "runtimeconfig.googleapis.com:443"
+
+// List of authentication scopes required for using the Runtime Configurator API.
+var authScopes = []string{
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/cloudruntimeconfig",
+}
+
+const (
+ defaultWaitTimeout = 10 * time.Minute
+ minWaitTimeout = 10 * time.Second
+)
+
+// Client is a RuntimeConfigManager client. It wraps the gRPC client stub and currently exposes
+// only a few APIs primarily for fetching and watching over configuration variables.
+type Client struct {
+ conn *grpc.ClientConn
+ // The gRPC API client.
+ client pb.RuntimeConfigManagerClient
+}
+
+// NewClient constructs a Client instance from given gRPC connection.
+func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
+ opts = append(opts, option.WithEndpoint(endPoint), option.WithScopes(authScopes...))
+ conn, err := transport.Dial(ctx, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &Client{
+ conn: conn,
+ client: pb.NewRuntimeConfigManagerClient(conn),
+ }, nil
+}
+
+// Close tears down the gRPC connection used by this Client.
+func (c *Client) Close() error {
+ return c.conn.Close()
+}
+
+// NewWatcher will fetch variable for given projectID, configName and varName, then constructs a
+// Watcher object containing the fetched variable. Users can then use the Watcher to retrieve the
+// variable as well as wait for changes.
+func (c *Client) NewWatcher(ctx context.Context, projectID, configName, varName string,
+ opts *WatchOptions) (*Watcher, error) {
+
+ name := fmt.Sprintf("projects/%s/configs/%s/variables/%s", projectID, configName, varName)
+ vpb, err := c.client.GetVariable(ctx, &pb.GetVariableRequest{Name: name})
+ if err != nil {
+ return nil, err
+ }
+
+ if opts == nil {
+ opts = &WatchOptions{}
+ }
+ waitTime := opts.WaitTime
+ switch {
+ case waitTime == 0:
+ waitTime = defaultWaitTimeout
+ case waitTime < minWaitTimeout:
+ waitTime = minWaitTimeout
+ }
+
+ // Make sure update time is valid before copying.
+ updateTime, err := parseUpdateTime(vpb)
+ if err != nil {
+ return nil, err
+ }
+
+ w := &Watcher{
+ client: c.client,
+ waitTime: waitTime,
+ lastRPCTime: time.Now(),
+ }
+ copyFromProto(vpb, &w.vrbl, updateTime)
+ return w, nil
+}
+
+// WatchOptions provide optional configurations to the Watcher.
+type WatchOptions struct {
+ // WaitTime controls the frequency of making RPC and checking for updates by the Watch method.
+ // A Watcher keeps track of the last time it made an RPC, when Watch is called, it waits for
+ // configured WaitTime from the last RPC before making another RPC.
+ //
+ // If this option is not set, it defaults to defaultWaitTimeout. If option is set to a value
+ // smaller than minWaitTimeout, it uses minWaitTimeout value instead.
+ WaitTime time.Duration
+}
+
+// Watcher caches a variable in memory and listens for updates from the Runtime Configurator
+// service.
+type Watcher struct {
+ client pb.RuntimeConfigManagerClient
+ waitTime time.Duration
+ lastRPCTime time.Time
+
+ mu sync.Mutex
+ vrbl Variable
+}
+
+// Variable returns a shallow copy of the associated variable of this Watcher object. It is safe to
+// use from multiple goroutines.
+func (w *Watcher) Variable() Variable {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+ return w.vrbl
+}
+
+var errDeleted = errors.New("deleted variable")
+
+// IsDeleted returns true if variable has been deleted.
+func IsDeleted(err error) bool {
+ return err == errDeleted
+}
+
+// Watch blocks until the variable changes, the Context's Done channel closes, or an RPC
+// error occurs.
+//
+// If the variable has a new value, then method returns nil and the value can be retrieved by
+// calling Variable.
+//
+// If the variable is deleted, then method returns an error that will be matched by IsDeleted.
+// Subsequent calls to this method will block until the variable is restored or another error
+// occurs.
+//
+// It is NOT safe to call this method from multiple goroutines.
+//
+// To stop this function from blocking, caller can passed in Context object constructed via
+// WithCancel and call the cancel function.
+func (w *Watcher) Watch(ctx context.Context) error {
+ // Loop to check for changes or continue waiting.
+ for {
+ // Block until waitTime or context cancelled/timed out.
+ waitTime := w.waitTime - time.Now().Sub(w.lastRPCTime)
+ select {
+ case <-time.After(waitTime):
+ case <-ctx.Done():
+ return ctx.Err()
+ }
+
+ // Use GetVariables RPC and check for deltas based on the response. May consider using
+ // ListVariables RPC with Filter=<key> and ReturnValues=false to identify deltas before
+ // doing a GetVariable to potentially save on response size. However, even with
+ // Filter=<key>, the response on ListVariables may return more than one matching variable
+ // and this code will need to iterate through calling more ListVariables RPCs.
+ vpb, err := w.client.GetVariable(ctx, &pb.GetVariableRequest{Name: w.vrbl.Name})
+ w.lastRPCTime = time.Now()
+ if err == nil {
+ updateTime, err := parseUpdateTime(vpb)
+ if err != nil {
+ return err
+ }
+
+ // Determine if there are any changes based on update_time field. If there are, update
+ // cache and return nil, else continue on.
+ // TODO(herbie): It is currently possible to have update_time changed but without any
+ // changes in the content. Need to re-evaluate if this should instead check for actual
+ // content changes.
+ w.mu.Lock()
+ if !w.vrbl.UpdateTime.Equal(updateTime) {
+ copyFromProto(vpb, &w.vrbl, updateTime)
+ w.mu.Unlock()
+ return nil
+ }
+ w.mu.Unlock()
+
+ } else {
+ if st, ok := status.FromError(err); !ok || st.Code() != codes.NotFound {
+ return err
+ }
+ // For RPC not found error, if last known state is not deleted, update and return
+ // errDeleted, else treat as no change has occurred.
+ w.mu.Lock()
+ if !w.vrbl.IsDeleted {
+ w.vrbl.IsDeleted = true
+ w.vrbl.UpdateTime = time.Now().UTC()
+ w.mu.Unlock()
+ return errDeleted
+ }
+ w.mu.Unlock()
+ }
+ }
+}
+
+// Variable contains the runtime configuration data.
+// Treat Value field as read-only. Writes to it may affect other Variable objects containing
+// reference to the same backing array.
+type Variable struct {
+ Name string
+ Value []byte
+ IsDeleted bool
+ UpdateTime time.Time
+}
+
+func copyFromProto(vpb *pb.Variable, vrbl *Variable, updateTime time.Time) {
+ vrbl.Name = vpb.Name
+ vrbl.UpdateTime = updateTime
+ vrbl.IsDeleted = false
+ vrbl.Value = vpb.GetValue()
+ // We currently only expose content in []byte. If proto contains text content, convert that to
+ // []byte.
+ if _, isText := vpb.GetContents().(*pb.Variable_Text); isText {
+ vrbl.Value = []byte(vpb.GetText())
+ }
+}
+
+func parseUpdateTime(vpb *pb.Variable) (time.Time, error) {
+ updateTime, err := ptypes.Timestamp(vpb.GetUpdateTime())
+ if err != nil {
+ return time.Time{}, fmt.Errorf(
+ "variable message for name=%q contains invalid timestamp: %v", vpb.Name, err)
+ }
+ return updateTime, nil
+}
diff --git a/internal/runtimeconfig/runtimeconfig_test.go b/internal/runtimeconfig/runtimeconfig_test.go
new file mode 100644
index 0000000..ee8178e
--- /dev/null
+++ b/internal/runtimeconfig/runtimeconfig_test.go
@@ -0,0 +1,43 @@
+package runtimeconfig
+
+import (
+ "context"
+ "log"
+)
+
+func Example() {
+ // Create a Client object.
+ ctx := context.Background()
+ client, err := NewClient(ctx)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer client.Close()
+
+ // Create a Watcher object.
+ w, err := client.NewWatcher(ctx, "project", "config-name", "food", nil)
+ // Use retrieved Variable and apply to configurations accordingly.
+ log.Printf("value: %s\n", string(w.Variable().Value))
+
+ // Optionally, get a Context with cancel func to stop the Watch call.
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ // Have a separate goroutine that waits for changes.
+ go func() {
+ for {
+ select {
+ case <-ctx.Done():
+ // Cancelled or timed out.
+ return
+ default:
+ if err := w.Watch(ctx); err != nil {
+ // Log or handle other errors
+ continue
+ }
+ // Use updated variable accordingly.
+ log.Printf("value: %s\n", string(w.Variable().Value))
+ }
+ }
+ }()
+}
diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go
new file mode 100644
index 0000000..74e09fa
--- /dev/null
+++ b/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go
@@ -0,0 +1,590 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/runtimeconfig/v1beta1/resources.proto
+
+/*
+Package runtimeconfig is a generated protocol buffer package.
+
+It is generated from these files:
+ google/cloud/runtimeconfig/v1beta1/resources.proto
+ google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto
+
+It has these top-level messages:
+ RuntimeConfig
+ Variable
+ EndCondition
+ Waiter
+ ListConfigsRequest
+ ListConfigsResponse
+ GetConfigRequest
+ CreateConfigRequest
+ UpdateConfigRequest
+ DeleteConfigRequest
+ ListVariablesRequest
+ ListVariablesResponse
+ WatchVariableRequest
+ GetVariableRequest
+ CreateVariableRequest
+ UpdateVariableRequest
+ DeleteVariableRequest
+ ListWaitersRequest
+ ListWaitersResponse
+ GetWaiterRequest
+ CreateWaiterRequest
+ DeleteWaiterRequest
+*/
+package runtimeconfig
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/duration"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
+import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// The `VariableState` describes the last known state of the variable and is
+// used during a `variables().watch` call to distinguish the state of the
+// variable.
+type VariableState int32
+
+const (
+ // Default variable state.
+ VariableState_VARIABLE_STATE_UNSPECIFIED VariableState = 0
+ // The variable was updated, while `variables().watch` was executing.
+ VariableState_UPDATED VariableState = 1
+ // The variable was deleted, while `variables().watch` was executing.
+ VariableState_DELETED VariableState = 2
+)
+
+var VariableState_name = map[int32]string{
+ 0: "VARIABLE_STATE_UNSPECIFIED",
+ 1: "UPDATED",
+ 2: "DELETED",
+}
+var VariableState_value = map[string]int32{
+ "VARIABLE_STATE_UNSPECIFIED": 0,
+ "UPDATED": 1,
+ "DELETED": 2,
+}
+
+func (x VariableState) String() string {
+ return proto.EnumName(VariableState_name, int32(x))
+}
+func (VariableState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+// A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig
+// service. A RuntimeConfig resource consists of metadata and a hierarchy of
+// variables.
+type RuntimeConfig struct {
+ // The resource name of a runtime config. The name must have the format:
+ //
+ // projects/[PROJECT_ID]/configs/[CONFIG_NAME]
+ //
+ // The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
+ // arbitrary name that matches RFC 1035 segment specification. The length of
+ // `[CONFIG_NAME]` must be less than 64 bytes.
+ //
+ // You pick the RuntimeConfig resource name, but the server will validate that
+ // the name adheres to this format. After you create the resource, you cannot
+ // change the resource's name.
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // An optional description of the RuntimeConfig object.
+ Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+}
+
+func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} }
+func (m *RuntimeConfig) String() string { return proto.CompactTextString(m) }
+func (*RuntimeConfig) ProtoMessage() {}
+func (*RuntimeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *RuntimeConfig) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *RuntimeConfig) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+// Describes a single variable within a RuntimeConfig resource.
+// The name denotes the hierarchical variable name. For example,
+// `ports/serving_port` is a valid variable name. The variable value is an
+// opaque string and only leaf variables can have values (that is, variables
+// that do not have any child variables).
+type Variable struct {
+ // The name of the variable resource, in the format:
+ //
+ // projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
+ //
+ // The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
+ // valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
+ // file path naming.
+ //
+ // The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
+ // dashes. Slashes are used as path element separators and are not part of the
+ // `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
+ // non-slash character. Multiple slashes are coalesced into single slash
+ // character. Each path segment should follow RFC 1035 segment specification.
+ // The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
+ //
+ // Once you create a variable, you cannot change the variable name.
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // The the value of the variable. It can be either a binary or a string
+ // value. You must specify one of either `value` or `text`. Specifying both
+ // will cause the server to return an error.
+ //
+ // Types that are valid to be assigned to Contents:
+ // *Variable_Value
+ // *Variable_Text
+ Contents isVariable_Contents `protobuf_oneof:"contents"`
+ // [Output Only] The time of the last variable update.
+ UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
+ // [Ouput only] The current state of the variable. The variable state indicates
+ // the outcome of the `variables().watch` call and is visible through the
+ // `get` and `list` calls.
+ State VariableState `protobuf:"varint,4,opt,name=state,enum=google.cloud.runtimeconfig.v1beta1.VariableState" json:"state,omitempty"`
+}
+
+func (m *Variable) Reset() { *m = Variable{} }
+func (m *Variable) String() string { return proto.CompactTextString(m) }
+func (*Variable) ProtoMessage() {}
+func (*Variable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+type isVariable_Contents interface {
+ isVariable_Contents()
+}
+
+type Variable_Value struct {
+ Value []byte `protobuf:"bytes,2,opt,name=value,proto3,oneof"`
+}
+type Variable_Text struct {
+ Text string `protobuf:"bytes,5,opt,name=text,oneof"`
+}
+
+func (*Variable_Value) isVariable_Contents() {}
+func (*Variable_Text) isVariable_Contents() {}
+
+func (m *Variable) GetContents() isVariable_Contents {
+ if m != nil {
+ return m.Contents
+ }
+ return nil
+}
+
+func (m *Variable) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *Variable) GetValue() []byte {
+ if x, ok := m.GetContents().(*Variable_Value); ok {
+ return x.Value
+ }
+ return nil
+}
+
+func (m *Variable) GetText() string {
+ if x, ok := m.GetContents().(*Variable_Text); ok {
+ return x.Text
+ }
+ return ""
+}
+
+func (m *Variable) GetUpdateTime() *google_protobuf2.Timestamp {
+ if m != nil {
+ return m.UpdateTime
+ }
+ return nil
+}
+
+func (m *Variable) GetState() VariableState {
+ if m != nil {
+ return m.State
+ }
+ return VariableState_VARIABLE_STATE_UNSPECIFIED
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Variable) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+ return _Variable_OneofMarshaler, _Variable_OneofUnmarshaler, _Variable_OneofSizer, []interface{}{
+ (*Variable_Value)(nil),
+ (*Variable_Text)(nil),
+ }
+}
+
+func _Variable_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+ m := msg.(*Variable)
+ // contents
+ switch x := m.Contents.(type) {
+ case *Variable_Value:
+ b.EncodeVarint(2<<3 | proto.WireBytes)
+ b.EncodeRawBytes(x.Value)
+ case *Variable_Text:
+ b.EncodeVarint(5<<3 | proto.WireBytes)
+ b.EncodeStringBytes(x.Text)
+ case nil:
+ default:
+ return fmt.Errorf("Variable.Contents has unexpected type %T", x)
+ }
+ return nil
+}
+
+func _Variable_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+ m := msg.(*Variable)
+ switch tag {
+ case 2: // contents.value
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ x, err := b.DecodeRawBytes(true)
+ m.Contents = &Variable_Value{x}
+ return true, err
+ case 5: // contents.text
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ x, err := b.DecodeStringBytes()
+ m.Contents = &Variable_Text{x}
+ return true, err
+ default:
+ return false, nil
+ }
+}
+
+func _Variable_OneofSizer(msg proto.Message) (n int) {
+ m := msg.(*Variable)
+ // contents
+ switch x := m.Contents.(type) {
+ case *Variable_Value:
+ n += proto.SizeVarint(2<<3 | proto.WireBytes)
+ n += proto.SizeVarint(uint64(len(x.Value)))
+ n += len(x.Value)
+ case *Variable_Text:
+ n += proto.SizeVarint(5<<3 | proto.WireBytes)
+ n += proto.SizeVarint(uint64(len(x.Text)))
+ n += len(x.Text)
+ case nil:
+ default:
+ panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+ }
+ return n
+}
+
+// The condition that a Waiter resource is waiting for.
+type EndCondition struct {
+ // The condition oneof holds the available condition types for this
+ // EndCondition. Currently, the only available type is Cardinality.
+ //
+ // Types that are valid to be assigned to Condition:
+ // *EndCondition_Cardinality_
+ Condition isEndCondition_Condition `protobuf_oneof:"condition"`
+}
+
+func (m *EndCondition) Reset() { *m = EndCondition{} }
+func (m *EndCondition) String() string { return proto.CompactTextString(m) }
+func (*EndCondition) ProtoMessage() {}
+func (*EndCondition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+type isEndCondition_Condition interface {
+ isEndCondition_Condition()
+}
+
+type EndCondition_Cardinality_ struct {
+ Cardinality *EndCondition_Cardinality `protobuf:"bytes,1,opt,name=cardinality,oneof"`
+}
+
+func (*EndCondition_Cardinality_) isEndCondition_Condition() {}
+
+func (m *EndCondition) GetCondition() isEndCondition_Condition {
+ if m != nil {
+ return m.Condition
+ }
+ return nil
+}
+
+func (m *EndCondition) GetCardinality() *EndCondition_Cardinality {
+ if x, ok := m.GetCondition().(*EndCondition_Cardinality_); ok {
+ return x.Cardinality
+ }
+ return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*EndCondition) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+ return _EndCondition_OneofMarshaler, _EndCondition_OneofUnmarshaler, _EndCondition_OneofSizer, []interface{}{
+ (*EndCondition_Cardinality_)(nil),
+ }
+}
+
+func _EndCondition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+ m := msg.(*EndCondition)
+ // condition
+ switch x := m.Condition.(type) {
+ case *EndCondition_Cardinality_:
+ b.EncodeVarint(1<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.Cardinality); err != nil {
+ return err
+ }
+ case nil:
+ default:
+ return fmt.Errorf("EndCondition.Condition has unexpected type %T", x)
+ }
+ return nil
+}
+
+func _EndCondition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+ m := msg.(*EndCondition)
+ switch tag {
+ case 1: // condition.cardinality
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(EndCondition_Cardinality)
+ err := b.DecodeMessage(msg)
+ m.Condition = &EndCondition_Cardinality_{msg}
+ return true, err
+ default:
+ return false, nil
+ }
+}
+
+func _EndCondition_OneofSizer(msg proto.Message) (n int) {
+ m := msg.(*EndCondition)
+ // condition
+ switch x := m.Condition.(type) {
+ case *EndCondition_Cardinality_:
+ s := proto.Size(x.Cardinality)
+ n += proto.SizeVarint(1<<3 | proto.WireBytes)
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case nil:
+ default:
+ panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+ }
+ return n
+}
+
+// A Cardinality condition for the Waiter resource. A cardinality condition is
+// met when the number of variables under a specified path prefix reaches a
+// predefined number. For example, if you set a Cardinality condition where
+// the `path` is set to `/foo` and the number of paths is set to 2, the
+// following variables would meet the condition in a RuntimeConfig resource:
+//
+// + `/foo/variable1 = "value1"`
+// + `/foo/variable2 = "value2"`
+// + `/bar/variable3 = "value3"`
+//
+// It would not would not satisify the same condition with the `number` set to
+// 3, however, because there is only 2 paths that start with `/foo`.
+// Cardinality conditions are recursive; all subtrees under the specific
+// path prefix are counted.
+type EndCondition_Cardinality struct {
+ // The root of the variable subtree to monitor. For example, `/foo`.
+ Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
+ // The number variables under the `path` that must exist to meet this
+ // condition. Defaults to 1 if not specified.
+ Number int32 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
+}
+
+func (m *EndCondition_Cardinality) Reset() { *m = EndCondition_Cardinality{} }
+func (m *EndCondition_Cardinality) String() string { return proto.CompactTextString(m) }
+func (*EndCondition_Cardinality) ProtoMessage() {}
+func (*EndCondition_Cardinality) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
+
+func (m *EndCondition_Cardinality) GetPath() string {
+ if m != nil {
+ return m.Path
+ }
+ return ""
+}
+
+func (m *EndCondition_Cardinality) GetNumber() int32 {
+ if m != nil {
+ return m.Number
+ }
+ return 0
+}
+
+// A Waiter resource waits for some end condition within a RuntimeConfig resource
+// to be met before it returns. For example, assume you have a distributed
+// system where each node writes to a Variable resource indidicating the node's
+// readiness as part of the startup process.
+//
+// You then configure a Waiter resource with the success condition set to wait
+// until some number of nodes have checked in. Afterwards, your application
+// runs some arbitrary code after the condition has been met and the waiter
+// returns successfully.
+//
+// Once created, a Waiter resource is immutable.
+//
+// To learn more about using waiters, read the
+// [Creating a Waiter](/deployment-manager/runtime-configurator/creating-a-waiter)
+// documentation.
+type Waiter struct {
+ // The name of the Waiter resource, in the format:
+ //
+ // projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]
+ //
+ // The `[PROJECT_ID]` must be a valid Google Cloud project ID,
+ // the `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the
+ // `[WAITER_NAME]` must match RFC 1035 segment specification, and the length
+ // of `[WAITER_NAME]` must be less than 64 bytes.
+ //
+ // After you create a Waiter resource, you cannot change the resource name.
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // [Required] Specifies the timeout of the waiter in seconds, beginning from
+ // the instant that `waiters().create` method is called. If this time elapses
+ // before the success or failure conditions are met, the waiter fails and sets
+ // the `error` code to `DEADLINE_EXCEEDED`.
+ Timeout *google_protobuf1.Duration `protobuf:"bytes,2,opt,name=timeout" json:"timeout,omitempty"`
+ // [Optional] The failure condition of this waiter. If this condition is met,
+ // `done` will be set to `true` and the `error` code will be set to `ABORTED`.
+ // The failure condition takes precedence over the success condition. If both
+ // conditions are met, a failure will be indicated. This value is optional; if
+ // no failure condition is set, the only failure scenario will be a timeout.
+ Failure *EndCondition `protobuf:"bytes,3,opt,name=failure" json:"failure,omitempty"`
+ // [Required] The success condition. If this condition is met, `done` will be
+ // set to `true` and the `error` value will remain unset. The failure condition
+ // takes precedence over the success condition. If both conditions are met, a
+ // failure will be indicated.
+ Success *EndCondition `protobuf:"bytes,4,opt,name=success" json:"success,omitempty"`
+ // [Output Only] The instant at which this Waiter resource was created. Adding
+ // the value of `timeout` to this instant yields the timeout deadline for the
+ // waiter.
+ CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+ // [Output Only] If the value is `false`, it means the waiter is still waiting
+ // for one of its conditions to be met.
+ //
+ // If true, the waiter has finished. If the waiter finished due to a timeout
+ // or failure, `error` will be set.
+ Done bool `protobuf:"varint,6,opt,name=done" json:"done,omitempty"`
+ // [Output Only] If the waiter ended due to a failure or timeout, this value
+ // will be set.
+ Error *google_rpc.Status `protobuf:"bytes,7,opt,name=error" json:"error,omitempty"`
+}
+
+func (m *Waiter) Reset() { *m = Waiter{} }
+func (m *Waiter) String() string { return proto.CompactTextString(m) }
+func (*Waiter) ProtoMessage() {}
+func (*Waiter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *Waiter) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *Waiter) GetTimeout() *google_protobuf1.Duration {
+ if m != nil {
+ return m.Timeout
+ }
+ return nil
+}
+
+func (m *Waiter) GetFailure() *EndCondition {
+ if m != nil {
+ return m.Failure
+ }
+ return nil
+}
+
+func (m *Waiter) GetSuccess() *EndCondition {
+ if m != nil {
+ return m.Success
+ }
+ return nil
+}
+
+func (m *Waiter) GetCreateTime() *google_protobuf2.Timestamp {
+ if m != nil {
+ return m.CreateTime
+ }
+ return nil
+}
+
+func (m *Waiter) GetDone() bool {
+ if m != nil {
+ return m.Done
+ }
+ return false
+}
+
+func (m *Waiter) GetError() *google_rpc.Status {
+ if m != nil {
+ return m.Error
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*RuntimeConfig)(nil), "google.cloud.runtimeconfig.v1beta1.RuntimeConfig")
+ proto.RegisterType((*Variable)(nil), "google.cloud.runtimeconfig.v1beta1.Variable")
+ proto.RegisterType((*EndCondition)(nil), "google.cloud.runtimeconfig.v1beta1.EndCondition")
+ proto.RegisterType((*EndCondition_Cardinality)(nil), "google.cloud.runtimeconfig.v1beta1.EndCondition.Cardinality")
+ proto.RegisterType((*Waiter)(nil), "google.cloud.runtimeconfig.v1beta1.Waiter")
+ proto.RegisterEnum("google.cloud.runtimeconfig.v1beta1.VariableState", VariableState_name, VariableState_value)
+}
+
+func init() { proto.RegisterFile("google/cloud/runtimeconfig/v1beta1/resources.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+ // 615 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x5d, 0x6f, 0xd3, 0x3c,
+ 0x14, 0xc7, 0x9b, 0x3e, 0x7d, 0xd9, 0x4e, 0xb6, 0x47, 0x93, 0x85, 0x46, 0xa8, 0xd0, 0xa8, 0x7a,
+ 0x81, 0x2a, 0x2e, 0x12, 0xda, 0x5d, 0xa1, 0x71, 0xd3, 0x97, 0xb0, 0x15, 0x4d, 0x30, 0xb9, 0xdd,
+ 0x90, 0xb8, 0x19, 0xae, 0xe3, 0x85, 0x48, 0xa9, 0x1d, 0x39, 0xce, 0x04, 0xdf, 0x86, 0x6b, 0x3e,
+ 0x01, 0x9f, 0x86, 0x2b, 0x3e, 0x08, 0xb2, 0xe3, 0x40, 0x0b, 0x13, 0x1b, 0xdc, 0xf9, 0xf8, 0xfc,
+ 0xcf, 0xef, 0xbc, 0xf8, 0x24, 0x30, 0x8c, 0x85, 0x88, 0x53, 0x16, 0xd0, 0x54, 0x14, 0x51, 0x20,
+ 0x0b, 0xae, 0x92, 0x15, 0xa3, 0x82, 0x5f, 0x25, 0x71, 0x70, 0x3d, 0x58, 0x32, 0x45, 0x06, 0x81,
+ 0x64, 0xb9, 0x28, 0x24, 0x65, 0xb9, 0x9f, 0x49, 0xa1, 0x04, 0xea, 0x95, 0x31, 0xbe, 0x89, 0xf1,
+ 0x37, 0x62, 0x7c, 0x1b, 0xd3, 0x79, 0x68, 0xb9, 0x24, 0x4b, 0x02, 0xc2, 0xb9, 0x50, 0x44, 0x25,
+ 0x82, 0x5b, 0x42, 0xe7, 0xc0, 0x7a, 0x8d, 0xb5, 0x2c, 0xae, 0x82, 0xa8, 0x90, 0x46, 0x60, 0xfd,
+ 0x8f, 0x7e, 0xf5, 0xeb, 0x0c, 0xb9, 0x22, 0xab, 0xcc, 0x0a, 0xee, 0x5b, 0x81, 0xcc, 0x68, 0x90,
+ 0x2b, 0xa2, 0x0a, 0x4b, 0xee, 0x85, 0xb0, 0x8b, 0xcb, 0x82, 0x26, 0xa6, 0x20, 0x84, 0xa0, 0xc1,
+ 0xc9, 0x8a, 0x79, 0x4e, 0xd7, 0xe9, 0x6f, 0x63, 0x73, 0x46, 0x5d, 0x70, 0x23, 0x96, 0x53, 0x99,
+ 0x64, 0x3a, 0xa7, 0x57, 0x37, 0xae, 0xf5, 0xab, 0xde, 0x57, 0x07, 0xb6, 0x2e, 0x88, 0x4c, 0xc8,
+ 0x32, 0x65, 0x37, 0x22, 0xf6, 0xa1, 0x79, 0x4d, 0xd2, 0x82, 0x99, 0xe0, 0x9d, 0x93, 0x1a, 0x2e,
+ 0x4d, 0x74, 0x0f, 0x1a, 0x8a, 0x7d, 0x50, 0x5e, 0x53, 0x6b, 0x4f, 0x6a, 0xd8, 0x58, 0xe8, 0x08,
+ 0xdc, 0x22, 0x8b, 0x88, 0x62, 0x97, 0xba, 0x32, 0xef, 0xbf, 0xae, 0xd3, 0x77, 0x87, 0x1d, 0xdf,
+ 0xce, 0xb1, 0xea, 0xd2, 0x5f, 0x54, 0x5d, 0x62, 0x28, 0xe5, 0xfa, 0x02, 0x1d, 0x43, 0x53, 0xb7,
+ 0xc8, 0xbc, 0x46, 0xd7, 0xe9, 0xff, 0x3f, 0x1c, 0xf8, 0xb7, 0x8f, 0xdf, 0xaf, 0x6a, 0x9f, 0xeb,
+ 0x40, 0x5c, 0xc6, 0x8f, 0x01, 0xb6, 0xa8, 0xe0, 0x8a, 0x71, 0x95, 0xf7, 0xbe, 0x38, 0xb0, 0x13,
+ 0xf2, 0x68, 0x22, 0x78, 0x94, 0xe8, 0x8e, 0xd1, 0x3b, 0x70, 0x29, 0x91, 0x51, 0xc2, 0x49, 0x9a,
+ 0xa8, 0x8f, 0xa6, 0x57, 0x77, 0xf8, 0xfc, 0x2e, 0xb9, 0xd6, 0x31, 0xfe, 0xe4, 0x27, 0xe3, 0xa4,
+ 0x86, 0xd7, 0x91, 0x9d, 0x67, 0xe0, 0xae, 0x79, 0xf5, 0x54, 0x33, 0xa2, 0xde, 0x57, 0x53, 0xd5,
+ 0x67, 0xb4, 0x0f, 0x2d, 0x5e, 0xac, 0x96, 0x4c, 0x9a, 0xb1, 0x36, 0xb1, 0xb5, 0xc6, 0x2e, 0x6c,
+ 0xd3, 0x2a, 0x45, 0xef, 0x5b, 0x1d, 0x5a, 0x6f, 0x48, 0xa2, 0x98, 0xbc, 0xf1, 0x65, 0x0e, 0xa1,
+ 0xad, 0x8b, 0x14, 0x85, 0x32, 0x10, 0x77, 0xf8, 0xe0, 0xb7, 0x39, 0x4f, 0xed, 0xb6, 0xe1, 0x4a,
+ 0x89, 0x5e, 0x42, 0xfb, 0x8a, 0x24, 0x69, 0x21, 0xab, 0xc7, 0x79, 0xfa, 0xb7, 0x9d, 0xe3, 0x0a,
+ 0xa0, 0x59, 0x79, 0x41, 0x29, 0xcb, 0x73, 0xf3, 0x62, 0xff, 0xc4, 0xb2, 0x00, 0xbd, 0x38, 0x54,
+ 0xb2, 0x1f, 0x8b, 0xd3, 0xbc, 0x7d, 0x71, 0x4a, 0xb9, 0x59, 0x1c, 0x04, 0x8d, 0x48, 0x70, 0xe6,
+ 0xb5, 0xba, 0x4e, 0x7f, 0x0b, 0x9b, 0x33, 0xea, 0x43, 0x93, 0x49, 0x29, 0xa4, 0xd7, 0x36, 0x28,
+ 0x54, 0xa1, 0x64, 0x46, 0xfd, 0xb9, 0xf9, 0x90, 0x70, 0x29, 0x78, 0x32, 0x83, 0xdd, 0x8d, 0x2d,
+ 0x42, 0x07, 0xd0, 0xb9, 0x18, 0xe1, 0xd9, 0x68, 0x7c, 0x1a, 0x5e, 0xce, 0x17, 0xa3, 0x45, 0x78,
+ 0x79, 0xfe, 0x6a, 0x7e, 0x16, 0x4e, 0x66, 0x2f, 0x66, 0xe1, 0x74, 0xaf, 0x86, 0x5c, 0x68, 0x9f,
+ 0x9f, 0x4d, 0x47, 0x8b, 0x70, 0xba, 0xe7, 0x68, 0x63, 0x1a, 0x9e, 0x86, 0xda, 0xa8, 0x8f, 0x3f,
+ 0x39, 0xf0, 0x98, 0x8a, 0xd5, 0x1d, 0xc6, 0x70, 0xe6, 0xbc, 0x7d, 0x6d, 0x55, 0xb1, 0x48, 0x09,
+ 0x8f, 0x7d, 0x21, 0xe3, 0x20, 0x66, 0xdc, 0xb4, 0x1a, 0x94, 0x2e, 0x92, 0x25, 0xf9, 0x9f, 0x7e,
+ 0x58, 0x47, 0x1b, 0xb7, 0x9f, 0xeb, 0xbd, 0xe3, 0x92, 0x38, 0x31, 0x79, 0x37, 0x7e, 0x0f, 0xfe,
+ 0xc5, 0x60, 0xac, 0x43, 0x96, 0x2d, 0x93, 0xe0, 0xf0, 0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x61,
+ 0xe4, 0x09, 0x63, 0x10, 0x05, 0x00, 0x00,
+}
diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go
new file mode 100644
index 0000000..3597036
--- /dev/null
+++ b/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go
@@ -0,0 +1,1354 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto
+
+package runtimeconfig
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
+import google_protobuf4 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
+
+import (
+ context "golang.org/x/net/context"
+ grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Request for the `ListConfigs()` method.
+type ListConfigsRequest struct {
+ // The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)
+ // for this request, in the format `projects/[PROJECT_ID]`.
+ Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+ // Specifies the number of results to return per page. If there are fewer
+ // elements than the specified number, returns all elements.
+ PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+ // Specifies a page token to use. Set `pageToken` to a `nextPageToken`
+ // returned by a previous list request to get the next page of results.
+ PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListConfigsRequest) Reset() { *m = ListConfigsRequest{} }
+func (m *ListConfigsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListConfigsRequest) ProtoMessage() {}
+func (*ListConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+
+func (m *ListConfigsRequest) GetParent() string {
+ if m != nil {
+ return m.Parent
+ }
+ return ""
+}
+
+func (m *ListConfigsRequest) GetPageSize() int32 {
+ if m != nil {
+ return m.PageSize
+ }
+ return 0
+}
+
+func (m *ListConfigsRequest) GetPageToken() string {
+ if m != nil {
+ return m.PageToken
+ }
+ return ""
+}
+
+// `ListConfigs()` returns the following response. The order of returned
+// objects is arbitrary; that is, it is not ordered in any particular way.
+type ListConfigsResponse struct {
+ // A list of the configurations in the project. The order of returned
+ // objects is arbitrary; that is, it is not ordered in any particular way.
+ Configs []*RuntimeConfig `protobuf:"bytes,1,rep,name=configs" json:"configs,omitempty"`
+ // This token allows you to get the next page of results for list requests.
+ // If the number of results is larger than `pageSize`, use the `nextPageToken`
+ // as a value for the query parameter `pageToken` in the next list request.
+ // Subsequent list requests will have their own `nextPageToken` to continue
+ // paging through the results
+ NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListConfigsResponse) Reset() { *m = ListConfigsResponse{} }
+func (m *ListConfigsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListConfigsResponse) ProtoMessage() {}
+func (*ListConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+
+func (m *ListConfigsResponse) GetConfigs() []*RuntimeConfig {
+ if m != nil {
+ return m.Configs
+ }
+ return nil
+}
+
+func (m *ListConfigsResponse) GetNextPageToken() string {
+ if m != nil {
+ return m.NextPageToken
+ }
+ return ""
+}
+
+// Gets a RuntimeConfig resource.
+type GetConfigRequest struct {
+ // The name of the RuntimeConfig resource to retrieve, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
+ Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetConfigRequest) Reset() { *m = GetConfigRequest{} }
+func (m *GetConfigRequest) String() string { return proto.CompactTextString(m) }
+func (*GetConfigRequest) ProtoMessage() {}
+func (*GetConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+
+func (m *GetConfigRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+// Creates a RuntimeConfig resource.
+type CreateConfigRequest struct {
+ // The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)
+ // for this request, in the format `projects/[PROJECT_ID]`.
+ Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+ // The RuntimeConfig to create.
+ Config *RuntimeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"`
+ // An optional but recommended unique `request_id`. If the server
+ // receives two `create()` requests with the same
+ // `request_id`, then the second request will be ignored and the
+ // first resource created and stored in the backend is returned.
+ // Empty `request_id` fields are ignored.
+ //
+ // It is responsibility of the client to ensure uniqueness of the
+ // `request_id` strings.
+ //
+ // `request_id` strings are limited to 64 characters.
+ RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
+}
+
+func (m *CreateConfigRequest) Reset() { *m = CreateConfigRequest{} }
+func (m *CreateConfigRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateConfigRequest) ProtoMessage() {}
+func (*CreateConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+
+func (m *CreateConfigRequest) GetParent() string {
+ if m != nil {
+ return m.Parent
+ }
+ return ""
+}
+
+func (m *CreateConfigRequest) GetConfig() *RuntimeConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+func (m *CreateConfigRequest) GetRequestId() string {
+ if m != nil {
+ return m.RequestId
+ }
+ return ""
+}
+
+// Request message for `UpdateConfig()` method.
+type UpdateConfigRequest struct {
+ // The name of the RuntimeConfig resource to update, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // The config resource to update.
+ Config *RuntimeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"`
+}
+
+func (m *UpdateConfigRequest) Reset() { *m = UpdateConfigRequest{} }
+func (m *UpdateConfigRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateConfigRequest) ProtoMessage() {}
+func (*UpdateConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
+
+func (m *UpdateConfigRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *UpdateConfigRequest) GetConfig() *RuntimeConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+// Request for the `DeleteConfig()` method.
+type DeleteConfigRequest struct {
+ // The RuntimeConfig resource to delete, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *DeleteConfigRequest) Reset() { *m = DeleteConfigRequest{} }
+func (m *DeleteConfigRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteConfigRequest) ProtoMessage() {}
+func (*DeleteConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
+
+func (m *DeleteConfigRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+// Request for the `ListVariables()` method.
+type ListVariablesRequest struct {
+ // The path to the RuntimeConfig resource for which you want to list variables.
+ // The configuration must exist beforehand; the path must by in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
+ Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+ // Filters variables by matching the specified filter. For example:
+ //
+ // `projects/example-project/config/[CONFIG_NAME]/variables/example-variable`.
+ Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"`
+ // Specifies the number of results to return per page. If there are fewer
+ // elements than the specified number, returns all elements.
+ PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+ // Specifies a page token to use. Set `pageToken` to a `nextPageToken`
+ // returned by a previous list request to get the next page of results.
+ PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+ // The flag indicates whether the user wants to return values of variables.
+ // If true, then only those variables that user has IAM GetVariable permission
+ // will be returned along with their values.
+ ReturnValues bool `protobuf:"varint,5,opt,name=return_values,json=returnValues" json:"return_values,omitempty"`
+}
+
+func (m *ListVariablesRequest) Reset() { *m = ListVariablesRequest{} }
+func (m *ListVariablesRequest) String() string { return proto.CompactTextString(m) }
+func (*ListVariablesRequest) ProtoMessage() {}
+func (*ListVariablesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
+
+func (m *ListVariablesRequest) GetParent() string {
+ if m != nil {
+ return m.Parent
+ }
+ return ""
+}
+
+func (m *ListVariablesRequest) GetFilter() string {
+ if m != nil {
+ return m.Filter
+ }
+ return ""
+}
+
+func (m *ListVariablesRequest) GetPageSize() int32 {
+ if m != nil {
+ return m.PageSize
+ }
+ return 0
+}
+
+func (m *ListVariablesRequest) GetPageToken() string {
+ if m != nil {
+ return m.PageToken
+ }
+ return ""
+}
+
+func (m *ListVariablesRequest) GetReturnValues() bool {
+ if m != nil {
+ return m.ReturnValues
+ }
+ return false
+}
+
+// Response for the `ListVariables()` method.
+type ListVariablesResponse struct {
+ // A list of variables and their values. The order of returned variable
+ // objects is arbitrary.
+ Variables []*Variable `protobuf:"bytes,1,rep,name=variables" json:"variables,omitempty"`
+ // This token allows you to get the next page of results for list requests.
+ // If the number of results is larger than `pageSize`, use the `nextPageToken`
+ // as a value for the query parameter `pageToken` in the next list request.
+ // Subsequent list requests will have their own `nextPageToken` to continue
+ // paging through the results
+ NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListVariablesResponse) Reset() { *m = ListVariablesResponse{} }
+func (m *ListVariablesResponse) String() string { return proto.CompactTextString(m) }
+func (*ListVariablesResponse) ProtoMessage() {}
+func (*ListVariablesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
+
+func (m *ListVariablesResponse) GetVariables() []*Variable {
+ if m != nil {
+ return m.Variables
+ }
+ return nil
+}
+
+func (m *ListVariablesResponse) GetNextPageToken() string {
+ if m != nil {
+ return m.NextPageToken
+ }
+ return ""
+}
+
+// Request for the `WatchVariable()` method.
+type WatchVariableRequest struct {
+ // The name of the variable to watch, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // If specified, checks the current timestamp of the variable and if the
+ // current timestamp is newer than `newerThan` timestamp, the method returns
+ // immediately.
+ //
+ // If not specified or the variable has an older timestamp, the watcher waits
+ // for a the value to change before returning.
+ NewerThan *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=newer_than,json=newerThan" json:"newer_than,omitempty"`
+}
+
+func (m *WatchVariableRequest) Reset() { *m = WatchVariableRequest{} }
+func (m *WatchVariableRequest) String() string { return proto.CompactTextString(m) }
+func (*WatchVariableRequest) ProtoMessage() {}
+func (*WatchVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
+
+func (m *WatchVariableRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *WatchVariableRequest) GetNewerThan() *google_protobuf2.Timestamp {
+ if m != nil {
+ return m.NewerThan
+ }
+ return nil
+}
+
+// Request for the `GetVariable()` method.
+type GetVariableRequest struct {
+ // The name of the variable to return, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetVariableRequest) Reset() { *m = GetVariableRequest{} }
+func (m *GetVariableRequest) String() string { return proto.CompactTextString(m) }
+func (*GetVariableRequest) ProtoMessage() {}
+func (*GetVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
+
+func (m *GetVariableRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+// Request for the `CreateVariable()` method.
+type CreateVariableRequest struct {
+ // The path to the RutimeConfig resource that this variable should belong to.
+ // The configuration must exist beforehand; the path must by in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
+ Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+ // The variable to create.
+ Variable *Variable `protobuf:"bytes,2,opt,name=variable" json:"variable,omitempty"`
+ // An optional but recommended unique `request_id`. If the server
+ // receives two `create()` requests with the same
+ // `request_id`, then the second request will be ignored and the
+ // first resource created and stored in the backend is returned.
+ // Empty `request_id` fields are ignored.
+ //
+ // It is responsibility of the client to ensure uniqueness of the
+ // `request_id` strings.
+ //
+ // `request_id` strings are limited to 64 characters.
+ RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
+}
+
+func (m *CreateVariableRequest) Reset() { *m = CreateVariableRequest{} }
+func (m *CreateVariableRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateVariableRequest) ProtoMessage() {}
+func (*CreateVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
+
+func (m *CreateVariableRequest) GetParent() string {
+ if m != nil {
+ return m.Parent
+ }
+ return ""
+}
+
+func (m *CreateVariableRequest) GetVariable() *Variable {
+ if m != nil {
+ return m.Variable
+ }
+ return nil
+}
+
+func (m *CreateVariableRequest) GetRequestId() string {
+ if m != nil {
+ return m.RequestId
+ }
+ return ""
+}
+
+// Request for the `UpdateVariable()` method.
+type UpdateVariableRequest struct {
+ // The name of the variable to update, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // The variable to update.
+ Variable *Variable `protobuf:"bytes,2,opt,name=variable" json:"variable,omitempty"`
+}
+
+func (m *UpdateVariableRequest) Reset() { *m = UpdateVariableRequest{} }
+func (m *UpdateVariableRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateVariableRequest) ProtoMessage() {}
+func (*UpdateVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
+
+func (m *UpdateVariableRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *UpdateVariableRequest) GetVariable() *Variable {
+ if m != nil {
+ return m.Variable
+ }
+ return nil
+}
+
+// Request for the `DeleteVariable()` method.
+type DeleteVariableRequest struct {
+ // The name of the variable to delete, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // Set to `true` to recursively delete multiple variables with the same
+ // prefix.
+ Recursive bool `protobuf:"varint,2,opt,name=recursive" json:"recursive,omitempty"`
+}
+
+func (m *DeleteVariableRequest) Reset() { *m = DeleteVariableRequest{} }
+func (m *DeleteVariableRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteVariableRequest) ProtoMessage() {}
+func (*DeleteVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
+
+func (m *DeleteVariableRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *DeleteVariableRequest) GetRecursive() bool {
+ if m != nil {
+ return m.Recursive
+ }
+ return false
+}
+
+// Request for the `ListWaiters()` method.
+type ListWaitersRequest struct {
+ // The path to the configuration for which you want to get a list of waiters.
+ // The configuration must exist beforehand; the path must by in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
+ Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+ // Specifies the number of results to return per page. If there are fewer
+ // elements than the specified number, returns all elements.
+ PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+ // Specifies a page token to use. Set `pageToken` to a `nextPageToken`
+ // returned by a previous list request to get the next page of results.
+ PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListWaitersRequest) Reset() { *m = ListWaitersRequest{} }
+func (m *ListWaitersRequest) String() string { return proto.CompactTextString(m) }
+func (*ListWaitersRequest) ProtoMessage() {}
+func (*ListWaitersRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} }
+
+func (m *ListWaitersRequest) GetParent() string {
+ if m != nil {
+ return m.Parent
+ }
+ return ""
+}
+
+func (m *ListWaitersRequest) GetPageSize() int32 {
+ if m != nil {
+ return m.PageSize
+ }
+ return 0
+}
+
+func (m *ListWaitersRequest) GetPageToken() string {
+ if m != nil {
+ return m.PageToken
+ }
+ return ""
+}
+
+// Response for the `ListWaiters()` method.
+// Order of returned waiter objects is arbitrary.
+type ListWaitersResponse struct {
+ // Found waiters in the project.
+ Waiters []*Waiter `protobuf:"bytes,1,rep,name=waiters" json:"waiters,omitempty"`
+ // This token allows you to get the next page of results for list requests.
+ // If the number of results is larger than `pageSize`, use the `nextPageToken`
+ // as a value for the query parameter `pageToken` in the next list request.
+ // Subsequent list requests will have their own `nextPageToken` to continue
+ // paging through the results
+ NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListWaitersResponse) Reset() { *m = ListWaitersResponse{} }
+func (m *ListWaitersResponse) String() string { return proto.CompactTextString(m) }
+func (*ListWaitersResponse) ProtoMessage() {}
+func (*ListWaitersResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} }
+
+func (m *ListWaitersResponse) GetWaiters() []*Waiter {
+ if m != nil {
+ return m.Waiters
+ }
+ return nil
+}
+
+func (m *ListWaitersResponse) GetNextPageToken() string {
+ if m != nil {
+ return m.NextPageToken
+ }
+ return ""
+}
+
+// Request for the `GetWaiter()` method.
+type GetWaiterRequest struct {
+ // The fully-qualified name of the Waiter resource object to retrieve, in the
+ // format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetWaiterRequest) Reset() { *m = GetWaiterRequest{} }
+func (m *GetWaiterRequest) String() string { return proto.CompactTextString(m) }
+func (*GetWaiterRequest) ProtoMessage() {}
+func (*GetWaiterRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} }
+
+func (m *GetWaiterRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+// Request message for `CreateWaiter()` method.
+type CreateWaiterRequest struct {
+ // The path to the configuration that will own the waiter.
+ // The configuration must exist beforehand; the path must by in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`.
+ Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+ // The Waiter resource to create.
+ Waiter *Waiter `protobuf:"bytes,2,opt,name=waiter" json:"waiter,omitempty"`
+ // An optional but recommended unique `request_id`. If the server
+ // receives two `create()` requests with the same
+ // `request_id`, then the second request will be ignored and the
+ // first resource created and stored in the backend is returned.
+ // Empty `request_id` fields are ignored.
+ //
+ // It is responsibility of the client to ensure uniqueness of the
+ // `request_id` strings.
+ //
+ // `request_id` strings are limited to 64 characters.
+ RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
+}
+
+func (m *CreateWaiterRequest) Reset() { *m = CreateWaiterRequest{} }
+func (m *CreateWaiterRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateWaiterRequest) ProtoMessage() {}
+func (*CreateWaiterRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} }
+
+func (m *CreateWaiterRequest) GetParent() string {
+ if m != nil {
+ return m.Parent
+ }
+ return ""
+}
+
+func (m *CreateWaiterRequest) GetWaiter() *Waiter {
+ if m != nil {
+ return m.Waiter
+ }
+ return nil
+}
+
+func (m *CreateWaiterRequest) GetRequestId() string {
+ if m != nil {
+ return m.RequestId
+ }
+ return ""
+}
+
+// Request for the `DeleteWaiter()` method.
+type DeleteWaiterRequest struct {
+ // The Waiter resource to delete, in the format:
+ //
+ // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *DeleteWaiterRequest) Reset() { *m = DeleteWaiterRequest{} }
+func (m *DeleteWaiterRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteWaiterRequest) ProtoMessage() {}
+func (*DeleteWaiterRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} }
+
+func (m *DeleteWaiterRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterType((*ListConfigsRequest)(nil), "google.cloud.runtimeconfig.v1beta1.ListConfigsRequest")
+ proto.RegisterType((*ListConfigsResponse)(nil), "google.cloud.runtimeconfig.v1beta1.ListConfigsResponse")
+ proto.RegisterType((*GetConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.GetConfigRequest")
+ proto.RegisterType((*CreateConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.CreateConfigRequest")
+ proto.RegisterType((*UpdateConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.UpdateConfigRequest")
+ proto.RegisterType((*DeleteConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.DeleteConfigRequest")
+ proto.RegisterType((*ListVariablesRequest)(nil), "google.cloud.runtimeconfig.v1beta1.ListVariablesRequest")
+ proto.RegisterType((*ListVariablesResponse)(nil), "google.cloud.runtimeconfig.v1beta1.ListVariablesResponse")
+ proto.RegisterType((*WatchVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.WatchVariableRequest")
+ proto.RegisterType((*GetVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.GetVariableRequest")
+ proto.RegisterType((*CreateVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.CreateVariableRequest")
+ proto.RegisterType((*UpdateVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.UpdateVariableRequest")
+ proto.RegisterType((*DeleteVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.DeleteVariableRequest")
+ proto.RegisterType((*ListWaitersRequest)(nil), "google.cloud.runtimeconfig.v1beta1.ListWaitersRequest")
+ proto.RegisterType((*ListWaitersResponse)(nil), "google.cloud.runtimeconfig.v1beta1.ListWaitersResponse")
+ proto.RegisterType((*GetWaiterRequest)(nil), "google.cloud.runtimeconfig.v1beta1.GetWaiterRequest")
+ proto.RegisterType((*CreateWaiterRequest)(nil), "google.cloud.runtimeconfig.v1beta1.CreateWaiterRequest")
+ proto.RegisterType((*DeleteWaiterRequest)(nil), "google.cloud.runtimeconfig.v1beta1.DeleteWaiterRequest")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for RuntimeConfigManager service
+
+type RuntimeConfigManagerClient interface {
+ // Lists all the RuntimeConfig resources within project.
+ ListConfigs(ctx context.Context, in *ListConfigsRequest, opts ...grpc.CallOption) (*ListConfigsResponse, error)
+ // Gets information about a RuntimeConfig resource.
+ GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error)
+ // Creates a new RuntimeConfig resource. The configuration name must be
+ // unique within project.
+ CreateConfig(ctx context.Context, in *CreateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error)
+ // Updates a RuntimeConfig resource. The configuration must exist beforehand.
+ UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error)
+ // Deletes a RuntimeConfig resource.
+ DeleteConfig(ctx context.Context, in *DeleteConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
+ // Lists variables within given a configuration, matching any provided filters.
+ // This only lists variable names, not the values, unless `return_values` is
+ // true, in which case only variables that user has IAM permission to
+ // GetVariable will be returned.
+ ListVariables(ctx context.Context, in *ListVariablesRequest, opts ...grpc.CallOption) (*ListVariablesResponse, error)
+ // Gets information about a single variable.
+ GetVariable(ctx context.Context, in *GetVariableRequest, opts ...grpc.CallOption) (*Variable, error)
+ // Watches a specific variable and waits for a change in the variable's value.
+ // When there is a change, this method returns the new value or times out.
+ //
+ // If a variable is deleted while being watched, the `variableState` state is
+ // set to `DELETED` and the method returns the last known variable `value`.
+ //
+ // If you set the deadline for watching to a larger value than internal timeout
+ // (60 seconds), the current variable value is returned and the `variableState`
+ // will be `VARIABLE_STATE_UNSPECIFIED`.
+ //
+ // To learn more about creating a watcher, read the
+ // [Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)
+ // documentation.
+ WatchVariable(ctx context.Context, in *WatchVariableRequest, opts ...grpc.CallOption) (*Variable, error)
+ // Creates a variable within the given configuration. You cannot create
+ // a variable with a name that is a prefix of an existing variable name, or a
+ // name that has an existing variable name as a prefix.
+ //
+ // To learn more about creating a variable, read the
+ // [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)
+ // documentation.
+ CreateVariable(ctx context.Context, in *CreateVariableRequest, opts ...grpc.CallOption) (*Variable, error)
+ // Updates an existing variable with a new value.
+ UpdateVariable(ctx context.Context, in *UpdateVariableRequest, opts ...grpc.CallOption) (*Variable, error)
+ // Deletes a variable or multiple variables.
+ //
+ // If you specify a variable name, then that variable is deleted. If you
+ // specify a prefix and `recursive` is true, then all variables with that
+ // prefix are deleted. You must set a `recursive` to true if you delete
+ // variables by prefix.
+ DeleteVariable(ctx context.Context, in *DeleteVariableRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
+ // List waiters within the given configuration.
+ ListWaiters(ctx context.Context, in *ListWaitersRequest, opts ...grpc.CallOption) (*ListWaitersResponse, error)
+ // Gets information about a single waiter.
+ GetWaiter(ctx context.Context, in *GetWaiterRequest, opts ...grpc.CallOption) (*Waiter, error)
+ // Creates a Waiter resource. This operation returns a long-running Operation
+ // resource which can be polled for completion. However, a waiter with the
+ // given name will exist (and can be retrieved) prior to the operation
+ // completing. If the operation fails, the failed Waiter resource will
+ // still exist and must be deleted prior to subsequent creation attempts.
+ CreateWaiter(ctx context.Context, in *CreateWaiterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
+ // Deletes the waiter with the specified name.
+ DeleteWaiter(ctx context.Context, in *DeleteWaiterRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
+}
+
+type runtimeConfigManagerClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewRuntimeConfigManagerClient(cc *grpc.ClientConn) RuntimeConfigManagerClient {
+ return &runtimeConfigManagerClient{cc}
+}
+
+func (c *runtimeConfigManagerClient) ListConfigs(ctx context.Context, in *ListConfigsRequest, opts ...grpc.CallOption) (*ListConfigsResponse, error) {
+ out := new(ListConfigsResponse)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListConfigs", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) {
+ out := new(RuntimeConfig)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetConfig", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) CreateConfig(ctx context.Context, in *CreateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) {
+ out := new(RuntimeConfig)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateConfig", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) {
+ out := new(RuntimeConfig)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateConfig", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) DeleteConfig(ctx context.Context, in *DeleteConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
+ out := new(google_protobuf4.Empty)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteConfig", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) ListVariables(ctx context.Context, in *ListVariablesRequest, opts ...grpc.CallOption) (*ListVariablesResponse, error) {
+ out := new(ListVariablesResponse)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListVariables", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) GetVariable(ctx context.Context, in *GetVariableRequest, opts ...grpc.CallOption) (*Variable, error) {
+ out := new(Variable)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetVariable", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) WatchVariable(ctx context.Context, in *WatchVariableRequest, opts ...grpc.CallOption) (*Variable, error) {
+ out := new(Variable)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/WatchVariable", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) CreateVariable(ctx context.Context, in *CreateVariableRequest, opts ...grpc.CallOption) (*Variable, error) {
+ out := new(Variable)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateVariable", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) UpdateVariable(ctx context.Context, in *UpdateVariableRequest, opts ...grpc.CallOption) (*Variable, error) {
+ out := new(Variable)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateVariable", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) DeleteVariable(ctx context.Context, in *DeleteVariableRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
+ out := new(google_protobuf4.Empty)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteVariable", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) ListWaiters(ctx context.Context, in *ListWaitersRequest, opts ...grpc.CallOption) (*ListWaitersResponse, error) {
+ out := new(ListWaitersResponse)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListWaiters", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) GetWaiter(ctx context.Context, in *GetWaiterRequest, opts ...grpc.CallOption) (*Waiter, error) {
+ out := new(Waiter)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetWaiter", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) CreateWaiter(ctx context.Context, in *CreateWaiterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
+ out := new(google_longrunning.Operation)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateWaiter", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeConfigManagerClient) DeleteWaiter(ctx context.Context, in *DeleteWaiterRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
+ out := new(google_protobuf4.Empty)
+ err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteWaiter", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// Server API for RuntimeConfigManager service
+
+type RuntimeConfigManagerServer interface {
+ // Lists all the RuntimeConfig resources within project.
+ ListConfigs(context.Context, *ListConfigsRequest) (*ListConfigsResponse, error)
+ // Gets information about a RuntimeConfig resource.
+ GetConfig(context.Context, *GetConfigRequest) (*RuntimeConfig, error)
+ // Creates a new RuntimeConfig resource. The configuration name must be
+ // unique within project.
+ CreateConfig(context.Context, *CreateConfigRequest) (*RuntimeConfig, error)
+ // Updates a RuntimeConfig resource. The configuration must exist beforehand.
+ UpdateConfig(context.Context, *UpdateConfigRequest) (*RuntimeConfig, error)
+ // Deletes a RuntimeConfig resource.
+ DeleteConfig(context.Context, *DeleteConfigRequest) (*google_protobuf4.Empty, error)
+ // Lists variables within given a configuration, matching any provided filters.
+ // This only lists variable names, not the values, unless `return_values` is
+ // true, in which case only variables that user has IAM permission to
+ // GetVariable will be returned.
+ ListVariables(context.Context, *ListVariablesRequest) (*ListVariablesResponse, error)
+ // Gets information about a single variable.
+ GetVariable(context.Context, *GetVariableRequest) (*Variable, error)
+ // Watches a specific variable and waits for a change in the variable's value.
+ // When there is a change, this method returns the new value or times out.
+ //
+ // If a variable is deleted while being watched, the `variableState` state is
+ // set to `DELETED` and the method returns the last known variable `value`.
+ //
+ // If you set the deadline for watching to a larger value than internal timeout
+ // (60 seconds), the current variable value is returned and the `variableState`
+ // will be `VARIABLE_STATE_UNSPECIFIED`.
+ //
+ // To learn more about creating a watcher, read the
+ // [Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)
+ // documentation.
+ WatchVariable(context.Context, *WatchVariableRequest) (*Variable, error)
+ // Creates a variable within the given configuration. You cannot create
+ // a variable with a name that is a prefix of an existing variable name, or a
+ // name that has an existing variable name as a prefix.
+ //
+ // To learn more about creating a variable, read the
+ // [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)
+ // documentation.
+ CreateVariable(context.Context, *CreateVariableRequest) (*Variable, error)
+ // Updates an existing variable with a new value.
+ UpdateVariable(context.Context, *UpdateVariableRequest) (*Variable, error)
+ // Deletes a variable or multiple variables.
+ //
+ // If you specify a variable name, then that variable is deleted. If you
+ // specify a prefix and `recursive` is true, then all variables with that
+ // prefix are deleted. You must set a `recursive` to true if you delete
+ // variables by prefix.
+ DeleteVariable(context.Context, *DeleteVariableRequest) (*google_protobuf4.Empty, error)
+ // List waiters within the given configuration.
+ ListWaiters(context.Context, *ListWaitersRequest) (*ListWaitersResponse, error)
+ // Gets information about a single waiter.
+ GetWaiter(context.Context, *GetWaiterRequest) (*Waiter, error)
+ // Creates a Waiter resource. This operation returns a long-running Operation
+ // resource which can be polled for completion. However, a waiter with the
+ // given name will exist (and can be retrieved) prior to the operation
+ // completing. If the operation fails, the failed Waiter resource will
+ // still exist and must be deleted prior to subsequent creation attempts.
+ CreateWaiter(context.Context, *CreateWaiterRequest) (*google_longrunning.Operation, error)
+ // Deletes the waiter with the specified name.
+ DeleteWaiter(context.Context, *DeleteWaiterRequest) (*google_protobuf4.Empty, error)
+}
+
+func RegisterRuntimeConfigManagerServer(s *grpc.Server, srv RuntimeConfigManagerServer) {
+ s.RegisterService(&_RuntimeConfigManager_serviceDesc, srv)
+}
+
+func _RuntimeConfigManager_ListConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListConfigsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).ListConfigs(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListConfigs",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).ListConfigs(ctx, req.(*ListConfigsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).GetConfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetConfig",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).GetConfig(ctx, req.(*GetConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_CreateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).CreateConfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateConfig",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).CreateConfig(ctx, req.(*CreateConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_UpdateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdateConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).UpdateConfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateConfig",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).UpdateConfig(ctx, req.(*UpdateConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_DeleteConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).DeleteConfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteConfig",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).DeleteConfig(ctx, req.(*DeleteConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_ListVariables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListVariablesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).ListVariables(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListVariables",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).ListVariables(ctx, req.(*ListVariablesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_GetVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetVariableRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).GetVariable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetVariable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).GetVariable(ctx, req.(*GetVariableRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_WatchVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(WatchVariableRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).WatchVariable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/WatchVariable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).WatchVariable(ctx, req.(*WatchVariableRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_CreateVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateVariableRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).CreateVariable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateVariable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).CreateVariable(ctx, req.(*CreateVariableRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_UpdateVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdateVariableRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).UpdateVariable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateVariable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).UpdateVariable(ctx, req.(*UpdateVariableRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_DeleteVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteVariableRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).DeleteVariable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteVariable",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).DeleteVariable(ctx, req.(*DeleteVariableRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_ListWaiters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListWaitersRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).ListWaiters(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListWaiters",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).ListWaiters(ctx, req.(*ListWaitersRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_GetWaiter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetWaiterRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).GetWaiter(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetWaiter",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).GetWaiter(ctx, req.(*GetWaiterRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_CreateWaiter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateWaiterRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).CreateWaiter(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateWaiter",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).CreateWaiter(ctx, req.(*CreateWaiterRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeConfigManager_DeleteWaiter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteWaiterRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeConfigManagerServer).DeleteWaiter(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteWaiter",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeConfigManagerServer).DeleteWaiter(ctx, req.(*DeleteWaiterRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _RuntimeConfigManager_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager",
+ HandlerType: (*RuntimeConfigManagerServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "ListConfigs",
+ Handler: _RuntimeConfigManager_ListConfigs_Handler,
+ },
+ {
+ MethodName: "GetConfig",
+ Handler: _RuntimeConfigManager_GetConfig_Handler,
+ },
+ {
+ MethodName: "CreateConfig",
+ Handler: _RuntimeConfigManager_CreateConfig_Handler,
+ },
+ {
+ MethodName: "UpdateConfig",
+ Handler: _RuntimeConfigManager_UpdateConfig_Handler,
+ },
+ {
+ MethodName: "DeleteConfig",
+ Handler: _RuntimeConfigManager_DeleteConfig_Handler,
+ },
+ {
+ MethodName: "ListVariables",
+ Handler: _RuntimeConfigManager_ListVariables_Handler,
+ },
+ {
+ MethodName: "GetVariable",
+ Handler: _RuntimeConfigManager_GetVariable_Handler,
+ },
+ {
+ MethodName: "WatchVariable",
+ Handler: _RuntimeConfigManager_WatchVariable_Handler,
+ },
+ {
+ MethodName: "CreateVariable",
+ Handler: _RuntimeConfigManager_CreateVariable_Handler,
+ },
+ {
+ MethodName: "UpdateVariable",
+ Handler: _RuntimeConfigManager_UpdateVariable_Handler,
+ },
+ {
+ MethodName: "DeleteVariable",
+ Handler: _RuntimeConfigManager_DeleteVariable_Handler,
+ },
+ {
+ MethodName: "ListWaiters",
+ Handler: _RuntimeConfigManager_ListWaiters_Handler,
+ },
+ {
+ MethodName: "GetWaiter",
+ Handler: _RuntimeConfigManager_GetWaiter_Handler,
+ },
+ {
+ MethodName: "CreateWaiter",
+ Handler: _RuntimeConfigManager_CreateWaiter_Handler,
+ },
+ {
+ MethodName: "DeleteWaiter",
+ Handler: _RuntimeConfigManager_DeleteWaiter_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto",
+}
+
+func init() {
+ proto.RegisterFile("google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto", fileDescriptor1)
+}
+
+var fileDescriptor1 = []byte{
+ // 1144 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0x5b, 0x6f, 0xdc, 0x44,
+ 0x14, 0xc7, 0x35, 0x69, 0x9b, 0x66, 0x4f, 0x2e, 0xa0, 0xc9, 0x45, 0x91, 0xdb, 0x8a, 0xc8, 0x45,
+ 0x51, 0x58, 0x55, 0x76, 0x93, 0x56, 0x69, 0x12, 0x28, 0x0f, 0x49, 0x51, 0x08, 0x17, 0xb5, 0x32,
+ 0x21, 0x95, 0x78, 0x59, 0x4d, 0x36, 0x13, 0xc7, 0xb0, 0x3b, 0x36, 0xf6, 0x38, 0x81, 0xa2, 0xbc,
+ 0xc0, 0x1b, 0x08, 0x09, 0x89, 0x87, 0xf2, 0x84, 0x10, 0x12, 0x20, 0x21, 0x84, 0x78, 0xe2, 0x05,
+ 0xd1, 0x2f, 0x81, 0xc4, 0x27, 0xe0, 0x83, 0x20, 0xcf, 0xc5, 0x6b, 0x6f, 0xf6, 0x32, 0x0e, 0xe1,
+ 0x2d, 0x39, 0x9e, 0x73, 0xce, 0x6f, 0xce, 0x9c, 0x99, 0xff, 0xd1, 0xc2, 0xaa, 0x1f, 0x86, 0x7e,
+ 0x8b, 0xba, 0xcd, 0x56, 0x98, 0x1e, 0xb8, 0x71, 0xca, 0x78, 0xd0, 0xa6, 0xcd, 0x90, 0x1d, 0x06,
+ 0xbe, 0x7b, 0xbc, 0xbc, 0x4f, 0x39, 0x59, 0x2e, 0x5b, 0x9d, 0x28, 0x0e, 0x79, 0x88, 0x6d, 0xe9,
+ 0xe7, 0x08, 0x3f, 0xa7, 0xbc, 0x42, 0xf9, 0x59, 0xd7, 0x55, 0x6c, 0x12, 0x05, 0x2e, 0x61, 0x2c,
+ 0xe4, 0x84, 0x07, 0x21, 0x4b, 0x64, 0x04, 0x6b, 0xc5, 0x24, 0x33, 0x4d, 0xc2, 0x34, 0x6e, 0x52,
+ 0xed, 0x73, 0x53, 0xf9, 0xb4, 0x42, 0xe6, 0xc7, 0x29, 0x63, 0x01, 0xf3, 0xdd, 0x30, 0xa2, 0x71,
+ 0x29, 0xf0, 0x35, 0xb5, 0x48, 0xfc, 0xb7, 0x9f, 0x1e, 0xba, 0xb4, 0x1d, 0xf1, 0x8f, 0xd5, 0xc7,
+ 0x17, 0xba, 0x3f, 0x66, 0x59, 0x13, 0x4e, 0xda, 0x91, 0x5c, 0x60, 0x1f, 0x01, 0x7e, 0x2b, 0x48,
+ 0xf8, 0x96, 0x00, 0x49, 0x3c, 0xfa, 0x61, 0x4a, 0x13, 0x8e, 0xe7, 0x60, 0x34, 0x22, 0x31, 0x65,
+ 0x7c, 0x1e, 0x2d, 0xa0, 0xa5, 0x9a, 0xa7, 0xfe, 0xc3, 0xd7, 0xa0, 0x16, 0x11, 0x9f, 0x36, 0x92,
+ 0xe0, 0x09, 0x9d, 0x1f, 0x59, 0x40, 0x4b, 0x57, 0xbc, 0xb1, 0xcc, 0xf0, 0x4e, 0xf0, 0x84, 0xe2,
+ 0x1b, 0x00, 0xe2, 0x23, 0x0f, 0x3f, 0xa0, 0x6c, 0xfe, 0x92, 0x70, 0x14, 0xcb, 0x77, 0x33, 0x83,
+ 0xfd, 0x39, 0x82, 0xe9, 0x52, 0xaa, 0x24, 0x0a, 0x59, 0x42, 0xf1, 0x9b, 0x70, 0x55, 0x96, 0x21,
+ 0x99, 0x47, 0x0b, 0x97, 0x96, 0xc6, 0x57, 0x96, 0x9d, 0xe1, 0xc5, 0x76, 0x3c, 0x69, 0x95, 0xc1,
+ 0x3c, 0x1d, 0x01, 0x2f, 0xc2, 0x73, 0x8c, 0x7e, 0xc4, 0x1b, 0x05, 0x90, 0x11, 0x01, 0x32, 0x99,
+ 0x99, 0x1f, 0xe5, 0x30, 0x8b, 0xf0, 0xfc, 0x36, 0x55, 0x28, 0x7a, 0xd3, 0x18, 0x2e, 0x33, 0xd2,
+ 0xa6, 0xca, 0x41, 0xfc, 0x6d, 0x3f, 0x45, 0x30, 0xbd, 0x15, 0x53, 0xc2, 0x69, 0x79, 0x6d, 0xbf,
+ 0x02, 0xed, 0xc0, 0xa8, 0x44, 0x11, 0x51, 0xce, 0xb5, 0x17, 0x15, 0x20, 0x2b, 0x67, 0x2c, 0xb3,
+ 0x35, 0x82, 0x03, 0x5d, 0x4e, 0x65, 0xd9, 0x39, 0xb0, 0x39, 0x4c, 0xbf, 0x1b, 0x1d, 0x9c, 0x01,
+ 0xd3, 0x9b, 0x40, 0x9d, 0x4d, 0x5c, 0x20, 0x94, 0xfd, 0x12, 0x4c, 0x3f, 0xa0, 0x2d, 0x6a, 0x90,
+ 0xd5, 0xfe, 0x09, 0xc1, 0x4c, 0x76, 0xde, 0x7b, 0x24, 0x0e, 0xc8, 0x7e, 0x8b, 0x0e, 0x6d, 0xae,
+ 0x39, 0x18, 0x3d, 0x0c, 0x5a, 0x9c, 0xc6, 0xea, 0x04, 0xd4, 0x7f, 0xe5, 0xa6, 0xbb, 0x34, 0xb0,
+ 0xe9, 0x2e, 0x77, 0x35, 0x1d, 0xbe, 0x09, 0x93, 0x31, 0xe5, 0x69, 0xcc, 0x1a, 0xc7, 0xa4, 0x95,
+ 0xd2, 0x64, 0xfe, 0xca, 0x02, 0x5a, 0x1a, 0xf3, 0x26, 0xa4, 0x71, 0x4f, 0xd8, 0xec, 0x2f, 0x10,
+ 0xcc, 0x76, 0x91, 0xaa, 0xde, 0x7c, 0x03, 0x6a, 0xc7, 0xda, 0xa8, 0xba, 0xf3, 0x96, 0x49, 0xf1,
+ 0x74, 0x24, 0xaf, 0xe3, 0x6e, 0xdc, 0x9a, 0x14, 0x66, 0x1e, 0x13, 0xde, 0x3c, 0xca, 0x63, 0x0c,
+ 0x38, 0xd9, 0x75, 0x00, 0x46, 0x4f, 0x68, 0xdc, 0xe0, 0x47, 0x44, 0xee, 0x7e, 0x7c, 0xc5, 0xd2,
+ 0x80, 0xfa, 0xce, 0x3b, 0xbb, 0xfa, 0xce, 0x7b, 0x35, 0xb1, 0x7a, 0xf7, 0x88, 0x30, 0x7b, 0x09,
+ 0xf0, 0x36, 0xe5, 0x06, 0x49, 0xec, 0x6f, 0x10, 0xcc, 0xca, 0x3b, 0xd0, 0xbd, 0xba, 0xdf, 0x49,
+ 0xbe, 0x0e, 0x63, 0x7a, 0xdf, 0xaa, 0xe5, 0xaa, 0x55, 0x2d, 0xf7, 0x1e, 0x76, 0x09, 0x52, 0x98,
+ 0x95, 0x97, 0xc0, 0xa4, 0x58, 0x17, 0x46, 0x65, 0xef, 0xc0, 0xac, 0xbc, 0x05, 0x26, 0x69, 0xaf,
+ 0x43, 0x2d, 0xa6, 0xcd, 0x34, 0x4e, 0x82, 0x63, 0x99, 0x77, 0xcc, 0xeb, 0x18, 0xf4, 0xfb, 0xfb,
+ 0x98, 0x04, 0x9c, 0xc6, 0xff, 0xeb, 0xfb, 0xfb, 0x99, 0x7a, 0x7f, 0xf3, 0x54, 0xaa, 0xc7, 0x1f,
+ 0xc0, 0xd5, 0x13, 0x69, 0x52, 0x1d, 0x5e, 0x37, 0xa9, 0x8a, 0x8c, 0xe2, 0x69, 0xd7, 0x8a, 0x0f,
+ 0xaf, 0xf2, 0x1e, 0xd0, 0x74, 0x5f, 0xe5, 0x0f, 0x6f, 0x79, 0x6d, 0xbf, 0xca, 0x6c, 0xc2, 0xa8,
+ 0x44, 0x51, 0x47, 0x5b, 0x65, 0x13, 0xca, 0x73, 0x58, 0xb3, 0xe5, 0x6f, 0xdf, 0x50, 0xfa, 0x95,
+ 0xbf, 0x67, 0x60, 0xa6, 0xf4, 0x80, 0xbe, 0x4d, 0x18, 0xf1, 0x69, 0x8c, 0x7f, 0x41, 0x30, 0x5e,
+ 0x10, 0x41, 0xbc, 0x6a, 0x82, 0x79, 0x56, 0xa0, 0xad, 0x7b, 0x95, 0xfd, 0xe4, 0x69, 0xdb, 0xb7,
+ 0x3e, 0xfd, 0xeb, 0x9f, 0xaf, 0x47, 0x16, 0xf1, 0x8b, 0xf9, 0xd0, 0xf1, 0x89, 0xac, 0xe0, 0xfd,
+ 0x28, 0x0e, 0xdf, 0xa7, 0x4d, 0x9e, 0xb8, 0xf5, 0x53, 0x57, 0xcb, 0xe9, 0xf7, 0x08, 0x6a, 0xb9,
+ 0x4e, 0xe2, 0xbb, 0x26, 0x49, 0xbb, 0x65, 0xd5, 0xaa, 0xae, 0x36, 0xbd, 0x20, 0xb3, 0xb2, 0x16,
+ 0x10, 0x35, 0xa1, 0x5b, 0x3f, 0xc5, 0xbf, 0x21, 0x98, 0x28, 0x6a, 0x34, 0x36, 0x2a, 0x4e, 0x0f,
+ 0x55, 0x3f, 0x0f, 0xea, 0x5d, 0x81, 0xea, 0xd8, 0x46, 0xf5, 0xdc, 0xd0, 0xda, 0x9e, 0x21, 0x17,
+ 0xd5, 0xdb, 0x0c, 0xb9, 0x87, 0xde, 0xff, 0x07, 0x64, 0xcb, 0xa8, 0xba, 0x39, 0xf2, 0x97, 0x08,
+ 0x26, 0x8a, 0xd2, 0x6f, 0x86, 0xdc, 0x63, 0x58, 0xb0, 0xe6, 0xce, 0x08, 0xd4, 0x6b, 0xd9, 0xc4,
+ 0xaa, 0x4f, 0xbd, 0x6e, 0x76, 0xea, 0xcf, 0x10, 0x4c, 0x96, 0x44, 0x1b, 0xaf, 0x99, 0xde, 0x89,
+ 0xee, 0x89, 0xc4, 0x5a, 0x3f, 0x87, 0xa7, 0xba, 0x4f, 0x6b, 0x02, 0x7a, 0x05, 0xdf, 0x1e, 0x70,
+ 0xfe, 0x05, 0x6c, 0xb7, 0x33, 0x0f, 0xfc, 0x8a, 0x60, 0xbc, 0xa0, 0xc0, 0x66, 0x4f, 0xc1, 0x59,
+ 0xc9, 0xb6, 0x2a, 0x89, 0x98, 0xbd, 0x2e, 0x78, 0xef, 0xe0, 0x65, 0x83, 0x22, 0x77, 0x60, 0xdd,
+ 0x7a, 0xfd, 0x14, 0xff, 0x81, 0x60, 0xb2, 0x34, 0x99, 0x98, 0x55, 0xbc, 0xd7, 0x30, 0x53, 0x11,
+ 0x7a, 0x53, 0x40, 0xbf, 0x62, 0xdf, 0xab, 0x0c, 0xbd, 0x71, 0x92, 0x65, 0xdf, 0x40, 0x75, 0xfc,
+ 0x27, 0x82, 0xa9, 0xf2, 0x14, 0x83, 0xd7, 0xcd, 0xdf, 0x89, 0x8b, 0xe1, 0xaf, 0xdc, 0x24, 0x1b,
+ 0x9d, 0x49, 0xe8, 0x19, 0x82, 0xa9, 0xf2, 0xac, 0x63, 0xc6, 0xdf, 0x73, 0x3e, 0xaa, 0xc8, 0xbf,
+ 0x25, 0xf8, 0xef, 0x5b, 0xd5, 0x9b, 0xa6, 0xb0, 0x81, 0x6f, 0x11, 0x4c, 0x95, 0xa7, 0x26, 0xb3,
+ 0x0d, 0xf4, 0x9c, 0xb4, 0xfa, 0x3e, 0x22, 0xaa, 0xbf, 0xeb, 0xe7, 0xe8, 0xef, 0xdf, 0x95, 0x36,
+ 0xab, 0x01, 0xc9, 0x5c, 0x9b, 0xcb, 0xc3, 0x9b, 0xb9, 0x36, 0x77, 0x4d, 0x62, 0xf6, 0xaa, 0x60,
+ 0xbf, 0x8d, 0x1d, 0xc3, 0x36, 0xd1, 0xb3, 0xd7, 0x0f, 0x52, 0xa5, 0x65, 0x38, 0x63, 0x95, 0x2e,
+ 0x4d, 0x31, 0x56, 0x85, 0x79, 0xa9, 0x17, 0x67, 0xff, 0x1a, 0x2b, 0xc8, 0xec, 0xc9, 0xfe, 0x31,
+ 0x17, 0x6a, 0x85, 0x5a, 0x41, 0xa8, 0xcb, 0xb4, 0x37, 0xb4, 0x63, 0xe1, 0x97, 0x11, 0xe7, 0xa1,
+ 0xfe, 0x65, 0xc4, 0x7e, 0x55, 0x00, 0xae, 0xd9, 0x15, 0x0b, 0xb9, 0xa1, 0x07, 0xc1, 0xa7, 0xb9,
+ 0xd6, 0x55, 0x01, 0xed, 0x31, 0x1c, 0xf6, 0x6d, 0x53, 0x55, 0xc2, 0x7a, 0xc5, 0x12, 0x6e, 0x7e,
+ 0x87, 0x60, 0xb1, 0x19, 0xb6, 0x0d, 0x70, 0x1e, 0xa1, 0xf7, 0x1e, 0xaa, 0x55, 0x7e, 0xd8, 0x22,
+ 0xcc, 0x77, 0xc2, 0xd8, 0x77, 0x7d, 0xca, 0x04, 0x89, 0x2b, 0x3f, 0x91, 0x28, 0x48, 0x06, 0xfd,
+ 0x22, 0xf5, 0x72, 0xc9, 0xfa, 0xf3, 0x88, 0xbd, 0x2d, 0x23, 0x6e, 0x89, 0xbc, 0xa5, 0xb1, 0xc2,
+ 0xd9, 0x5b, 0xde, 0xcc, 0x5c, 0xf6, 0x47, 0x45, 0x82, 0x3b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff,
+ 0xdb, 0xa7, 0xdc, 0xe8, 0x6b, 0x13, 0x00, 0x00,
+}
diff --git a/vendor/google.golang.org/genproto/googleapis/longrunning/operations.pb.go b/vendor/google.golang.org/genproto/googleapis/longrunning/operations.pb.go
new file mode 100644
index 0000000..4f947fe
--- /dev/null
+++ b/vendor/google.golang.org/genproto/googleapis/longrunning/operations.pb.go
@@ -0,0 +1,596 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/longrunning/operations.proto
+
+/*
+Package longrunning is a generated protocol buffer package.
+
+It is generated from these files:
+ google/longrunning/operations.proto
+
+It has these top-level messages:
+ Operation
+ GetOperationRequest
+ ListOperationsRequest
+ ListOperationsResponse
+ CancelOperationRequest
+ DeleteOperationRequest
+*/
+package longrunning
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/any"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/empty"
+import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
+
+import (
+ context "golang.org/x/net/context"
+ grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// This resource represents a long-running operation that is the result of a
+// network API call.
+type Operation struct {
+ // The server-assigned name, which is only unique within the same service that
+ // originally returns it. If you use the default HTTP mapping, the
+ // `name` should have the format of `operations/some/unique/name`.
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // Service-specific metadata associated with the operation. It typically
+ // contains progress information and common metadata such as create time.
+ // Some services might not provide such metadata. Any method that returns a
+ // long-running operation should document the metadata type, if any.
+ Metadata *google_protobuf1.Any `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
+ // If the value is `false`, it means the operation is still in progress.
+ // If true, the operation is completed, and either `error` or `response` is
+ // available.
+ Done bool `protobuf:"varint,3,opt,name=done" json:"done,omitempty"`
+ // The operation result, which can be either an `error` or a valid `response`.
+ // If `done` == `false`, neither `error` nor `response` is set.
+ // If `done` == `true`, exactly one of `error` or `response` is set.
+ //
+ // Types that are valid to be assigned to Result:
+ // *Operation_Error
+ // *Operation_Response
+ Result isOperation_Result `protobuf_oneof:"result"`
+}
+
+func (m *Operation) Reset() { *m = Operation{} }
+func (m *Operation) String() string { return proto.CompactTextString(m) }
+func (*Operation) ProtoMessage() {}
+func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type isOperation_Result interface {
+ isOperation_Result()
+}
+
+type Operation_Error struct {
+ Error *google_rpc.Status `protobuf:"bytes,4,opt,name=error,oneof"`
+}
+type Operation_Response struct {
+ Response *google_protobuf1.Any `protobuf:"bytes,5,opt,name=response,oneof"`
+}
+
+func (*Operation_Error) isOperation_Result() {}
+func (*Operation_Response) isOperation_Result() {}
+
+func (m *Operation) GetResult() isOperation_Result {
+ if m != nil {
+ return m.Result
+ }
+ return nil
+}
+
+func (m *Operation) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *Operation) GetMetadata() *google_protobuf1.Any {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *Operation) GetDone() bool {
+ if m != nil {
+ return m.Done
+ }
+ return false
+}
+
+func (m *Operation) GetError() *google_rpc.Status {
+ if x, ok := m.GetResult().(*Operation_Error); ok {
+ return x.Error
+ }
+ return nil
+}
+
+func (m *Operation) GetResponse() *google_protobuf1.Any {
+ if x, ok := m.GetResult().(*Operation_Response); ok {
+ return x.Response
+ }
+ return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Operation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+ return _Operation_OneofMarshaler, _Operation_OneofUnmarshaler, _Operation_OneofSizer, []interface{}{
+ (*Operation_Error)(nil),
+ (*Operation_Response)(nil),
+ }
+}
+
+func _Operation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+ m := msg.(*Operation)
+ // result
+ switch x := m.Result.(type) {
+ case *Operation_Error:
+ b.EncodeVarint(4<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.Error); err != nil {
+ return err
+ }
+ case *Operation_Response:
+ b.EncodeVarint(5<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.Response); err != nil {
+ return err
+ }
+ case nil:
+ default:
+ return fmt.Errorf("Operation.Result has unexpected type %T", x)
+ }
+ return nil
+}
+
+func _Operation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+ m := msg.(*Operation)
+ switch tag {
+ case 4: // result.error
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(google_rpc.Status)
+ err := b.DecodeMessage(msg)
+ m.Result = &Operation_Error{msg}
+ return true, err
+ case 5: // result.response
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(google_protobuf1.Any)
+ err := b.DecodeMessage(msg)
+ m.Result = &Operation_Response{msg}
+ return true, err
+ default:
+ return false, nil
+ }
+}
+
+func _Operation_OneofSizer(msg proto.Message) (n int) {
+ m := msg.(*Operation)
+ // result
+ switch x := m.Result.(type) {
+ case *Operation_Error:
+ s := proto.Size(x.Error)
+ n += proto.SizeVarint(4<<3 | proto.WireBytes)
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case *Operation_Response:
+ s := proto.Size(x.Response)
+ n += proto.SizeVarint(5<<3 | proto.WireBytes)
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case nil:
+ default:
+ panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+ }
+ return n
+}
+
+// The request message for [Operations.GetOperation][google.longrunning.Operations.GetOperation].
+type GetOperationRequest struct {
+ // The name of the operation resource.
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetOperationRequest) Reset() { *m = GetOperationRequest{} }
+func (m *GetOperationRequest) String() string { return proto.CompactTextString(m) }
+func (*GetOperationRequest) ProtoMessage() {}
+func (*GetOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *GetOperationRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+// The request message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
+type ListOperationsRequest struct {
+ // The name of the operation collection.
+ Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"`
+ // The standard list filter.
+ Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
+ // The standard list page size.
+ PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+ // The standard list page token.
+ PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListOperationsRequest) Reset() { *m = ListOperationsRequest{} }
+func (m *ListOperationsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListOperationsRequest) ProtoMessage() {}
+func (*ListOperationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *ListOperationsRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *ListOperationsRequest) GetFilter() string {
+ if m != nil {
+ return m.Filter
+ }
+ return ""
+}
+
+func (m *ListOperationsRequest) GetPageSize() int32 {
+ if m != nil {
+ return m.PageSize
+ }
+ return 0
+}
+
+func (m *ListOperationsRequest) GetPageToken() string {
+ if m != nil {
+ return m.PageToken
+ }
+ return ""
+}
+
+// The response message for [Operations.ListOperations][google.longrunning.Operations.ListOperations].
+type ListOperationsResponse struct {
+ // A list of operations that matches the specified filter in the request.
+ Operations []*Operation `protobuf:"bytes,1,rep,name=operations" json:"operations,omitempty"`
+ // The standard List next-page token.
+ NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListOperationsResponse) Reset() { *m = ListOperationsResponse{} }
+func (m *ListOperationsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListOperationsResponse) ProtoMessage() {}
+func (*ListOperationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *ListOperationsResponse) GetOperations() []*Operation {
+ if m != nil {
+ return m.Operations
+ }
+ return nil
+}
+
+func (m *ListOperationsResponse) GetNextPageToken() string {
+ if m != nil {
+ return m.NextPageToken
+ }
+ return ""
+}
+
+// The request message for [Operations.CancelOperation][google.longrunning.Operations.CancelOperation].
+type CancelOperationRequest struct {
+ // The name of the operation resource to be cancelled.
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *CancelOperationRequest) Reset() { *m = CancelOperationRequest{} }
+func (m *CancelOperationRequest) String() string { return proto.CompactTextString(m) }
+func (*CancelOperationRequest) ProtoMessage() {}
+func (*CancelOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *CancelOperationRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+// The request message for [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation].
+type DeleteOperationRequest struct {
+ // The name of the operation resource to be deleted.
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *DeleteOperationRequest) Reset() { *m = DeleteOperationRequest{} }
+func (m *DeleteOperationRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteOperationRequest) ProtoMessage() {}
+func (*DeleteOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *DeleteOperationRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterType((*Operation)(nil), "google.longrunning.Operation")
+ proto.RegisterType((*GetOperationRequest)(nil), "google.longrunning.GetOperationRequest")
+ proto.RegisterType((*ListOperationsRequest)(nil), "google.longrunning.ListOperationsRequest")
+ proto.RegisterType((*ListOperationsResponse)(nil), "google.longrunning.ListOperationsResponse")
+ proto.RegisterType((*CancelOperationRequest)(nil), "google.longrunning.CancelOperationRequest")
+ proto.RegisterType((*DeleteOperationRequest)(nil), "google.longrunning.DeleteOperationRequest")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for Operations service
+
+type OperationsClient interface {
+ // Lists operations that match the specified filter in the request. If the
+ // server doesn't support this method, it returns `UNIMPLEMENTED`.
+ //
+ // NOTE: the `name` binding below allows API services to override the binding
+ // to use different resource name schemes, such as `users/*/operations`.
+ ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error)
+ // Gets the latest state of a long-running operation. Clients can use this
+ // method to poll the operation result at intervals as recommended by the API
+ // service.
+ GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error)
+ // Deletes a long-running operation. This method indicates that the client is
+ // no longer interested in the operation result. It does not cancel the
+ // operation. If the server doesn't support this method, it returns
+ // `google.rpc.Code.UNIMPLEMENTED`.
+ DeleteOperation(ctx context.Context, in *DeleteOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
+ // Starts asynchronous cancellation on a long-running operation. The server
+ // makes a best effort to cancel the operation, but success is not
+ // guaranteed. If the server doesn't support this method, it returns
+ // `google.rpc.Code.UNIMPLEMENTED`. Clients can use
+ // [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+ // other methods to check whether the cancellation succeeded or whether the
+ // operation completed despite cancellation. On successful cancellation,
+ // the operation is not deleted; instead, it becomes an operation with
+ // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
+ // corresponding to `Code.CANCELLED`.
+ CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
+}
+
+type operationsClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewOperationsClient(cc *grpc.ClientConn) OperationsClient {
+ return &operationsClient{cc}
+}
+
+func (c *operationsClient) ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) {
+ out := new(ListOperationsResponse)
+ err := grpc.Invoke(ctx, "/google.longrunning.Operations/ListOperations", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *operationsClient) GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) {
+ out := new(Operation)
+ err := grpc.Invoke(ctx, "/google.longrunning.Operations/GetOperation", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *operationsClient) DeleteOperation(ctx context.Context, in *DeleteOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+ out := new(google_protobuf2.Empty)
+ err := grpc.Invoke(ctx, "/google.longrunning.Operations/DeleteOperation", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *operationsClient) CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+ out := new(google_protobuf2.Empty)
+ err := grpc.Invoke(ctx, "/google.longrunning.Operations/CancelOperation", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// Server API for Operations service
+
+type OperationsServer interface {
+ // Lists operations that match the specified filter in the request. If the
+ // server doesn't support this method, it returns `UNIMPLEMENTED`.
+ //
+ // NOTE: the `name` binding below allows API services to override the binding
+ // to use different resource name schemes, such as `users/*/operations`.
+ ListOperations(context.Context, *ListOperationsRequest) (*ListOperationsResponse, error)
+ // Gets the latest state of a long-running operation. Clients can use this
+ // method to poll the operation result at intervals as recommended by the API
+ // service.
+ GetOperation(context.Context, *GetOperationRequest) (*Operation, error)
+ // Deletes a long-running operation. This method indicates that the client is
+ // no longer interested in the operation result. It does not cancel the
+ // operation. If the server doesn't support this method, it returns
+ // `google.rpc.Code.UNIMPLEMENTED`.
+ DeleteOperation(context.Context, *DeleteOperationRequest) (*google_protobuf2.Empty, error)
+ // Starts asynchronous cancellation on a long-running operation. The server
+ // makes a best effort to cancel the operation, but success is not
+ // guaranteed. If the server doesn't support this method, it returns
+ // `google.rpc.Code.UNIMPLEMENTED`. Clients can use
+ // [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+ // other methods to check whether the cancellation succeeded or whether the
+ // operation completed despite cancellation. On successful cancellation,
+ // the operation is not deleted; instead, it becomes an operation with
+ // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
+ // corresponding to `Code.CANCELLED`.
+ CancelOperation(context.Context, *CancelOperationRequest) (*google_protobuf2.Empty, error)
+}
+
+func RegisterOperationsServer(s *grpc.Server, srv OperationsServer) {
+ s.RegisterService(&_Operations_serviceDesc, srv)
+}
+
+func _Operations_ListOperations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListOperationsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OperationsServer).ListOperations(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.longrunning.Operations/ListOperations",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OperationsServer).ListOperations(ctx, req.(*ListOperationsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Operations_GetOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetOperationRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OperationsServer).GetOperation(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.longrunning.Operations/GetOperation",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OperationsServer).GetOperation(ctx, req.(*GetOperationRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Operations_DeleteOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteOperationRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OperationsServer).DeleteOperation(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.longrunning.Operations/DeleteOperation",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OperationsServer).DeleteOperation(ctx, req.(*DeleteOperationRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Operations_CancelOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CancelOperationRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OperationsServer).CancelOperation(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/google.longrunning.Operations/CancelOperation",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OperationsServer).CancelOperation(ctx, req.(*CancelOperationRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _Operations_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "google.longrunning.Operations",
+ HandlerType: (*OperationsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "ListOperations",
+ Handler: _Operations_ListOperations_Handler,
+ },
+ {
+ MethodName: "GetOperation",
+ Handler: _Operations_GetOperation_Handler,
+ },
+ {
+ MethodName: "DeleteOperation",
+ Handler: _Operations_DeleteOperation_Handler,
+ },
+ {
+ MethodName: "CancelOperation",
+ Handler: _Operations_CancelOperation_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "google/longrunning/operations.proto",
+}
+
+func init() { proto.RegisterFile("google/longrunning/operations.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+ // 586 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6e, 0xd3, 0x40,
+ 0x10, 0xad, 0xd3, 0x24, 0x4a, 0xa6, 0x40, 0xa4, 0x85, 0xba, 0xc6, 0x25, 0x22, 0x32, 0x08, 0x52,
+ 0xab, 0xb2, 0x21, 0xdc, 0x8a, 0x72, 0x20, 0x80, 0xda, 0x43, 0x25, 0x22, 0x97, 0x13, 0x97, 0x6a,
+ 0x9b, 0x4e, 0x2d, 0x0b, 0x67, 0xd7, 0xac, 0x37, 0xd0, 0x16, 0x55, 0x11, 0x1c, 0x38, 0x71, 0xe3,
+ 0x2f, 0xf8, 0x19, 0x0e, 0xfc, 0x02, 0x1f, 0x82, 0xbc, 0x76, 0x62, 0x93, 0x3a, 0x28, 0xb7, 0xf5,
+ 0xcc, 0x9b, 0x79, 0xf3, 0xde, 0xce, 0x1a, 0x1e, 0xf8, 0x9c, 0xfb, 0x21, 0xba, 0x21, 0x67, 0xbe,
+ 0x98, 0x30, 0x16, 0x30, 0xdf, 0xe5, 0x11, 0x0a, 0x2a, 0x03, 0xce, 0x62, 0x27, 0x12, 0x5c, 0x72,
+ 0x42, 0x52, 0x90, 0x53, 0x00, 0x99, 0xf7, 0xb2, 0x42, 0x1a, 0x05, 0x2e, 0x65, 0x8c, 0xcb, 0x62,
+ 0x85, 0x79, 0x37, 0xcb, 0xaa, 0xaf, 0x93, 0xc9, 0x99, 0x4b, 0xd9, 0x45, 0x96, 0xda, 0x5e, 0x4c,
+ 0xe1, 0x38, 0x92, 0xb3, 0xe4, 0x56, 0x96, 0x14, 0xd1, 0xc8, 0x8d, 0x25, 0x95, 0x93, 0xac, 0xa1,
+ 0xf5, 0x4b, 0x83, 0xe6, 0x9b, 0xd9, 0x5c, 0x84, 0x40, 0x95, 0xd1, 0x31, 0x1a, 0x5a, 0x47, 0xeb,
+ 0x36, 0x3d, 0x75, 0x26, 0x4f, 0xa0, 0x31, 0x46, 0x49, 0x4f, 0xa9, 0xa4, 0x46, 0xa5, 0xa3, 0x75,
+ 0x37, 0x7a, 0x77, 0x9c, 0x6c, 0xee, 0x19, 0x95, 0xf3, 0x82, 0x5d, 0x78, 0x73, 0x54, 0xd2, 0xe5,
+ 0x94, 0x33, 0x34, 0xd6, 0x3b, 0x5a, 0xb7, 0xe1, 0xa9, 0x33, 0xb1, 0xa1, 0x86, 0x42, 0x70, 0x61,
+ 0x54, 0x55, 0x0b, 0x32, 0x6b, 0x21, 0xa2, 0x91, 0x73, 0xa4, 0x06, 0x3a, 0x58, 0xf3, 0x52, 0x08,
+ 0xe9, 0x41, 0x43, 0x60, 0x1c, 0x71, 0x16, 0xa3, 0x51, 0x5b, 0xce, 0x78, 0xb0, 0xe6, 0xcd, 0x71,
+ 0x83, 0x06, 0xd4, 0x05, 0xc6, 0x93, 0x50, 0x5a, 0x3b, 0x70, 0x7b, 0x1f, 0xe5, 0x5c, 0x93, 0x87,
+ 0x1f, 0x26, 0x18, 0xcb, 0x32, 0x69, 0xd6, 0x14, 0x36, 0x0f, 0x83, 0x38, 0xc7, 0xc6, 0x8b, 0xe0,
+ 0x6a, 0xc1, 0x07, 0x1d, 0xea, 0x67, 0x41, 0x28, 0x51, 0x64, 0x2d, 0xb2, 0x2f, 0xb2, 0x0d, 0xcd,
+ 0x88, 0xfa, 0x78, 0x1c, 0x07, 0x97, 0xa8, 0x0c, 0xaa, 0x79, 0x8d, 0x24, 0x70, 0x14, 0x5c, 0x22,
+ 0x69, 0x03, 0xa8, 0xa4, 0xe4, 0xef, 0x91, 0x29, 0x43, 0x9a, 0x9e, 0x82, 0xbf, 0x4d, 0x02, 0xd6,
+ 0x14, 0xf4, 0xc5, 0x01, 0x52, 0x3d, 0xa4, 0x0f, 0x90, 0xaf, 0x8b, 0xa1, 0x75, 0xd6, 0xbb, 0x1b,
+ 0xbd, 0xb6, 0x73, 0x7d, 0x5f, 0x9c, 0x5c, 0x68, 0xa1, 0x80, 0x3c, 0x82, 0x16, 0xc3, 0x73, 0x79,
+ 0x5c, 0x20, 0xaf, 0x28, 0xf2, 0x9b, 0x49, 0x78, 0x38, 0x1f, 0x60, 0x17, 0xf4, 0x97, 0x94, 0x8d,
+ 0x30, 0x5c, 0xc9, 0xaf, 0x5d, 0xd0, 0x5f, 0x61, 0x88, 0x12, 0x57, 0x41, 0xf7, 0xbe, 0x57, 0x01,
+ 0x72, 0x65, 0xe4, 0x9b, 0x06, 0xb7, 0xfe, 0x15, 0x4b, 0x76, 0xca, 0x04, 0x95, 0xde, 0x88, 0x69,
+ 0xaf, 0x02, 0x4d, 0xbd, 0xb3, 0xda, 0x5f, 0x7f, 0xff, 0xf9, 0x51, 0xd9, 0x22, 0x9b, 0xee, 0xc7,
+ 0xa7, 0xee, 0xe7, 0x64, 0x96, 0x7e, 0x6e, 0xcd, 0x15, 0x39, 0x87, 0x1b, 0xc5, 0x05, 0x21, 0x8f,
+ 0xcb, 0x5a, 0x97, 0xac, 0x90, 0xf9, 0x7f, 0xff, 0xad, 0x8e, 0xa2, 0x35, 0x89, 0x51, 0x46, 0xeb,
+ 0xda, 0xf6, 0x15, 0xf9, 0x04, 0xad, 0x05, 0xff, 0x48, 0xa9, 0xae, 0x72, 0x93, 0x4d, 0xfd, 0xda,
+ 0x2b, 0x78, 0x9d, 0x3c, 0xf1, 0x19, 0xb1, 0xbd, 0x9c, 0xf8, 0x8b, 0x06, 0xad, 0x85, 0x7b, 0x2e,
+ 0x67, 0x2e, 0x5f, 0x86, 0xa5, 0xcc, 0xb6, 0x62, 0x7e, 0x68, 0xdd, 0x5f, 0xc6, 0xbc, 0x37, 0x52,
+ 0x0d, 0xf7, 0x34, 0x7b, 0x30, 0x05, 0x7d, 0xc4, 0xc7, 0x25, 0xa4, 0x83, 0x56, 0x7e, 0x87, 0xc3,
+ 0xa4, 0xff, 0x50, 0x7b, 0xd7, 0xcf, 0x60, 0x3e, 0x0f, 0x29, 0xf3, 0x1d, 0x2e, 0x7c, 0xd7, 0x47,
+ 0xa6, 0xd8, 0xdd, 0x34, 0x45, 0xa3, 0x20, 0x2e, 0xfe, 0x5d, 0x9f, 0x17, 0xce, 0x3f, 0x2b, 0x64,
+ 0x3f, 0xad, 0x3f, 0xe4, 0xcc, 0xf7, 0xd2, 0xe0, 0x49, 0x5d, 0x95, 0x3f, 0xfb, 0x1b, 0x00, 0x00,
+ 0xff, 0xff, 0x69, 0x4c, 0xa6, 0x3e, 0x9b, 0x05, 0x00, 0x00,
+}