ZStack - 创建物理机
/ 前言 /
在ZStack的API中, 大多数的API返回的是一个任务结果查询地址, 此时我们就需要根据这个地址轮训去查询任务状态及结果
{ "location": "http://localhost:8080/v1/api-jobs/967a26b7431c49c0b1d50d709ef1aef3"
}
我们知道ZStack中有管理节点和计算节点的概念, 创建物理机其实就是将已有的计算节点添加到管理节点中, 方便后续操作
/ API /
创建物理机
-
API名称
添加KVM主机(AddKVMHost)
-
请求方式
POST
zstack/v1/hosts/kvm -
curl示例
curl -H "Content-Type: application/json" \ -H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \ -X POST -d '{"params":{"username":"userName","password":"password","sshPort":"22","name ":"newHost","managementIp":"127.0.0.1","clusterUuid":"9adf394ca46432afb1218d220bf2925e "}}' \ http://localhost:8080/zstack/v1/hosts/kvm -
返回示例
{"inventory": {"zoneUuid": "d4160c59319c4642832e666514364a79", "name": "example","uuid": "479e88bab7a647e3b066a724c8bb3b82", "clusterUuid": "42ade59801804602b9986b42fd103d1c", "description": "example","managementIp": "192.168.0.1","hypervisorType": "KVM","state": "Enabled","status": "Connected","totalCpuCapacity": 4.0,"availableCpuCapacity": 2.0,"totalMemoryCapacity": 4.0, "availableMemoryCapacity": 4.0 }}
/ 代码 /
ZStack中, 大多数的API在调用后返回的是
user_name = 'admin'
user_password='password'
host = 'http://localhost:8080/'# 创建物理机
def create_host(cluster_uuid, session_uuid):# 需要注意的是managementIp这个参数必须是当前已有结算节点的ip地址, 且管理节点可以ping通该ipcontent = {"params": {"username": "root","password": "password","name": "Host","sshPort": 22,"managementIp": "192.168.0.100","clusterUuid": cluster_uuid,"hostType": "kvm","description": "host_des"}}data = json.dumps(content)url = host + 'zstack/v1/hosts/kvm'headers = {"Content-Type": "application/json", "Authorization": "OAuth " + session_uuid}response = requests.post(url, data, headers=headers)host_uuid = deal_response(response, True)if host_uuid:return host_uuid# 处理返回数据
def deal_response(response, is_return):if response:rsp = json.loads(response.text)if rsp:print('rsp : {%s}' % rsp)json_str = query_until_done(rsp)if json_str:if not json_str.has_key('error'):if is_return:return json_str['inventory']['uuid']else:return Truereturn False# 轮询查询API结果
def query_until_done(rsp):# 截取任务id, 替换请求地址if rsp.has_key('location'):location = rsp['location']job_uuid = location.split('/')[-1]if job_uuid:while True:url = host + "zstack/v1/api-jobs/" + location.split('/')[-1]response = requests.get(url)text = response.textprint(text)if text != '{}':print('url : {%s}' % url)return json.loads(text)if __name__ == '__main__':session_uuid = login()if session_uuid:# 创建区域zone_uuid = create_zone(session_uuid)if zone_uuid:# 创建集群cluster_uuid = create_clusters(session_uuid, zone_uuid)if cluster_uuid:# 创建物理机host_uuid = create_host(cluster_uuid, session_uuid)
/ ZStack全流程相关博文链接 /
ZStack - 登录
ZStack - 创建区域、集群
ZStack - 创建物理机
ZStack - 创建主存储
ZStack - 创建2层3层网络
ZStack - 创建云主机计算规格
ZStack - 创建镜像
ZStack - 创建云主机计算规格
ZStack - 创建云主机
ZStack - 全流程代码
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
