google-cloud-spanner-admin-instance-v1 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 276c00474aac9657725db28deeb043afc788319d7096b5cc570ec495366d2ec8
4
- data.tar.gz: bae07af2b455584a84d48b718d3eb9eccc9837db8d0cacaf2bf751b50433d9bf
3
+ metadata.gz: e45852e87b314819518c748c09d7fa25b7ab6ffdd8926456b726bc48e95a315c
4
+ data.tar.gz: 8601ceb157937b1b523dbd1211d68777653e9a5642402a153eab41baa4a790db
5
5
  SHA512:
6
- metadata.gz: 9560a499b8ee39cb00b65d99703bc715a654f3af304cb24381e49694eb4d2b9c06ff3b607cc237e4d3fc53590413a29910e278c6cd85f255d8d14d7a7389ec35
7
- data.tar.gz: 8b3ce86f7c9b563dc46095aa1b023af382df9b41375694417b050b6257a8ffdb0d84bec80751ed7d0fa4aeba3e0e20db5abf8149050a7689e0ae9efe80b294a8
6
+ metadata.gz: 0ff717ce05a286c1e5a873817b0b21fe3c09f00cf6e6850f2d7398e5de467628625b79c07e2846140827e9fee3b8f1f25f7d452765242b749662d82351d3e957
7
+ data.tar.gz: a536221226be07a875f6fa8dd9089a2f320f6d06abd335bc95f5c64ace85ebcda7ef2e89adf680f604ca8e70c85d5d7f32f5bf0457140900f192695c7d610022
data/README.md CHANGED
@@ -47,7 +47,7 @@ for general usage information.
47
47
 
