2021-08-04 基础方法模型类

ecs_sdk.py 模型类视图

# sample api to list aliyun open api.
import json
import re
import logging
from aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest
from aliyunsdkecs.request.v20140526.DescribeAvailableResourceRequest import DescribeAvailableResourceRequest

from aliyunsdkecs.request.v20140526.StartInstanceRequest import StartInstanceRequest
from aliyunsdkecs.request.v20140526.StopInstanceRequest import StopInstanceRequest
from django.http import JsonResponse

acc_id = "XXXXX"
acc_key = "XXXXX"
region = "cn-hangzhou"


class AliyunEcsCreate(object):
    # 初始化对象信息:AccessKeyId,AccessKeySecret,Region
    def __init__(self, AccessKeyId, AccessKeySecret, Region):
        self.AccessKeyId = AccessKeyId
        self.AccessKeySecret = AccessKeySecret
        self.Region = Region
    # 启动实例
    def StartInstance(self, region_id, InstanceId):
        """
        启动实例
        :param region_id: 地域
        :param InstanceId: 实例ID
        :return:
        """
        startclt = client.AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
        startreq = StartInstanceRequest()
        startreq.set_action_name('StartInstance')
        startreq.set_accept_format('json')
        startreq.set_InstanceId(InstanceId)
        start = json.loads(startclt.do_action_with_exception(startreq), encoding='utf-8')
        return JsonResponse(data=start)

    def StopInstance(self, region_id, InstanceId):
        """
        启动实例
        :param region_id: 地域
        :param InstanceId: 实例ID
        :return:
        """
        startclt = client.AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
        startreq = StopInstanceRequest()
        startreq.set_action_name('StopInstance')
        startreq.set_accept_format('json')
        startreq.set_InstanceId(InstanceId)
        stop = json.loads(startclt.do_action_with_exception(startreq), encoding='utf-8')
        return JsonResponse(data=stop)

    def DescribeInstanceList(self):

        ecs_obj = client.AcsClient(self.AccessKeyId, self.AccessKeySecret,self.Region)
        regions_req = DescribeInstancesRequest()
        regions_req.set_accept_format('json')
        ecs_ret = json.loads(ecs_obj.do_action_with_exception(regions_req), encoding='utf-8')

        instances = []
        for i in ecs_ret['Instances']['Instance']:
            obj = i['InstanceId']
            instances.append(obj)
        return instances
    # 获取单条数据
    def DescribeInstance(self):
        """
        地域
        :return: {'cn-qingdao': '华北 1'}
        """
        ecs_obj = client.AcsClient(self.AccessKeyId, self.AccessKeySecret)
        ecs_obj_req = DescribeInstancesRequest()
        # ecs_obj_req.set_InstanceIds(InstanceId)
        ecs_obj_req.set_accept_format('json')

        regions_ret = json.loads(ecs_obj.do_action_with_exception(ecs_obj_req), encoding='utf-8')
        # regions = {}
        # for i in regions_ret['Regions']['Region']:
        #     regions[i['RegionId']] = i['LocalName']
        # return regions
        return regions_ret
    # 获取地域信息
    def DescribeRegions(self):
        """
        地域
        :return: {'cn-qingdao': '华北 1'}
        """
        regions_obj = client.AcsClient(self.AccessKeyId, self.AccessKeySecret)
        regions_req = DescribeRegionsRequest()
        regions_req.set_accept_format('json')
        regions_ret = json.loads(regions_obj.do_action_with_exception(regions_req), encoding='utf-8')
        regions = {}
        for i in regions_ret['Regions']['Region']:
            regions[i['RegionId']] = i['LocalName']
        return regions

    def DescribeAvailableResource(self, InstanceChargeType, region_id, DestinationResource=None, ZoneId=None):

        """
        可用资源查询接口
        :param region_id: 地域
        :param DestinationResource: 查询的资源类型
        :return:
        """
        resourceclt = client.AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
        resourcereq = DescribeAvailableResourceRequest()
        # if DestinationResource == 'InstanceType':
        #     resourcereq.set_ZoneId(ZoneId)
        #     resourcereq.set_IoOptimized('optimized')
        #     resourcereq.set_InstanceChargeType(InstanceChargeType)
        #     resourcereq.set_DestinationResource(DestinationResource)
        #     resourcereq.set_accept_format('json')
        resourcere = json.loads(resourceclt.do_action_with_exception(resourcereq), encoding='utf-8')
        return resourcere

    def AvailableZones(self, InstanceChargeType,region_id):
        # region_id = self.Region
        # print(region_id)
        """
        可用区
        :param region_id: 计费方式 地域
        :return: ['cn-huhehaote-a', 'cn-huhehaote-b']
        """
        zonesre = self.DescribeAvailableResource(InstanceChargeType, region_id, 'Zone')
        print(zonesre)
        zones = []
        for i in zonesre['AvailableZones']['AvailableZone']:
            zones.append(i['ZoneId'])
        return zones





# # fee_type = "PostPaid"
# # regions = ecs_obj.DescribeRegions()
# # print(regions)
# # instances = ecs_obj.DescribeInstances()
# # # zones = ecs_obj.AvailableZones(fee_type,region)
# # print(instances)
# # # availables = ecs_obj.DescribeAvailableResource()
# # start = ecs_obj.StartInstance(region_id=region,InstanceId=instances[0])
# # print(start)
#     # print(zones)
ecs_obj = AliyunEcsCreate(acc_id,acc_key,region)
instance = "i-bp11itscfjcatu93k6fb"
instance_info = ecs_obj.DescribeInstance()
print(instance_info)
# instance_info_01 = instance_info["Instances"]
# instance_info_01_info = instance_info["Instances"]['Instance']
# print(instance_info)
# print(instance_info_01)
# print(instance_info_01_info)
#
# for i in instance_info_01_info:
#     print(i)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值