API 相当于 Gcloud 计算实例组托管列表
API equivalent of Gcloud compute instance-groups managed list
我有一个来自命令行的脚本 运行:
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 个要求('autoscaled' 和 'size')
目前我正在使用这个文档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 资源的信息以构建结果。
汇总响应
来自 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 调用
在 gcloud
中记录 http 请求和响应
当您使用 --log-http
标志调用任何 gcloud
命令时,gcloud
支持记录所有发送的 HTTP 请求和响应。将来,如果您想知道 gcloud
为给定的 gcloud
命令调用了哪些 Google 云 API,只需将此标志附加到您的命令即可就能看到这些信息。
请注意(尤其是在共享此信息时)该命令会记录整个请求 headers,其中包含您经过身份验证的 Bearer 令牌。
--log-http
Log all HTTP server requests and responses to stderr. Overrides the
default core/log_http
property value for this command invocation.
示例:
gcloud compute instance-groups managed list --format=json --log-http
我有一个来自命令行的脚本 运行:
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 个要求('autoscaled' 和 'size')
目前我正在使用这个文档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 资源的信息以构建结果。
汇总响应
来自
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 调用
在 gcloud
中记录 http 请求和响应
当您使用 --log-http
标志调用任何 gcloud
命令时,gcloud
支持记录所有发送的 HTTP 请求和响应。将来,如果您想知道 gcloud
为给定的 gcloud
命令调用了哪些 Google 云 API,只需将此标志附加到您的命令即可就能看到这些信息。
请注意(尤其是在共享此信息时)该命令会记录整个请求 headers,其中包含您经过身份验证的 Bearer 令牌。
--log-http
Log all HTTP server requests and responses to stderr. Overrides the default
core/log_http
property value for this command invocation.
示例:
gcloud compute instance-groups managed list --format=json --log-http