コード例 #1
0
ファイル: views.py プロジェクト: litterbear/initcloud_web
def create_flavor(request):
    try:
        serializer = FlavorSerializer(data=request.data, context={"request": request})
        if serializer.is_valid():
	    #LOG.info(serializer.data)
	    LOG.info("************ CREATE FLAVOR ***************")
	    novaadmin = get_nova_admin(request)
	    #LOG.info(type(novaadmin))
	    #LOG.info(novaadmin)
	    #LOG.info(novaadmin.flavors.list())
	    mem = request.data.get("memory")
	    name = request.data.get("name")
	    cpu = request.data.get("cpu")
	    disk = request.data.get("disk")
	    flavor = novaadmin.flavors.create(name = name , ram = mem, vcpus = cpu, disk = disk)
	    #LOG.info(flavor.id)
	    flavorid = flavor.id
	    try:
	    	serializer.save(flavorid = flavor.id)
	    except:
		traceback.print_exc()
	    LOG.info(Flavor.objects.all().filter(flavorid = flavor.id))
	    
            return Response({'success': True, "msg": _('Flavor is created successfully!')},
                            status=status.HTTP_201_CREATED)
        else:
            return Response({"success": False, "msg": _('Flavor data is not valid!'),
                             'errors': serializer.errors},
                            status=status.HTTP_400_BAD_REQUEST)
    except Exception as e:
        LOG.error("Failed to create flavor, msg:[%s]" % e)
        return Response({"success": False, "msg": _('Failed to create flavor for unknown reason.')})
コード例 #2
0
ファイル: views.py プロジェクト: you-n-g/initcloud_web
def create_flavor(request):
    try:
        serializer = FlavorSerializer(data=request.data, context={"request": request})
        if serializer.is_valid():
	    #LOG.info(serializer.data)
	    LOG.info("************ CREATE FLAVOR ***************")
	    novaadmin = get_nova_admin(request)
	    #LOG.info(type(novaadmin))
	    #LOG.info(novaadmin)
	    #LOG.info(novaadmin.flavors.list())
	    mem = request.data.get("memory")
	    name = request.data.get("name")
	    cpu = request.data.get("cpu")
	    disk = request.data.get("disk")
	    flavor = novaadmin.flavors.create(name = name , ram = mem, vcpus = cpu, disk = disk)
	    #LOG.info(flavor.id)
	    flavorid = flavor.id
	    try:
	    	serializer.save(flavorid = flavor.id)
	    except:
		traceback.print_exc()
	    LOG.info(Flavor.objects.all().filter(flavorid = flavor.id))
	    
            return Response({'success': True, "msg": _('Flavor is created successfully!')},
                            status=status.HTTP_201_CREATED)
        else:
            return Response({"success": False, "msg": _('Flavor data is not valid!'),
                             'errors': serializer.errors},
                            status=status.HTTP_400_BAD_REQUEST)
    except Exception as e:
        LOG.error("Failed to create flavor, msg:[%s]" % e)
        return Response({"success": False, "msg": _('Failed to create flavor for unknown reason.')})
コード例 #3
0
def flavor_create(instance):
    assert instance

    def _generate_name(instance):
        name = u"%s.cpu-%s-ram-%s-disk-%s-core-%s-socket-%s" % (
            settings.OS_NAME_PREFIX, instance.cpu, instance.memory,
            instance.sys_disk, instance.core, instance.socket)
        return name

    def _get_flavor_by_name(instance, name):
        rc = create_rc_by_instance(instance)
        flavor = None
        novaAdmin = get_nova_admin(instance)
        try:
            flavors = novaAdmin.flavors.list(rc)
        except Exception:
            flavors = []
            raise

        if flavors is not None:
            for f in flavors:
                if f.name == name:
                    flavor = f
                    break
        return flavor

    begin = datetime.datetime.now()
    rc = create_rc_by_instance(instance)
    name = _generate_name(instance)
    flavor = _get_flavor_by_name(instance, name)
    metadata = {
        "hw:cpu_cores": instance.core,
        "hw:cpu_sockets": instance.socket
    }
    if flavor is None:
        try:
            LOG.info(u"Flavor not exist, create new, [%s][%s].", instance,
                     name)

            novaadmin = get_nova_admin(instance)
            flavor = novaadmin.flavors.create(ram=instance.memory,
                                              name=name,
                                              vcpus=instance.cpu,
                                              disk=instance.sys_disk,
                                              is_public=True)
            flavor.set_keys(metadata)
            #LOG.info(flavor.get_keys(flavor))
        except nova.nova_exceptions.Conflict:
            LOG.info(u"Flavor name conflict, [%s][%s].", instance, name)
            flavor = _get_flavor_by_name(instance, name)
        except:
            raise

    end = datetime.datetime.now()
    LOG.info(u"Flavor create end, [%s][%s], apply [%s] seconds.", instance,
             name, (end - begin).seconds)
    return flavor
