1. 程式人生 > 其它 >python呼叫api 虛擬私有云管理

python呼叫api 虛擬私有云管理

from HwUser import HwUser
import json
import time

'''
在雲伺服器的/root/huawei 目錄下編寫 create_vpc.py 檔案, 並匯入賽項提供的HwUser.py 檔案獲取授權。編寫 Python 程式碼,參考官方相關的API呼叫文件,建立華為雲的虛擬私有云,具體要求為

(1)虛擬私有云名稱:chinaskills_vpc;

(2)如果虛擬私有云已經存在,程式碼中需要先刪除;

(3)建立成功後輸出此虛擬私有云的詳細資訊(狀態要求為 OK)。
'''

if __name__ == "__main__":

# 1 獲取授權
ak = "7IJFH088K7ZHG6H7MJ7E"
sk = "ClkPa47PpNxEpiPzKQ3c5Nzcb1S5uSVGhQ13owge"
user = HwUser(ak, sk)

# 2 查詢VPC
print("正在查詢vpc。。。。", end="")
resp = user.httpRequest("GET", "https://vpc.cn-east-2.myhuaweicloud.com/v3/0f4115bb9280f3192fa7c00e1c434035/vpc/vpcs")
result = json.loads(str(resp.content, encoding="utf-8"))
## 2.1 檢視是否已存在VPC chinaskills_vpc
### 取出現有的VPC 列表
now_vpc_list = result["vpcs"]
targetID = []
for i in now_vpc_list:
if "chinaskills_vpc" == i["name"]:
targetID.append(i["id"])
if targetID == []:
print("當前環境未存在 chinaskills_vpc")
else:
print("存在需要刪除的vpc")
print(" 正在嘗試刪除已存在的vpc chinaskills_vpc。。。")
for id in targetID:
### 檢視子網資訊
requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/subnets?vpc_id="+id
resp = user.httpRequest("GET", requestURL,{ "content-type": "application/json" },"")
result = json.loads(str(resp.content, encoding="utf-8"))
now_vpc_subnet_list = result["subnets"]
subnets = []
for i in now_vpc_subnet_list:
subnets.append(i["id"])
### 刪除子網
requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/vpcs/"+id+"/subnets/"+i["id"]
resp = user.httpRequest("DELETE", requestURL,{ "content-type": "application/json" },"")
### 刪除vpc 刪除最後一個VPC要先刪除安全組
time.sleep(2) # 避免409
requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/vpcs/"+id
resp = user.httpRequest("DELETE", requestURL,{ "content-type": "application/json" },"")
print(" 刪除完成")

# 3 建立VPC
print("正在建立vpc。。。。", end="")
requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/vpcs"
bodys=json.dumps({"vpc":{"name":"chinaskills_vpc", "description": "test"}})
print(bodys)
resp = user.httpRequest("POST", requestURL,{ "content-type": "application/json" },bodys)
## 3.1 獲取ID
result = json.loads(str(resp.content, encoding="utf-8"))
print(result)
yid = result["vpc"]["id"]
print("完成,新VPC ID為:"+yid)

# 4 查詢
print("VPC資訊查詢中。。。")
requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/vpcs/"+yid
resp = user.httpRequest("GET", requestURL, { "content-type": "application/json" }, "")
result = json.loads(str(resp.content, encoding="utf-8"))
print(result)
print(" vpc 名字:"+str(result["vpc"]["name"]))
print(" vpc id:"+str(result["vpc"]["id"]))
print(" vpc status:"+str(result["vpc"]["status"]))