【问题标题】:How to find NAS Datastore Information in vijava如何在 vijava 中查找 NAS 数据存储信息
【发布时间】:2012-11-19 01:33:57
【问题描述】:

我正在编写一个与 VMWare vSphere 客户端交互的应用程序。它使用 vijava 库来做到这一点。我需要使用 NFS 服务器的 IP 地址和导出目录的名称在主机上查找 NAS 数据存储。

我可以使用 HostFileSystemVolume.type 查找该主机上的数据存储并找出 NFS 类型的数据存储,但我现在如何找到此数据存储的 NASDatastoreInfo 对象。文档很庞大,我没有时间阅读所有内容。我知道我需要为我找到的相应 Datastore 对象获取 NASDatastoreInfo 对象,但无法找出任何可能返回 NASDatastoreInfo 对象的方法。您所拥有的只是来自 Datastore 对象的 DatastoreInfo 对象。

任何帮助将不胜感激。

谢谢... 无拘无束

【问题讨论】:

    标签: vmware vsphere


    【解决方案1】:

    除非已挂载,否则您将无法获得关于 NAS 的任何卷信息。

    我怀疑你的主机上安装了那么多驱动器。

    建议:

    1. 只需抓取所有已安装的卷

    2. 检查它们每个的 NASDataStoreInfo 属性

    3. 只需忽略没有它的卷。

    【讨论】:

      【解决方案2】:

      这就是我设法做到的。代码可能看起来有点复杂,但要点如下:

      查找该主机的所有卷,并找到在其上构建了 NFS 文件系统的卷。对于这些卷中的每一个,使用卷名 = 数据存储名称条件迭代数据存储列表。找到匹配项后,从 DatastoreInfo 对象中获取 NASDatastoreInfo 对象并检查远程 NFS 服务器 IP 和导出目录。

      我检查了该主机上所有卷的 HostFileSystemVolume.type=='NFS',然后检查了该卷的远程 NFS 服务器 IP 和导出目录。

      代码已经有一个指向 vCenter 的服务实例“si”和一个名为“host”的 HostSystem 对象

           HostDatastoreSystem hds = host.getHostDatastoreSystem();
           HostDatastoreBrowser hdb = host.getDatastoreBrowser();
           Datastore[] allDS = hdb.getDatastores();
           HostConfigInfo hostConfigInfo = host.getConfig();
           HostFileSystemVolumeInfo hostFSVolumeInfo = hostConfigInfo.getFileSystemVolume();
           HostFileSystemMountInfo[] hostFSMountInfo= hostFSVolumeInfo.getMountInfo();
           for (HostFileSystemMountInfo hfsmi : hostFSMountInfo) {
               HostFileSystemVolume hfsv = hfsmi.getVolume();
               if (hfsv.getType().equalsIgnoreCase("nfs")){
                   String dsName = hfsv.getName();
                   for(Datastore ds: allDS) {
                       DatastoreInfo di = ds.getInfo();
                       if (di.getName().equals(dsName)){
                           HostNasVolume nas = ((NasDatastoreInfo)di).getNas();
                           if (nas.getRemoteHost().equals(nfsServer) & nas.getRemotePath().equals(datastorePathOnNfsServer)) {
                               try {
                              } catch (HostConfigFault e) {
                                   logger.error("ERROR : unmountNfsDatastore : Could not remove Datastore named: " + ds.getName() + " on " +  "host: " + hostname , e);
                                   ret = 1;
                                   return ret;
                              } catch (ResourceInUse e) {
                                   logger.error("ERROR : unmountNfsDatastore : Could not remove Datastore named: " + ds.getName() + " on " +  "host: " + hostname , e);
                                   ret = 1;
                                   return ret;
                              } catch (NotFound e) {
                                   logger.error("ERROR : unmountNfsDatastore : Could not remove Datastore named: " + ds.getName() + " on " +  "host: " + hostname , e);
                                   ret = 1;
                                   return ret;
                              } catch (RuntimeFault e) {
                                   logger.error("ERROR : unmountNfsDatastore : Could not remove Datastore named: " + ds.getName() + " on " +  "host: " + hostname , e);
                                   ret = 1;
                                   return ret;
                              } catch (RemoteException e) {
                                   logger.error("ERROR : unmountNfsDatastore : Could not remove Datastore named: " + ds.getName() + " on " +  "host: " + hostname , e);
                                   ret = 1;
                                   return ret;
                              }
                               return 0;
                           }
                       }
                   }
               }
           }
           logger.error("ERROR : unmountNfsDatastore : Could not find Datastore exported by " + nfsServer + " on " +  "host: " + hostname);
           ret = 0;
           return ret;
                                  hds.removeDatastore(ds);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        • 2013-07-09
        • 2012-10-12
        • 2015-11-10
        • 2014-11-29
        • 2014-03-14
        • 1970-01-01
        相关资源
        最近更新 更多