0
点赞
收藏
分享

微信扫一扫

python api 调用虚拟私有云子网管理

七公子706 2022-04-19 阅读 46
python
from HwUser import HwUser
import json
import time

'''
    在云服务器的/root/huawei 目录下编写 create_subnet.py 文件, 并导入赛项提供的HwUser.py 文件获取授权。编写 Python 代码,参考官方相关的API调用文档,创建华为云的虚拟私有云子网,具体要求为
    
    (1)使用虚拟私有云名称获取其 ID(不允许直接填写虚拟私有云 ID);

    (2)虚拟私有云子网名称:chinaskills_subnet;

    (3)虚拟私有云子网网段:192.168.100.0/24;

    (4)虚拟私有云子网网关:192.168.100.1;

    (5)虚拟私有云子网可用区域:cn-north-4a;

    (6)如果虚拟私有云子网已经存在,代码中需要先删除;

    (7)使用其源码的 get 方法输出此虚拟私有云子网的详细信息(状态要求为 ACTIVE)。
'''

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 = i["id"]
    if targetID == "":
        exit("当前环境未存在 chinaskills_vpc")
    else:
        print("   正在查询 chinaskills_vpc 中子网是否存在。。。")
        ### 查看子网信息
        requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/subnets?vpc_id="+targetID
        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:
            if "chinaskills_subnet" == i["name"]:
                ### 删除子网
                requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/vpcs/"+targetID+"/subnets/"+i["id"]
                resp = user.httpRequest("DELETE", requestURL,{ "content-type": "application/json" },"")
        print("   删除完成")
    
    # 3 创建subnet
    print("正在创建subnet。。。。", end="")
    time.sleep(2)
    requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/subnets"
    bodys=json.dumps({
        "subnet": {
            "name": "chinaskills_subnet",
            "cidr": "192.168.100.0/24",
            "vpc_id": targetID,
            "gateway_ip": "192.168.100.1",
            "extra_dhcp_opts": [
            {
                "opt_name": "ntp"
            }
            ]
        }
        })
    resp = user.httpRequest("POST", requestURL,{ "content-type": "application/json" },bodys)
    ## 3.1 获取ID
    result = json.loads(str(resp.content, encoding="utf-8"))
    yid = result["subnet"]["id"]
    print("完成,新subnet ID为:"+yid)

    # 4 查询
    print("Subnet信息查询中。。。")
    time.sleep(2)
    requestURL = "https://vpc.cn-east-2.myhuaweicloud.com/v1/0f4115bb9280f3192fa7c00e1c434035/subnets/"+yid
    resp = user.httpRequest("GET", requestURL, { "content-type": "application/json" }, "")
    result = json.loads(str(resp.content, encoding="utf-8"))

    print("   subnet name:"+str(result["subnet"]["name"]))
    print("   subnet id:"+str(result["subnet"]["id"]))
    print("   subnet status:"+str(result["subnet"]["status"]))
举报

相关推荐

0 条评论