我有一个从命令行运行的脚本:
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 list
和gcloud 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 list
或gcloud 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