设为首页 收藏本站
查看: 1992|回复: 0

[经验分享] vmware之VMware Remote Console (VMRC) SDK(二)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-4 21:24:35 | 显示全部楼层 |阅读模式
  在上篇文章中,我们用winform结合vmware的api做了一个demo,在vmrc sdk中作为plugin单独打包出来vmware-vmrc-win32-x86.exe,上篇文章的demo只能基于这个plugin运行,在主机的vcenter中默认带有此功能,所以想要以activex插件的形式运行于浏览器之上,就必须安装此插件包,约35MB。此插件集成了包含了可运行于IE之上的ActiveX,以及可运行于Chrome上的应用插件(FF等其他浏览器这里没有经过测试)。下面为一张截图,分别测试于IE11和Chrome。
DSC0000.png
  
  我们先创建console的基本类。



1 public class ConsoleModel
2 {
3     public int Modes { get; set; }
4     public int MsgMode { get; set; }
5     public string AdvancedConfig { get; set; }
6     public string Host { get; set; }
7     public string Thumb { get; set; }
8     public bool AllowSSLErrors { get; set; }
9     public string Ticket { get; set; }
10     public string User { get; set; }
11     public string Pass { get; set; }
12     public string VMId { get; set; }
13     public string Datacenter { get; set; }
14     public string VMPath { get; set; }
15 }
  
  下面是基于mvc用于和javascript交互的方法,最后返回一条json数据。



1 public ActionResult Connect(string vmName)
2 {
3     string[] arguments =  {
4         "--url", "https://192.168.0.161/sdk",
5         "--username", "root",
6         "--password", "P@ssw0rd",
7         "--disablesso", "true",
8         "--ignorecert", "true"};
9
10     util = AppUtil.AppUtil.initialize("Connect", constructOptions(), arguments);
11     util.connect();
12     ManagedObjectReference mor = util.getConnection().ServiceRef;
13     ManagedObjectReference sessionMor = util._connection.Service.RetrieveServiceContent(mor).sessionManager;
14     string ticket = util._connection.Service.AcquireCloneTicket(sessionMor);
15     ManagedObjectReference vmMor = util.getServiceUtil().GetDecendentMoRef(null, "VirtualMachine", vmName);
16
17     ConsoleModel console = new ConsoleModel();
18     console.Modes = 2;
19     console.MsgMode = 1;
20     console.AdvancedConfig = "NaN";
21     console.Host = "192.168.0.161";
22     console.Thumb = "";
23     console.AllowSSLErrors = true;
24     console.Ticket = ticket;
25     console.User = "";
26     console.Pass = "";
27     console.VMId = vmMor.Value;
28     console.Datacenter = "";
29     console.VMPath = "";
30
31     return Json(console, JsonRequestBehavior.AllowGet);
32 }
  
  下面是基于jquery的ajax调用上方web方法。



1 function vmrc_connect() {
2     $.ajax({
3         type: 'POST',
4         url: 'Home/Connect',
5         data: 'vmName=test',
6         dataType: 'json',
7         success: function (data) {
8             startup(data.Modes, data.MsgMode, data.AdvancedConfig);
9             connect(data.Host, data.Thumb, data.AllowSSLErrors, data.Ticket, data.User, data.Pass,
10             data.VMId, data.Datacenter, data.VMPath);
11         },
12         error: function () {
13             alert('connect failed');
14         }
15     });
16 }
  
  下方是sdk中提供的调用插件的demo,这里已经作了部分修改。



1 function startup(modes, msgMode, advancedConfig) {
2     log('starting VMRC instance: modes: ' + modes + ', messages: ' + msgMode);
3
4     if (advancedConfig) {
5         log('VMRC using advanced config "' + advancedConfig + '"');
6     }
7
8     try {
9         var ret = vmrc.startup(modes, msgMode, advancedConfig);
10         log('startup returned "' + ret + '"');
11     } catch (err) {
12         alert('startup call failed: ' + err);
13     }
14 }
15
16 function connect(host, thumb, allowSSLErrors, ticket, user, pass, vmid, datacenter, vmPath) {
17     if (thumb.length > 0)
18         thumb = thumb.replace(/-/g, ':');
19
20     try {
21         var ret = vmrc.connect(host, thumb, allowSSLErrors,
22                              ticket, user, pass, vmid, datacenter, vmPath);
23         log('connect succeeded');
24     } catch (err) {
25         alert('connect failed: ' + err);
26     }
27 }
  
  小结:在sdk demo中,为了兼容各种浏览器,可能要修改部分js方法。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-53887-1-1.html 上篇帖子: VMWare Workstation 8下载 (附注册机下载地址,支持Windows 8) 下篇帖子: 关于 VMware Workstation 虚拟机 vmx86驱动版本不匹配的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表