public NodeMetadata apply()

in oneandone/src/main/java/org/apache/jclouds/oneandone/rest/compute/function/ServerToNodeMetadata.java [79:149]


   public NodeMetadata apply(final Server server) {
      checkNotNull(server, "Null server");

      DataCenter dataCenter = api.dataCenterApi().get(server.datacenter().id());
      Location location = find(locations.get(), idEquals(dataCenter.id()));
      Hardware hardware = null;
      //check if the server was built on a hardware flavour(Fixed instance)
      if (server.hardware().fixedInstanceSizeId() != null && !"0".equals(server.hardware().fixedInstanceSizeId())) {
         hardware = hardwareFlavors.get().get(server.hardware().fixedInstanceSizeId());

      } else {
         List<Volume> volumes = Lists.newArrayList();
         //customer hardware
         double size = 0d;
         double minRam = server.hardware().ram();
         List<Hdd> hdds = server.hardware().hdds();

         if (server.hardware().hdds().isEmpty()) {
            hdds = api.serverApi().getHardware(server.id()).hdds();
         }

         size = getHddSize(hdds);
         volumes = convertHddToVolume(hdds);

         if (minRam < 1) {
            minRam = 512;
         } else {
            minRam = minRam * 1024;
         }

         List<Processor> processors = new ArrayList<Processor>();
         for (int i = 0; i < server.hardware().vcore(); i++) {
            Processor proc = new Processor(server.hardware().coresPerProcessor(), 1d);
            processors.add(proc);
         }
         AutomaticHardwareIdSpec id = AutomaticHardwareIdSpec.automaticHardwareIdSpecBuilder(server.hardware().vcore(), (int) minRam, Optional.of((float) size));
         hardware = new HardwareBuilder()
                 .ids(id.toString())
                 .ram((int) minRam)
                 .processors(ImmutableList.copyOf(processors))
                 .hypervisor("kvm")
                 .volumes(volumes)
                 .location(location)
                 .build();

      }

      // Collect ips
      List<String> addresses = Lists.transform(server.ips(), new Function<ServerIp, String>() {
         @Override
         public String apply(ServerIp in) {
            return in.ip();
         }
      });

      Image image = images.get().get(server.image().id());
      // Build node
      NodeMetadataBuilder nodeBuilder = new NodeMetadataBuilder();
      nodeBuilder.ids(server.id())
              .group(groupNamingConvention.extractGroup(server.name()))
              .name(server.name())
              .backendStatus(server.status().state().toString())
              .status(mapStatus(server.status().state()))
              .hardware(hardware)
              .operatingSystem(image.getOperatingSystem())
              .location(location)
              .privateAddresses(Iterables.filter(addresses, InetAddresses2.IsPrivateIPAddress.INSTANCE))
              .publicAddresses(Iterables.filter(addresses, not(InetAddresses2.IsPrivateIPAddress.INSTANCE)));

      return nodeBuilder.build();
   }