Reputation: 13
Have no ideas how to programmatically add tags to a GCP dataset Ad Tag. I can create and manage tagKeys&tagValues, can add conditions to policies but I can't get how to add tags to dataset using Python:
Can't find any information in GCP documentation
Upvotes: 1
Views: 590
Reputation: 76073
You have to use the CloudResourceManager API to manage the TAGS. By API, you can do like that
My dataset is in multiregion US
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" -X POST \
-d '{"parent":"//bigquery.googleapis.com/projects/gdglyon-cloudrun/datasets/dlp_test","tagValue":"tagValues/252755946221"}' \
"https://us-cloudresourcemanager.googleapis.com/v3/tagBindings"
I tried to use the CloudResourceManager client library. And it's not very easy (and I'm bad at Python). But that piece of code works
from google.cloud import resourcemanager_v3
location = "us"
# Create a client
api_endpoint, _ = resourcemanager_v3.TagBindingsClient.get_mtls_endpoint_and_cert_source()
client = resourcemanager_v3.TagBindingsClient(client_options={"api_endpoint": location + "-" + api_endpoint})
# Initialize request argument(s)
request = resourcemanager_v3.CreateTagBindingRequest()
request.tag_binding.parent = "//bigquery.googleapis.com/projects/gdglyon-cloudrun/datasets/dlp_test"
request.tag_binding.tag_value = "tagValues/252755946221"
# Make the request
operation = client.create_tag_binding(request=request)
print("Waiting for operation to complete...")
response = operation.result()
# Handle the response
print(response)
Note that I had to get the API endpoint from the client, and then create the client with a hack on the api-endpoint. Indeed, for local resources, you have to use the cloud resource manager API in that same location. But I didn't find a clean way to achieve that with the client library!
Upvotes: 1
Reputation: 76073
In the API definition, you can add tags in the dataset object
Upvotes: 0