这里主要介绍一款云桌面开源软件,openstack实现了虚拟机功能,但没有提供云终端的功能,

开源代码地址为:  https://github.com/boxiaojishu/clouddesk

此软件利用openstack上的虚拟机管理功能,通过spice协议实现了云终端直接对接openstack的能力,从而实现了云桌面的功能,这款软件只是实现了用spice直接对接spice云桌面终端的功能,并没有开源spice云桌面终端相关代码,此段代码使用python实现,这里贴一小部分代码出来,大家如果有需要的话可以直接下载代码分析。

from django.shortcuts import render,render_to_response
from django.http import HttpResponse,HttpResponseRedirect
from django.template import RequestContext
from django import forms
from novaclient import client
from deskclient.v1 import client as desk
from keystoneclient.auth.identity import v3
from keystoneclient import session
import os
import json

def get_keystone_creds():
        d = {}
        d['username'] = 'admin'
        d['password'] = 'admin'
        d['auth_url'] = 'http://192.168.0.70:35357/v3'
        d['project_name'] = 'admin'
        d['project_domain_id'] = "default"
        d['user_domain_id'] = "default"
        return d
def getNova():
        kd_creds = get_keystone_creds()
        auth = v3.Password(**kd_creds)
        sess = session.Session(auth=auth)
        nova = client.Client(2,session=sess)
        return nova

def getDesk():
    kd_creds = get_keystone_creds()
    auth = v3.Password(**kd_creds)
    sess = session.Session(auth=auth)
    deskapi=desk.Client('desk','desk','service','http://192.168.0.70:35357/v3')
    return deskapi

nova = getNova()
deskapi = getDesk()

class UserForm(forms.Form):
    username = forms.CharField(label='user',max_length=100)
    password = forms.CharField(label='password',widget=forms.PasswordInput())

def login(req):
    print req
    if req.method == 'POST':
        uf = UserForm(req.POST)
        if uf.is_valid():
            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            opts = {"user_name": username}
            user = deskapi.users.get_user_by_name(opts);
            if user['deskusers'][0]['password'] == password:
                virtuald = deskapi.uservirtuals.get_virtual_by_user(opts);
                virtuals = virtuald['uservirtuals']
                return render_to_response('virtuallist.html',  {'data':virtuals},context_instance=RequestContext(req))
            #user = User.objects.filter(username__exact = username,password__exact = password)
            else:
                return HttpResponseRedirect('/login/')
    else:
        uf = UserForm()
    return render_to_response('login.html',{'uf':uf},context_instance=RequestContext(req))

def logincs(req):
    print req
    if req.method == 'POST':
        body=json.loads(req.body)
        print req.body
    if req.method == 'GET':
        print "it is hello"
    print "it is :"
    print req.body
    #body = urllib.unquote(req.body)
    print body
    username=body.get('username','')
    password=body.get('password','')
    print password
    opts = {"user_name": username}
    user = deskapi.users.get_user_by_name(opts)
    print user['deskusers'][0]['password']
    if user['deskusers'][0]['password'] == password:
        virtuald = deskapi.uservirtuals.get_virtual_by_user(opts);
        virtuals = virtuald['uservirtuals']
        resp = json.dumps(virtuals)
        return HttpResponse(resp)
    else:
        return HttpResponse("")

def index(req):
    username = req.COOKIES.get('username','')
    return render_to_response('index.html' ,{'username':username})

def logout(req):
    response = HttpResponse('logout !!')
    response.delete_cookie('username')
    return response

def getspices(req):
    print req
    virtual=req.GET
    print virtual
    virtualid=virtual.get('id','')
    print virtualid
    #nova.servers.start(virtualid)
    spices = nova.servers.get_spice_console(virtualid,'spice')
    spice=spices.get('console','')
    print spice
    resp = json.dumps(spice)
    print resp
    return HttpResponse(resp)
    #nova.servers.start('086e6358-d166-47e0-96fd-8204dc4275b0')

