开发笔记1

举报
yd_235284610 发表于 2025/03/21 00:00:14 2025/03/21
【摘要】 开发笔记1

ecsmanager

import json
import time
import yaml
import argparse
from huaweicloudsdkims.v2 import *
from huaweicloudsdkevs.v2 import *
from huaweicloudsdkecs.v2 import *
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkims.v2.region.ims_region import ImsRegion
from huaweicloudsdkevs.v2.region.evs_region import EvsRegion
from huaweicloudsdkecs.v2.region.ecs_region import EcsRegion
from huaweicloudsdkcore.auth.credentials import BasicCredentials

ak = "UCJEM0YMIIEGCS3SGW4R"
sk = "ueyWtMjX5o9KBbQkFKPWx14Jkiqbq4VQ2EQjacfn"
region = "cn-north-4"
dev_server_id = 'cb13603f-f736-4d00-bb06-0c56f13ca288'


def ShowServer(server_id: str):
    credentials = BasicCredentials(ak, sk)
    client = EcsClient.new_builder().with_credentials(credentials).with_region(EcsRegion.value_of(region)).build()
    try:
        request = ShowServerRequest()
        request.server_id = server_id
        response = client.show_server(request)
        print(response)
        return response
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
        return e.status_code, e.request_id, e.error_code, e.error_msg


def ListImages():
    credentials = BasicCredentials(ak, sk)
    client = ImsClient.new_builder().with_credentials(credentials).with_region(ImsRegion.value_of(region)).build()
    try:
        request = ListImagesRequest()
        response = client.list_images(request)
        print(response)
        return response
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
        return e.status_code, e.request_id, e.error_code, e.error_msg


def CreatePostPaidServers(name: str, flavor_ref: str, image_ref: str, volumetype: str, vpcid: str, subnet_id: str):
    credentials = BasicCredentials(ak, sk)
    client = EcsClient.new_builder().with_credentials(credentials).with_region(EcsRegion.value_of(region)).build()
    try:
        request = CreatePostPaidServersRequest()
        # SATA: 普通IO磁盘类型。
        # SAS: 高IO磁盘类型。
        # SSD: 超高IO磁盘类型。
        # GPSSD: 为通用型SSD磁盘类型。
        # co - p1: 高IO(性能优化I型)。
        # uh - l1: 超高IO(时延优化)。
        # ESSD: 为极速IO磁盘类型。
        # GPSSD2: 通用型SSD
        # V2磁盘类型。
        # ESSD2: 极速型SSD
        # V2磁盘类型。
        rootVolumeServer = PostPaidServerRootVolume(
            volumetype=volumetype
        )
        listNicsServer = [
            PostPaidServerNic(
                subnet_id=subnet_id
            )
        ]
        serverbody = PostPaidServer(
            flavor_ref=flavor_ref,
            image_ref=image_ref,
            name=name,
            nics=listNicsServer,
            root_volume=rootVolumeServer,
            vpcid=vpcid
        )
        request.body = CreatePostPaidServersRequestBody(
            server=serverbody
        )
        response = client.create_post_paid_servers(request)
        print(response)
        return response
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
        return e.status_code, e.request_id, e.error_code, e.error_msg


def ListServersDetails():
    credentials = BasicCredentials(ak, sk)
    client = EcsClient.new_builder().with_credentials(credentials).with_region(EcsRegion.value_of(region)).build()
    try:
        request = ListServersDetailsRequest()
        response = client.list_servers_details(request)
        print(response)
        return response
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
        return e.status_code, e.request_id, e.error_code, e.error_msg


def DeleteServers(server_id: str):
    credentials = BasicCredentials(ak, sk)
    client = EcsClient.new_builder().with_credentials(credentials).with_region(EcsRegion.value_of(region)).build()
    try:
        request = DeleteServersRequest()
        listServersbody = [
            ServerId(
                id=server_id
            )
        ]
        request.body = DeleteServersRequestBody(
            servers=listServersbody,
            delete_volume=True,
            delete_publicip=True
        )
        response = client.delete_servers(request)
        print(response)
        return response
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
        return e.status_code, e.request_id, e.error_code, e.error_msg


def ShowVolume(volume_id: str):
    credentials = BasicCredentials(ak, sk)
    client = EvsClient.new_builder().with_credentials(credentials).with_region(EvsRegion.value_of(region)).build()
    try:
        request = ShowVolumeRequest()
        request.volume_id = volume_id
        response = client.show_volume(request)
        print(response)
        return response
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
        return e.status_code, e.request_id, e.error_code, e.error_msg


