我正在使用 openstack4j java api。我可以访问 2 个 openstack 项目(我可以访问的项目的图像),给定实例 ID,我想关闭该实例。在获取 OSClient 时,我会遍历两个项目的客户端并检查该实例属于哪个项目。
然后使用 OSClient 句柄,我只需调用 Shut down。os.compute().servers().action(instanceId, Action.STOP);
现在一个线程继续运行以跟踪当前实例状态,如果当前实例状态达到所需状态,那么我执行一些操作。
我的问题:我正在(ModelEntity) token
从 OSClient 句柄创建。
ModelEntity token = null;
if(apiVersion.equals(OpenstackCloudCredential.API_VERSION.V2)) {
token = ((OSClient.OSClientV2) os).getAccess();
}else if(apiVersion.equals(OpenstackCloudCredential.API_VERSION.V3)){
token = ((OSClient.OSClientV3) os).getToken();
}
return token;
OSClient os = null;
if(apiVersion.equals(OpenstackCloudCredential.API_VERSION.V2)){
os = OSFactory.clientFromAccess((Access) token);
}else if(apiVersion.equals(OpenstackCloudCredential.API_VERSION.V3)){
os = OSFactory.clientFromToken((Token) token);
}
_logger.info(" ================= rishi token : " + token.hashCode());
return os;
我正在获取 OSClient 句柄,但它指向不同的项目(列表中的第一个项目)。我正在从正确的 OSClient 句柄生成令牌,但为什么我没有从同一个令牌中获得正确的 OSClient。关于如何获得正确的 OSClient 句柄的任何建议?