jclouds вычислительная служба HP перестала работать для новых пользователей

Я написал код, который использует сервис облачных вычислений HP jclouds, и все работало хорошо.

Вчера я открыл новую учетную запись на HP, и код не удалось. Получаю ошибку о версии - поэтому я предполагаю, что HP обновила свою версию openstack, однако я нигде не могу найти документацию о том, что следует изменить в jclodus.

Это мой код

  public static ComputeServiceContext createJcloudsContext(String project, String key, String secretKey ) {
    ServerConfig serverConfig = ApplicationContext.get().conf().server;
    ComputeServiceContext context;
    Properties overrides = new Properties();
    overrides.put("jclouds.keystone.credential-type", "apiAccessKeyCredentials");
    context = ContextBuilder.newBuilder( serverConfig.cloudProvider.label )
            .credentials( project + ":" + key, secretKey )
            .overrides(overrides)
            .buildView(ComputeServiceContext.class);
    return context;
}

И это ошибка

java.util.NoSuchElementException: no endpoints for apiType compute are of version 1.1, or version agnostic: [Service{type=compute, name=Compute, endpoints=[Endpoint{versionId=2, region=region-a.geo-1, publicURL=https://region-a.geo-1.compute.hpcloudsvc.com/v2/10050594585198, internalURL=null, adminURL=null, versionInfo=https://region-a.geo-1.compute.hpcloudsvc.com/v2/, versionList=https://region-a.geo-1.compute.hpcloudsvc.com, tenantId=10050594585198}, Endpoint{versionId=2, region=region-b.geo-1, publicURL=https://region-b.geo-1.compute.hpcloudsvc.com/v2/10050594585198, internalURL=null, adminURL=null, versionInfo=https://region-b.geo-1.compute.hpcloudsvc.com/v2/, versionList=https://region-b.geo-1.compute.hpcloudsvc.com, tenantId=10050594585198}]}]

РЕДАКТИРОВАТЬ: ответ Барака был хорош для фрагмента кода, который я разместил - минимальный фрагмент кода для воспроизведения. Кажется, что потом я получаю ту же ошибку для другой строки. ниже приведен фрагмент кода. Вот мой код

    final String provider = "hpcloud-compute";

    final String user = USER_VALUE;
    final String key = KEY_VALUE;

    Properties overrides = new Properties();
    overrides.setProperty("jclouds.keystone.credential-type", "apiAccessKeyCredentials");
    overrides.setProperty(Constants.PROPERTY_ENDPOINT, "https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0/");
    overrides.setProperty("jclouds.api-version", "2");

    ComputeServiceContext context = ContextBuilder
            .newBuilder(provider)
            .credentials(user, key)
            .overrides(overrides)
            .buildView(ComputeServiceContext.class);

    Set<? extends ComputeMetadata> computeMetadatas = context.getComputeService().listNodes();
    ((RestContext<NovaApi, NovaAsyncApi>)context.unwrap()).getApi().getKeyPairExtensionForZone(zone);
    ((RestContext<NovaApi, NovaAsyncApi>)context.unwrap()).getApi().getSecurityGroupExtensionForZone(zone);

РЕДАКТИРОВАТЬ:

Оказывается, у нового облака HP нет зоны доступности "az1","az2"... Вместо этого мне нужно передать "region-b.geo-1", и это работает!

1 ответ

Решение

Добавьте следующее переопределение:

overrides.put("jclouds.api-version":"2")

Вы можете посмотреть этот пост на форуме для получения более подробной информации: https://cloudifysource.zendesk.com/entries/30497773-Can-we-use-cloudify-with-HP-Cloud-environment-13-5-

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