| // Copyright 2024 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // https://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // Code generated by protoc-gen-go_gapic. DO NOT EDIT. |
| |
| package instance |
| |
| import ( |
| "bytes" |
| "context" |
| "fmt" |
| "io" |
| "math" |
| "net/http" |
| "net/url" |
| "time" |
| |
| iampb "cloud.google.com/go/iam/apiv1/iampb" |
| "cloud.google.com/go/longrunning" |
| lroauto "cloud.google.com/go/longrunning/autogen" |
| longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" |
| instancepb "cloud.google.com/go/spanner/admin/instance/apiv1/instancepb" |
| gax "github.com/googleapis/gax-go/v2" |
| "google.golang.org/api/googleapi" |
| "google.golang.org/api/iterator" |
| "google.golang.org/api/option" |
| "google.golang.org/api/option/internaloption" |
| gtransport "google.golang.org/api/transport/grpc" |
| httptransport "google.golang.org/api/transport/http" |
| "google.golang.org/grpc" |
| "google.golang.org/grpc/codes" |
| "google.golang.org/protobuf/encoding/protojson" |
| "google.golang.org/protobuf/proto" |
| ) |
| |
| var newInstanceAdminClientHook clientHook |
| |
| // InstanceAdminCallOptions contains the retry settings for each method of InstanceAdminClient. |
| type InstanceAdminCallOptions struct { |
| ListInstanceConfigs []gax.CallOption |
| GetInstanceConfig []gax.CallOption |
| CreateInstanceConfig []gax.CallOption |
| UpdateInstanceConfig []gax.CallOption |
| DeleteInstanceConfig []gax.CallOption |
| ListInstanceConfigOperations []gax.CallOption |
| ListInstances []gax.CallOption |
| ListInstancePartitions []gax.CallOption |
| GetInstance []gax.CallOption |
| CreateInstance []gax.CallOption |
| UpdateInstance []gax.CallOption |
| DeleteInstance []gax.CallOption |
| SetIamPolicy []gax.CallOption |
| GetIamPolicy []gax.CallOption |
| TestIamPermissions []gax.CallOption |
| GetInstancePartition []gax.CallOption |
| CreateInstancePartition []gax.CallOption |
| DeleteInstancePartition []gax.CallOption |
| UpdateInstancePartition []gax.CallOption |
| ListInstancePartitionOperations []gax.CallOption |
| } |
| |
| func defaultInstanceAdminGRPCClientOptions() []option.ClientOption { |
| return []option.ClientOption{ |
| internaloption.WithDefaultEndpoint("spanner.googleapis.com:443"), |
| internaloption.WithDefaultEndpointTemplate("spanner.UNIVERSE_DOMAIN:443"), |
| internaloption.WithDefaultMTLSEndpoint("spanner.mtls.googleapis.com:443"), |
| internaloption.WithDefaultUniverseDomain("googleapis.com"), |
| internaloption.WithDefaultAudience("https://spanner.googleapis.com/"), |
| internaloption.WithDefaultScopes(DefaultAuthScopes()...), |
| internaloption.EnableJwtWithScope(), |
| option.WithGRPCDialOption(grpc.WithDefaultCallOptions( |
| grpc.MaxCallRecvMsgSize(math.MaxInt32))), |
| } |
| } |
| |
| func defaultInstanceAdminCallOptions() *InstanceAdminCallOptions { |
| return &InstanceAdminCallOptions{ |
| ListInstanceConfigs: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnCodes([]codes.Code{ |
| codes.Unavailable, |
| codes.DeadlineExceeded, |
| }, gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }) |
| }), |
| }, |
| GetInstanceConfig: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnCodes([]codes.Code{ |
| codes.Unavailable, |
| codes.DeadlineExceeded, |
| }, gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }) |
| }), |
| }, |
| CreateInstanceConfig: []gax.CallOption{}, |
| UpdateInstanceConfig: []gax.CallOption{}, |
| DeleteInstanceConfig: []gax.CallOption{}, |
| ListInstanceConfigOperations: []gax.CallOption{}, |
| ListInstances: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnCodes([]codes.Code{ |
| codes.Unavailable, |
| codes.DeadlineExceeded, |
| }, gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }) |
| }), |
| }, |
| ListInstancePartitions: []gax.CallOption{}, |
| GetInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnCodes([]codes.Code{ |
| codes.Unavailable, |
| codes.DeadlineExceeded, |
| }, gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }) |
| }), |
| }, |
| CreateInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| }, |
| UpdateInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| }, |
| DeleteInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnCodes([]codes.Code{ |
| codes.Unavailable, |
| codes.DeadlineExceeded, |
| }, gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }) |
| }), |
| }, |
| SetIamPolicy: []gax.CallOption{ |
| gax.WithTimeout(30000 * time.Millisecond), |
| }, |
| GetIamPolicy: []gax.CallOption{ |
| gax.WithTimeout(30000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnCodes([]codes.Code{ |
| codes.Unavailable, |
| codes.DeadlineExceeded, |
| }, gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }) |
| }), |
| }, |
| TestIamPermissions: []gax.CallOption{ |
| gax.WithTimeout(30000 * time.Millisecond), |
| }, |
| GetInstancePartition: []gax.CallOption{}, |
| CreateInstancePartition: []gax.CallOption{}, |
| DeleteInstancePartition: []gax.CallOption{}, |
| UpdateInstancePartition: []gax.CallOption{}, |
| ListInstancePartitionOperations: []gax.CallOption{}, |
| } |
| } |
| |
| func defaultInstanceAdminRESTCallOptions() *InstanceAdminCallOptions { |
| return &InstanceAdminCallOptions{ |
| ListInstanceConfigs: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnHTTPCodes(gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }, |
| http.StatusServiceUnavailable, |
| http.StatusGatewayTimeout) |
| }), |
| }, |
| GetInstanceConfig: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnHTTPCodes(gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }, |
| http.StatusServiceUnavailable, |
| http.StatusGatewayTimeout) |
| }), |
| }, |
| CreateInstanceConfig: []gax.CallOption{}, |
| UpdateInstanceConfig: []gax.CallOption{}, |
| DeleteInstanceConfig: []gax.CallOption{}, |
| ListInstanceConfigOperations: []gax.CallOption{}, |
| ListInstances: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnHTTPCodes(gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }, |
| http.StatusServiceUnavailable, |
| http.StatusGatewayTimeout) |
| }), |
| }, |
| ListInstancePartitions: []gax.CallOption{}, |
| GetInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnHTTPCodes(gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }, |
| http.StatusServiceUnavailable, |
| http.StatusGatewayTimeout) |
| }), |
| }, |
| CreateInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| }, |
| UpdateInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| }, |
| DeleteInstance: []gax.CallOption{ |
| gax.WithTimeout(3600000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnHTTPCodes(gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }, |
| http.StatusServiceUnavailable, |
| http.StatusGatewayTimeout) |
| }), |
| }, |
| SetIamPolicy: []gax.CallOption{ |
| gax.WithTimeout(30000 * time.Millisecond), |
| }, |
| GetIamPolicy: []gax.CallOption{ |
| gax.WithTimeout(30000 * time.Millisecond), |
| gax.WithRetry(func() gax.Retryer { |
| return gax.OnHTTPCodes(gax.Backoff{ |
| Initial: 1000 * time.Millisecond, |
| Max: 32000 * time.Millisecond, |
| Multiplier: 1.30, |
| }, |
| http.StatusServiceUnavailable, |
| http.StatusGatewayTimeout) |
| }), |
| }, |
| TestIamPermissions: []gax.CallOption{ |
| gax.WithTimeout(30000 * time.Millisecond), |
| }, |
| GetInstancePartition: []gax.CallOption{}, |
| CreateInstancePartition: []gax.CallOption{}, |
| DeleteInstancePartition: []gax.CallOption{}, |
| UpdateInstancePartition: []gax.CallOption{}, |
| ListInstancePartitionOperations: []gax.CallOption{}, |
| } |
| } |
| |
| // internalInstanceAdminClient is an interface that defines the methods available from Cloud Spanner Instance Admin API. |
| type internalInstanceAdminClient interface { |
| Close() error |
| setGoogleClientInfo(...string) |
| Connection() *grpc.ClientConn |
| ListInstanceConfigs(context.Context, *instancepb.ListInstanceConfigsRequest, ...gax.CallOption) *InstanceConfigIterator |
| GetInstanceConfig(context.Context, *instancepb.GetInstanceConfigRequest, ...gax.CallOption) (*instancepb.InstanceConfig, error) |
| CreateInstanceConfig(context.Context, *instancepb.CreateInstanceConfigRequest, ...gax.CallOption) (*CreateInstanceConfigOperation, error) |
| CreateInstanceConfigOperation(name string) *CreateInstanceConfigOperation |
| UpdateInstanceConfig(context.Context, *instancepb.UpdateInstanceConfigRequest, ...gax.CallOption) (*UpdateInstanceConfigOperation, error) |
| UpdateInstanceConfigOperation(name string) *UpdateInstanceConfigOperation |
| DeleteInstanceConfig(context.Context, *instancepb.DeleteInstanceConfigRequest, ...gax.CallOption) error |
| ListInstanceConfigOperations(context.Context, *instancepb.ListInstanceConfigOperationsRequest, ...gax.CallOption) *OperationIterator |
| ListInstances(context.Context, *instancepb.ListInstancesRequest, ...gax.CallOption) *InstanceIterator |
| ListInstancePartitions(context.Context, *instancepb.ListInstancePartitionsRequest, ...gax.CallOption) *InstancePartitionIterator |
| GetInstance(context.Context, *instancepb.GetInstanceRequest, ...gax.CallOption) (*instancepb.Instance, error) |
| CreateInstance(context.Context, *instancepb.CreateInstanceRequest, ...gax.CallOption) (*CreateInstanceOperation, error) |
| CreateInstanceOperation(name string) *CreateInstanceOperation |
| UpdateInstance(context.Context, *instancepb.UpdateInstanceRequest, ...gax.CallOption) (*UpdateInstanceOperation, error) |
| UpdateInstanceOperation(name string) *UpdateInstanceOperation |
| DeleteInstance(context.Context, *instancepb.DeleteInstanceRequest, ...gax.CallOption) error |
| SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error) |
| GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error) |
| TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest, ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) |
| GetInstancePartition(context.Context, *instancepb.GetInstancePartitionRequest, ...gax.CallOption) (*instancepb.InstancePartition, error) |
| CreateInstancePartition(context.Context, *instancepb.CreateInstancePartitionRequest, ...gax.CallOption) (*CreateInstancePartitionOperation, error) |
| CreateInstancePartitionOperation(name string) *CreateInstancePartitionOperation |
| DeleteInstancePartition(context.Context, *instancepb.DeleteInstancePartitionRequest, ...gax.CallOption) error |
| UpdateInstancePartition(context.Context, *instancepb.UpdateInstancePartitionRequest, ...gax.CallOption) (*UpdateInstancePartitionOperation, error) |
| UpdateInstancePartitionOperation(name string) *UpdateInstancePartitionOperation |
| ListInstancePartitionOperations(context.Context, *instancepb.ListInstancePartitionOperationsRequest, ...gax.CallOption) *OperationIterator |
| } |
| |
| // InstanceAdminClient is a client for interacting with Cloud Spanner Instance Admin API. |
| // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. |
| // |
| // # Cloud Spanner Instance Admin API |
| // |
| // The Cloud Spanner Instance Admin API can be used to create, delete, |
| // modify and list instances. Instances are dedicated Cloud Spanner serving |
| // and storage resources to be used by Cloud Spanner databases. |
| // |
| // Each instance has a “configuration”, which dictates where the |
| // serving resources for the Cloud Spanner instance are located (e.g., |
| // US-central, Europe). Configurations are created by Google based on |
| // resource availability. |
| // |
| // Cloud Spanner billing is based on the instances that exist and their |
| // sizes. After an instance exists, there are no additional |
| // per-database or per-operation charges for use of the instance |
| // (though there may be additional network bandwidth charges). |
| // Instances offer isolation: problems with databases in one instance |
| // will not affect other instances. However, within an instance |
| // databases can affect each other. For example, if one database in an |
| // instance receives a lot of requests and consumes most of the |
| // instance resources, fewer resources are available for other |
| // databases in that instance, and their performance may suffer. |
| type InstanceAdminClient struct { |
| // The internal transport-dependent client. |
| internalClient internalInstanceAdminClient |
| |
| // The call options for this service. |
| CallOptions *InstanceAdminCallOptions |
| |
| // LROClient is used internally to handle long-running operations. |
| // It is exposed so that its CallOptions can be modified if required. |
| // Users should not Close this client. |
| LROClient *lroauto.OperationsClient |
| } |
| |
| // Wrapper methods routed to the internal client. |
| |
| // Close closes the connection to the API service. The user should invoke this when |
| // the client is no longer required. |
| func (c *InstanceAdminClient) Close() error { |
| return c.internalClient.Close() |
| } |
| |
| // setGoogleClientInfo sets the name and version of the application in |
| // the `x-goog-api-client` header passed on each request. Intended for |
| // use by Google-written clients. |
| func (c *InstanceAdminClient) setGoogleClientInfo(keyval ...string) { |
| c.internalClient.setGoogleClientInfo(keyval...) |
| } |
| |
| // Connection returns a connection to the API service. |
| // |
| // Deprecated: Connections are now pooled so this method does not always |
| // return the same resource. |
| func (c *InstanceAdminClient) Connection() *grpc.ClientConn { |
| return c.internalClient.Connection() |
| } |
| |
| // ListInstanceConfigs lists the supported instance configurations for a given project. |
| func (c *InstanceAdminClient) ListInstanceConfigs(ctx context.Context, req *instancepb.ListInstanceConfigsRequest, opts ...gax.CallOption) *InstanceConfigIterator { |
| return c.internalClient.ListInstanceConfigs(ctx, req, opts...) |
| } |
| |
| // GetInstanceConfig gets information about a particular instance configuration. |
| func (c *InstanceAdminClient) GetInstanceConfig(ctx context.Context, req *instancepb.GetInstanceConfigRequest, opts ...gax.CallOption) (*instancepb.InstanceConfig, error) { |
| return c.internalClient.GetInstanceConfig(ctx, req, opts...) |
| } |
| |
| // CreateInstanceConfig creates an instance config and begins preparing it to be used. The |
| // returned [long-running operation][google.longrunning.Operation] |
| // can be used to track the progress of preparing the new |
| // instance config. The instance config name is assigned by the caller. If the |
| // named instance config already exists, CreateInstanceConfig returns |
| // ALREADY_EXISTS. |
| // |
| // Immediately after the request returns: |
| // |
| // The instance config is readable via the API, with all requested |
| // attributes. The instance config’s |
| // reconciling |
| // field is set to true. Its state is CREATING. |
| // |
| // While the operation is pending: |
| // |
| // Cancelling the operation renders the instance config immediately |
| // unreadable via the API. |
| // |
| // Except for deleting the creating resource, all other attempts to modify |
| // the instance config are rejected. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Instances can be created using the instance configuration. |
| // |
| // The instance config’s |
| // reconciling |
| // field becomes false. Its state becomes READY. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_config_name>/operations/<operation_id> and can be used to track |
| // creation of the instance config. The |
| // metadata field type is |
| // CreateInstanceConfigMetadata. |
| // The response field type is |
| // InstanceConfig, if |
| // successful. |
| // |
| // Authorization requires spanner.instanceConfigs.create permission on |
| // the resource |
| // parent. |
| func (c *InstanceAdminClient) CreateInstanceConfig(ctx context.Context, req *instancepb.CreateInstanceConfigRequest, opts ...gax.CallOption) (*CreateInstanceConfigOperation, error) { |
| return c.internalClient.CreateInstanceConfig(ctx, req, opts...) |
| } |
| |
| // CreateInstanceConfigOperation returns a new CreateInstanceConfigOperation from a given name. |
| // The name must be that of a previously created CreateInstanceConfigOperation, possibly from a different process. |
| func (c *InstanceAdminClient) CreateInstanceConfigOperation(name string) *CreateInstanceConfigOperation { |
| return c.internalClient.CreateInstanceConfigOperation(name) |
| } |
| |
| // UpdateInstanceConfig updates an instance config. The returned |
| // [long-running operation][google.longrunning.Operation] can be used to track |
| // the progress of updating the instance. If the named instance config does |
| // not exist, returns NOT_FOUND. |
| // |
| // Only user managed configurations can be updated. |
| // |
| // Immediately after the request returns: |
| // |
| // The instance config’s |
| // reconciling |
| // field is set to true. |
| // |
| // While the operation is pending: |
| // |
| // Cancelling the operation sets its metadata’s |
| // cancel_time. |
| // The operation is guaranteed to succeed at undoing all changes, after |
| // which point it terminates with a CANCELLED status. |
| // |
| // All other attempts to modify the instance config are rejected. |
| // |
| // Reading the instance config via the API continues to give the |
| // pre-request values. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Creating instances using the instance configuration uses the new |
| // values. |
| // |
| // The instance config’s new values are readable via the API. |
| // |
| // The instance config’s |
| // reconciling |
| // field becomes false. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_config_name>/operations/<operation_id> and can be used to track |
| // the instance config modification. The |
| // metadata field type is |
| // UpdateInstanceConfigMetadata. |
| // The response field type is |
| // InstanceConfig, if |
| // successful. |
| // |
| // Authorization requires spanner.instanceConfigs.update permission on |
| // the resource [name][google.spanner.admin.instance.v1.InstanceConfig.name (at http://google.spanner.admin.instance.v1.InstanceConfig.name)]. |
| func (c *InstanceAdminClient) UpdateInstanceConfig(ctx context.Context, req *instancepb.UpdateInstanceConfigRequest, opts ...gax.CallOption) (*UpdateInstanceConfigOperation, error) { |
| return c.internalClient.UpdateInstanceConfig(ctx, req, opts...) |
| } |
| |
| // UpdateInstanceConfigOperation returns a new UpdateInstanceConfigOperation from a given name. |
| // The name must be that of a previously created UpdateInstanceConfigOperation, possibly from a different process. |
| func (c *InstanceAdminClient) UpdateInstanceConfigOperation(name string) *UpdateInstanceConfigOperation { |
| return c.internalClient.UpdateInstanceConfigOperation(name) |
| } |
| |
| // DeleteInstanceConfig deletes the instance config. Deletion is only allowed when no |
| // instances are using the configuration. If any instances are using |
| // the config, returns FAILED_PRECONDITION. |
| // |
| // Only user managed configurations can be deleted. |
| // |
| // Authorization requires spanner.instanceConfigs.delete permission on |
| // the resource [name][google.spanner.admin.instance.v1.InstanceConfig.name (at http://google.spanner.admin.instance.v1.InstanceConfig.name)]. |
| func (c *InstanceAdminClient) DeleteInstanceConfig(ctx context.Context, req *instancepb.DeleteInstanceConfigRequest, opts ...gax.CallOption) error { |
| return c.internalClient.DeleteInstanceConfig(ctx, req, opts...) |
| } |
| |
| // ListInstanceConfigOperations lists the user-managed instance config [long-running |
| // operations][google.longrunning.Operation] in the given project. An instance |
| // config operation has a name of the form |
| // projects/<project>/instanceConfigs/<instance_config>/operations/<operation>. |
| // The long-running operation |
| // metadata field type |
| // metadata.type_url describes the type of the metadata. Operations returned |
| // include those that have completed/failed/canceled within the last 7 days, |
| // and pending operations. Operations returned are ordered by |
| // operation.metadata.value.start_time in descending order starting |
| // from the most recently started operation. |
| func (c *InstanceAdminClient) ListInstanceConfigOperations(ctx context.Context, req *instancepb.ListInstanceConfigOperationsRequest, opts ...gax.CallOption) *OperationIterator { |
| return c.internalClient.ListInstanceConfigOperations(ctx, req, opts...) |
| } |
| |
| // ListInstances lists all instances in the given project. |
| func (c *InstanceAdminClient) ListInstances(ctx context.Context, req *instancepb.ListInstancesRequest, opts ...gax.CallOption) *InstanceIterator { |
| return c.internalClient.ListInstances(ctx, req, opts...) |
| } |
| |
| // ListInstancePartitions lists all instance partitions for the given instance. |
| func (c *InstanceAdminClient) ListInstancePartitions(ctx context.Context, req *instancepb.ListInstancePartitionsRequest, opts ...gax.CallOption) *InstancePartitionIterator { |
| return c.internalClient.ListInstancePartitions(ctx, req, opts...) |
| } |
| |
| // GetInstance gets information about a particular instance. |
| func (c *InstanceAdminClient) GetInstance(ctx context.Context, req *instancepb.GetInstanceRequest, opts ...gax.CallOption) (*instancepb.Instance, error) { |
| return c.internalClient.GetInstance(ctx, req, opts...) |
| } |
| |
| // CreateInstance creates an instance and begins preparing it to begin serving. The |
| // returned [long-running operation][google.longrunning.Operation] |
| // can be used to track the progress of preparing the new |
| // instance. The instance name is assigned by the caller. If the |
| // named instance already exists, CreateInstance returns |
| // ALREADY_EXISTS. |
| // |
| // Immediately upon completion of this request: |
| // |
| // The instance is readable via the API, with all requested attributes |
| // but no allocated resources. Its state is CREATING. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation renders the instance immediately unreadable |
| // via the API. |
| // |
| // The instance can be deleted. |
| // |
| // All other attempts to modify the instance are rejected. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing for all successfully-allocated resources begins (some types |
| // may have lower than the requested levels). |
| // |
| // Databases can be created in the instance. |
| // |
| // The instance’s allocated resource levels are readable via the API. |
| // |
| // The instance’s state becomes READY. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format <instance_name>/operations/<operation_id> and |
| // can be used to track creation of the instance. The |
| // metadata field type is |
| // CreateInstanceMetadata. |
| // The response field type is |
| // Instance, if successful. |
| func (c *InstanceAdminClient) CreateInstance(ctx context.Context, req *instancepb.CreateInstanceRequest, opts ...gax.CallOption) (*CreateInstanceOperation, error) { |
| return c.internalClient.CreateInstance(ctx, req, opts...) |
| } |
| |
| // CreateInstanceOperation returns a new CreateInstanceOperation from a given name. |
| // The name must be that of a previously created CreateInstanceOperation, possibly from a different process. |
| func (c *InstanceAdminClient) CreateInstanceOperation(name string) *CreateInstanceOperation { |
| return c.internalClient.CreateInstanceOperation(name) |
| } |
| |
| // UpdateInstance updates an instance, and begins allocating or releasing resources |
| // as requested. The returned [long-running |
| // operation][google.longrunning.Operation] can be used to track the |
| // progress of updating the instance. If the named instance does not |
| // exist, returns NOT_FOUND. |
| // |
| // Immediately upon completion of this request: |
| // |
| // For resource types for which a decrease in the instance’s allocation |
| // has been requested, billing is based on the newly-requested level. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation sets its metadata’s |
| // cancel_time, |
| // and begins restoring resources to their pre-request values. The |
| // operation is guaranteed to succeed at undoing all resource changes, |
| // after which point it terminates with a CANCELLED status. |
| // |
| // All other attempts to modify the instance are rejected. |
| // |
| // Reading the instance via the API continues to give the pre-request |
| // resource levels. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing begins for all successfully-allocated resources (some types |
| // may have lower than the requested levels). |
| // |
| // All newly-reserved resources are available for serving the instance’s |
| // tables. |
| // |
| // The instance’s new resource levels are readable via the API. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format <instance_name>/operations/<operation_id> and |
| // can be used to track the instance modification. The |
| // metadata field type is |
| // UpdateInstanceMetadata. |
| // The response field type is |
| // Instance, if successful. |
| // |
| // Authorization requires spanner.instances.update permission on |
| // the resource [name][google.spanner.admin.instance.v1.Instance.name (at http://google.spanner.admin.instance.v1.Instance.name)]. |
| func (c *InstanceAdminClient) UpdateInstance(ctx context.Context, req *instancepb.UpdateInstanceRequest, opts ...gax.CallOption) (*UpdateInstanceOperation, error) { |
| return c.internalClient.UpdateInstance(ctx, req, opts...) |
| } |
| |
| // UpdateInstanceOperation returns a new UpdateInstanceOperation from a given name. |
| // The name must be that of a previously created UpdateInstanceOperation, possibly from a different process. |
| func (c *InstanceAdminClient) UpdateInstanceOperation(name string) *UpdateInstanceOperation { |
| return c.internalClient.UpdateInstanceOperation(name) |
| } |
| |
| // DeleteInstance deletes an instance. |
| // |
| // Immediately upon completion of the request: |
| // |
| // Billing ceases for all of the instance’s reserved resources. |
| // |
| // Soon afterward: |
| // |
| // The instance and all of its databases immediately and |
| // irrevocably disappear from the API. All data in the databases |
| // is permanently deleted. |
| func (c *InstanceAdminClient) DeleteInstance(ctx context.Context, req *instancepb.DeleteInstanceRequest, opts ...gax.CallOption) error { |
| return c.internalClient.DeleteInstance(ctx, req, opts...) |
| } |
| |
| // SetIamPolicy sets the access control policy on an instance resource. Replaces any |
| // existing policy. |
| // |
| // Authorization requires spanner.instances.setIamPolicy on |
| // resource. |
| func (c *InstanceAdminClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { |
| return c.internalClient.SetIamPolicy(ctx, req, opts...) |
| } |
| |
| // GetIamPolicy gets the access control policy for an instance resource. Returns an empty |
| // policy if an instance exists but does not have a policy set. |
| // |
| // Authorization requires spanner.instances.getIamPolicy on |
| // resource. |
| func (c *InstanceAdminClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { |
| return c.internalClient.GetIamPolicy(ctx, req, opts...) |
| } |
| |
| // TestIamPermissions returns permissions that the caller has on the specified instance resource. |
| // |
| // Attempting this RPC on a non-existent Cloud Spanner instance resource will |
| // result in a NOT_FOUND error if the user has spanner.instances.list |
| // permission on the containing Google Cloud Project. Otherwise returns an |
| // empty set of permissions. |
| func (c *InstanceAdminClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { |
| return c.internalClient.TestIamPermissions(ctx, req, opts...) |
| } |
| |
| // GetInstancePartition gets information about a particular instance partition. |
| func (c *InstanceAdminClient) GetInstancePartition(ctx context.Context, req *instancepb.GetInstancePartitionRequest, opts ...gax.CallOption) (*instancepb.InstancePartition, error) { |
| return c.internalClient.GetInstancePartition(ctx, req, opts...) |
| } |
| |
| // CreateInstancePartition creates an instance partition and begins preparing it to be used. The |
| // returned [long-running operation][google.longrunning.Operation] |
| // can be used to track the progress of preparing the new instance partition. |
| // The instance partition name is assigned by the caller. If the named |
| // instance partition already exists, CreateInstancePartition returns |
| // ALREADY_EXISTS. |
| // |
| // Immediately upon completion of this request: |
| // |
| // The instance partition is readable via the API, with all requested |
| // attributes but no allocated resources. Its state is CREATING. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation renders the instance partition immediately |
| // unreadable via the API. |
| // |
| // The instance partition can be deleted. |
| // |
| // All other attempts to modify the instance partition are rejected. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing for all successfully-allocated resources begins (some types |
| // may have lower than the requested levels). |
| // |
| // Databases can start using this instance partition. |
| // |
| // The instance partition’s allocated resource levels are readable via the |
| // API. |
| // |
| // The instance partition’s state becomes READY. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_partition_name>/operations/<operation_id> and can be used to |
| // track creation of the instance partition. The |
| // metadata field type is |
| // CreateInstancePartitionMetadata. |
| // The response field type is |
| // InstancePartition, if |
| // successful. |
| func (c *InstanceAdminClient) CreateInstancePartition(ctx context.Context, req *instancepb.CreateInstancePartitionRequest, opts ...gax.CallOption) (*CreateInstancePartitionOperation, error) { |
| return c.internalClient.CreateInstancePartition(ctx, req, opts...) |
| } |
| |
| // CreateInstancePartitionOperation returns a new CreateInstancePartitionOperation from a given name. |
| // The name must be that of a previously created CreateInstancePartitionOperation, possibly from a different process. |
| func (c *InstanceAdminClient) CreateInstancePartitionOperation(name string) *CreateInstancePartitionOperation { |
| return c.internalClient.CreateInstancePartitionOperation(name) |
| } |
| |
| // DeleteInstancePartition deletes an existing instance partition. Requires that the |
| // instance partition is not used by any database or backup and is not the |
| // default instance partition of an instance. |
| // |
| // Authorization requires spanner.instancePartitions.delete permission on |
| // the resource |
| // [name][google.spanner.admin.instance.v1.InstancePartition.name (at http://google.spanner.admin.instance.v1.InstancePartition.name)]. |
| func (c *InstanceAdminClient) DeleteInstancePartition(ctx context.Context, req *instancepb.DeleteInstancePartitionRequest, opts ...gax.CallOption) error { |
| return c.internalClient.DeleteInstancePartition(ctx, req, opts...) |
| } |
| |
| // UpdateInstancePartition updates an instance partition, and begins allocating or releasing resources |
| // as requested. The returned [long-running |
| // operation][google.longrunning.Operation] can be used to track the |
| // progress of updating the instance partition. If the named instance |
| // partition does not exist, returns NOT_FOUND. |
| // |
| // Immediately upon completion of this request: |
| // |
| // For resource types for which a decrease in the instance partition’s |
| // allocation has been requested, billing is based on the newly-requested |
| // level. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation sets its metadata’s |
| // cancel_time, |
| // and begins restoring resources to their pre-request values. The |
| // operation is guaranteed to succeed at undoing all resource changes, |
| // after which point it terminates with a CANCELLED status. |
| // |
| // All other attempts to modify the instance partition are rejected. |
| // |
| // Reading the instance partition via the API continues to give the |
| // pre-request resource levels. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing begins for all successfully-allocated resources (some types |
| // may have lower than the requested levels). |
| // |
| // All newly-reserved resources are available for serving the instance |
| // partition’s tables. |
| // |
| // The instance partition’s new resource levels are readable via the API. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_partition_name>/operations/<operation_id> and can be used to |
| // track the instance partition modification. The |
| // metadata field type is |
| // UpdateInstancePartitionMetadata. |
| // The response field type is |
| // InstancePartition, if |
| // successful. |
| // |
| // Authorization requires spanner.instancePartitions.update permission on |
| // the resource |
| // [name][google.spanner.admin.instance.v1.InstancePartition.name (at http://google.spanner.admin.instance.v1.InstancePartition.name)]. |
| func (c *InstanceAdminClient) UpdateInstancePartition(ctx context.Context, req *instancepb.UpdateInstancePartitionRequest, opts ...gax.CallOption) (*UpdateInstancePartitionOperation, error) { |
| return c.internalClient.UpdateInstancePartition(ctx, req, opts...) |
| } |
| |
| // UpdateInstancePartitionOperation returns a new UpdateInstancePartitionOperation from a given name. |
| // The name must be that of a previously created UpdateInstancePartitionOperation, possibly from a different process. |
| func (c *InstanceAdminClient) UpdateInstancePartitionOperation(name string) *UpdateInstancePartitionOperation { |
| return c.internalClient.UpdateInstancePartitionOperation(name) |
| } |
| |
| // ListInstancePartitionOperations lists instance partition [long-running |
| // operations][google.longrunning.Operation] in the given instance. |
| // An instance partition operation has a name of the form |
| // projects/<project>/instances/<instance>/instancePartitions/<instance_partition>/operations/<operation>. |
| // The long-running operation |
| // metadata field type |
| // metadata.type_url describes the type of the metadata. Operations returned |
| // include those that have completed/failed/canceled within the last 7 days, |
| // and pending operations. Operations returned are ordered by |
| // operation.metadata.value.start_time in descending order starting from the |
| // most recently started operation. |
| // |
| // Authorization requires spanner.instancePartitionOperations.list |
| // permission on the resource |
| // parent. |
| func (c *InstanceAdminClient) ListInstancePartitionOperations(ctx context.Context, req *instancepb.ListInstancePartitionOperationsRequest, opts ...gax.CallOption) *OperationIterator { |
| return c.internalClient.ListInstancePartitionOperations(ctx, req, opts...) |
| } |
| |
| // instanceAdminGRPCClient is a client for interacting with Cloud Spanner Instance Admin API over gRPC transport. |
| // |
| // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. |
| type instanceAdminGRPCClient struct { |
| // Connection pool of gRPC connections to the service. |
| connPool gtransport.ConnPool |
| |
| // Points back to the CallOptions field of the containing InstanceAdminClient |
| CallOptions **InstanceAdminCallOptions |
| |
| // The gRPC API client. |
| instanceAdminClient instancepb.InstanceAdminClient |
| |
| // LROClient is used internally to handle long-running operations. |
| // It is exposed so that its CallOptions can be modified if required. |
| // Users should not Close this client. |
| LROClient **lroauto.OperationsClient |
| |
| // The x-goog-* metadata to be sent with each request. |
| xGoogHeaders []string |
| } |
| |
| // NewInstanceAdminClient creates a new instance admin client based on gRPC. |
| // The returned client must be Closed when it is done being used to clean up its underlying connections. |
| // |
| // # Cloud Spanner Instance Admin API |
| // |
| // The Cloud Spanner Instance Admin API can be used to create, delete, |
| // modify and list instances. Instances are dedicated Cloud Spanner serving |
| // and storage resources to be used by Cloud Spanner databases. |
| // |
| // Each instance has a “configuration”, which dictates where the |
| // serving resources for the Cloud Spanner instance are located (e.g., |
| // US-central, Europe). Configurations are created by Google based on |
| // resource availability. |
| // |
| // Cloud Spanner billing is based on the instances that exist and their |
| // sizes. After an instance exists, there are no additional |
| // per-database or per-operation charges for use of the instance |
| // (though there may be additional network bandwidth charges). |
| // Instances offer isolation: problems with databases in one instance |
| // will not affect other instances. However, within an instance |
| // databases can affect each other. For example, if one database in an |
| // instance receives a lot of requests and consumes most of the |
| // instance resources, fewer resources are available for other |
| // databases in that instance, and their performance may suffer. |
| func NewInstanceAdminClient(ctx context.Context, opts ...option.ClientOption) (*InstanceAdminClient, error) { |
| clientOpts := defaultInstanceAdminGRPCClientOptions() |
| if newInstanceAdminClientHook != nil { |
| hookOpts, err := newInstanceAdminClientHook(ctx, clientHookParams{}) |
| if err != nil { |
| return nil, err |
| } |
| clientOpts = append(clientOpts, hookOpts...) |
| } |
| |
| connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) |
| if err != nil { |
| return nil, err |
| } |
| client := InstanceAdminClient{CallOptions: defaultInstanceAdminCallOptions()} |
| |
| c := &instanceAdminGRPCClient{ |
| connPool: connPool, |
| instanceAdminClient: instancepb.NewInstanceAdminClient(connPool), |
| CallOptions: &client.CallOptions, |
| } |
| c.setGoogleClientInfo() |
| |
| client.internalClient = c |
| |
| client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) |
| if err != nil { |
| // This error "should not happen", since we are just reusing old connection pool |
| // and never actually need to dial. |
| // If this does happen, we could leak connp. However, we cannot close conn: |
| // If the user invoked the constructor with option.WithGRPCConn, |
| // we would close a connection that's still in use. |
| // TODO: investigate error conditions. |
| return nil, err |
| } |
| c.LROClient = &client.LROClient |
| return &client, nil |
| } |
| |
| // Connection returns a connection to the API service. |
| // |
| // Deprecated: Connections are now pooled so this method does not always |
| // return the same resource. |
| func (c *instanceAdminGRPCClient) Connection() *grpc.ClientConn { |
| return c.connPool.Conn() |
| } |
| |
| // setGoogleClientInfo sets the name and version of the application in |
| // the `x-goog-api-client` header passed on each request. Intended for |
| // use by Google-written clients. |
| func (c *instanceAdminGRPCClient) setGoogleClientInfo(keyval ...string) { |
| kv := append([]string{"gl-go", gax.GoVersion}, keyval...) |
| kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) |
| c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} |
| } |
| |
| // Close closes the connection to the API service. The user should invoke this when |
| // the client is no longer required. |
| func (c *instanceAdminGRPCClient) Close() error { |
| return c.connPool.Close() |
| } |
| |
| // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. |
| type instanceAdminRESTClient struct { |
| // The http endpoint to connect to. |
| endpoint string |
| |
| // The http client. |
| httpClient *http.Client |
| |
| // LROClient is used internally to handle long-running operations. |
| // It is exposed so that its CallOptions can be modified if required. |
| // Users should not Close this client. |
| LROClient **lroauto.OperationsClient |
| |
| // The x-goog-* headers to be sent with each request. |
| xGoogHeaders []string |
| |
| // Points back to the CallOptions field of the containing InstanceAdminClient |
| CallOptions **InstanceAdminCallOptions |
| } |
| |
| // NewInstanceAdminRESTClient creates a new instance admin rest client. |
| // |
| // # Cloud Spanner Instance Admin API |
| // |
| // The Cloud Spanner Instance Admin API can be used to create, delete, |
| // modify and list instances. Instances are dedicated Cloud Spanner serving |
| // and storage resources to be used by Cloud Spanner databases. |
| // |
| // Each instance has a “configuration”, which dictates where the |
| // serving resources for the Cloud Spanner instance are located (e.g., |
| // US-central, Europe). Configurations are created by Google based on |
| // resource availability. |
| // |
| // Cloud Spanner billing is based on the instances that exist and their |
| // sizes. After an instance exists, there are no additional |
| // per-database or per-operation charges for use of the instance |
| // (though there may be additional network bandwidth charges). |
| // Instances offer isolation: problems with databases in one instance |
| // will not affect other instances. However, within an instance |
| // databases can affect each other. For example, if one database in an |
| // instance receives a lot of requests and consumes most of the |
| // instance resources, fewer resources are available for other |
| // databases in that instance, and their performance may suffer. |
| func NewInstanceAdminRESTClient(ctx context.Context, opts ...option.ClientOption) (*InstanceAdminClient, error) { |
| clientOpts := append(defaultInstanceAdminRESTClientOptions(), opts...) |
| httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) |
| if err != nil { |
| return nil, err |
| } |
| |
| callOpts := defaultInstanceAdminRESTCallOptions() |
| c := &instanceAdminRESTClient{ |
| endpoint: endpoint, |
| httpClient: httpClient, |
| CallOptions: &callOpts, |
| } |
| c.setGoogleClientInfo() |
| |
| lroOpts := []option.ClientOption{ |
| option.WithHTTPClient(httpClient), |
| option.WithEndpoint(endpoint), |
| } |
| opClient, err := lroauto.NewOperationsRESTClient(ctx, lroOpts...) |
| if err != nil { |
| return nil, err |
| } |
| c.LROClient = &opClient |
| |
| return &InstanceAdminClient{internalClient: c, CallOptions: callOpts}, nil |
| } |
| |
| func defaultInstanceAdminRESTClientOptions() []option.ClientOption { |
| return []option.ClientOption{ |
| internaloption.WithDefaultEndpoint("https://spanner.googleapis.com"), |
| internaloption.WithDefaultEndpointTemplate("https://spanner.UNIVERSE_DOMAIN"), |
| internaloption.WithDefaultMTLSEndpoint("https://spanner.mtls.googleapis.com"), |
| internaloption.WithDefaultUniverseDomain("googleapis.com"), |
| internaloption.WithDefaultAudience("https://spanner.googleapis.com/"), |
| internaloption.WithDefaultScopes(DefaultAuthScopes()...), |
| } |
| } |
| |
| // setGoogleClientInfo sets the name and version of the application in |
| // the `x-goog-api-client` header passed on each request. Intended for |
| // use by Google-written clients. |
| func (c *instanceAdminRESTClient) setGoogleClientInfo(keyval ...string) { |
| kv := append([]string{"gl-go", gax.GoVersion}, keyval...) |
| kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") |
| c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} |
| } |
| |
| // Close closes the connection to the API service. The user should invoke this when |
| // the client is no longer required. |
| func (c *instanceAdminRESTClient) Close() error { |
| // Replace httpClient with nil to force cleanup. |
| c.httpClient = nil |
| return nil |
| } |
| |
| // Connection returns a connection to the API service. |
| // |
| // Deprecated: This method always returns nil. |
| func (c *instanceAdminRESTClient) Connection() *grpc.ClientConn { |
| return nil |
| } |
| func (c *instanceAdminGRPCClient) ListInstanceConfigs(ctx context.Context, req *instancepb.ListInstanceConfigsRequest, opts ...gax.CallOption) *InstanceConfigIterator { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).ListInstanceConfigs[0:len((*c.CallOptions).ListInstanceConfigs):len((*c.CallOptions).ListInstanceConfigs)], opts...) |
| it := &InstanceConfigIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstanceConfigsRequest) |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*instancepb.InstanceConfig, string, error) { |
| resp := &instancepb.ListInstanceConfigsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.ListInstanceConfigs(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, "", err |
| } |
| |
| it.Response = resp |
| return resp.GetInstanceConfigs(), resp.GetNextPageToken(), nil |
| } |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| func (c *instanceAdminGRPCClient) GetInstanceConfig(ctx context.Context, req *instancepb.GetInstanceConfigRequest, opts ...gax.CallOption) (*instancepb.InstanceConfig, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).GetInstanceConfig[0:len((*c.CallOptions).GetInstanceConfig):len((*c.CallOptions).GetInstanceConfig)], opts...) |
| var resp *instancepb.InstanceConfig |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.GetInstanceConfig(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return resp, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) CreateInstanceConfig(ctx context.Context, req *instancepb.CreateInstanceConfigRequest, opts ...gax.CallOption) (*CreateInstanceConfigOperation, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).CreateInstanceConfig[0:len((*c.CallOptions).CreateInstanceConfig):len((*c.CallOptions).CreateInstanceConfig)], opts...) |
| var resp *longrunningpb.Operation |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.CreateInstanceConfig(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return &CreateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| }, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) UpdateInstanceConfig(ctx context.Context, req *instancepb.UpdateInstanceConfigRequest, opts ...gax.CallOption) (*UpdateInstanceConfigOperation, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "instance_config.name", url.QueryEscape(req.GetInstanceConfig().GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).UpdateInstanceConfig[0:len((*c.CallOptions).UpdateInstanceConfig):len((*c.CallOptions).UpdateInstanceConfig)], opts...) |
| var resp *longrunningpb.Operation |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.UpdateInstanceConfig(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return &UpdateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| }, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) DeleteInstanceConfig(ctx context.Context, req *instancepb.DeleteInstanceConfigRequest, opts ...gax.CallOption) error { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).DeleteInstanceConfig[0:len((*c.CallOptions).DeleteInstanceConfig):len((*c.CallOptions).DeleteInstanceConfig)], opts...) |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| _, err = c.instanceAdminClient.DeleteInstanceConfig(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| return err |
| } |
| |
| func (c *instanceAdminGRPCClient) ListInstanceConfigOperations(ctx context.Context, req *instancepb.ListInstanceConfigOperationsRequest, opts ...gax.CallOption) *OperationIterator { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).ListInstanceConfigOperations[0:len((*c.CallOptions).ListInstanceConfigOperations):len((*c.CallOptions).ListInstanceConfigOperations)], opts...) |
| it := &OperationIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstanceConfigOperationsRequest) |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { |
| resp := &instancepb.ListInstanceConfigOperationsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.ListInstanceConfigOperations(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, "", err |
| } |
| |
| it.Response = resp |
| return resp.GetOperations(), resp.GetNextPageToken(), nil |
| } |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| func (c *instanceAdminGRPCClient) ListInstances(ctx context.Context, req *instancepb.ListInstancesRequest, opts ...gax.CallOption) *InstanceIterator { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).ListInstances[0:len((*c.CallOptions).ListInstances):len((*c.CallOptions).ListInstances)], opts...) |
| it := &InstanceIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstancesRequest) |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*instancepb.Instance, string, error) { |
| resp := &instancepb.ListInstancesResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.ListInstances(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, "", err |
| } |
| |
| it.Response = resp |
| return resp.GetInstances(), resp.GetNextPageToken(), nil |
| } |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| func (c *instanceAdminGRPCClient) ListInstancePartitions(ctx context.Context, req *instancepb.ListInstancePartitionsRequest, opts ...gax.CallOption) *InstancePartitionIterator { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).ListInstancePartitions[0:len((*c.CallOptions).ListInstancePartitions):len((*c.CallOptions).ListInstancePartitions)], opts...) |
| it := &InstancePartitionIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstancePartitionsRequest) |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*instancepb.InstancePartition, string, error) { |
| resp := &instancepb.ListInstancePartitionsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.ListInstancePartitions(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, "", err |
| } |
| |
| it.Response = resp |
| return resp.GetInstancePartitions(), resp.GetNextPageToken(), nil |
| } |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| func (c *instanceAdminGRPCClient) GetInstance(ctx context.Context, req *instancepb.GetInstanceRequest, opts ...gax.CallOption) (*instancepb.Instance, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).GetInstance[0:len((*c.CallOptions).GetInstance):len((*c.CallOptions).GetInstance)], opts...) |
| var resp *instancepb.Instance |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.GetInstance(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return resp, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) CreateInstance(ctx context.Context, req *instancepb.CreateInstanceRequest, opts ...gax.CallOption) (*CreateInstanceOperation, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).CreateInstance[0:len((*c.CallOptions).CreateInstance):len((*c.CallOptions).CreateInstance)], opts...) |
| var resp *longrunningpb.Operation |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.CreateInstance(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return &CreateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| }, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) UpdateInstance(ctx context.Context, req *instancepb.UpdateInstanceRequest, opts ...gax.CallOption) (*UpdateInstanceOperation, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "instance.name", url.QueryEscape(req.GetInstance().GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).UpdateInstance[0:len((*c.CallOptions).UpdateInstance):len((*c.CallOptions).UpdateInstance)], opts...) |
| var resp *longrunningpb.Operation |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.UpdateInstance(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return &UpdateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| }, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) DeleteInstance(ctx context.Context, req *instancepb.DeleteInstanceRequest, opts ...gax.CallOption) error { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).DeleteInstance[0:len((*c.CallOptions).DeleteInstance):len((*c.CallOptions).DeleteInstance)], opts...) |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| _, err = c.instanceAdminClient.DeleteInstance(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| return err |
| } |
| |
| func (c *instanceAdminGRPCClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) |
| var resp *iampb.Policy |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.SetIamPolicy(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return resp, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) |
| var resp *iampb.Policy |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.GetIamPolicy(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return resp, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) |
| var resp *iampb.TestIamPermissionsResponse |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.TestIamPermissions(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return resp, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) GetInstancePartition(ctx context.Context, req *instancepb.GetInstancePartitionRequest, opts ...gax.CallOption) (*instancepb.InstancePartition, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).GetInstancePartition[0:len((*c.CallOptions).GetInstancePartition):len((*c.CallOptions).GetInstancePartition)], opts...) |
| var resp *instancepb.InstancePartition |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.GetInstancePartition(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return resp, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) CreateInstancePartition(ctx context.Context, req *instancepb.CreateInstancePartitionRequest, opts ...gax.CallOption) (*CreateInstancePartitionOperation, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).CreateInstancePartition[0:len((*c.CallOptions).CreateInstancePartition):len((*c.CallOptions).CreateInstancePartition)], opts...) |
| var resp *longrunningpb.Operation |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.CreateInstancePartition(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return &CreateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| }, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) DeleteInstancePartition(ctx context.Context, req *instancepb.DeleteInstancePartitionRequest, opts ...gax.CallOption) error { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).DeleteInstancePartition[0:len((*c.CallOptions).DeleteInstancePartition):len((*c.CallOptions).DeleteInstancePartition)], opts...) |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| _, err = c.instanceAdminClient.DeleteInstancePartition(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| return err |
| } |
| |
| func (c *instanceAdminGRPCClient) UpdateInstancePartition(ctx context.Context, req *instancepb.UpdateInstancePartitionRequest, opts ...gax.CallOption) (*UpdateInstancePartitionOperation, error) { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "instance_partition.name", url.QueryEscape(req.GetInstancePartition().GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).UpdateInstancePartition[0:len((*c.CallOptions).UpdateInstancePartition):len((*c.CallOptions).UpdateInstancePartition)], opts...) |
| var resp *longrunningpb.Operation |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.UpdateInstancePartition(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return &UpdateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| }, nil |
| } |
| |
| func (c *instanceAdminGRPCClient) ListInstancePartitionOperations(ctx context.Context, req *instancepb.ListInstancePartitionOperationsRequest, opts ...gax.CallOption) *OperationIterator { |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) |
| opts = append((*c.CallOptions).ListInstancePartitionOperations[0:len((*c.CallOptions).ListInstancePartitionOperations):len((*c.CallOptions).ListInstancePartitionOperations)], opts...) |
| it := &OperationIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstancePartitionOperationsRequest) |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { |
| resp := &instancepb.ListInstancePartitionOperationsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| var err error |
| resp, err = c.instanceAdminClient.ListInstancePartitionOperations(ctx, req, settings.GRPC...) |
| return err |
| }, opts...) |
| if err != nil { |
| return nil, "", err |
| } |
| |
| it.Response = resp |
| return resp.GetOperations(), resp.GetNextPageToken(), nil |
| } |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| // ListInstanceConfigs lists the supported instance configurations for a given project. |
| func (c *instanceAdminRESTClient) ListInstanceConfigs(ctx context.Context, req *instancepb.ListInstanceConfigsRequest, opts ...gax.CallOption) *InstanceConfigIterator { |
| it := &InstanceConfigIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstanceConfigsRequest) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*instancepb.InstanceConfig, string, error) { |
| resp := &instancepb.ListInstanceConfigsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, "", err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instanceConfigs", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetPageSize() != 0 { |
| params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) |
| } |
| if req.GetPageToken() != "" { |
| params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := append(c.xGoogHeaders, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, "", e |
| } |
| it.Response = resp |
| return resp.GetInstanceConfigs(), resp.GetNextPageToken(), nil |
| } |
| |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| // GetInstanceConfig gets information about a particular instance configuration. |
| func (c *instanceAdminRESTClient) GetInstanceConfig(ctx context.Context, req *instancepb.GetInstanceConfigRequest, opts ...gax.CallOption) (*instancepb.InstanceConfig, error) { |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| opts = append((*c.CallOptions).GetInstanceConfig[0:len((*c.CallOptions).GetInstanceConfig):len((*c.CallOptions).GetInstanceConfig)], opts...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &instancepb.InstanceConfig{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| return resp, nil |
| } |
| |
| // CreateInstanceConfig creates an instance config and begins preparing it to be used. The |
| // returned [long-running operation][google.longrunning.Operation] |
| // can be used to track the progress of preparing the new |
| // instance config. The instance config name is assigned by the caller. If the |
| // named instance config already exists, CreateInstanceConfig returns |
| // ALREADY_EXISTS. |
| // |
| // Immediately after the request returns: |
| // |
| // The instance config is readable via the API, with all requested |
| // attributes. The instance config’s |
| // reconciling |
| // field is set to true. Its state is CREATING. |
| // |
| // While the operation is pending: |
| // |
| // Cancelling the operation renders the instance config immediately |
| // unreadable via the API. |
| // |
| // Except for deleting the creating resource, all other attempts to modify |
| // the instance config are rejected. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Instances can be created using the instance configuration. |
| // |
| // The instance config’s |
| // reconciling |
| // field becomes false. Its state becomes READY. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_config_name>/operations/<operation_id> and can be used to track |
| // creation of the instance config. The |
| // metadata field type is |
| // CreateInstanceConfigMetadata. |
| // The response field type is |
| // InstanceConfig, if |
| // successful. |
| // |
| // Authorization requires spanner.instanceConfigs.create permission on |
| // the resource |
| // parent. |
| func (c *instanceAdminRESTClient) CreateInstanceConfig(ctx context.Context, req *instancepb.CreateInstanceConfigRequest, opts ...gax.CallOption) (*CreateInstanceConfigOperation, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instanceConfigs", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &longrunningpb.Operation{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| |
| override := fmt.Sprintf("/v1/%s", resp.GetName()) |
| return &CreateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| pollPath: override, |
| }, nil |
| } |
| |
| // UpdateInstanceConfig updates an instance config. The returned |
| // [long-running operation][google.longrunning.Operation] can be used to track |
| // the progress of updating the instance. If the named instance config does |
| // not exist, returns NOT_FOUND. |
| // |
| // Only user managed configurations can be updated. |
| // |
| // Immediately after the request returns: |
| // |
| // The instance config’s |
| // reconciling |
| // field is set to true. |
| // |
| // While the operation is pending: |
| // |
| // Cancelling the operation sets its metadata’s |
| // cancel_time. |
| // The operation is guaranteed to succeed at undoing all changes, after |
| // which point it terminates with a CANCELLED status. |
| // |
| // All other attempts to modify the instance config are rejected. |
| // |
| // Reading the instance config via the API continues to give the |
| // pre-request values. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Creating instances using the instance configuration uses the new |
| // values. |
| // |
| // The instance config’s new values are readable via the API. |
| // |
| // The instance config’s |
| // reconciling |
| // field becomes false. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_config_name>/operations/<operation_id> and can be used to track |
| // the instance config modification. The |
| // metadata field type is |
| // UpdateInstanceConfigMetadata. |
| // The response field type is |
| // InstanceConfig, if |
| // successful. |
| // |
| // Authorization requires spanner.instanceConfigs.update permission on |
| // the resource [name][google.spanner.admin.instance.v1.InstanceConfig.name (at http://google.spanner.admin.instance.v1.InstanceConfig.name)]. |
| func (c *instanceAdminRESTClient) UpdateInstanceConfig(ctx context.Context, req *instancepb.UpdateInstanceConfigRequest, opts ...gax.CallOption) (*UpdateInstanceConfigOperation, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetInstanceConfig().GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "instance_config.name", url.QueryEscape(req.GetInstanceConfig().GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &longrunningpb.Operation{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| |
| override := fmt.Sprintf("/v1/%s", resp.GetName()) |
| return &UpdateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| pollPath: override, |
| }, nil |
| } |
| |
| // DeleteInstanceConfig deletes the instance config. Deletion is only allowed when no |
| // instances are using the configuration. If any instances are using |
| // the config, returns FAILED_PRECONDITION. |
| // |
| // Only user managed configurations can be deleted. |
| // |
| // Authorization requires spanner.instanceConfigs.delete permission on |
| // the resource [name][google.spanner.admin.instance.v1.InstanceConfig.name (at http://google.spanner.admin.instance.v1.InstanceConfig.name)]. |
| func (c *instanceAdminRESTClient) DeleteInstanceConfig(ctx context.Context, req *instancepb.DeleteInstanceConfigRequest, opts ...gax.CallOption) error { |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetEtag() != "" { |
| params.Add("etag", fmt.Sprintf("%v", req.GetEtag())) |
| } |
| if req.GetValidateOnly() { |
| params.Add("validateOnly", fmt.Sprintf("%v", req.GetValidateOnly())) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| // Returns nil if there is no error, otherwise wraps |
| // the response code and body into a non-nil error |
| return googleapi.CheckResponse(httpRsp) |
| }, opts...) |
| } |
| |
| // ListInstanceConfigOperations lists the user-managed instance config [long-running |
| // operations][google.longrunning.Operation] in the given project. An instance |
| // config operation has a name of the form |
| // projects/<project>/instanceConfigs/<instance_config>/operations/<operation>. |
| // The long-running operation |
| // metadata field type |
| // metadata.type_url describes the type of the metadata. Operations returned |
| // include those that have completed/failed/canceled within the last 7 days, |
| // and pending operations. Operations returned are ordered by |
| // operation.metadata.value.start_time in descending order starting |
| // from the most recently started operation. |
| func (c *instanceAdminRESTClient) ListInstanceConfigOperations(ctx context.Context, req *instancepb.ListInstanceConfigOperationsRequest, opts ...gax.CallOption) *OperationIterator { |
| it := &OperationIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstanceConfigOperationsRequest) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { |
| resp := &instancepb.ListInstanceConfigOperationsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, "", err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instanceConfigOperations", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetFilter() != "" { |
| params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) |
| } |
| if req.GetPageSize() != 0 { |
| params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) |
| } |
| if req.GetPageToken() != "" { |
| params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := append(c.xGoogHeaders, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, "", e |
| } |
| it.Response = resp |
| return resp.GetOperations(), resp.GetNextPageToken(), nil |
| } |
| |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| // ListInstances lists all instances in the given project. |
| func (c *instanceAdminRESTClient) ListInstances(ctx context.Context, req *instancepb.ListInstancesRequest, opts ...gax.CallOption) *InstanceIterator { |
| it := &InstanceIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstancesRequest) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*instancepb.Instance, string, error) { |
| resp := &instancepb.ListInstancesResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, "", err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instances", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetFilter() != "" { |
| params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) |
| } |
| if req.GetInstanceDeadline() != nil { |
| instanceDeadline, err := protojson.Marshal(req.GetInstanceDeadline()) |
| if err != nil { |
| return nil, "", err |
| } |
| params.Add("instanceDeadline", string(instanceDeadline[1:len(instanceDeadline)-1])) |
| } |
| if req.GetPageSize() != 0 { |
| params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) |
| } |
| if req.GetPageToken() != "" { |
| params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := append(c.xGoogHeaders, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, "", e |
| } |
| it.Response = resp |
| return resp.GetInstances(), resp.GetNextPageToken(), nil |
| } |
| |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| // ListInstancePartitions lists all instance partitions for the given instance. |
| func (c *instanceAdminRESTClient) ListInstancePartitions(ctx context.Context, req *instancepb.ListInstancePartitionsRequest, opts ...gax.CallOption) *InstancePartitionIterator { |
| it := &InstancePartitionIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstancePartitionsRequest) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*instancepb.InstancePartition, string, error) { |
| resp := &instancepb.ListInstancePartitionsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, "", err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instancePartitions", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetInstancePartitionDeadline() != nil { |
| instancePartitionDeadline, err := protojson.Marshal(req.GetInstancePartitionDeadline()) |
| if err != nil { |
| return nil, "", err |
| } |
| params.Add("instancePartitionDeadline", string(instancePartitionDeadline[1:len(instancePartitionDeadline)-1])) |
| } |
| if req.GetPageSize() != 0 { |
| params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) |
| } |
| if req.GetPageToken() != "" { |
| params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := append(c.xGoogHeaders, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, "", e |
| } |
| it.Response = resp |
| return resp.GetInstancePartitions(), resp.GetNextPageToken(), nil |
| } |
| |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| // GetInstance gets information about a particular instance. |
| func (c *instanceAdminRESTClient) GetInstance(ctx context.Context, req *instancepb.GetInstanceRequest, opts ...gax.CallOption) (*instancepb.Instance, error) { |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetFieldMask() != nil { |
| fieldMask, err := protojson.Marshal(req.GetFieldMask()) |
| if err != nil { |
| return nil, err |
| } |
| params.Add("fieldMask", string(fieldMask[1:len(fieldMask)-1])) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| opts = append((*c.CallOptions).GetInstance[0:len((*c.CallOptions).GetInstance):len((*c.CallOptions).GetInstance)], opts...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &instancepb.Instance{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| return resp, nil |
| } |
| |
| // CreateInstance creates an instance and begins preparing it to begin serving. The |
| // returned [long-running operation][google.longrunning.Operation] |
| // can be used to track the progress of preparing the new |
| // instance. The instance name is assigned by the caller. If the |
| // named instance already exists, CreateInstance returns |
| // ALREADY_EXISTS. |
| // |
| // Immediately upon completion of this request: |
| // |
| // The instance is readable via the API, with all requested attributes |
| // but no allocated resources. Its state is CREATING. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation renders the instance immediately unreadable |
| // via the API. |
| // |
| // The instance can be deleted. |
| // |
| // All other attempts to modify the instance are rejected. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing for all successfully-allocated resources begins (some types |
| // may have lower than the requested levels). |
| // |
| // Databases can be created in the instance. |
| // |
| // The instance’s allocated resource levels are readable via the API. |
| // |
| // The instance’s state becomes READY. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format <instance_name>/operations/<operation_id> and |
| // can be used to track creation of the instance. The |
| // metadata field type is |
| // CreateInstanceMetadata. |
| // The response field type is |
| // Instance, if successful. |
| func (c *instanceAdminRESTClient) CreateInstance(ctx context.Context, req *instancepb.CreateInstanceRequest, opts ...gax.CallOption) (*CreateInstanceOperation, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instances", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &longrunningpb.Operation{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| |
| override := fmt.Sprintf("/v1/%s", resp.GetName()) |
| return &CreateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| pollPath: override, |
| }, nil |
| } |
| |
| // UpdateInstance updates an instance, and begins allocating or releasing resources |
| // as requested. The returned [long-running |
| // operation][google.longrunning.Operation] can be used to track the |
| // progress of updating the instance. If the named instance does not |
| // exist, returns NOT_FOUND. |
| // |
| // Immediately upon completion of this request: |
| // |
| // For resource types for which a decrease in the instance’s allocation |
| // has been requested, billing is based on the newly-requested level. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation sets its metadata’s |
| // cancel_time, |
| // and begins restoring resources to their pre-request values. The |
| // operation is guaranteed to succeed at undoing all resource changes, |
| // after which point it terminates with a CANCELLED status. |
| // |
| // All other attempts to modify the instance are rejected. |
| // |
| // Reading the instance via the API continues to give the pre-request |
| // resource levels. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing begins for all successfully-allocated resources (some types |
| // may have lower than the requested levels). |
| // |
| // All newly-reserved resources are available for serving the instance’s |
| // tables. |
| // |
| // The instance’s new resource levels are readable via the API. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format <instance_name>/operations/<operation_id> and |
| // can be used to track the instance modification. The |
| // metadata field type is |
| // UpdateInstanceMetadata. |
| // The response field type is |
| // Instance, if successful. |
| // |
| // Authorization requires spanner.instances.update permission on |
| // the resource [name][google.spanner.admin.instance.v1.Instance.name (at http://google.spanner.admin.instance.v1.Instance.name)]. |
| func (c *instanceAdminRESTClient) UpdateInstance(ctx context.Context, req *instancepb.UpdateInstanceRequest, opts ...gax.CallOption) (*UpdateInstanceOperation, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetInstance().GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "instance.name", url.QueryEscape(req.GetInstance().GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &longrunningpb.Operation{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| |
| override := fmt.Sprintf("/v1/%s", resp.GetName()) |
| return &UpdateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| pollPath: override, |
| }, nil |
| } |
| |
| // DeleteInstance deletes an instance. |
| // |
| // Immediately upon completion of the request: |
| // |
| // Billing ceases for all of the instance’s reserved resources. |
| // |
| // Soon afterward: |
| // |
| // The instance and all of its databases immediately and |
| // irrevocably disappear from the API. All data in the databases |
| // is permanently deleted. |
| func (c *instanceAdminRESTClient) DeleteInstance(ctx context.Context, req *instancepb.DeleteInstanceRequest, opts ...gax.CallOption) error { |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| // Returns nil if there is no error, otherwise wraps |
| // the response code and body into a non-nil error |
| return googleapi.CheckResponse(httpRsp) |
| }, opts...) |
| } |
| |
| // SetIamPolicy sets the access control policy on an instance resource. Replaces any |
| // existing policy. |
| // |
| // Authorization requires spanner.instances.setIamPolicy on |
| // resource. |
| func (c *instanceAdminRESTClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v:setIamPolicy", req.GetResource()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| opts = append((*c.CallOptions).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &iampb.Policy{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| return resp, nil |
| } |
| |
| // GetIamPolicy gets the access control policy for an instance resource. Returns an empty |
| // policy if an instance exists but does not have a policy set. |
| // |
| // Authorization requires spanner.instances.getIamPolicy on |
| // resource. |
| func (c *instanceAdminRESTClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v:getIamPolicy", req.GetResource()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| opts = append((*c.CallOptions).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &iampb.Policy{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| return resp, nil |
| } |
| |
| // TestIamPermissions returns permissions that the caller has on the specified instance resource. |
| // |
| // Attempting this RPC on a non-existent Cloud Spanner instance resource will |
| // result in a NOT_FOUND error if the user has spanner.instances.list |
| // permission on the containing Google Cloud Project. Otherwise returns an |
| // empty set of permissions. |
| func (c *instanceAdminRESTClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v:testIamPermissions", req.GetResource()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| opts = append((*c.CallOptions).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &iampb.TestIamPermissionsResponse{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| return resp, nil |
| } |
| |
| // GetInstancePartition gets information about a particular instance partition. |
| func (c *instanceAdminRESTClient) GetInstancePartition(ctx context.Context, req *instancepb.GetInstancePartitionRequest, opts ...gax.CallOption) (*instancepb.InstancePartition, error) { |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| opts = append((*c.CallOptions).GetInstancePartition[0:len((*c.CallOptions).GetInstancePartition):len((*c.CallOptions).GetInstancePartition)], opts...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &instancepb.InstancePartition{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| return resp, nil |
| } |
| |
| // CreateInstancePartition creates an instance partition and begins preparing it to be used. The |
| // returned [long-running operation][google.longrunning.Operation] |
| // can be used to track the progress of preparing the new instance partition. |
| // The instance partition name is assigned by the caller. If the named |
| // instance partition already exists, CreateInstancePartition returns |
| // ALREADY_EXISTS. |
| // |
| // Immediately upon completion of this request: |
| // |
| // The instance partition is readable via the API, with all requested |
| // attributes but no allocated resources. Its state is CREATING. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation renders the instance partition immediately |
| // unreadable via the API. |
| // |
| // The instance partition can be deleted. |
| // |
| // All other attempts to modify the instance partition are rejected. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing for all successfully-allocated resources begins (some types |
| // may have lower than the requested levels). |
| // |
| // Databases can start using this instance partition. |
| // |
| // The instance partition’s allocated resource levels are readable via the |
| // API. |
| // |
| // The instance partition’s state becomes READY. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_partition_name>/operations/<operation_id> and can be used to |
| // track creation of the instance partition. The |
| // metadata field type is |
| // CreateInstancePartitionMetadata. |
| // The response field type is |
| // InstancePartition, if |
| // successful. |
| func (c *instanceAdminRESTClient) CreateInstancePartition(ctx context.Context, req *instancepb.CreateInstancePartitionRequest, opts ...gax.CallOption) (*CreateInstancePartitionOperation, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instancePartitions", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &longrunningpb.Operation{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| |
| override := fmt.Sprintf("/v1/%s", resp.GetName()) |
| return &CreateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| pollPath: override, |
| }, nil |
| } |
| |
| // DeleteInstancePartition deletes an existing instance partition. Requires that the |
| // instance partition is not used by any database or backup and is not the |
| // default instance partition of an instance. |
| // |
| // Authorization requires spanner.instancePartitions.delete permission on |
| // the resource |
| // [name][google.spanner.admin.instance.v1.InstancePartition.name (at http://google.spanner.admin.instance.v1.InstancePartition.name)]. |
| func (c *instanceAdminRESTClient) DeleteInstancePartition(ctx context.Context, req *instancepb.DeleteInstancePartitionRequest, opts ...gax.CallOption) error { |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetEtag() != "" { |
| params.Add("etag", fmt.Sprintf("%v", req.GetEtag())) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| // Returns nil if there is no error, otherwise wraps |
| // the response code and body into a non-nil error |
| return googleapi.CheckResponse(httpRsp) |
| }, opts...) |
| } |
| |
| // UpdateInstancePartition updates an instance partition, and begins allocating or releasing resources |
| // as requested. The returned [long-running |
| // operation][google.longrunning.Operation] can be used to track the |
| // progress of updating the instance partition. If the named instance |
| // partition does not exist, returns NOT_FOUND. |
| // |
| // Immediately upon completion of this request: |
| // |
| // For resource types for which a decrease in the instance partition’s |
| // allocation has been requested, billing is based on the newly-requested |
| // level. |
| // |
| // Until completion of the returned operation: |
| // |
| // Cancelling the operation sets its metadata’s |
| // cancel_time, |
| // and begins restoring resources to their pre-request values. The |
| // operation is guaranteed to succeed at undoing all resource changes, |
| // after which point it terminates with a CANCELLED status. |
| // |
| // All other attempts to modify the instance partition are rejected. |
| // |
| // Reading the instance partition via the API continues to give the |
| // pre-request resource levels. |
| // |
| // Upon completion of the returned operation: |
| // |
| // Billing begins for all successfully-allocated resources (some types |
| // may have lower than the requested levels). |
| // |
| // All newly-reserved resources are available for serving the instance |
| // partition’s tables. |
| // |
| // The instance partition’s new resource levels are readable via the API. |
| // |
| // The returned [long-running operation][google.longrunning.Operation] will |
| // have a name of the format |
| // <instance_partition_name>/operations/<operation_id> and can be used to |
| // track the instance partition modification. The |
| // metadata field type is |
| // UpdateInstancePartitionMetadata. |
| // The response field type is |
| // InstancePartition, if |
| // successful. |
| // |
| // Authorization requires spanner.instancePartitions.update permission on |
| // the resource |
| // [name][google.spanner.admin.instance.v1.InstancePartition.name (at http://google.spanner.admin.instance.v1.InstancePartition.name)]. |
| func (c *instanceAdminRESTClient) UpdateInstancePartition(ctx context.Context, req *instancepb.UpdateInstancePartitionRequest, opts ...gax.CallOption) (*UpdateInstancePartitionOperation, error) { |
| m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} |
| jsonReq, err := m.Marshal(req) |
| if err != nil { |
| return nil, err |
| } |
| |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetInstancePartition().GetName()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "instance_partition.name", url.QueryEscape(req.GetInstancePartition().GetName()))} |
| |
| hds = append(c.xGoogHeaders, hds...) |
| hds = append(hds, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| resp := &longrunningpb.Operation{} |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) |
| if err != nil { |
| return err |
| } |
| httpReq = httpReq.WithContext(ctx) |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, e |
| } |
| |
| override := fmt.Sprintf("/v1/%s", resp.GetName()) |
| return &UpdateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, resp), |
| pollPath: override, |
| }, nil |
| } |
| |
| // ListInstancePartitionOperations lists instance partition [long-running |
| // operations][google.longrunning.Operation] in the given instance. |
| // An instance partition operation has a name of the form |
| // projects/<project>/instances/<instance>/instancePartitions/<instance_partition>/operations/<operation>. |
| // The long-running operation |
| // metadata field type |
| // metadata.type_url describes the type of the metadata. Operations returned |
| // include those that have completed/failed/canceled within the last 7 days, |
| // and pending operations. Operations returned are ordered by |
| // operation.metadata.value.start_time in descending order starting from the |
| // most recently started operation. |
| // |
| // Authorization requires spanner.instancePartitionOperations.list |
| // permission on the resource |
| // parent. |
| func (c *instanceAdminRESTClient) ListInstancePartitionOperations(ctx context.Context, req *instancepb.ListInstancePartitionOperationsRequest, opts ...gax.CallOption) *OperationIterator { |
| it := &OperationIterator{} |
| req = proto.Clone(req).(*instancepb.ListInstancePartitionOperationsRequest) |
| unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} |
| it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { |
| resp := &instancepb.ListInstancePartitionOperationsResponse{} |
| if pageToken != "" { |
| req.PageToken = pageToken |
| } |
| if pageSize > math.MaxInt32 { |
| req.PageSize = math.MaxInt32 |
| } else if pageSize != 0 { |
| req.PageSize = int32(pageSize) |
| } |
| baseUrl, err := url.Parse(c.endpoint) |
| if err != nil { |
| return nil, "", err |
| } |
| baseUrl.Path += fmt.Sprintf("/v1/%v/instancePartitionOperations", req.GetParent()) |
| |
| params := url.Values{} |
| params.Add("$alt", "json;enum-encoding=int") |
| if req.GetFilter() != "" { |
| params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) |
| } |
| if req.GetInstancePartitionDeadline() != nil { |
| instancePartitionDeadline, err := protojson.Marshal(req.GetInstancePartitionDeadline()) |
| if err != nil { |
| return nil, "", err |
| } |
| params.Add("instancePartitionDeadline", string(instancePartitionDeadline[1:len(instancePartitionDeadline)-1])) |
| } |
| if req.GetPageSize() != 0 { |
| params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) |
| } |
| if req.GetPageToken() != "" { |
| params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) |
| } |
| |
| baseUrl.RawQuery = params.Encode() |
| |
| // Build HTTP headers from client and context metadata. |
| hds := append(c.xGoogHeaders, "Content-Type", "application/json") |
| headers := gax.BuildHeaders(ctx, hds...) |
| e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { |
| if settings.Path != "" { |
| baseUrl.Path = settings.Path |
| } |
| httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) |
| if err != nil { |
| return err |
| } |
| httpReq.Header = headers |
| |
| httpRsp, err := c.httpClient.Do(httpReq) |
| if err != nil { |
| return err |
| } |
| defer httpRsp.Body.Close() |
| |
| if err = googleapi.CheckResponse(httpRsp); err != nil { |
| return err |
| } |
| |
| buf, err := io.ReadAll(httpRsp.Body) |
| if err != nil { |
| return err |
| } |
| |
| if err := unm.Unmarshal(buf, resp); err != nil { |
| return err |
| } |
| |
| return nil |
| }, opts...) |
| if e != nil { |
| return nil, "", e |
| } |
| it.Response = resp |
| return resp.GetOperations(), resp.GetNextPageToken(), nil |
| } |
| |
| fetch := func(pageSize int, pageToken string) (string, error) { |
| items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) |
| if err != nil { |
| return "", err |
| } |
| it.items = append(it.items, items...) |
| return nextPageToken, nil |
| } |
| |
| it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) |
| it.pageInfo.MaxSize = int(req.GetPageSize()) |
| it.pageInfo.Token = req.GetPageToken() |
| |
| return it |
| } |
| |
| // CreateInstanceOperation returns a new CreateInstanceOperation from a given name. |
| // The name must be that of a previously created CreateInstanceOperation, possibly from a different process. |
| func (c *instanceAdminGRPCClient) CreateInstanceOperation(name string) *CreateInstanceOperation { |
| return &CreateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| } |
| } |
| |
| // CreateInstanceOperation returns a new CreateInstanceOperation from a given name. |
| // The name must be that of a previously created CreateInstanceOperation, possibly from a different process. |
| func (c *instanceAdminRESTClient) CreateInstanceOperation(name string) *CreateInstanceOperation { |
| override := fmt.Sprintf("/v1/%s", name) |
| return &CreateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| pollPath: override, |
| } |
| } |
| |
| // CreateInstanceConfigOperation returns a new CreateInstanceConfigOperation from a given name. |
| // The name must be that of a previously created CreateInstanceConfigOperation, possibly from a different process. |
| func (c *instanceAdminGRPCClient) CreateInstanceConfigOperation(name string) *CreateInstanceConfigOperation { |
| return &CreateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| } |
| } |
| |
| // CreateInstanceConfigOperation returns a new CreateInstanceConfigOperation from a given name. |
| // The name must be that of a previously created CreateInstanceConfigOperation, possibly from a different process. |
| func (c *instanceAdminRESTClient) CreateInstanceConfigOperation(name string) *CreateInstanceConfigOperation { |
| override := fmt.Sprintf("/v1/%s", name) |
| return &CreateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| pollPath: override, |
| } |
| } |
| |
| // CreateInstancePartitionOperation returns a new CreateInstancePartitionOperation from a given name. |
| // The name must be that of a previously created CreateInstancePartitionOperation, possibly from a different process. |
| func (c *instanceAdminGRPCClient) CreateInstancePartitionOperation(name string) *CreateInstancePartitionOperation { |
| return &CreateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| } |
| } |
| |
| // CreateInstancePartitionOperation returns a new CreateInstancePartitionOperation from a given name. |
| // The name must be that of a previously created CreateInstancePartitionOperation, possibly from a different process. |
| func (c *instanceAdminRESTClient) CreateInstancePartitionOperation(name string) *CreateInstancePartitionOperation { |
| override := fmt.Sprintf("/v1/%s", name) |
| return &CreateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| pollPath: override, |
| } |
| } |
| |
| // UpdateInstanceOperation returns a new UpdateInstanceOperation from a given name. |
| // The name must be that of a previously created UpdateInstanceOperation, possibly from a different process. |
| func (c *instanceAdminGRPCClient) UpdateInstanceOperation(name string) *UpdateInstanceOperation { |
| return &UpdateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| } |
| } |
| |
| // UpdateInstanceOperation returns a new UpdateInstanceOperation from a given name. |
| // The name must be that of a previously created UpdateInstanceOperation, possibly from a different process. |
| func (c *instanceAdminRESTClient) UpdateInstanceOperation(name string) *UpdateInstanceOperation { |
| override := fmt.Sprintf("/v1/%s", name) |
| return &UpdateInstanceOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| pollPath: override, |
| } |
| } |
| |
| // UpdateInstanceConfigOperation returns a new UpdateInstanceConfigOperation from a given name. |
| // The name must be that of a previously created UpdateInstanceConfigOperation, possibly from a different process. |
| func (c *instanceAdminGRPCClient) UpdateInstanceConfigOperation(name string) *UpdateInstanceConfigOperation { |
| return &UpdateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| } |
| } |
| |
| // UpdateInstanceConfigOperation returns a new UpdateInstanceConfigOperation from a given name. |
| // The name must be that of a previously created UpdateInstanceConfigOperation, possibly from a different process. |
| func (c *instanceAdminRESTClient) UpdateInstanceConfigOperation(name string) *UpdateInstanceConfigOperation { |
| override := fmt.Sprintf("/v1/%s", name) |
| return &UpdateInstanceConfigOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| pollPath: override, |
| } |
| } |
| |
| // UpdateInstancePartitionOperation returns a new UpdateInstancePartitionOperation from a given name. |
| // The name must be that of a previously created UpdateInstancePartitionOperation, possibly from a different process. |
| func (c *instanceAdminGRPCClient) UpdateInstancePartitionOperation(name string) *UpdateInstancePartitionOperation { |
| return &UpdateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| } |
| } |
| |
| // UpdateInstancePartitionOperation returns a new UpdateInstancePartitionOperation from a given name. |
| // The name must be that of a previously created UpdateInstancePartitionOperation, possibly from a different process. |
| func (c *instanceAdminRESTClient) UpdateInstancePartitionOperation(name string) *UpdateInstancePartitionOperation { |
| override := fmt.Sprintf("/v1/%s", name) |
| return &UpdateInstancePartitionOperation{ |
| lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), |
| pollPath: override, |
| } |
| } |