2017-02-08 16 views
0

Я использую openstack4j java api. Я могу получить доступ к двум проектам openstack (image for projects that I can access), учитывая идентификатор экземпляра. Я хочу закрыть экземпляр. При получении OSClient я перебираю клиенты для обоих проектов и проверяю, в каком проекте этот экземпляр принадлежит.Как получить правильный OSClient из токена в Openstack4j java api для v2 и v3?

Затем с помощью ручки 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 ручку в моем другом классе, в котором поток должен быть выполнен. Если я просто передаю один и тот же символ OSClient, тогда я получу какое-то недопустимое сообщение об ошибке сеанса. Итак, из этого токена я пытаюсь получить команду OSClient в другом классе. В другом классе я следующее, чтобы получить OSClient:
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?

ответ

0

Получил ответ !!

Мое намерение заключалось в получении ручки OSClient для всех арендаторов или проектов. Я создал список элементов управления OSClient. Я аутентифицировал первого арендатора, чтобы получить клиента, а затем добавлю его в список клиентов, затем я аутентифицировал второго арендатора, а затем снова добавил его в список. Теперь, , так как я аутентифицировал второго арендатора, сеанс для первого арендатора неактивен, а первый клиент в списке также указывает на экземпляры второго клиента.

Я сумерки;)