vmware之VMware Remote Console (VMRC) SDK(二)

在上篇文章中,咱們用winform結合vmware的api作了一個demo,在vmrc sdk中做爲plugin單獨打包出來vmware-vmrc-win32-x86.exe,上篇文章的demo只能基於這個plugin運行,在主機的vcenter中默認帶有此功能,因此想要以activex插件的形式運行於瀏覽器之上,就必須安裝此插件包,約35MB。此插件集成了包含了可運行於IE之上的ActiveX,以及可運行於Chrome上的應用插件(FF等其餘瀏覽器這裏沒有通過測試)。下面爲一張截圖,分別測試於IE11和Chrome。javascript

 1

 

咱們先建立console的基本類。java

 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數據。jquery

 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方法。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,這裏已經做了部分修改。ajax

 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方法。json

相關文章
相關標籤/搜索