Как получить правильный OSClient из токена в Openstack4j Java API для v2 и v3?

Я использую openstack4j Java API. Я могу получить доступ к 2 проектам openstack (изображение для проектов, к которым у меня есть доступ), по заданному идентификатору экземпляра я хочу закрыть экземпляр. Получая OSClient, я зацикливаюсь на клиентах для обоих проектов и проверяю, к какому проекту принадлежит этот экземпляр.

Затем с помощью ручки OSClient я просто вызываю "Выключить". 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?

1 ответ

Решение

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

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

Я так тупа;)

Другие вопросы по тегам