Пример #1
0
def overviewAction(request):
    print_log('Start overviewAction')
    if request.method == 'POST':
        cloudname = request.POST["cloud"]
        # print authurl
        # print cloudname
        cloud = Monitor.Monitor(
            **Cloud.get_nova_credentials(request, cloudname))
        limits = cloud.getLimits()
        if limits != None:
            return HttpResponse(json.dumps({"limits": limits}),
                                content_type="application/json")
Пример #2
0
def get_private_usage_Action(request):
    print_log('Start get private usage')
    cloud = Monitor.Monitor(**Cloud.get_nova_credentials(request, 'openstack'))
    Usages = cloud.getUsages()
    private_usage = []
    for item in Usages:
        single_usage = {}
        single_usage['name'] = item['name']
        single_usage['vcpus'] = item['vcpus']
        single_usage['disk'] = str(item['disk']) + " GB"
        single_usage['ram'] = str(item['ram']) + " MB"
        single_usage['createTime'] = item['createTime']
        private_usage.append(single_usage)
    if Usages != None:
        return private_usage
Пример #3
0
def get_private_instance_Action(request):
    print_log('Start get private instance')
    cloud = Monitor.Monitor(**Cloud.get_nova_credentials(request, 'openstack'))
    instances = cloud.getInstanceDetailAll()
    print instances
    private_instance = []
    for item in instances:
        single_instance = {}
        single_instance['cloud'] = 'openstack'
        single_instance['id'] = item['id']
        single_instance['status'] = item['status']
        single_instance['name'] = item['name']
        single_instance['image'] = item['image']
        single_instance['createTime'] = item['created']
        single_instance['flavor'] = item['flavor']
        single_instance['availability_zone'] = item['availability_zone']
        single_instance['power_state'] = item['power_state']
        private_instance.append(single_instance)
    if private_instance != None:
        return private_instance
Пример #4
0
def instanceActionsAction(request):
    print_log('Start_instacneActionsAction')
    if request.method == 'POST':
        actions = request.POST["actions"]
        cloudname = request.POST["cloud"]
        serverid = request.POST["serverid"]
        # print actions,cloudname,serverid
        print actions, cloudname, serverid
        cloudname = cloudname.strip()
        cloud = Monitor.Monitor(
            **Cloud.get_nova_credentials(request, cloudname))
        print cloud.auth_url
        if actions:
            if "start" == actions:
                cloud.startServer(serverid)
            elif "stop" == actions:
                cloud.stopServer(serverid)
            elif "terminate" == actions:
                cloud.terminateServer(serverid)
            elif "addfloatingip" == actions:
                cloud.addFloatingIps(serverid)
        return HttpResponse(json.dumps({}), content_type="application/json")
Пример #5
0
def createAdvanceAction(request):
    print_log('Start_createAdvancedAction')
    if request.method == 'POST':
        small_num = request.POST["small_num"]
        medium_num = request.POST["medium_num"]
        large_num = request.POST["large_num"]
        time = request.POST["time"]
        is_private = request.POST["is_private"]
        cloud = Monitor.Monitor(
            **Cloud.get_nova_credentials(request, "openstack"))
        resource = cloud.getResource()
        print small_num, medium_num, large_num, time, type(is_private), type(
            resource["vcpu"]), resource["ram"], resource["disk"]
        R_private = []
        R_public = []
        A = []
        num_small = int(small_num.encode('utf-8'))
        num_medium = int(medium_num.encode('utf-8'))
        num_large = int(medium_num.encode('utf-8'))
        A.append(0)
        A.append(int(small_num.encode('utf-8')))
        A.append(int(medium_num.encode('utf-8')))
        A.append(int(large_num.encode('utf-8')))
        A.append(int(time.encode('utf-8')))
        if (int(is_private.encode('utf-8')) == 1):
            R_private.append(A)
        else:
            R_public.append(A)
        T = []
        T.append(resource["vcpu"])
        T.append(resource["ram"])
        T.append(resource["disk"])
        h = 0
        print R_private, R_public, T
        x_private, x_public, h, E = ODA(R_private, R_public, T, h)
        print x_private, x_public, h, E

        if (len(x_private) > 0):
            if (x_private[0] == 1):  #可以创建在私有云上
                if (num_small > 0):
                    instances = {}
                    name = []
                    instances['type'] = 'm1.small'
                    for i in range(0, num_small):
                        name.append('instance' + '_small_' +
                                    str(int(time_module.time())) + "_" +
                                    str(i + 1))
                    instances['name'] = name
                    cloud.createInstance(instances)
                if (num_medium > 0):
                    instances = {}
                    name = []
                    instances['type'] = 'm1.medium'
                    for i in range(0, num_medium):
                        name.append('instance' + '_medium_' +
                                    str(int(time_module.time())) + "_" +
                                    str(i + 1))
                    instances['name'] = name
                    cloud.createInstance(instances)
                if (num_large > 0):
                    instances = {}
                    name = []
                    instances['type'] = 'm1.large'
                    for i in range(0, num_large):
                        name.append('instance' + '_large_' +
                                    str(int(time_module.time())) + "_" +
                                    str(i + 1))
                    instances['name'] = name
                    cloud.createInstance(instances)
                return HttpResponse(json.dumps({"limits": "虚拟机全部成功被创建在私有云上"}),
                                    content_type="application/json")
            else:  #不能创建在私有云上
                return HttpResponse(json.dumps({"limits": "私有云资源不够,请求被拒绝"}),
                                    content_type="application/json")

        if (len(x_public) > 0):
            if (x_public[0] == 1):  #可以创建在私有云上
                if (num_small > 0):
                    instances = {}
                    name = []
                    instances['type'] = 'm1.small'
                    for i in range(0, num_small):
                        name.append('instance' + '_small_' + str(i + 1))
                    instances['name'] = name
                    cloud.createInstance(instances)
                if (num_medium > 0):
                    instances = {}
                    name = []
                    instances['type'] = 'm1.medium'
                    for i in range(0, num_medium):
                        name.append('instance' + '_medium_' + str(i + 1))
                    instances['name'] = name
                    cloud.createInstance(instances)
                if (num_large > 0):
                    instances = {}
                    name = []
                    instances['type'] = 'm1.large'
                    for i in range(0, num_large):
                        name.append('instance' + '_large_' + str(i + 1))
                    instances['name'] = name
                    cloud.createInstance(instances)
                return HttpResponse(json.dumps({"limits": "虚拟机全部成功被创建在私有云上"}),
                                    content_type="application/json")

            else:  #可以创建在公有云上
                Aliclient = AliyunInterface()
                if (num_small > 0):
                    instance_type = "ecs.n1.small"
                    for i in range(0, num_small):
                        res = Aliclient.createInstance(instance_type)
                        print res
                if (num_medium > 0):
                    instance_type = "ecs.n1.medium"
                    for i in range(0, num_medium):
                        res = Aliclient.createInstance(instance_type)
                        print res
                if (num_large > 0):
                    instance_type = "ecs.n1.large"
                    for i in range(0, num_large):
                        res = Aliclient.createInstance(instance_type)
                        print res
                return HttpResponse(json.dumps({"limits": "虚拟机全部成功被创建在公有云上"}),
                                    content_type="application/json")

        return HttpResponse(json.dumps({"limits": "虚拟机创建成功"}),
                            content_type="application/json")