hcwzwx 发表于 2015-4-6 15:53:21

vmware获取主机、数据中心等对象ManagedObjectReference

  在vmware的api中提供以下列表中的对象,称作ManagedObjectReference,包括虚拟机信息、主机、数据中心等等一些信息,我们可以通过vcenter的web api得到。
  下面我们来通过它的api获取dc。



1 List arguments = new List();
2 arguments.AddRange(
3   new string[]{
4   "--url", "https://192.168.0.160/sdk",
5   "--username", "administrator@vsphere.local",
6   "--password", "P@ssw0rd",
7   //"--datacentername","dc",
8   //"--srcname", "",
9   //"--vmname", "",
10   //"--hostname","",
11   //"--storagename","",
12   //"--disksize","",
13   //"--privateip","",
14   //"--privatesubnetmask", "",
15   //"--cpunums","",
16   //"--memorymb","",
17   "--disablesso", "true",
18   "--ignorecert", "true"
19 });
20 try
21 {
22   System.Text.StringBuilder sb = new System.Text.StringBuilder();
23
24   AppUtil.AppUtil util = AppUtil.AppUtil.initialize("SearchIndex", constructOptions(), arguments.ToArray());
25   util.connect();
26   
27   ManagedObjectReference hostMor = util._svcUtil.GetDecendentMoRef(null, "HostSystem", "192.168.0.161");
28   sb.AppendLine(string.Format("host is {0}", hostMor.Value));
29   ManagedObjectReference dcMor = util._svcUtil.getEntityByName("Datacenter", "dc");
30   sb.AppendLine(string.Format("dc is {0}", dcMor.Value));
31
32   ManagedObjectReference sMor = new ManagedObjectReference();
33   sMor.type = "ServiceInstance";
34   sMor.Value = "ServiceInstance";
35   VimService service = new VimService();
36   service.Url = util.get_option("url");
37   service.CookieContainer = new System.Net.CookieContainer();
38   ServiceContent sc = service.RetrieveServiceContent(sMor);
39   service.Login(sc.sessionManager, util.get_option("username"), util.get_option("password"), null);
40
41   ManagedObjectReference searchMor = sc.searchIndex;
42   ManagedObjectReference dcMor2 = service.FindByInventoryPath(searchMor, "dc");
43   sb.AppendLine(string.Format("dc2 is {0}", dcMor2.Value));
44
45   util.disConnect();
46   service.Dispose();
47
48   Response.Write(sb.ToString());
49
50 }
51 catch (Exception ex) { Response.Write(ex.ToString()); }
  
  上述代码中我们运用了两种不同的代码方式获取数据中心对象,下面是它的运行结果,我们可以看到vcenter在内部用了别称。

  在vcenter server中封装了http://ip/sdk的api,开发者可以直接调用。
  每个实体下面具有一些属性,文档可以查询Data Object ManagedObjectReference。
  
页: [1]
查看完整版本: vmware获取主机、数据中心等对象ManagedObjectReference