コード例 #4
0
ファイル: views.py プロジェクト: litterbear/initcloud_web
def delete_flavors(request):
    ids = request.data.getlist('ids[]')
    flavorid = Flavor.objects.get(pk__in=ids).flavorid
    novaadmin = get_nova_admin(request)
    #novaadmin.flavors.delete(flavorid)
    try:
	novaadmin.flavors.delete(flavorid)
    except:
	traceback.print_exc()
    Flavor.objects.filter(pk__in=ids).delete()
    return Response({'success': True, "msg": _('Flavors have been deleted!')}, status=status.HTTP_201_CREATED)
コード例 #5
0
ファイル: views.py プロジェクト: you-n-g/initcloud_web
def delete_flavors(request):
    ids = request.data.getlist('ids[]')
    flavorid = Flavor.objects.get(pk__in=ids).flavorid
    novaadmin = get_nova_admin(request)
    #novaadmin.flavors.delete(flavorid)
    try:
	novaadmin.flavors.delete(flavorid)
    except:
	traceback.print_exc()
    Flavor.objects.filter(pk__in=ids).delete()
    return Response({'success': True, "msg": _('Flavors have been deleted!')}, status=status.HTTP_201_CREATED)
コード例 #6
0
ファイル: views.py プロジェクト: litterbear/initcloud_web
def vdi_view(request):
    LOG.info("****** i am vdi view with method get ********")

    queryset = Instance.objects.all().filter(deleted=False, user_id=request.user.id)
    json_value = {}
    count = 0 
    method = "responseUserCheck"
    retvalue = "0"
    vminfo = []
    for q in queryset:
        LOG.info("******")
        novaAdmin = get_nova_admin(request)
        LOG.info("******")
        if not q.uuid:
            continue
        server = novaAdmin.servers.get(q.uuid)
        LOG.info("******")
        server_dict = server.to_dict()
        LOG.info("******")
        server_host = server_dict['OS-EXT-SRV-ATTR:host']
        server_status = server_dict['status']
        LOG.info("******* server_status is *******" + str(server_status))
        if server_status == "ERROR":
            continue
        host_ip = settings.COMPUTE_HOSTS[server_host]
        LOG.info("host ip is" + str(host_ip))
        cmd="virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid
        LOG.info("cmd=" + cmd)
        p = subprocess.Popen("virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        port = None
        for line in p.stdout.readlines():
            port = line
            break
        LOG.info("host_ip=" + host_ip)
        LOG.info("port=" + str(port))
        if "error" in str(port):
            vminfo.append({"vm_uuid": q.uuid, "vm_public_ip": q.public_ip, "vm_serverip": host_ip, "vm_status": server_status, "vnc_port": "no port", "vm_internalid": str(q.id), "vm_name": q.name})
            count = count + 1
            continue
        split_port = port.split(":")
        port_1 = split_port[1]
        port_2 = port_1.split("\\")
        port_3 = port_2[0]
        vnc_port = 5900 + int(port_3)
        vminfo.append({"vm_uuid": q.uuid, "vm_public_ip": q.public_ip, "vm_serverip": host_ip, "vm_status": server_status, "vnc_port": vnc_port, "vm_internalid": str(q.id), "vm_name": q.name})
        LOG.info("*** count is ***" + str(count))
        count = count + 1

    json_value = {"method": method, "retvalue": retvalue, "vmnum": count, "vminfo": vminfo}
    if not json_value:
        json_value = {"retval": 1, "message": "auth success"}
    
    return Response(json_value)
コード例 #7
0
ファイル: views.py プロジェクト: you-n-g/initcloud_web
def vdi_view(request):
    LOG.info("****** i am vdi view with method get ********")

    queryset = Instance.objects.all().filter(deleted=False, user_id=request.user.id)
    json_value = {}
    count = 0 
    method = "responseUserCheck"
    retvalue = "0"
    vminfo = []
    for q in queryset:
        LOG.info("******")
        novaAdmin = get_nova_admin(request)
        LOG.info("******")
        if not q.uuid:
            continue
        server = novaAdmin.servers.get(q.uuid)
        LOG.info("******")
        server_dict = server.to_dict()
        LOG.info("******")
        server_host = server_dict['OS-EXT-SRV-ATTR:host']
        server_status = server_dict['status']
        LOG.info("******* server_status is *******" + str(server_status))
        if server_status == "ERROR":
            continue
        host_ip = settings.COMPUTE_HOSTS[server_host]
        LOG.info("host ip is" + str(host_ip))
        cmd="virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid
        LOG.info("cmd=" + cmd)
        p = subprocess.Popen("virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        port = None
        for line in p.stdout.readlines():
            port = line
            break
        LOG.info("host_ip=" + host_ip)
        LOG.info("port=" + str(port))
        if "error" in str(port):
            vminfo.append({"vm_uuid": q.uuid, "vm_public_ip": q.public_ip, "vm_serverip": host_ip, "vm_status": server_status, "vnc_port": "no port", "vm_internalid": str(q.id), "vm_name": q.name})
            count = count + 1
            continue
        split_port = port.split(":")
        port_1 = split_port[1]
        port_2 = port_1.split("\\")
        port_3 = port_2[0]
        vnc_port = 5900 + int(port_3)
        vminfo.append({"vm_uuid": q.uuid, "vm_public_ip": q.public_ip, "vm_serverip": host_ip, "vm_status": server_status, "vnc_port": vnc_port, "vm_internalid": str(q.id), "vm_name": q.name})
        LOG.info("*** count is ***" + str(count))
        count = count + 1

    json_value = {"method": method, "retvalue": retvalue, "vmnum": count, "vminfo": vminfo}
    if not json_value:
        json_value = {"retval": 1, "message": "auth success"}
    
    return Response(json_value)
コード例 #8
0
    def _get_flavor_by_name(instance, name):
        rc = create_rc_by_instance(instance)
        flavor = None
        novaAdmin = get_nova_admin(instance)
        try:
            flavors = novaAdmin.flavors.list(rc)
        except Exception:
            flavors = []
            raise

        if flavors is not None:
            for f in flavors:
                if f.name == name:
                    flavor = f
                    break
        return flavor
コード例 #9
0
ファイル: views.py プロジェクト: CannedFish/initcloud_web
def vdi_view(request):
    LOG.info("****** i am vdi view with method get ********")
 
    queryset = Instance.objects.all().filter(deleted=False, user_id=request.user.id)
    json_value = {}
    for q in queryset:
        LOG.info("******")
        novaAdmin = get_nova_admin(request)
        LOG.info("******")
        LOG.info("uuid is" + str(uuid))
        if not q.uuid:
            continue
        server = novaAdmin.servers.get(q.uuid)
        LOG.info("******")
        server_dict = server.to_dict()
        LOG.info("******")
        server_host = server_dict['OS-EXT-SRV-ATTR:host']
        server_status = server_dict['status']
        host_ip = settings.COMPUTE_HOSTS[server_host]
        LOG.info("host ip is" + str(host_ip))
        cmd="virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid
        LOG.info("cmd=" + cmd)
        p = subprocess.Popen("virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        port = None
        for line in p.stdout.readlines():
            port = line
            break
        LOG.info("host_ip=" + host_ip)
        LOG.info("port=" + str(port))
        if "error" in str(port):
            json_value[q.id] = {"vm_uuid": q.uuid, "vm_private_ip": q.private_ip, "vm_public_ip": q.public_ip, "vm_host": host_ip, "vm_status": server_status, "policy_device": 1, "vnc_port": "no port", "vm_internalid": q.id, "vm_name": q.name}
            continue
        split_port = port.split(":")
        port_1 = split_port[1]
        port_2 = port_1.split("\\")
        port_3 = port_2[0]
        vnc_port = 5900 + int(port_3)
        json_value[q.id] = {"vm_uuid": q.uuid, "vm_private_ip": q.private_ip, "vm_public_ip": q.public_ip, "vm_host": host_ip, "vm_status": server_status, "policy_device": 1, "vnc_port": vnc_port, "vm_internalid": q.id, "vm_name": q.name}

    return Response(json_value) 
コード例 #10
0
ファイル: views.py プロジェクト: CannedFish/evercloud_repo
def new_vdi_test(request):

    LOG.info("start to get data")
    method = request.GET.get("method")
    retval = 0
    if method == "requestCheckUser":
        LOG.info("** method is ***" + str(method))
        username = request.GET.get("username")
        password = request.GET.get("password")
        LOG.info("*** username is ***" + str(username))
        LOG.info("*** user password is ***" + str(password))
        user = authenticate(username=username, password=password)
        if user is not None:
            # the password verified for the user
            if user.is_active:
                login(request, user)
                LOG.info("*** user is active")
                retval = 1
            else:
                retval = -1
                LOG.info("*** user is not active")
        else:
            retval = -2
            LOG.info("*** auth failed ***")

    response_value = {"status": retval}
    LOG.info("*** start to return ***")
    username = "******"
    password = "******"
    user = authenticate(username=username, password=password)
    login(request, user)

    LOG.info("*** user is ***" + str(request.user))
    if user.is_authenticated:
        LOG.info("user is authenticated")
    queryset = Instance.objects.all().filter(deleted=False,
                                             user_id=request.user.id)
    json_value = {}
    for q in queryset:
        LOG.info("******")
        novaAdmin = get_nova_admin(request)
        LOG.info("******")
        if not q.uuid:
            continue
        server = novaAdmin.servers.get(q.uuid)
        LOG.info("******")
        server_dict = server.to_dict()
        LOG.info("******")
        server_host = server_dict['OS-EXT-SRV-ATTR:host']
        server_status = server_dict['status']
        LOG.info("******* server_status is *******" + str(server_status))
        if server_status == "ERROR":
            continue
        host_ip = settings.COMPUTE_HOSTS[server_host]
        LOG.info("host ip is" + str(host_ip))
        cmd = "virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid
        LOG.info("cmd=" + cmd)
        p = subprocess.Popen("virsh -c qemu+tcp://" + host_ip +
                             "/system vncdisplay " + q.uuid,
                             shell=True,
                             stdout=subprocess.PIPE,
                             stderr=subprocess.STDOUT)
        port = None
        for line in p.stdout.readlines():
            port = line
            break
        LOG.info("host_ip=" + host_ip)
        LOG.info("port=" + str(port))
        if "error" in str(port):
            json_value[str(q.id)] = {
                "vm_uuid": q.uuid,
                "vm_private_ip": q.private_ip,
                "vm_public_ip": q.public_ip,
                "vm_host": host_ip,
                "vm_status": server_status,
                "policy_device": str(q.policy),
                "vnc_port": "no port",
                "vm_internalid": str(q.id),
                "vm_name": q.name
            }

            continue
        split_port = port.split(":")
        port_1 = split_port[1]
        port_2 = port_1.split("\\")
        port_3 = port_2[0]
        vnc_port = 5900 + int(port_3)
        json_value[str(q.id)] = {
            "vm_uuid": q.uuid,
            "vm_private_ip": q.private_ip,
            "vm_public_ip": q.public_ip,
            "vm_host": host_ip,
            "vm_status": server_status,
            "policy_device": str(q.policy),
            "vnc_port": vnc_port,
            "vm_internalid": str(q.id),
            "vm_name": q.name
        }
    LOG.info("*** json_value ***" + str(json_value))
    return json_util.loads(json_value)
コード例 #11
0
ファイル: views.py プロジェクト: litterbear/initcloud_web
def new_vdi_test(request):

    LOG.info("start to get data")
    method = request.GET.get("method")
    retval = 0 
    if method == "requestCheckUser":
        LOG.info("** method is ***" + str(method))
        username = request.GET.get("username")
        password = request.GET.get("password")
        LOG.info("*** username is ***" + str(username))
        LOG.info("*** user password is ***" + str(password))
        user = authenticate(username=username, password=password)
        if user is not None:
            # the password verified for the user
            if user.is_active:
                login(request, user)
                LOG.info("*** user is active")
                retval = 1
            else:
                retval = -1
                LOG.info("*** user is not active")
        else:
            retval = -2
            LOG.info("*** auth failed ***")

 
    response_value = {"status": retval}
    LOG.info("*** start to return ***")
    username = "******"
    password = "******"
    user = authenticate(username=username, password=password)
    login(request, user)

    LOG.info("*** user is ***" + str(request.user))
    if user.is_authenticated:
        LOG.info("user is authenticated")
    queryset = Instance.objects.all().filter(deleted=False, user_id=request.user.id)
    json_value = {}
    for q in queryset:
        LOG.info("******")
        novaAdmin = get_nova_admin(request)
        LOG.info("******")
        if not q.uuid:
            continue
        server = novaAdmin.servers.get(q.uuid)
        LOG.info("******")
        server_dict = server.to_dict()
        LOG.info("******")
        server_host = server_dict['OS-EXT-SRV-ATTR:host']
        server_status = server_dict['status']
        LOG.info("******* server_status is *******" + str(server_status))
        if server_status == "ERROR":
            continue
        host_ip = settings.COMPUTE_HOSTS[server_host]
        LOG.info("host ip is" + str(host_ip))
        cmd="virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid
        LOG.info("cmd=" + cmd)
        p = subprocess.Popen("virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        port = None
        for line in p.stdout.readlines():
            port = line
            break
        LOG.info("host_ip=" + host_ip)
        LOG.info("port=" + str(port))
        if "error" in str(port):
            json_value[str(q.id)] = {"vm_uuid": q.uuid, "vm_private_ip": q.private_ip, "vm_public_ip": q.public_ip, "vm_host": host_ip, "vm_status": server_status, "policy_device": str(q.policy), "vnc_port": "no port", "vm_internalid": str(q.id), "vm_name": q.name}

            continue
        split_port = port.split(":")
        port_1 = split_port[1]
        port_2 = port_1.split("\\")
        port_3 = port_2[0]
        vnc_port = 5900 + int(port_3)
        json_value[str(q.id)] = {"vm_uuid": q.uuid, "vm_private_ip": q.private_ip, "vm_public_ip": q.public_ip, "vm_host": host_ip, "vm_status": server_status, "policy_device": str(q.policy), "vnc_port": vnc_port, "vm_internalid": str(q.id), "vm_name": q.name}
    LOG.info("*** json_value ***" + str(json_value))
    #return json_util.loads(json_value)
    return json_util.loads(json_value)
コード例 #12
0
def vdi_view(request):
    LOG.info("****** i am vdi view with method get ********")

    queryset = Instance.objects.all().filter(deleted=False,
                                             user_id=request.user.id)
    json_value = {}
    for q in queryset:
        LOG.info("******")
        novaAdmin = get_nova_admin(request)
        LOG.info("******")
        LOG.info("uuid is" + str(uuid))
        if not q.uuid:
            continue
        server = novaAdmin.servers.get(q.uuid)
        LOG.info("******")
        server_dict = server.to_dict()
        LOG.info("******")
        server_host = server_dict['OS-EXT-SRV-ATTR:host']
        server_status = server_dict['status']
        host_ip = settings.COMPUTE_HOSTS[server_host]
        LOG.info("host ip is" + str(host_ip))
        cmd = "virsh -c qemu+tcp://" + host_ip + "/system vncdisplay " + q.uuid
        LOG.info("cmd=" + cmd)
        p = subprocess.Popen("virsh -c qemu+tcp://" + host_ip +
                             "/system vncdisplay " + q.uuid,
                             shell=True,
                             stdout=subprocess.PIPE,
                             stderr=subprocess.STDOUT)
        port = None
        for line in p.stdout.readlines():
            port = line
            break
        LOG.info("host_ip=" + host_ip)
        LOG.info("port=" + str(port))
        if "error" in str(port):
            json_value[q.id] = {
                "vm_uuid": q.uuid,
                "vm_private_ip": q.private_ip,
                "vm_public_ip": q.public_ip,
                "vm_host": host_ip,
                "vm_status": server_status,
                "policy_device": 1,
                "vnc_port": "no port",
                "vm_internalid": q.id,
                "vm_name": q.name
            }
            continue
        split_port = port.split(":")
        port_1 = split_port[1]
        port_2 = port_1.split("\\")
        port_3 = port_2[0]
        vnc_port = 5900 + int(port_3)
        json_value[q.id] = {
            "vm_uuid": q.uuid,
            "vm_private_ip": q.private_ip,
            "vm_public_ip": q.public_ip,
            "vm_host": host_ip,
            "vm_status": server_status,
            "policy_device": 1,
            "vnc_port": vnc_port,
            "vm_internalid": q.id,
            "vm_name": q.name
        }

    return Response(json_value)