Skip to content

Commit 9af1b9b

Browse files
Google APIscopybara-github
authored andcommitted
feat: Add IAM support for Explore content APIs
feat: Add support for custom container for Task feat: Add support for cross project for Task feat: Add support for custom encryption key to be used for encrypt data on the PDs associated with the VMs in your Dataproc cluster for Task feat: Add support for Latest job in Task resource feat: User mode filter in Explore list sessions API feat: Support logging sampled file paths per partition to Cloud logging for Discovery event PiperOrigin-RevId: 461116673
1 parent d3dbd87 commit 9af1b9b

9 files changed

Lines changed: 280 additions & 66 deletions

File tree

google/cloud/dataplex/v1/BUILD.bazel

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ proto_library(
3434
"//google/api:client_proto",
3535
"//google/api:field_behavior_proto",
3636
"//google/api:resource_proto",
37+
"//google/iam/v1:iam_policy_proto",
38+
"//google/iam/v1:policy_proto",
3739
"//google/longrunning:operations_proto",
3840
"@com_google_protobuf//:duration_proto",
3941
"@com_google_protobuf//:empty_proto",
@@ -47,6 +49,8 @@ proto_library_with_info(
4749
deps = [
4850
":dataplex_proto",
4951
"//google/cloud:common_resources_proto",
52+
"//google/cloud/location:location_proto",
53+
"//google/iam/v1:iam_policy_proto",
5054
],
5155
)
5256

@@ -81,18 +85,26 @@ java_gapic_library(
8185
service_yaml = "dataplex_v1.yaml",
8286
test_deps = [
8387
":dataplex_java_grpc",
88+
"//google/cloud/location:location_java_grpc",
89+
"//google/iam/v1:iam_java_grpc",
8490
],
91+
transport = "grpc+rest",
8592
deps = [
8693
":dataplex_java_proto",
8794
"//google/api:api_java_proto",
95+
"//google/cloud/location:location_java_proto",
96+
"//google/iam/v1:iam_java_proto",
8897
],
8998
)
9099

91100
java_gapic_test(
92101
name = "dataplex_java_gapic_test_suite",
93102
test_classes = [
103+
"com.google.cloud.dataplex.v1.ContentServiceClientHttpJsonTest",
94104
"com.google.cloud.dataplex.v1.ContentServiceClientTest",
105+
"com.google.cloud.dataplex.v1.DataplexServiceClientHttpJsonTest",
95106
"com.google.cloud.dataplex.v1.DataplexServiceClientTest",
107+
"com.google.cloud.dataplex.v1.MetadataServiceClientHttpJsonTest",
96108
"com.google.cloud.dataplex.v1.MetadataServiceClientTest",
97109
],
98110
runtime_deps = [":dataplex_java_gapic_test"],
@@ -102,6 +114,7 @@ java_gapic_test(
102114
java_gapic_assembly_gradle_pkg(
103115
name = "google-cloud-dataplex-v1-java",
104116
include_samples = True,
117+
transport = "grpc+rest",
105118
deps = [
106119
":dataplex_java_gapic",
107120
":dataplex_java_grpc",
@@ -128,6 +141,7 @@ go_proto_library(
128141
protos = [":dataplex_proto"],
129142
deps = [
130143
"//google/api:annotations_go_proto",
144+
"//google/iam/v1:iam_go_proto",
131145
"//google/longrunning:longrunning_go_proto",
132146
],
133147
)
@@ -139,8 +153,11 @@ go_gapic_library(
139153
importpath = "cloud.google.com/go/dataplex/apiv1;dataplex",
140154
metadata = True,
141155
service_yaml = "dataplex_v1.yaml",
156+
transport = "grpc+rest",
142157
deps = [
143158
":dataplex_go_proto",
159+
"//google/cloud/location:location_go_proto",
160+
"//google/iam/v1:iam_go_proto",
144161
"//google/longrunning:longrunning_go_proto",
145162
"@com_google_cloud_go//longrunning:go_default_library",
146163
"@com_google_cloud_go//longrunning/autogen:go_default_library",
@@ -179,6 +196,7 @@ py_gapic_library(
179196
name = "dataplex_py_gapic",
180197
srcs = [":dataplex_proto"],
181198
grpc_service_config = "dataplex_grpc_service_config.json",
199+
service_yaml = "dataplex_v1.yaml",
182200
)
183201

184202
# Open Source Packages
@@ -294,6 +312,7 @@ ruby_cloud_gapic_library(
294312
grpc_service_config = "dataplex_grpc_service_config.json",
295313
ruby_cloud_description = "Dataplex is an intelligent data fabric that provides a way to centrally manage, monitor, and govern your data across data lakes, data warehouses and data marts, and make this data securely accessible to a variety of analytics and data science tools.",
296314
ruby_cloud_title = "Dataplex V1",
315+
service_yaml = "dataplex_v1.yaml",
297316
deps = [
298317
":dataplex_ruby_grpc",
299318
":dataplex_ruby_proto",

google/cloud/dataplex/v1/content.proto

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import "google/api/client.proto";
2121
import "google/api/field_behavior.proto";
2222
import "google/api/resource.proto";
2323
import "google/cloud/dataplex/v1/analyze.proto";
24+
import "google/iam/v1/iam_policy.proto";
25+
import "google/iam/v1/policy.proto";
2426
import "google/protobuf/empty.proto";
2527
import "google/protobuf/field_mask.proto";
2628

@@ -39,6 +41,10 @@ service ContentService {
3941
option (google.api.http) = {
4042
post: "/v1/{parent=projects/*/locations/*/lakes/*}/contentitems"
4143
body: "content"
44+
additional_bindings {
45+
post: "/v1/{parent=projects/*/locations/*/lakes/*}/content"
46+
body: "content"
47+
}
4248
};
4349
option (google.api.method_signature) = "parent,content";
4450
}
@@ -48,6 +54,10 @@ service ContentService {
4854
option (google.api.http) = {
4955
patch: "/v1/{content.name=projects/*/locations/*/lakes/*/contentitems/**}"
5056
body: "content"
57+
additional_bindings {
58+
patch: "/v1/{content.name=projects/*/locations/*/lakes/*/content/**}"
59+
body: "content"
60+
}
5161
};
5262
option (google.api.method_signature) = "content,update_mask";
5363
}
@@ -56,6 +66,9 @@ service ContentService {
5666
rpc DeleteContent(DeleteContentRequest) returns (google.protobuf.Empty) {
5767
option (google.api.http) = {
5868
delete: "/v1/{name=projects/*/locations/*/lakes/*/contentitems/**}"
69+
additional_bindings {
70+
delete: "/v1/{name=projects/*/locations/*/lakes/*/content/**}"
71+
}
5972
};
6073
option (google.api.method_signature) = "name";
6174
}
@@ -64,14 +77,73 @@ service ContentService {
6477
rpc GetContent(GetContentRequest) returns (Content) {
6578
option (google.api.http) = {
6679
get: "/v1/{name=projects/*/locations/*/lakes/*/contentitems/**}"
80+
additional_bindings {
81+
get: "/v1/{name=projects/*/locations/*/lakes/*/content/**}"
82+
}
6783
};
6884
option (google.api.method_signature) = "name";
6985
}
7086

87+
// Gets the access control policy for a contentitem resource. A `NOT_FOUND`
88+
// error is returned if the resource does not exist. An empty policy is
89+
// returned if the resource exists but does not have a policy set on it.
90+
//
91+
// Caller must have Google IAM `dataplex.content.getIamPolicy` permission
92+
// on the resource.
93+
rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) returns (google.iam.v1.Policy) {
94+
option (google.api.http) = {
95+
get: "/v1/{resource=projects/*/locations/*/lakes/*/contentitems/**}:getIamPolicy"
96+
additional_bindings {
97+
get: "/v1/{resource=projects/*/locations/*/lakes/*/content/**}:getIamPolicy"
98+
}
99+
};
100+
option (google.api.method_signature) = "resource";
101+
}
102+
103+
// Sets the access control policy on the specified contentitem resource.
104+
// Replaces any existing policy.
105+
//
106+
// Caller must have Google IAM `dataplex.content.setIamPolicy` permission
107+
// on the resource.
108+
rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) {
109+
option (google.api.http) = {
110+
post: "/v1/{resource=projects/*/locations/*/lakes/*/contentitems/**}:setIamPolicy"
111+
body: "*"
112+
additional_bindings {
113+
post: "/v1/{resource=projects/*/locations/*/lakes/*/content/**}:setIamPolicy"
114+
body: "*"
115+
}
116+
};
117+
}
118+
119+
// Returns the caller's permissions on a resource.
120+
// If the resource does not exist, an empty set of
121+
// permissions is returned (a `NOT_FOUND` error is not returned).
122+
//
123+
// A caller is not required to have Google IAM permission to make this
124+
// request.
125+
//
126+
// Note: This operation is designed to be used for building permission-aware
127+
// UIs and command-line tools, not for authorization checking. This operation
128+
// may "fail open" without warning.
129+
rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) {
130+
option (google.api.http) = {
131+
post: "/v1/{resource=projects/*/locations/*/lakes/*/contentitems/**}:testIamPermissions"
132+
body: "*"
133+
additional_bindings {
134+
post: "/v1/{resource=projects/*/locations/*/lakes/*/content/**}:testIamPermissions"
135+
body: "*"
136+
}
137+
};
138+
}
139+
71140
// List content.
72141
rpc ListContent(ListContentRequest) returns (ListContentResponse) {
73142
option (google.api.http) = {
74143
get: "/v1/{parent=projects/*/locations/*/lakes/*}/contentitems"
144+
additional_bindings {
145+
get: "/v1/{parent=projects/*/locations/*/lakes/*}/content"
146+
}
75147
};
76148
option (google.api.method_signature) = "parent";
77149
}

google/cloud/dataplex/v1/dataplex_grpc_service_config.json

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
{
2222
"service": "google.cloud.dataplex.v1.DataplexService",
2323
"method": "GetJob"
24+
},
25+
{
26+
"service": "google.cloud.dataplex.v1.DataplexService",
27+
"method": "GetEnvironment"
2428
}
2529
],
2630
"timeout": "60s",
@@ -65,6 +69,10 @@
6569
{
6670
"service": "google.cloud.dataplex.v1.DataplexService",
6771
"method": "ListJobs"
72+
},
73+
{
74+
"service": "google.cloud.dataplex.v1.DataplexService",
75+
"method": "ListEnvironments"
6876
}
6977
],
7078
"timeout": "60s",
@@ -116,6 +124,46 @@
116124
"retryableStatusCodes": ["UNAVAILABLE"]
117125
}
118126
},
127+
{
128+
"name": [
129+
{
130+
"service": "google.cloud.dataplex.v1.ContentService",
131+
"method": "GetContent"
132+
},
133+
{
134+
"service": "google.cloud.dataplex.v1.ContentService",
135+
"method": "GetIamPolicy"
136+
},
137+
{
138+
"service": "google.cloud.dataplex.v1.ContentService",
139+
"method": "TestIamPermissions"
140+
}
141+
],
142+
"timeout": "60s",
143+
"retryPolicy": {
144+
"maxAttempts": 5,
145+
"initialBackoff": "1s",
146+
"maxBackoff": "10s",
147+
"backoffMultiplier": 1.3,
148+
"retryableStatusCodes": ["UNAVAILABLE"]
149+
}
150+
},
151+
{
152+
"name": [
153+
{
154+
"service": "google.cloud.dataplex.v1.ContentService",
155+
"method": "ListContent"
156+
}
157+
],
158+
"timeout": "60s",
159+
"retryPolicy": {
160+
"maxAttempts": 5,
161+
"initialBackoff": "1s",
162+
"maxBackoff": "10s",
163+
"backoffMultiplier": 1.3,
164+
"retryableStatusCodes": ["UNAVAILABLE"]
165+
}
166+
},
119167
{
120168
"name": [
121169
{
@@ -169,6 +217,18 @@
169217
{
170218
"service": "google.cloud.dataplex.v1.DataplexService",
171219
"method": "CancelJob"
220+
},
221+
{
222+
"service": "google.cloud.dataplex.v1.DataplexService",
223+
"method": "CreateEnvironment"
224+
},
225+
{
226+
"service": "google.cloud.dataplex.v1.DataplexService",
227+
"method": "UpdateEnvironment"
228+
},
229+
{
230+
"service": "google.cloud.dataplex.v1.DataplexService",
231+
"method": "DeleteEnvironment"
172232
}
173233
],
174234
"timeout": "60s"
@@ -201,6 +261,27 @@
201261
}
202262
],
203263
"timeout": "60s"
264+
},
265+
{
266+
"name": [
267+
{
268+
"service": "google.cloud.dataplex.v1.ContentService",
269+
"method": "CreateContent"
270+
},
271+
{
272+
"service": "google.cloud.dataplex.v1.ContentService",
273+
"method": "DeleteContent"
274+
},
275+
{
276+
"service": "google.cloud.dataplex.v1.ContentService",
277+
"method": "UpdateContent"
278+
},
279+
{
280+
"service": "google.cloud.dataplex.v1.ContentService",
281+
"method": "SetIamPolicy"
282+
}
283+
],
284+
"timeout": "60s"
204285
}
205286
]
206287
}

google/cloud/dataplex/v1/dataplex_v1.yaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ apis:
77
- name: google.cloud.dataplex.v1.ContentService
88
- name: google.cloud.dataplex.v1.DataplexService
99
- name: google.cloud.dataplex.v1.MetadataService
10+
- name: google.cloud.location.Locations
11+
- name: google.iam.v1.IAMPolicy
12+
- name: google.longrunning.Operations
1013

1114
types:
1215
- name: google.cloud.dataplex.v1.DiscoveryEvent
@@ -76,7 +79,6 @@ http:
7679
- get: '/v1/{resource=projects/*/locations/*/lakes/*/zones/*/assets/*}:getIamPolicy'
7780
- get: '/v1/{resource=projects/*/locations/*/lakes/*/tasks/*}:getIamPolicy'
7881
- get: '/v1/{resource=projects/*/locations/*/lakes/*/environments/*}:getIamPolicy'
79-
- get: '/v1/{resource=projects/*/locations/*/lakes/*/content/*}:getIamPolicy'
8082
- selector: google.iam.v1.IAMPolicy.SetIamPolicy
8183
post: '/v1/{resource=projects/*/locations/*/lakes/*}:setIamPolicy'
8284
body: '*'
@@ -89,8 +91,6 @@ http:
8991
body: '*'
9092
- post: '/v1/{resource=projects/*/locations/*/lakes/*/environments/*}:setIamPolicy'
9193
body: '*'
92-
- post: '/v1/{resource=projects/*/locations/*/lakes/*/content/*}:setIamPolicy'
93-
body: '*'
9494
- selector: google.iam.v1.IAMPolicy.TestIamPermissions
9595
post: '/v1/{resource=projects/*/locations/*/lakes/*}:testIamPermissions'
9696
body: '*'
@@ -103,8 +103,6 @@ http:
103103
body: '*'
104104
- post: '/v1/{resource=projects/*/locations/*/lakes/*/environments/*}:testIamPermissions'
105105
body: '*'
106-
- post: '/v1/{resource=projects/*/locations/*/lakes/*/content/*}:testIamPermissions'
107-
body: '*'
108106
- selector: google.longrunning.Operations.CancelOperation
109107
post: '/v1/{name=projects/*/locations/*/operations/*}:cancel'
110108
body: '*'

google/cloud/dataplex/v1/logs.proto

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ message DiscoveryEvent {
9696

9797
// The type of the containing entity resource.
9898
EntityType type = 3;
99+
100+
// The locations of the data items (e.g., a Cloud Storage objects) sampled
101+
// for metadata inference.
102+
repeated string sampled_data_locations = 4;
99103
}
100104

101105
// Details about the action.

0 commit comments

Comments
 (0)