48
48
  To enable logging for this library, set the logger for the underlying [gRPC](https://github.com/grpc/grpc/tree/master/src/ruby) library.
49
49
  The logger that you set may be a Ruby stdlib [`Logger`](https://ruby-doc.org/current/stdlibs/logger/Logger.html) as shown below,
50
- or a [`Google::Cloud::Logging::Logger`](https://googleapis.dev/ruby/google-cloud-logging/latest)
50
+ or a [`Google::Cloud::Logging::Logger`](https://cloud.google.com/ruby/docs/reference/google-cloud-logging/latest)
51
51
  that will write logs to [Cloud Logging](https://cloud.google.com/logging/). See [grpc/logconfig.rb](https://github.com/grpc/grpc/blob/master/src/ruby/lib/grpc/logconfig.rb)
52
52
  and the gRPC [spec_helper.rb](https://github.com/grpc/grpc/blob/master/src/ruby/spec/spec_helper.rb) for additional information.
53
53
 
@@ -1871,9 +1871,9 @@ module Google
1871
1871
  # * (`String`) The path to a service account key file in JSON format
1872
1872
  # * (`Hash`) A service account key as a Hash
1873
1873
  # * (`Google::Auth::Credentials`) A googleauth credentials object
1874
- # (see the [googleauth docs](https://googleapis.dev/ruby/googleauth/latest/index.html))
1874
+ # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials))
1875
1875
  # * (`Signet::OAuth2::Client`) A signet oauth2 client object
1876
- # (see the [signet docs](https://googleapis.dev/ruby/signet/latest/Signet/OAuth2/Client.html))
1876
+ # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client))
1877
1877
  # * (`GRPC::Core::Channel`) a gRPC channel with included credentials
1878
1878
  # * (`GRPC::Core::ChannelCredentials`) a gRPC credentails object
1879
1879
  # * (`nil`) indicating no credentials
@@ -622,9 +622,9 @@ module Google
622
622
  # * (`String`) The path to a service account key file in JSON format
623
623
  # * (`Hash`) A service account key as a Hash
624
624
  # * (`Google::Auth::Credentials`) A googleauth credentials object
625
- # (see the [googleauth docs](https://googleapis.dev/ruby/googleauth/latest/index.html))
625
+ # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials))
626
626
  # * (`Signet::OAuth2::Client`) A signet oauth2 client object
627
- # (see the [signet docs](https://googleapis.dev/ruby/signet/latest/Signet/OAuth2/Client.html))
627
+ # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client))
628
628
  # * (`GRPC::Core::Channel`) a gRPC channel with included credentials
629
629
  # * (`GRPC::Core::ChannelCredentials`) a gRPC credentails object
630
630
  # * (`nil`) indicating no credentials
@@ -1499,9 +1499,9 @@ module Google
1499
1499
  # * (`String`) The path to a service account key file in JSON format
1500
1500
  # * (`Hash`) A service account key as a Hash
1501
1501
  # * (`Google::Auth::Credentials`) A googleauth credentials object
1502
- # (see the [googleauth docs](https://googleapis.dev/ruby/googleauth/latest/index.html))
1502
+ # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials))
1503
1503
  # * (`Signet::OAuth2::Client`) A signet oauth2 client object
1504
- # (see the [signet docs](https://googleapis.dev/ruby/signet/latest/Signet/OAuth2/Client.html))
1504
+ # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client))
1505
1505
  # * (`nil`) indicating no credentials
1506
1506
  # @return [::Object]
1507
1507
  # @!attribute [rw] scope
@@ -413,9 +413,9 @@ module Google
413
413
  # * (`String`) The path to a service account key file in JSON format
414
414
  # * (`Hash`) A service account key as a Hash
415
415
  # * (`Google::Auth::Credentials`) A googleauth credentials object
416
- # (see the [googleauth docs](https://googleapis.dev/ruby/googleauth/latest/index.html))
416
+ # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials))
417
417
  # * (`Signet::OAuth2::Client`) A signet oauth2 client object
418
- # (see the [signet docs](https://googleapis.dev/ruby/signet/latest/Signet/OAuth2/Client.html))
418
+ # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client))
419
419
  # * (`nil`) indicating no credentials
420
420
  # @return [::Object]
421
421
  # @!attribute [rw] scope
@@ -23,7 +23,7 @@ module Google
23
23
  module Admin
24
24
  module Instance
25
25
  module V1
26
- VERSION = "0.9.0"
26
+ VERSION = "0.10.0"
27
27
  end
28
28
  end
29
29
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
2
3
  # source: google/spanner/admin/instance/v1/common.proto
3
4
 
@@ -5,14 +6,32 @@ require 'google/protobuf'
5
6
 
6
7
  require 'google/protobuf/timestamp_pb'
7
8
 
8
- Google::Protobuf::DescriptorPool.generated_pool.build do
9
- add_file("google/spanner/admin/instance/v1/common.proto", :syntax => :proto3) do
10
- add_message "google.spanner.admin.instance.v1.OperationProgress" do
11
- optional :progress_percent, :int32, 1
12
- optional :start_time, :message, 2, "google.protobuf.Timestamp"
13
- optional :end_time, :message, 3, "google.protobuf.Timestamp"
9
+
10
+ descriptor_data = "\n-google/spanner/admin/instance/v1/common.proto\x12 google.spanner.admin.instance.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\x8b\x01\n\x11OperationProgress\x12\x18\n\x10progress_percent\x18\x01 \x01(\x05\x12.\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xfd\x01\n$com.google.spanner.admin.instance.v1B\x0b\x43ommonProtoP\x01ZFcloud.google.com/go/spanner/admin/instance/apiv1/instancepb;instancepb\xaa\x02&Google.Cloud.Spanner.Admin.Instance.V1\xca\x02&Google\\Cloud\\Spanner\\Admin\\Instance\\V1\xea\x02+Google::Cloud::Spanner::Admin::Instance::V1b\x06proto3"
11
+
12
+ pool = Google::Protobuf::DescriptorPool.generated_pool
13
+
14
+ begin
15
+ pool.add_serialized_file(descriptor_data)
16
+ rescue TypeError => e
17
+ # Compatibility code: will be removed in the next major version.
18
+ require 'google/protobuf/descriptor_pb'
19
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
20
+ parsed.clear_dependency
21
+ serialized = parsed.class.encode(parsed)
22
+ file = pool.add_serialized_file(serialized)
23
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
24
+ imports = [
25
+ ["google.protobuf.Timestamp", "google/protobuf/timestamp.proto"],
26
+ ]
27
+ imports.each do |type_name, expected_filename|
28
+ import_file = pool.lookup(type_name).file_descriptor
29
+ if import_file.name != expected_filename
30
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
14
31
  end
15
32
  end
33
+ warn "Each proto file must use a consistent fully-qualified name."
34
+ warn "This will become an error in the next major version."
16
35
  end
17
36
 
18
37
  module Google
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
2
3
  # source: google/spanner/admin/instance/v1/spanner_instance_admin.proto
3
4
 
@@ -15,146 +16,35 @@ require 'google/protobuf/field_mask_pb'
15
16
  require 'google/protobuf/timestamp_pb'
16
17
  require 'google/spanner/admin/instance/v1/common_pb'
17
18
 
18
- Google::Protobuf::DescriptorPool.generated_pool.build do
19
- add_file("google/spanner/admin/instance/v1/spanner_instance_admin.proto", :syntax => :proto3) do
20
- add_message "google.spanner.admin.instance.v1.ReplicaInfo" do
21
- optional :location, :string, 1
22
- optional :type, :enum, 2, "google.spanner.admin.instance.v1.ReplicaInfo.ReplicaType"
23
- optional :default_leader_location, :bool, 3
24
- end
25
- add_enum "google.spanner.admin.instance.v1.ReplicaInfo.ReplicaType" do
26
- value :TYPE_UNSPECIFIED, 0
27
- value :READ_WRITE, 1
28
- value :READ_ONLY, 2
29
- value :WITNESS, 3
30
- end
31
- add_message "google.spanner.admin.instance.v1.InstanceConfig" do
32
- optional :name, :string, 1
33
- optional :display_name, :string, 2
34
- optional :config_type, :enum, 5, "google.spanner.admin.instance.v1.InstanceConfig.Type"
35
- repeated :replicas, :message, 3, "google.spanner.admin.instance.v1.ReplicaInfo"
36
- repeated :optional_replicas, :message, 6, "google.spanner.admin.instance.v1.ReplicaInfo"
37
- optional :base_config, :string, 7
38
- map :labels, :string, :string, 8
39
- optional :etag, :string, 9
40
- repeated :leader_options, :string, 4
41
- optional :reconciling, :bool, 10
42
- optional :state, :enum, 11, "google.spanner.admin.instance.v1.InstanceConfig.State"
43
- end
44
- add_enum "google.spanner.admin.instance.v1.InstanceConfig.Type" do
45
- value :TYPE_UNSPECIFIED, 0
46
- value :GOOGLE_MANAGED, 1
47
- value :USER_MANAGED, 2
48
- end
49
- add_enum "google.spanner.admin.instance.v1.InstanceConfig.State" do
50
- value :STATE_UNSPECIFIED, 0
51
- value :CREATING, 1
52
- value :READY, 2
53
- end
54
- add_message "google.spanner.admin.instance.v1.Instance" do
55
- optional :name, :string, 1
56
- optional :config, :string, 2
57
- optional :display_name, :string, 3
58
- optional :node_count, :int32, 5
59
- optional :processing_units, :int32, 9
60
- optional :state, :enum, 6, "google.spanner.admin.instance.v1.Instance.State"
61
- map :labels, :string, :string, 7
62
- repeated :endpoint_uris, :string, 8
63
- optional :create_time, :message, 11, "google.protobuf.Timestamp"
64
- optional :update_time, :message, 12, "google.protobuf.Timestamp"
65
- end
66
- add_enum "google.spanner.admin.instance.v1.Instance.State" do
67
- value :STATE_UNSPECIFIED, 0
68
- value :CREATING, 1
69
- value :READY, 2
70
- end
71
- add_message "google.spanner.admin.instance.v1.ListInstanceConfigsRequest" do
72
- optional :parent, :string, 1
73
- optional :page_size, :int32, 2
74
- optional :page_token, :string, 3
75
- end
76
- add_message "google.spanner.admin.instance.v1.ListInstanceConfigsResponse" do
77
- repeated :instance_configs, :message, 1, "google.spanner.admin.instance.v1.InstanceConfig"
78
- optional :next_page_token, :string, 2
79
- end
80
- add_message "google.spanner.admin.instance.v1.GetInstanceConfigRequest" do
81
- optional :name, :string, 1
82
- end
83
- add_message "google.spanner.admin.instance.v1.CreateInstanceConfigRequest" do
84
- optional :parent, :string, 1
85
- optional :instance_config_id, :string, 2
86
- optional :instance_config, :message, 3, "google.spanner.admin.instance.v1.InstanceConfig"
87
- optional :validate_only, :bool, 4
88
- end
89
- add_message "google.spanner.admin.instance.v1.UpdateInstanceConfigRequest" do
90
- optional :instance_config, :message, 1, "google.spanner.admin.instance.v1.InstanceConfig"
91
- optional :update_mask, :message, 2, "google.protobuf.FieldMask"
92
- optional :validate_only, :bool, 3
93
- end
94
- add_message "google.spanner.admin.instance.v1.DeleteInstanceConfigRequest" do
95
- optional :name, :string, 1
96
- optional :etag, :string, 2
97
- optional :validate_only, :bool, 3
98
- end
99
- add_message "google.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest" do
100
- optional :parent, :string, 1
101
- optional :filter, :string, 2
102
- optional :page_size, :int32, 3
103
- optional :page_token, :string, 4
104
- end
105
- add_message "google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse" do
106
- repeated :operations, :message, 1, "google.longrunning.Operation"
107
- optional :next_page_token, :string, 2
108
- end
109
- add_message "google.spanner.admin.instance.v1.GetInstanceRequest" do
110
- optional :name, :string, 1
111
- optional :field_mask, :message, 2, "google.protobuf.FieldMask"
112
- end
113
- add_message "google.spanner.admin.instance.v1.CreateInstanceRequest" do
114
- optional :parent, :string, 1
115
- optional :instance_id, :string, 2
116
- optional :instance, :message, 3, "google.spanner.admin.instance.v1.Instance"
117
- end
118
- add_message "google.spanner.admin.instance.v1.ListInstancesRequest" do
119
- optional :parent, :string, 1
120
- optional :page_size, :int32, 2
121
- optional :page_token, :string, 3
122
- optional :filter, :string, 4
123
- end
124
- add_message "google.spanner.admin.instance.v1.ListInstancesResponse" do
125
- repeated :instances, :message, 1, "google.spanner.admin.instance.v1.Instance"
126
- optional :next_page_token, :string, 2
127
- end
128
- add_message "google.spanner.admin.instance.v1.UpdateInstanceRequest" do
129
- optional :instance, :message, 1, "google.spanner.admin.instance.v1.Instance"
130
- optional :field_mask, :message, 2, "google.protobuf.FieldMask"
131
- end
132
- add_message "google.spanner.admin.instance.v1.DeleteInstanceRequest" do
133
- optional :name, :string, 1
134
- end
135
- add_message "google.spanner.admin.instance.v1.CreateInstanceMetadata" do
136
- optional :instance, :message, 1, "google.spanner.admin.instance.v1.Instance"
137
- optional :start_time, :message, 2, "google.protobuf.Timestamp"
138
- optional :cancel_time, :message, 3, "google.protobuf.Timestamp"
139
- optional :end_time, :message, 4, "google.protobuf.Timestamp"
140
- end
141
- add_message "google.spanner.admin.instance.v1.UpdateInstanceMetadata" do
142
- optional :instance, :message, 1, "google.spanner.admin.instance.v1.Instance"
143
- optional :start_time, :message, 2, "google.protobuf.Timestamp"
144
- optional :cancel_time, :message, 3, "google.protobuf.Timestamp"
145
- optional :end_time, :message, 4, "google.protobuf.Timestamp"
146
- end
147
- add_message "google.spanner.admin.instance.v1.CreateInstanceConfigMetadata" do
148
- optional :instance_config, :message, 1, "google.spanner.admin.instance.v1.InstanceConfig"
149
- optional :progress, :message, 2, "google.spanner.admin.instance.v1.OperationProgress"
150
- optional :cancel_time, :message, 3, "google.protobuf.Timestamp"
151
- end
152
- add_message "google.spanner.admin.instance.v1.UpdateInstanceConfigMetadata" do
153
- optional :instance_config, :message, 1, "google.spanner.admin.instance.v1.InstanceConfig"
154
- optional :progress, :message, 2, "google.spanner.admin.instance.v1.OperationProgress"
155
- optional :cancel_time, :message, 3, "google.protobuf.Timestamp"
19
+
20
+ descriptor_data = "\n=google/spanner/admin/instance/v1/spanner_instance_admin.proto\x12 google.spanner.admin.instance.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/iam/v1/iam_policy.proto\x1a\x1agoogle/iam/v1/policy.proto\x1a#google/longrunning/operations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a-google/spanner/admin/instance/v1/common.proto\"\xda\x01\n\x0bReplicaInfo\x12\x10\n\x08location\x18\x01 \x01(\t\x12G\n\x04type\x18\x02 \x01(\x0e\x32\x39.google.spanner.admin.instance.v1.ReplicaInfo.ReplicaType\x12\x1f\n\x17\x64\x65\x66\x61ult_leader_location\x18\x03 \x01(\x08\"O\n\x0bReplicaType\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nREAD_WRITE\x10\x01\x12\r\n\tREAD_ONLY\x10\x02\x12\x0b\n\x07WITNESS\x10\x03\"\xbe\x06\n\x0eInstanceConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12O\n\x0b\x63onfig_type\x18\x05 \x01(\x0e\x32\x35.google.spanner.admin.instance.v1.InstanceConfig.TypeB\x03\xe0\x41\x03\x12?\n\x08replicas\x18\x03 \x03(\x0b\x32-.google.spanner.admin.instance.v1.ReplicaInfo\x12M\n\x11optional_replicas\x18\x06 \x03(\x0b\x32-.google.spanner.admin.instance.v1.ReplicaInfoB\x03\xe0\x41\x03\x12?\n\x0b\x62\x61se_config\x18\x07 \x01(\tB*\xfa\x41\'\n%spanner.googleapis.com/InstanceConfig\x12L\n\x06labels\x18\x08 \x03(\x0b\x32<.google.spanner.admin.instance.v1.InstanceConfig.LabelsEntry\x12\x0c\n\x04\x65tag\x18\t \x01(\t\x12\x16\n\x0eleader_options\x18\x04 \x03(\t\x12\x18\n\x0breconciling\x18\n \x01(\x08\x42\x03\xe0\x41\x03\x12J\n\x05state\x18\x0b \x01(\x0e\x32\x36.google.spanner.admin.instance.v1.InstanceConfig.StateB\x03\xe0\x41\x03\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"B\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eGOOGLE_MANAGED\x10\x01\x12\x10\n\x0cUSER_MANAGED\x10\x02\"7\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43REATING\x10\x01\x12\t\n\x05READY\x10\x02:`\xea\x41]\n%spanner.googleapis.com/InstanceConfig\x12\x34projects/{project}/instanceConfigs/{instance_config}\"\xed\x04\n\x08Instance\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12=\n\x06\x63onfig\x18\x02 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%spanner.googleapis.com/InstanceConfig\x12\x19\n\x0c\x64isplay_name\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x12\n\nnode_count\x18\x05 \x01(\x05\x12\x18\n\x10processing_units\x18\t \x01(\x05\x12\x44\n\x05state\x18\x06 \x01(\x0e\x32\x30.google.spanner.admin.instance.v1.Instance.StateB\x03\xe0\x41\x03\x12\x46\n\x06labels\x18\x07 \x03(\x0b\x32\x36.google.spanner.admin.instance.v1.Instance.LabelsEntry\x12\x15\n\rendpoint_uris\x18\x08 \x03(\t\x12\x34\n\x0b\x63reate_time\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"7\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43REATING\x10\x01\x12\t\n\x05READY\x10\x02:M\xea\x41J\n\x1fspanner.googleapis.com/Instance\x12\'projects/{project}/instances/{instance}\"\x88\x01\n\x1aListInstanceConfigsRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"\x82\x01\n\x1bListInstanceConfigsResponse\x12J\n\x10instance_configs\x18\x01 \x03(\x0b\x32\x30.google.spanner.admin.instance.v1.InstanceConfig\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"W\n\x18GetInstanceConfigRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%spanner.googleapis.com/InstanceConfig\"\xea\x01\n\x1b\x43reateInstanceConfigRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x1f\n\x12instance_config_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12N\n\x0finstance_config\x18\x03 \x01(\x0b\x32\x30.google.spanner.admin.instance.v1.InstanceConfigB\x03\xe0\x41\x02\x12\x15\n\rvalidate_only\x18\x04 \x01(\x08\"\xba\x01\n\x1bUpdateInstanceConfigRequest\x12N\n\x0finstance_config\x18\x01 \x01(\x0b\x32\x30.google.spanner.admin.instance.v1.InstanceConfigB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\x12\x15\n\rvalidate_only\x18\x03 \x01(\x08\"\x7f\n\x1b\x44\x65leteInstanceConfigRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%spanner.googleapis.com/InstanceConfig\x12\x0c\n\x04\x65tag\x18\x02 \x01(\t\x12\x15\n\rvalidate_only\x18\x03 \x01(\x08\"\xa1\x01\n#ListInstanceConfigOperationsRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\"r\n$ListInstanceConfigOperationsResponse\x12\x31\n\noperations\x18\x01 \x03(\x0b\x32\x1d.google.longrunning.Operation\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"{\n\x12GetInstanceRequest\x12\x35\n\x04name\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Instance\x12.\n\nfield_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"\xb9\x01\n\x15\x43reateInstanceRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x18\n\x0binstance_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x41\n\x08instance\x18\x03 \x01(\x0b\x32*.google.spanner.admin.instance.v1.InstanceB\x03\xe0\x41\x02\"\x92\x01\n\x14ListInstancesRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\"o\n\x15ListInstancesResponse\x12=\n\tinstances\x18\x01 \x03(\x0b\x32*.google.spanner.admin.instance.v1.Instance\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\x8f\x01\n\x15UpdateInstanceRequest\x12\x41\n\x08instance\x18\x01 \x01(\x0b\x32*.google.spanner.admin.instance.v1.InstanceB\x03\xe0\x41\x02\x12\x33\n\nfield_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"N\n\x15\x44\x65leteInstanceRequest\x12\x35\n\x04name\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Instance\"\xe5\x01\n\x16\x43reateInstanceMetadata\x12<\n\x08instance\x18\x01 \x01(\x0b\x32*.google.spanner.admin.instance.v1.Instance\x12.\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0b\x63\x61ncel_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe5\x01\n\x16UpdateInstanceMetadata\x12<\n\x08instance\x18\x01 \x01(\x0b\x32*.google.spanner.admin.instance.v1.Instance\x12.\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0b\x63\x61ncel_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe1\x01\n\x1c\x43reateInstanceConfigMetadata\x12I\n\x0finstance_config\x18\x01 \x01(\x0b\x32\x30.google.spanner.admin.instance.v1.InstanceConfig\x12\x45\n\x08progress\x18\x02 \x01(\x0b\x32\x33.google.spanner.admin.instance.v1.OperationProgress\x12/\n\x0b\x63\x61ncel_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe1\x01\n\x1cUpdateInstanceConfigMetadata\x12I\n\x0finstance_config\x18\x01 \x01(\x0b\x32\x30.google.spanner.admin.instance.v1.InstanceConfig\x12\x45\n\x08progress\x18\x02 \x01(\x0b\x32\x33.google.spanner.admin.instance.v1.OperationProgress\x12/\n\x0b\x63\x61ncel_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp2\xf2\x18\n\rInstanceAdmin\x12\xcc\x01\n\x13ListInstanceConfigs\x12<.google.spanner.admin.instance.v1.ListInstanceConfigsRequest\x1a=.google.spanner.admin.instance.v1.ListInstanceConfigsResponse\"8\x82\xd3\xe4\x93\x02)\x12\'/v1/{parent=projects/*}/instanceConfigs\xda\x41\x06parent\x12\xb9\x01\n\x11GetInstanceConfig\x12:.google.spanner.admin.instance.v1.GetInstanceConfigRequest\x1a\x30.google.spanner.admin.instance.v1.InstanceConfig\"6\x82\xd3\xe4\x93\x02)\x12\'/v1/{name=projects/*/instanceConfigs/*}\xda\x41\x04name\x12\xc8\x02\n\x14\x43reateInstanceConfig\x12=.google.spanner.admin.instance.v1.CreateInstanceConfigRequest\x1a\x1d.google.longrunning.Operation\"\xd1\x01\x82\xd3\xe4\x93\x02,\"\'/v1/{parent=projects/*}/instanceConfigs:\x01*\xda\x41)parent,instance_config,instance_config_id\xca\x41p\n/google.spanner.admin.instance.v1.InstanceConfig\x12=google.spanner.admin.instance.v1.CreateInstanceConfigMetadata\x12\xca\x02\n\x14UpdateInstanceConfig\x12=.google.spanner.admin.instance.v1.UpdateInstanceConfigRequest\x1a\x1d.google.longrunning.Operation\"\xd3\x01\x82\xd3\xe4\x93\x02<27/v1/{instance_config.name=projects/*/instanceConfigs/*}:\x01*\xda\x41\x1binstance_config,update_mask\xca\x41p\n/google.spanner.admin.instance.v1.InstanceConfig\x12=google.spanner.admin.instance.v1.UpdateInstanceConfigMetadata\x12\xa5\x01\n\x14\x44\x65leteInstanceConfig\x12=.google.spanner.admin.instance.v1.DeleteInstanceConfigRequest\x1a\x16.google.protobuf.Empty\"6\x82\xd3\xe4\x93\x02)*\'/v1/{name=projects/*/instanceConfigs/*}\xda\x41\x04name\x12\xf0\x01\n\x1cListInstanceConfigOperations\x12\x45.google.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest\x1a\x46.google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse\"A\x82\xd3\xe4\x93\x02\x32\x12\x30/v1/{parent=projects/*}/instanceConfigOperations\xda\x41\x06parent\x12\xb4\x01\n\rListInstances\x12\x36.google.spanner.admin.instance.v1.ListInstancesRequest\x1a\x37.google.spanner.admin.instance.v1.ListInstancesResponse\"2\x82\xd3\xe4\x93\x02#\x12!/v1/{parent=projects/*}/instances\xda\x41\x06parent\x12\xa1\x01\n\x0bGetInstance\x12\x34.google.spanner.admin.instance.v1.GetInstanceRequest\x1a*.google.spanner.admin.instance.v1.Instance\"0\x82\xd3\xe4\x93\x02#\x12!/v1/{name=projects/*/instances/*}\xda\x41\x04name\x12\x9c\x02\n\x0e\x43reateInstance\x12\x37.google.spanner.admin.instance.v1.CreateInstanceRequest\x1a\x1d.google.longrunning.Operation\"\xb1\x01\x82\xd3\xe4\x93\x02&\"!/v1/{parent=projects/*}/instances:\x01*\xda\x41\x1bparent,instance_id,instance\xca\x41\x64\n)google.spanner.admin.instance.v1.Instance\x12\x37google.spanner.admin.instance.v1.CreateInstanceMetadata\x12\x9d\x02\n\x0eUpdateInstance\x12\x37.google.spanner.admin.instance.v1.UpdateInstanceRequest\x1a\x1d.google.longrunning.Operation\"\xb2\x01\x82\xd3\xe4\x93\x02/2*/v1/{instance.name=projects/*/instances/*}:\x01*\xda\x41\x13instance,field_mask\xca\x41\x64\n)google.spanner.admin.instance.v1.Instance\x12\x37google.spanner.admin.instance.v1.UpdateInstanceMetadata\x12\x93\x01\n\x0e\x44\x65leteInstance\x12\x37.google.spanner.admin.instance.v1.DeleteInstanceRequest\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02#*!/v1/{name=projects/*/instances/*}\xda\x41\x04name\x12\x9a\x01\n\x0cSetIamPolicy\x12\".google.iam.v1.SetIamPolicyRequest\x1a\x15.google.iam.v1.Policy\"O\x82\xd3\xe4\x93\x02\x37\"2/v1/{resource=projects/*/instances/*}:setIamPolicy:\x01*\xda\x41\x0fresource,policy\x12\x93\x01\n\x0cGetIamPolicy\x12\".google.iam.v1.GetIamPolicyRequest\x1a\x15.google.iam.v1.Policy\"H\x82\xd3\xe4\x93\x02\x37\"2/v1/{resource=projects/*/instances/*}:getIamPolicy:\x01*\xda\x41\x08resource\x12\xc5\x01\n\x12TestIamPermissions\x12(.google.iam.v1.TestIamPermissionsRequest\x1a).google.iam.v1.TestIamPermissionsResponse\"Z\x82\xd3\xe4\x93\x02=\"8/v1/{resource=projects/*/instances/*}:testIamPermissions:\x01*\xda\x41\x14resource,permissions\x1ax\xca\x41\x16spanner.googleapis.com\xd2\x41\\https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spanner.adminB\x8b\x02\n$com.google.spanner.admin.instance.v1B\x19SpannerInstanceAdminProtoP\x01ZFcloud.google.com/go/spanner/admin/instance/apiv1/instancepb;instancepb\xaa\x02&Google.Cloud.Spanner.Admin.Instance.V1\xca\x02&Google\\Cloud\\Spanner\\Admin\\Instance\\V1\xea\x02+Google::Cloud::Spanner::Admin::Instance::V1b\x06proto3"
21
+
22
+ pool = Google::Protobuf::DescriptorPool.generated_pool
23
+
24
+ begin
25
+ pool.add_serialized_file(descriptor_data)
26
+ rescue TypeError => e
27
+ # Compatibility code: will be removed in the next major version.
28
+ require 'google/protobuf/descriptor_pb'
29
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
30
+ parsed.clear_dependency
31
+ serialized = parsed.class.encode(parsed)
32
+ file = pool.add_serialized_file(serialized)
33
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
34
+ imports = [
35
+ ["google.protobuf.Timestamp", "google/protobuf/timestamp.proto"],
36
+ ["google.protobuf.FieldMask", "google/protobuf/field_mask.proto"],
37
+ ["google.longrunning.Operation", "google/longrunning/operations.proto"],
38
+ ["google.spanner.admin.instance.v1.OperationProgress", "google/spanner/admin/instance/v1/common.proto"],
39
+ ]
40
+ imports.each do |type_name, expected_filename|
41
+ import_file = pool.lookup(type_name).file_descriptor
42
+ if import_file.name != expected_filename
43
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
156
44
  end
157
45
  end
46
+ warn "Each proto file must use a consistent fully-qualified name."
47
+ warn "This will become an error in the next major version."
158
48
  end
159
49
 
160
50
  module Google
@@ -35,7 +35,9 @@ module Google
35
35
  # Details about how and where to publish client libraries.
36
36
  # @!attribute [rw] version
37
37
  # @return [::String]
38
- # Version of the API to apply these settings to.
38
+ # Version of the API to apply these settings to. This is the full protobuf
39
+ # package for the API, ending in the version element.
40
+ # Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
39
41
  # @!attribute [rw] launch_stage
40
42
  # @return [::Google::Api::LaunchStage]
41
43
  # Launch stage of this version of the API.
@@ -81,7 +83,7 @@ module Google
81
83
  # long-running operation pattern.
82
84
  # @!attribute [rw] new_issue_uri
83
85
  # @return [::String]
84
- # Link to a place that API users can report issues. Example:
86
+ # Link to a *public* URI where users can report issues. Example:
85
87
  # https://issuetracker.google.com/issues/new?component=190865&template=1161103
86
88
  # @!attribute [rw] documentation_uri
87
89
  # @return [::String]
@@ -111,6 +113,10 @@ module Google
111
113
  # Client library settings. If the same version string appears multiple
112
114
  # times in this list, then the last one wins. Settings from earlier
113
115
  # settings with the same version string are discarded.
116
+ # @!attribute [rw] proto_reference_documentation_uri
117
+ # @return [::String]
118
+ # Optional link to proto reference documentation. Example:
119
+ # https://cloud.google.com/pubsub/lite/docs/reference/rpc
114
120
  class Publishing
115
121
  include ::Google::Protobuf::MessageExts
116
122
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -203,9 +209,57 @@ module Google
203
209
  # @!attribute [rw] common
204
210
  # @return [::Google::Api::CommonLanguageSettings]
205
211
  # Some settings.
212
+ # @!attribute [rw] renamed_services
213
+ # @return [::Google::Protobuf::Map{::String => ::String}]
214
+ # Map from original service names to renamed versions.
215
+ # This is used when the default generated types
216
+ # would cause a naming conflict. (Neither name is
217
+ # fully-qualified.)
218
+ # Example: Subscriber to SubscriberServiceApi.
219
+ # @!attribute [rw] renamed_resources
220
+ # @return [::Google::Protobuf::Map{::String => ::String}]
221
+ # Map from full resource types to the effective short name
222
+ # for the resource. This is used when otherwise resource
223
+ # named from different services would cause naming collisions.
224
+ # Example entry:
225
+ # "datalabeling.googleapis.com/Dataset": "DataLabelingDataset"
226
+ # @!attribute [rw] ignored_resources
227
+ # @return [::Array<::String>]
228
+ # List of full resource types to ignore during generation.
229
+ # This is typically used for API-specific Location resources,
230
+ # which should be handled by the generator as if they were actually
231
+ # the common Location resources.
232
+ # Example entry: "documentai.googleapis.com/Location"
233
+ # @!attribute [rw] forced_namespace_aliases
234
+ # @return [::Array<::String>]
235
+ # Namespaces which must be aliased in snippets due to
236
+ # a known (but non-generator-predictable) naming collision
237
+ # @!attribute [rw] handwritten_signatures
238
+ # @return [::Array<::String>]
239
+ # Method signatures (in the form "service.method(signature)")
240
+ # which are provided separately, so shouldn't be generated.
241
+ # Snippets *calling* these methods are still generated, however.
206
242
  class DotnetSettings
207
243
  include ::Google::Protobuf::MessageExts
208
244
  extend ::Google::Protobuf::MessageExts::ClassMethods
245
+
246
+ # @!attribute [rw] key
247
+ # @return [::String]
248
+ # @!attribute [rw] value
249
+ # @return [::String]
250
+ class RenamedServicesEntry
251
+ include ::Google::Protobuf::MessageExts
252
+ extend ::Google::Protobuf::MessageExts::ClassMethods
253
+ end
254
+
255
+ # @!attribute [rw] key
256
+ # @return [::String]
257
+ # @!attribute [rw] value
258
+ # @return [::String]
259
+ class RenamedResourcesEntry
260
+ include ::Google::Protobuf::MessageExts
261
+ extend ::Google::Protobuf::MessageExts::ClassMethods
262
+ end
209
263
  end
210
264
 
211
265
  # Settings for Ruby client libraries.
@@ -240,8 +294,8 @@ module Google
240
294
  # Example of a YAML configuration::
241
295
  #
242
296
  # publishing:
243
- # method_behavior:
244
- # - selector: CreateAdDomain
297
+ # method_settings:
298
+ # - selector: google.cloud.speech.v2.Speech.BatchRecognize
245
299
  # long_running:
246
300
  # initial_poll_delay:
247
301
  # seconds: 60 # 1 minute
@@ -299,6 +353,15 @@ module Google
299
353
 
300
354
  # Street View Org.
301
355
  STREET_VIEW = 4
356
+
357
+ # Shopping Org.
358
+ SHOPPING = 5
359
+
360
+ # Geo Org.
361
+ GEO = 6
362
+
363
+ # Generative AI - https://developers.generativeai.google
364
+ GENERATIVE_AI = 7
302
365
  end
303
366
 
304
367
  # To where should client libraries be published?
@@ -35,7 +35,8 @@ module Google
35
35
  # only if the expression evaluates to `true`. A condition can add constraints
36
36
  # based on attributes of the request, the resource, or both. To learn which
37
37
  # resources support conditions in their IAM policies, see the
38
- # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
38
+ # [IAM
39
+ # documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
39
40
  #
40
41
  # **JSON example:**
41
42
  #
@@ -58,7 +59,8 @@ module Google
58
59
  # "condition": {
59
60
  # "title": "expirable access",
60
61
  # "description": "Does not grant access after Sep 2020",
61
- # "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
62
+ # "expression": "request.time <
63
+ # timestamp('2020-10-01T00:00:00.000Z')",
62
64
  # }
63
65
  # }
64
66
  # ],
@@ -112,7 +114,8 @@ module Google
112
114
  # specify any valid version or leave the field unset.
113
115
  #
114
116
  # To learn which resources support conditions in their IAM policies, see the
115
- # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
117
+ # [IAM
118
+ # documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
116
119
  # @!attribute [rw] bindings
117
120
  # @return [::Array<::Google::Iam::V1::Binding>]
118
121
  # Associates a list of `members`, or principals, with a `role`. Optionally,
@@ -305,7 +308,8 @@ module Google
305
308
  # @return [::Array<::String>]
306
309
  # Specifies the identities that do not cause logging for this type of
307
310
  # permission.
308
- # Follows the same format of {::Google::Iam::V1::Binding#members Binding.members}.
311
+ # Follows the same format of
312
+ # {::Google::Iam::V1::Binding#members Binding.members}.
309
313
  class AuditLogConfig
310
314
  include ::Google::Protobuf::MessageExts
311
315
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -43,8 +43,12 @@ module Google
43
43
  # if (any.is(Foo.class)) {
44
44
  # foo = any.unpack(Foo.class);
45
45
  # }
46
+ # // or ...
47
+ # if (any.isSameTypeAs(Foo.getDefaultInstance())) {
48
+ # foo = any.unpack(Foo.getDefaultInstance());
49
+ # }
46
50
  #
47
- # Example 3: Pack and unpack a message in Python.
51
+ # Example 3: Pack and unpack a message in Python.
48
52
  #
49
53
  # foo = Foo(...)
50
54
  # any = Any()
@@ -54,7 +58,7 @@ module Google
54
58
  # any.Unpack(foo)
55
59
  # ...
56
60
  #
57
- # Example 4: Pack and unpack a message in Go
61
+ # Example 4: Pack and unpack a message in Go
58
62
  #
59
63
  # foo := &pb.Foo{...}
60
64
  # any, err := anypb.New(foo)
@@ -73,9 +77,8 @@ module Google
73
77
  # in the type URL, for example "foo.bar.com/x/y.z" will yield type
74
78
  # name "y.z".
75
79
  #
76
- #
77
80
  # JSON
78
- #
81
+ # ====
79
82
  # The JSON representation of an `Any` value uses the regular
80
83
  # representation of the deserialized, embedded message, with an
81
84
  # additional field `@type` which contains the type URL. Example:
@@ -69,7 +69,6 @@ module Google
69
69
  # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
70
70
  # .setNanos((int) ((millis % 1000) * 1000000)).build();
71
71
  #
72
- #
73
72
  # Example 5: Compute Timestamp from Java `Instant.now()`.
74
73
  #
75
74
  # Instant now = Instant.now();
@@ -78,7 +77,6 @@ module Google
78
77
  # Timestamp.newBuilder().setSeconds(now.getEpochSecond())
79
78
  # .setNanos(now.getNano()).build();
80
79
  #
81
- #
82
80
  # Example 6: Compute Timestamp from current time in Python.
83
81
  #
84
82
  # timestamp = Timestamp()
@@ -108,7 +106,7 @@ module Google
108
106
  # [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
109
107
  # the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
110
108
  # the Joda Time's [`ISODateTimeFormat.dateTime()`](
111
- # http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
109
+ # http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
112
110
  # ) to obtain a formatter capable of generating timestamps in this format.
113
111
  # @!attribute [rw] seconds
114
112
  # @return [::Integer]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-spanner-admin-instance-v1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Google LLC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-08 00:00:00.000000000 Z
11
+ date: 2023-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gapic-common
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.18.0
19
+ version: 0.19.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 2.a
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.18.0
29
+ version: 0.19.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.a