基于openstack的云桌面开源框架相关推荐

  1. OpenStack虚拟云桌面在携程呼叫中心的应用

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:刘科,携程系统研发云平台桌面虚拟架构师,多年从事分布式计算.通信系统平台设计.开发.本文为刘科在第六期[携程技术微分享]中的分享 ...

  2. 智能硬件APP开发之路:基于机智云APP开源框架

    为什么使用开源软件? 开源软件是Open Source音译过来的.我们知道所有的软件都是由代码编写,经编译生成的系统或者应用.而一旦你把它开源,意味着任何人.任何组织都可以使用你的代码或者软件,当然也 ...

  3. 基于Citrix的云桌面远程连接Mac机

    基于Citrix的云桌面远程连接Mac机,是通过VNC的方式.Mac机做为Server端,云桌面做为客户端使用VNCViewer进行连接. 一.Mac端开启屏幕共享和远程登录. 首先要打开Mac电脑, ...

  4. citrixreceiver云桌面系统_基于Citrix的云桌面方案

    基于 Citrix 的云桌面方案① 刘 夏 1, 孙 鹏 1, 霍旭轮 1, 陈明锐 2 [摘 要] 由于传统 IT 网络架构不相同 , 移动办公日渐增多 , 远程的管理和维护也 更加困难 , 提出一 ...

  5. openstack和云桌面杂记

    实验室买了个服务器,托管在学校机房,配置还不错. CPU: 2 * XEON E5-2680V4 GPU: 8 * NVIDIA V100 内存: 128G 硬盘:240G SSD + 4T企业盘 主 ...

  6. 基于OpenStack的云测试平台

    1.云测试平台技术架构 \\ (一)云测试平台搭建的背景 \\ 笔者目前处于一家国内核心金融机构的测试中心部门,随着公司新业务的开展以及大数据时代的到来,金融软件系统逐步趋向于分布式.高稳定性.高可用 ...

  7. 基于Pytorch的多任务推荐系统开源框架

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年2月份热门报告盘点 深度解析开源推荐算法框架EasyRec 机器学习在B站推荐系统中的应用 ...

  8. Unity云渲染开源框架UnityRenderStreaming使用说明

    目录 一.前言 二.实现 2.2.先安装依赖组件WebRTC和InputSystem 2.3.安装Unity Render Stream包并且导入案例工程 2.4.安装WebServer并运行 2.5 ...

  9. 升阳云ERP,基于开源框架设计的三大特点

    升阳云ERP基于互联网技术,采用开源框架体系进行研发并对企业开放源码,成功应用互联网云技术于传统制造业.由于成熟新技术的支撑,升阳云ERP与生俱来拥有了先进性.便利性.易用性.可扩展性. 升阳云ERP ...

  10. 基于OpenStack+Docker设计与实现CI/CD

    本文所述内容的背景是,基于Docker容器技术的OpenStack研发.测试.运维及其相关的CI/CD.DevOps等活动.思想是相通的,读者可以取其可用部分用于自己的业务需求中. IaaS云和容器云 ...

最新文章

  1. ubuntu spyder 不能输入中文
  2. 2020-08-22 cuowu
  3. 大话设计模式—策略模式
  4. Partition--分区总结
  5. nvidia显示设置不可用_Nvidia显示设置不可用,您当前未使用连接到NVIDIA GPU的显示器的解决方法...
  6. pythonpptx 楷体_python-pptx 实践 4:添加形状、文本
  7. nmon工具安装及使用
  8. 大数据框架Storm的介绍
  9. 软件测试-微信红包测试点
  10. 六十八个经典管理小故事
  11. 什么是云计算云计算能干什么?云计算学习笔记工具素材
  12. word中的神奇的“Alt + X”
  13. Java Scaner小问题
  14. java io bio nio aio 详解
  15. C语言 求一元二次方程ax2+bx+c=0的根
  16. Linux程序设计(Linux shell编程的例子:总结)
  17. java基础恶补1(基础)(内容来自牛客网Java宝典)
  18. 微信正在变成另外一个超级浏览器
  19. 防止电脑锁屏脚本power shell版
  20. 金融风控数据挖掘-Task1

热门文章

  1. Fiddler下载微信视频号中的视频最简教程
  2. linux at91看门狗驱动设置
  3. 深度学习图片数量较少扩充数据集的方法
  4. TesterHome android app 编写历程(六)
  5. 小程序实现身份证取景框拍摄-uniapp版
  6. 自然人股东分红必须要缴纳20%个税吗?有三种真不用
  7. Workflow(12) DNSResolver
  8. 线段树 从入门到进阶(超清晰,简单易懂)
  9. python自动化测试登录_自动化测试(二)如何用python写一个用户登陆功能
  10. 亚马逊AWS命令行 aws cli