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.')})
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.')})
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
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)
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)
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)
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)
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
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)
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)
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)
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)