2012年6月4日月曜日

【VIJava】IPアドレスからホスト名を取得する方法

public ESXTools(String url, String username, String password) {
  try {
    si = new ServiceInstance(new URL(url), username, password, true);
  } catch (RuntimeFault e) {
    e.printStackTrace();
  } catch (RemoteException e) {
    e.printStackTrace();
  } catch (MalformedURLException e) {
    e.printStackTrace();
  }
}

public void showEsx (String ipAddress) {
  try {
    ManagedEntity me = si.getSearchIndex().findByIp(null, ipAddress, true);
    if (me instanceof VirtualMachine) {
      VirtualMachineRuntimeInfo vmri = ((VirtualMachine) me).getSummary().getRuntime();
      System.out.println(((VirtualMachine) me).getName() + "," + new HostSystem(si.getServerConnection(), vmri.getHost()).getName() + "," + ipAddress);
    }
  } catch (RuntimeFault e) {
    e.printStackTrace();
  } catch (RemoteException e) {
    e.printStackTrace();
  }
}

インスタンスを作成する際のurl, username, passwordはそれぞれ「vCenterのIPアドレス」「vCenterに登録してあるユーザ名、パスワード」です
findByIpからVMを検索してそのVMが乗っているホスト名を取得します
ポイントはHostSystemのインスタンスを作成する点
VMの情報からはどうやっても参照できないようです
(gitで公開しようとしましたが、やめておきましたw)

0 件のコメント:

コメントを投稿