GCP Python - 删除项目标签

5

我正在尝试使用UpdateProjectRequest从项目中删除标签。

它要求一个“update_mask”,但我不知道如何创建这个掩码。 它是google.protobuf.field_mask_pb2.FieldMask类型的。

https://cloud.google.com/python/docs/reference/cloudresourcemanager/latest/google.cloud.resourcemanager_v3.types.UpdateProjectRequest

我尝试过的方法:

from google.cloud import resourcemanager_v3
from google.protobuf import field_mask_pb2

def sample_update_project(project_id):
    client = resourcemanager_v3.ProjectsClient()

    
    update_mask = field_mask_pb2.FieldMask(paths=["labels.newkey:None"])
    resourcemanager_v3.Project=f"projects/{project_id}"
    
    operation = client.update_project(update_mask=update_mask)
    
    
    print("Waiting for operation to complete...")
    response = operation.result()
    
    
    print(response)

感谢您的选择。
1个回答

1
正文:
正如您已经提到的那样,当您想要删除所有标签时,需要为标签字段提供一个更新掩码。 请查看文档,请注意,如果提供了请求,则不应设置此选项。此外,您将找到一个代码示例,可能会对您有所帮助。
另外,如果您要使用FieldMask 更新数据,您应该导入filed_mask_pb2,如下所示:
from google.protobuf import field_mask_pb2

有了主要问题的想法后,可以使用两种方法之一来 删除标签
使用读取-修改-写入模式完全删除标签,这将同时删除键和值。要执行此操作,请执行以下步骤:
  • 使用资源的 get() 函数读取当前标签。
  • 使用文本编辑器或以编程方式更改返回的标签,以添加或删除任何必要的键及其值。
  • 调用资源上的 patch() 函数以写入更改的标签。
要保留键并删除值,请将值设置为 null,但是在审查您的代码时,您目前正在使用 None
另外,请参考以下文档:创建和管理标签方法:projects.patch更新 再次回到您的主要问题,这里有一段代码已经测试过可以删除您要求的标签。
import googleapiclient.discovery 

def sample_update_project_old(project_id): 
    manager = googleapiclient.discovery.build('cloudresourcemanager', 'v1') 
    request = manager.projects().get(projectId=project_id) 
    project = request.execute() 
    del project['labels']['key'] # replace 'key' with your actual key value 
    request = manager.projects().update(projectId=project_id, body=project) 
    project = request.execute() 

sample_update_project_old("your-project-id")

1
你好 非常感谢。 我不得不稍微修改一下,但它正在工作: https://gist.github.com/tundragon/6c4523f89bde8a96ad119bc995250859我会为你的健康打开一些啤酒。 - motoTrail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接