我似乎找不到Project List API方法的适当过滤器,仅列出我有权访问但在“无组织”下的项目。
是否有过滤器? 实现该目标的方法是什么?
答案 0 :(得分:2)
根据documentation,您应该能够使用过滤器来检查项目是否属于父级(组织)。通过cli可以起作用:
gcloud projects list --filter="parent.id.yesno(yes='Yes', no='No')=No"
这也可以:
gcloud projects list --filter="parent.id:None"
则python等效为:
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
service = discovery.build('cloudresourcemanager', 'v1beta1', credentials=credentials)
filter = "parent.id:None"
projects = service.projects().list(filter=filter).execute()
答案 1 :(得分:1)
恐怕没有直接的方法可以实现这一目标。过滤器必须匹配“ parent.id”或“ parent.type”属性,在没有组织的项目中,该属性不存在(它们没有“ parent”属性)。
这必须分两个步骤完成:
1.-使用提及的Project List method列出所有项目。
2.-使用Project Get method浏览每个项目,并检查属性“ parent”是否存在,如果该属性存在,则表示它属于组织(或文件夹),否则,它不属于组织(或文件夹)没错
项目示例获得组织的回复:
{
"projectNumber": "4444444444",
"projectId": "my-project-id",
"lifecycleState": "ACTIVE",
"name": "my-project-name",
"createTime": "2019-04-05T06:57:37.142Z"
"parent": {
"type": "organization",
"id": "5555555555”
}
}
项目示例在没有组织的情况下获得答复:
{
"projectNumber": "4444444444",
"projectId": "my-project-id",
"lifecycleState": "ACTIVE",
"name": "my-project-name",
"createTime": "2019-04-05T06:57:37.142Z"
}
答案 2 :(得分:0)
使用过滤器“ -parent.type:folder”(以破折号开头且没有parent.id参数)应该可以解决该问题。
我使用此过滤器尝试了API [1],但没有组织项目。
[1] https://cloud.google.com/resource-manager/reference/rest/v1/projects/list