def ListServerInterfaces(server_id: str):
    credentials = BasicCredentials(ak, sk)
    client = EcsClient.new_builder().with_credentials(credentials).with_region(EcsRegion.value_of(region)).build()
    try:
        request = ListServerInterfacesRequest()
        request.server_id = server_id
        response = client.list_server_interfaces(request)
        print(response)
        return response
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
        return e.status_code, e.request_id, e.error_code, e.error_msg


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    sub = parser.add_subparsers(dest='command')
    sub1 = sub.add_parser('create')
    sub1.add_argument('-i', '--input', type=json.loads)
    sub2 = sub.add_parser('get')
    sub2.add_argument('-n', '--name')
    sub2.add_argument('-o', '--output')
    sub3 = sub.add_parser('getall')
    sub3.add_argument('-o', '--output')
    sub4 = sub.add_parser('delete')
    sub4.add_argument('-n', '--name')
    args = parser.parse_args()
    print(args)
    if args.command == 'create':
        print(args.input)
        dev_info = ShowServer(dev_server_id)
        print(dev_info)
        dev_info = dev_info.to_dict()
        name = args.input['name']
        flavor_ref = dev_info['server']['flavor']['id']
        image_ref = args.input['imagename']
        # image_ref = '02a17486-1214-4e42-8da7-7d200cac585e'  # Centos 7.9 64bit
        volumetype = ShowVolume(dev_info['server']['os_extended_volumesvolumes_attached'][0]['id']).to_dict()['volume']['volume_type']
        vpcid = dev_info['server']['metadata']['vpc_id']
        subnet_id = ListServerInterfaces(dev_server_id).to_dict()['interface_attachments'][0]['net_id']
        new_server_id = CreatePostPaidServers(name=name, flavor_ref=flavor_ref, image_ref=image_ref, volumetype=volumetype, vpcid=vpcid, subnet_id=subnet_id).to_dict()['server_ids'][0]
        print(new_server_id)
        time.sleep(10)
        print(str(ShowServer(new_server_id)))
    elif args.command == 'get':
        args_name = args.name
        args_output = args.output
        resp = ListServersDetails().to_dict()
        for i in resp['servers']:
            if i['name'] == args_name:
                with open(args_output, 'w') as f:
                    f.write(str(ShowServer(i['id'])))
                print('break')
                break
    elif args.command == 'getall':
        with open(args.output,'w') as f:
          f.write(yaml.dump(ListServersDetails().to_dict()))
    elif args.command == 'delete':
        args_name = args.name
        resp = ListServersDetails().to_dict()
        for i in resp['servers']:
            if i['name'] == args_name:
                print(str(DeleteServers(i['id'])))
                print('break')
                break

# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkecs.v2.region.ecs_region import EcsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkecs.v2 import *


def get_token():
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = "58PXSSOET6Y2YWEYJQ4F"
    sk =  "8gUvuu7aUEtDhhptZFPzzwRpICo6I9eza07GelGp"

    credentials = BasicCredentials(ak, sk)

    client = EcsClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(EcsRegion.value_of("cn-north-4")) \
        .build()
    return client
class server_manager:
    def __init__(self,client):
        self.client = client
    def create_ecs(self,name,imagename):
        request = CreateServersRequest()
        listDataVolumesServer = [
            PrePaidServerDataVolume(
                volumetype="SSD",
                size=100
            )
        ]
        rootVolumeServer = PrePaidServerRootVolume(
            volumetype="SSD",
            size=100
        )
        listNicsServer = [
            PrePaidServerNic(
                subnet_id="58141083-ec71-470a-8bf7-5247d2ac6b7c"
            )
        ]
        serverbody = PrePaidServer(
            image_ref=imagename,
            flavor_ref="ac7.12xlarge.2",
            name=name,
            vpcid="01d24a38-2d86-4669-bbd2-13f4eae997e9",
            nics=listNicsServer,
            root_volume=rootVolumeServer,
            data_volumes=listDataVolumesServer
        )
        request.body = CreateServersRequestBody(
            server=serverbody
        )
        response = self.client.create_servers(request)
        return response

    def get_server_id(self,name):
        request = ListServersDetailsRequest()
        response = self.client.list_servers_details(request)
        for i in response.servers:
            if i.name == name:
                return i.id


    def get_server_detail(self,name):
        request = ListServersDetailsRequest()
        response = self.client.list_servers_details(request)
        strins = str(response)
        return strins

    def getall_servers(self):
        request = ListServersDetailsRequest()
        response = self.client.list_servers_details(request)
        return response
    def delete_server(self,name):
        request = DeleteServersRequest()
        listServersbody = [
            ServerId(
                id=self.get_server_id(name)
            )
        ]
        request.body = DeleteServersRequestBody(
            servers=listServersbody
        )
        response = self.client.delete_servers(request)
        return response

if __name__ == '__main__':
    server_manager = server_manager(get_token())


import argparse
import json
import ecs_create

ecs_m = ecs_create.server_manager(ecs_create.get_token())

def define_args(parser):
    parser.add_argument('command',help='command',type=str)
    parser.add_argument('-i','--input',help='input',type= str)
    parser.add_argument('-n','-name',help='get',type=str)
    parser.add_argument('-o','--output',help='output',type=str)


def parse_args(parser):
    args = parser.parse_args()
    if args.command:
        if args.command == "create":
            print("create some thing")
            create_ecs(args)
        elif args.command == "get":
            print("get some thing")
            get_ecs(args)

        elif args.command == "getall":
            print("get all some thing")
            getall_ecs(args)


        elif args.command == "delete":
            print("delete some things")
            delete_ecs(args)



def create_ecs(args):
    ecs_dict = json.loads(args.input)
    print(ecs_dict)
    res = ecs_m.create_server(ecs_dict["name"],ecs_dict["imagename"])
    print(res)

def get_ecs(args):
    result = ecs_m.get_server_detail(args.name)
    print(result)
    outputfile = args.output
    req = json.loads(result)
    with open(outputfile,'w') as jsonfile:
        json.dumps(req,jsonfile,indent=4)
    print(req)

def getall_ecs(args):
    result = ecs_m.getall_server_detail()
    outputfile = args.output
    req = json.loads(result)
    with open(outputfile,'w') as yamlfile:
        json.dumps(req,yamlfile,indent=4)
    print(req)


def delete_ecs(args):
    result = ecs_m.delete_server(args.name)
    print(result)



if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    define_args(parser)
    parser.args(parser)


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。