XenServer Java API:如何检索XenServer管理IP地址

XenServer Java API:如何检索XenServer管理IP地址,java,xen,Java,Xen,非常感谢您提供的任何帮助/意见/建议 我们在XenServer 6.0.2上配置了多个IP地址,但只有一个管理地址 我们有使用Xenserver Java API绑定来查询Xenserver的Java代码。我们一直在使用下面的代码检索池中所有xenserver的管理ip地址 Map<Host, Host.Record> hypervisors = Host.getAllRecords(getConnection()); for (Host.Record

非常感谢您提供的任何帮助/意见/建议

我们在XenServer 6.0.2上配置了多个IP地址,但只有一个管理地址

我们有使用Xenserver Java API绑定来查询Xenserver的Java代码。我们一直在使用下面的代码检索池中所有xenserver的管理ip地址

           Map<Host, Host.Record> hypervisors = Host.getAllRecords(getConnection());

    for (Host.Record hypRecord : hypervisors.values()) {
        String mgmtIP = hypRecord.address;
                      .........
                      .........
            }
Map hypervisor=Host.getAllRecords(getConnection());
for(Host.Record:hypervisors.values()){
字符串mgmtIP=hypRecord.address;
.........
.........
}
此代码在我们的实验室中工作,但在合作伙伴站点的测试表明此代码存在问题。返回的ip地址与管理ip地址不同?例如,在合作伙伴站点,xenserver在机箱上配置了3个IP。让我们将其校准为ip1、ip2和ip3。我们使用ip1发出XENAPI请求并登录,它运行良好。但上述代码中返回的变量“mgmtIP”的值为ip2。这让我想到: A.单个xenserver是否可以有多个管理ip? B上面代码中的“String mgmtIP=hypRecord.address;”行不返回管理ip吗? Bxen api请求是否应该始终发送到管理ip地址(如果在池中,则发送到主服务器的管理ip地址)? C检索xenserver的管理ip地址的最佳方法是什么? 由于我们使用的是6.0.2,因此该方法: 类主机上的公共PIF getManagementIface(连接c)

谢谢。

使用xe:

user@host ~# IFS=,; for uuid in $(xe pif-list management=true --minimal); do echo -n   "$uuid -> "; xe pif-param-get param-name=IP uuid=$uuid; done
12334567-1234-1234-1234-123456787890 -> x.x.x.x
12334567-1234-1234-1234-123456787890 -> x.x.x.x
12334567-1234-1234-1234-123456787890 -> x.x.x.x
12334567-1234-1234-1234-123456787890 -> x.x.x.x
使用api,您将查询相同的逻辑 对于主机上的pif, pif的管理是否正确? 获取IP

另一个可能对你有用的技巧是

user@host ~# xe host-param-get uuid=12334567-1234-1234-1234-123456787890 param-name=address
x.x.x.x