相当于 Gcloud 计算实例组托管列表的 API



我有一个从命令行运行的脚本:

gcloud  compute instance-groups managed list

它输出

[
{
"autoscaled": "no",
"baseInstanceName": "name",
"creationTimestamp": "2017-04-14T14:24:19.048-07:00",
"currentActions": {
"abandoning": 0,
"creating": 0,
"creatingWithoutRetries": 0,
"deleting": 0,
"none": 1,
"recreating": 0,
"refreshing": 0,
"restarting": 0
},
"fingerprint": "xxxxxx-QwfQ=",
"id": "123234234234",
"instanceGroup": "group",
"instanceTemplate": "this-template",
"kind": "compute#instanceGroupManager",
"name": "this-dev-grp",
"namedPorts": [
{
"name": "http",
"port": 443
}
],
"selfLink": "https://www.googleapis.com/compute/v1/projects/projectname/zones/us-west1-b/instanceGroupManagers/this-dev-grp",
"size": "1",
"targetSize": 1,
"zone": "us-west1-b"
}
]

我有以下Python尝试做同样的事情:

#!/usr/bin/env python
from googleapiclient import discovery
...
def get_compute_service():
credentials = authenticate_user()
service = discovery.build('compute', 'v1', credentials=credentials)
return service
def get_managed_instance_groups_aggregated_list_response(project='project'):
service = get_compute_service()
instance_groups_manager = service.instanceGroupManagers()
aggregated_list_request = instance_groups_manager.aggregatedList(project=project)
response = aggregated_list_request.execute()
return response['items']
groups = get_managed_instance_groups_aggregated_list_response()
this_manager_dataset = groups['zones/us-central1-b']['instanceGroupManagers']  
for item in this_manager_dataset: 
print(item)

现在我得到的项目如下

{
u'kind': u'compute#instanceGroupManager', u'name': u'thename',
u'zone': u'https://www.googleapis.com/compute/v1/projects/projectname/zones/us-central1-b',
u'targetSize': 3,
u'instanceGroup': u'https://www.googleapis.com/compute/v1/projects/projectname/zones/us-central1-b/instanceGroups/thename',
u'currentActions': {
u'none': 3,
u'recreating': 0,
...
},
u'instanceTemplate': u'https://www.googleapis.com/compute/v1/projects/projectname/global/instanceTemplates/thename',
u'fingerprint': u'asdhfasdf87234=',
u'baseInstanceName': u'thename',
u'creationTimestamp': u'2017-03-03T11:53:03.633-07:00',
u'id': u'1213823482834',
u'selfLink': u'https://www.googleapis.com/compute/v1/projects/projectname/zones/us-central1-b/instanceGroupManagers/thename'
}

这看起来是一样的,但现在我缺少 2 个要求("自动缩放"和"大小")

到目前为止,我正在使用这个文档 https://cloud.google.com/compute/docs/reference/beta/instanceGroupManagers

是否有我缺少的gcloud compute instance-groups managed list的等效 api 客户端命令?

gcloud compute instance-groups managed listgcloud compute instance-groups managed describe聚合来自多个Google Compute Engine资源的信息来构建结果。

  • InstanceGroupManager
  • InstanceGroup
  • Autoscaler

聚合响应

  • 来自instance_groups_manager.aggregatedList()的响应仅包含来自项目中跨所有区域的InstanceGroupManager资源的数据。它不会有实例组大小或自动缩放程序信息。不过,它确实具有目标大小。

  • size属性是InstanceGroup资源的一部分。如果实例组是托管的,则InstanceGroup资源中将有一个名为instanceGroupManagerUri的字段,该字段指向链接InstanceGroupManager资源的 URI。

  • Autoscaler是单独的资源,仅在启用自动缩放时创建。当存在Autoscaler资源时,资源中的target字段将指向链接InstanceGroupManager资源的 URI。

因此,您必须至少执行 3 次单独的 API 调用才能获取所有这些信息并手动聚合它们,这正是gcloud compute instance-groups managed listgcloud compute instance-groups managed describe所做的。

使用google-api-python-client的相关 API 调用

  • autoscalers()
    • autoscalers().get()
    • autoscalers().aggregatedList()
  • instanceGroups()
    • instanceGroups().get()
    • instanceGroups().aggregatedList()
  • instanceGroupManagers()
    • instanceGroupManagers().get()
    • instanceGroupManagers().aggregatedList()

gcloud中记录 http 请求和响应

gcloud支持记录使用--log-http标志调用任何gcloud命令时发送的所有 HTTP 请求和响应。将来,如果您想知道gcloud为给定的gcloud命令调用了哪些 Google Cloud API,只需将此标志附加到您的命令中,您就可以看到此信息。

请注意(尤其是在共享此信息时),该命令会以明文形式记录包含经过身份验证的持有者令牌的整个请求标头。

--log-http

记录所有 HTTP 服务器请求和对 stderr 的响应。覆盖 此命令调用的默认core/log_http属性值。

例:

gcloud compute instance-groups managed list --format=json --log-http

最新更新