Skip to content

Commit 712043c

Browse files
Google APIscopybara-github
authored andcommitted
feat: Add new GetIamPolicy, SetIamPolicy, and TestIamPermissions RPCs
PiperOrigin-RevId: 804559167
1 parent 60e1300 commit 712043c

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

google/storage/control/v2/BUILD.bazel

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ proto_library(
2626
"//google/api:field_info_proto",
2727
"//google/api:resource_proto",
2828
"//google/api:routing_proto",
29+
"//google/iam/v1:iam_policy_proto",
30+
"//google/iam/v1:policy_proto",
2931
"//google/longrunning:operations_proto",
3032
"@com_google_protobuf//:duration_proto",
3133
"@com_google_protobuf//:empty_proto",
@@ -38,6 +40,7 @@ proto_library_with_info(
3840
deps = [
3941
":control_proto",
4042
"//google/cloud:common_resources_proto",
43+
"//google/iam/v1:iam_policy_proto",
4144
],
4245
)
4346
##############################################################################
@@ -69,11 +72,13 @@ java_gapic_library(
6972
service_yaml = "storage_v2.yaml",
7073
test_deps = [
7174
":control_java_grpc",
75+
"//google/iam/v1:iam_java_grpc",
7276
],
7377
transport = "grpc+rest",
7478
deps = [
7579
":control_java_proto",
7680
"//google/api:api_java_proto",
81+
"//google/iam/v1:iam_java_proto",
7782
],
7883
)
7984
java_gapic_test(
@@ -111,6 +116,7 @@ go_proto_library(
111116
protos = [":control_proto"],
112117
deps = [
113118
"//google/api:annotations_go_proto",
119+
"//google/iam/v1:iam_go_proto",
114120
"//google/longrunning:longrunning_go_proto",
115121
],
116122
)
@@ -126,6 +132,7 @@ go_gapic_library(
126132
transport = "grpc+rest",
127133
deps = [
128134
":control_go_proto",
135+
"//google/iam/v1:iam_go_proto",
129136
"//google/longrunning:longrunning_go_proto",
130137
"@com_google_cloud_go_longrunning//:go_default_library",
131138
"@com_google_cloud_go_longrunning//autogen:go_default_library",
@@ -159,6 +166,7 @@ py_gapic_library(
159166
service_yaml = "storage_v2.yaml",
160167
transport = "grpc+rest",
161168
deps = [
169+
"//google/iam/v1:iam_policy_py_proto",
162170
],
163171
opt_args = [
164172
"python-gapic-namespace=google.cloud",

google/storage/control/v2/storage_control.proto

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import "google/api/field_behavior.proto";
2222
import "google/api/field_info.proto";
2323
import "google/api/resource.proto";
2424
import "google/api/routing.proto";
25+
import "google/iam/v1/iam_policy.proto";
26+
import "google/iam/v1/policy.proto";
2527
import "google/longrunning/operations.proto";
2628
import "google/protobuf/duration.proto";
2729
import "google/protobuf/empty.proto";
@@ -306,6 +308,63 @@ service StorageControl {
306308
};
307309
option (google.api.method_signature) = "intelligence_config,update_mask";
308310
}
311+
312+
// Gets the IAM policy for a specified bucket.
313+
// The `resource` field in the request should be
314+
// `projects/_/buckets/{bucket}` for a bucket, or
315+
// `projects/_/buckets/{bucket}/managedFolders/{managedFolder}`
316+
// for a managed folder.
317+
rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
318+
returns (google.iam.v1.Policy) {
319+
option (google.api.routing) = {
320+
routing_parameters { field: "resource" path_template: "{bucket=**}" }
321+
routing_parameters {
322+
field: "resource"
323+
path_template: "{bucket=projects/*/buckets/*}/**"
324+
}
325+
};
326+
option (google.api.method_signature) = "resource";
327+
}
328+
329+
// Updates an IAM policy for the specified bucket.
330+
// The `resource` field in the request should be
331+
// `projects/_/buckets/{bucket}` for a bucket, or
332+
// `projects/_/buckets/{bucket}/managedFolders/{managedFolder}`
333+
// for a managed folder.
334+
rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
335+
returns (google.iam.v1.Policy) {
336+
option (google.api.routing) = {
337+
routing_parameters { field: "resource" path_template: "{bucket=**}" }
338+
routing_parameters {
339+
field: "resource"
340+
path_template: "{bucket=projects/*/buckets/*}/**"
341+
}
342+
};
343+
option (google.api.method_signature) = "resource,policy";
344+
}
345+
346+
// Tests a set of permissions on the given bucket, object, or managed folder
347+
// to see which, if any, are held by the caller.
348+
// The `resource` field in the request should be
349+
// `projects/_/buckets/{bucket}` for a bucket,
350+
// `projects/_/buckets/{bucket}/objects/{object}` for an object, or
351+
// `projects/_/buckets/{bucket}/managedFolders/{managedFolder}`
352+
// for a managed folder.
353+
rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
354+
returns (google.iam.v1.TestIamPermissionsResponse) {
355+
option (google.api.routing) = {
356+
routing_parameters { field: "resource" path_template: "{bucket=**}" }
357+
routing_parameters {
358+
field: "resource"
359+
path_template: "{bucket=projects/*/buckets/*}/objects/**"
360+
}
361+
routing_parameters {
362+
field: "resource"
363+
path_template: "{bucket=projects/*/buckets/*}/managedFolders/**"
364+
}
365+
};
366+
option (google.api.method_signature) = "resource,permissions";
367+
}
309368
}
310369

311370
// Contains information about a pending rename operation.

0 commit comments

Comments
 (0)