我有一个脚本,从命令行运行以下命令:
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客户端命令吗?谢谢
答案 0 :(得分:1)
gcloud compute instance-groups managed list
和gcloud compute instance-groups managed describe
汇总来自多个Google Compute Engine资源的信息,以构建结果。
来自instance_groups_manager.aggregatedList()
的响应仅包含项目中InstanceGroupManager
个资源中所有区域的数据。它不具有实例组大小或自动缩放器信息。它确实有目标大小。
size
属性是InstanceGroup
资源的一部分。如果管理实例组,InstanceGroup
资源中将有一个名为instanceGroupManagerUri
的字段,该字段指向链接的InstanceGroupManager
资源的URI。
Autoscaler
是一个单独的资源,只有在启用自动缩放时才会创建。当存在Autoscaler
资源时,资源中的target
字段将指向已链接的InstanceGroupManager
资源的URI。
因此,您必须至少执行3次单独的API调用才能获取所有这些信息并手动汇总,这正是gcloud compute instance-groups managed list
或gcloud compute instance-groups managed describe
所做的。
google-api-python-client
gcloud
gcloud
支持记录使用--log-http
标志调用任何gcloud
命令时发送的所有HTTP请求和响应。将来,如果您想知道gcloud
针对给定gcloud
命令调用了哪些Google Cloud API,只需将此标志附加到您的命令,您就可以看到此信息。< / p>
请注意(特别是在共享此信息时)该命令会以明文形式记录包含经过身份验证的Bearer令牌的整个请求标头。
<强>
--log-http
强>将所有HTTP服务器请求和响应记录到stderr。覆盖了 此命令调用的默认
core/log_http
属性值。
gcloud compute instance-groups managed list --format=json --log-http