Управление экземплярами облака Google с помощью jcloud api

Я хочу добавить и перечислить все экземпляры / ВМ в моем проекте в облаке Google с помощью API-интерфейса Jcloud. В этом коде я предполагаю, что узел является экземпляром. Я установил все необходимые переменные и извлек секретный ключ из файла json. Построение контекста происходит успешно.
images = compute.listImages () => перечисляет все изображения, предоставленные Google.
node = compute.listNodes() => должен перечислять узлы, но вместо этого давать исключение нулевого указателя.

Выход =>

Нет изображений 246

Исключение в потоке "основной") в org.jclouds.compute.internal.FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.sharedNameForGroup(FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java:120) compute.functions. Functions.java:211) на com.google.common.collect.Iterators$8.transform(Iterators.java:794) на com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48) на com.google.common.collect.Iterators$7.computeNext(Iterators.java:646) на com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) на странице com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) на странице com.google.common.collect.Iterators.addAll(Iterators.java:356) на странице com.google.common.collect.Iterables.addAll(Iterables.java:350) в com.google.common.collect.Sets.newLinkedHashSet(Sets.java:328) в org.jclouds.compute.internal.BaseComputeService.listNodes(BaseComputeService.java:335) в org.jclouds.examples.compute.basics.Example.main(Example.java:54)

    package org.jclouds.examples.compute.basics;
    import static com.google.common.base.Charsets.UTF_8;
    import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_SCRIPT_COMPLETE;

    import java.io.File;
    import java.io.IOException;
    import java.util.Properties;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;

    import org.jclouds.ContextBuilder;
    import org.jclouds.compute.ComputeService;
    import org.jclouds.compute.ComputeServiceContext;
    import org.jclouds.compute.domain.ComputeMetadata;
    import org.jclouds.compute.domain.Image;
    import org.jclouds.domain.Credentials;
    import org.jclouds.enterprise.config.EnterpriseConfigurationModule;
    import org.jclouds.googlecloud.GoogleCredentialsFromJson;
    import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
    import org.jclouds.sshj.config.SshjSshClientModule;

    import com.google.common.base.Supplier;
    import com.google.common.collect.ImmutableSet;
    import com.google.common.io.Files;
    import com.google.inject.Module;

    public class Example {

     public static void main(String[] args) 
     {
      String provider = "google-compute-engine";
      String identity = "***@developer.gserviceaccount.com";
      String credential = "path to private key file ";
      credential = getCredentialFromJsonKeyFile(credential);

      Properties properties = new Properties();
      long scriptTimeout = TimeUnit.MILLISECONDS.convert(20, TimeUnit.MINUTES);
      properties.setProperty(TIMEOUT_SCRIPT_COMPLETE, scriptTimeout + "");
      Iterable<Module> modules = ImmutableSet.<Module> of(
            new SshjSshClientModule(),new SLF4JLoggingModule(),
            new EnterpriseConfigurationModule());

      ContextBuilder builder = ContextBuilder.newBuilder(provider)
                                             .credentials(identity, credential)
                                             .modules(modules)
                                             .overrides(properties);
      ComputeService compute=builder.buildView(ComputeServiceContext.class).getComputeService();

      Set<? extends Image> images = compute.listImages();
      System.out.printf(">> No of images %d%n", images.size());

      Set<? extends ComputeMetadata> nodes = compute.listNodes();
      System.out.printf(">> No of nodes/instances %d%n", nodes.size());

      compute.getContext().close();     
    }

    private static String getCredentialFromJsonKeyFile(String filename) {
      try {
         String fileContents = Files.toString(new File(filename), UTF_8);
         Supplier<Credentials> credentialSupplier = new GoogleCredentialsFromJson(fileContents);
         String credential = credentialSupplier.get().credential;
         return credential;
      } catch (IOException e) {
         System.err.println("Exception reading private key from '%s': " + filename);
         e.printStackTrace();
         System.exit(1);
         return null;
      }
    }
    }

0 ответов

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