概述
数字经济已经成为中国经济创新发展的主流模式,云计算和大数据已成为用户在数字化转型过程中重点关注的技术。品高云平台作为一个开放的云平台,自 2010 年正式商用以来,已服务了包括了政府、公安、运营商、轨道交通、金融、教育、军工等多个行业的大中型客户,同时,部署在品高云上的第三方业务应用系统也越来越多。
在用户的整体 IT 架构中,云平台为上层业务应用提供所需要的基础资源设施(计算、存储、网络等),上层业务系统部署在云平台之上,是用户业务数据的入口,也需要底层云资源对数据进行处理,它们分工各不相同,但是联系紧密。在品高云中,应用系统对于云平台的操作不仅仅停留在网页,还可以通过 API 的方式直接调用云平台资源,快速与品高云进行对接,实现上层应用与底层基础设施的数据交互。
本篇文章将通过 python 程序获取云平台实例信息为例,说明第三方应用如何通过 API 的方式获取云平台数据。操作步骤如下:
前期环境准备
(1)品高云平台
本次功能演示所使用的品高云平台登录地址为 10.201.81.1:8663。
(2)Python 程序
官方下载地址:https://www.python.org/ftp/python/3.7.2/python-3.7.2-webinstall.exe。
(3)客户端服务器一台
负责下载安装 Python 程序,编写获取实例信息程序并执行程序。在客户端服务器下载安装 Python3.7.2,安装完成后,用 python 命令出现如下图所示信息,即表示安装成功。
(4)云平台 SDK 包示例
用户可直接登录云平台 10.201.81.1:8663,通过【品高云→平台管理→文档→下载→SDK】页面进行下载。新编写的程序必须放在 SDK 包内执行。
编写获取实例信息程序
获取实例信息程序的目标是,通过程序的执行可获取到云平台实例信息数据,包括实例 ID、实例名称、实例规格、镜像、VPC/子网/IP、存储卷、状态、所在节点、拥有者、创建时间等信息。用户获得这些数据后,可通过业务应用系统进一步对这些数据进行必要的操作,如数据导入、添加硬盘、网络引流等等。
程序编写工具 txt 文本或者 IDLE(python 程序自带的工具)。
本文以获取实例数据为例,编写了获取所有实例的全部信息、获取某一指定实例的全部信息、获取所有实例的指定数据信息三个程序。
程序编写过程如下:
(1)获取云平台所有实例的全部信息
#!/usr/bin/python
#-*- coding: utf-8 -*-
import sys,os,base64
sys.path.append(os.path.join(os.path.dirname(__file__), 'util'))
import cloudutil
def describeInstances(client, instanceId): #查询实例
# params = {"InstanceId.1": instanceId}
params = {} #查询所有实例
return client.invoke("DescribeInstances", params)
if __name__ == "__main__":
client = cloudutil.bcclient('cloud', True)
instanceId = " {}"
result = describeInstances(client, instanceId)
print(result)
编写完成后并保存为文件 demo.py。
(2)获取云平台某一指定实例的全部信息
#!/usr/bin/python
#-*- coding: utf-8 -*-
import sys,os,base64
sys.path.append(os.path.join(os.path.dirname(__file__), 'util'))
import cloudutil
def describeInstances(client, instanceId): #查询实例
params = {"InstanceId.1": instanceId}
# params = {} #查询所有实例
return client.invoke("DescribeInstances", params)
if __name__ == "__main__":
client = cloudutil.bcclient('cloud', True)
instanceId = "i-0A0E6CCA"
result = describeInstances(client, instanceId)
print(result)
即查询实例 ID 为”i-0A0E6CCA 的信息,编写完成后并保存为文件 demo1226.py。
(3)获取云平台所有实例的指定信息
#!/usr/bin/python
#-*- coding: utf-8 -*-
import sys,os,base64
sys.path.append(os.path.join(os.path.dirname(__file__), 'util'))
import cloudutil
from xml.dom.minidom import parse
import xml.dom.minidom
def describeInstances(client, instanceId): #查询实例
# params = {"InstanceId.1": instanceId}
params = {} #查询所有实例
return client.invoke("DescribeInstances", params)
if __name__ == "__main__":
client = cloudutil.bcclient('cloud', True)
instanceId = "i-0A0E6CCA"
result = describeInstances(client, instanceId)
DOMTree = xml.dom.minidom.parseString(result)
collection = DOMTree.documentElement
reservationSets = collection.getElementsByTagName("reservationSet")
if len(reservationSets) == 0:
exit(1)
reservationSet = reservationSets[0].childNodes
for reservation in reservationSet:
ownerIds = reservation.getElementsByTagName("ownerId")
if len(ownerIds) == 0:
continue
ownerId = ownerIds[0]
instanceId = reservation.getElementsByTagName("instanceId")[0]
ip = reservation.getElementsByTagName("privateIpAddress")[0]
state = reservation.getElementsByTagName("instanceState")[0]
status = state.getElementsByTagName("name")[0]
print "instanceId:" + instanceId.childNodes[0].data + ", ownerId:" + ownerId.childNodes[0].data + ", status:" + status.childNodes[0].data + ", ip:" + ip.childNodes[0].data
#print(result)
即仅查询云平台内所有实例的 ID、拥有者、状态和 IP 地址,编写完成后并保存为文件 demo1.py。
程序编写完成后,即可在客户端服务器执行,获取并输出实例信息数据,执行过程示意图如下:
通过执行获取实例信息程序输出品高云所有实例数据
(1)配置执行程序所需要的数据
在 SDK 文件包中,有一个 cloud.cfg 文件,将云平台地址和账户密钥变更为本次使用的云平台地址和操作账户密钥,如下:
- Endpoint = http://10.201.81.1
- AccessKeyId = 5CC9F9AB0570143311F5
AccessKey = WzkyRUFCNDIzN0M5RTU5RTQ4MjVFNEY5RjE2N0YwMEE3OUIwODY1ODJd
(账户密钥用户可登录品高云,通过【品高云→平台管理→个人设置→账户密钥→查看密钥对】获取)
(2)执行 python 程序
在客户端服务器进入程序所存放的目录,输入命令 python demo.py, 按 Enter 键即可执行查询所有实例的程序。
(3)输出实例数据
输出的实例数据包括了云平台内所有的实例信息,展示的实例信息包括:实例 ID、实例名称、镜像、实例规格、状态、存储卷、网卡、安全组、所在节点等。如下图所示。
由于文章篇幅限制,本文仅截图了其中两个的实例信息,即实例 i-F83D209E 和实例 i-F9F18C27,同时,这两台实例也可以在平台页面上找到。
通过执行获取实例信息程序输出品高云内某一实例数据
在客户端服务器进入程序所存放的目录,输入命令 python demo1226.py, 按 Enter 键即可执行查询实例 i-0A0E6CCA 的程序。
输出的实例 i-0A0E6CCA 数据,包括:实例 ID、实例名称、镜像、实例规格、状态、存储卷、网卡、安全组、所在节点等。如下图所示。
这台实例也可以在云平台页面上找到。
通过执行获取实例信息程序输出品高云内所有实例的指定数据
在客户端服务器进入程序所存放的目录,输入命令 python demo1.py, 按 Enter 键即可执行程序查询云平台内所有实例的名称、拥有者、镜像、规格和 IP 信息。输出的数据如下图所示。
注:由于篇幅限制,本文仅截图了其中部分实例信息,
同时,也可以通过输入命令 python demo1.py>text.txt. 导出文本文件,通过记事本查看输出的实例数据。如下图所示。
注:由于篇幅限制,本文仅截图了其中部分实例信息,
程序编写不仅可以用 python 语言,还可以使用 Java、.net 等。
本篇文章编写的程序文件下载地址:http://pan.bingosoft.net:81/drive/share/open_sharepage/d3556924-e6c3-4524-bfa9-8680d65f760e:bingo【密码:KtxT】