public NodeMetadata apply()

in profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/compute/function/ServerInDataCenterToNodeMetadata.java [80:131]


   public NodeMetadata apply(final ServerInDataCenter serverInDataCenter) {
      Server server = serverInDataCenter.getServer();
      checkNotNull(server, "Null server");

      // Location is not populated in the datacenter on a server response
      DataCenter dataCenter = api.dataCenterApi().getDataCenter(serverInDataCenter.getDataCenter());
      Location location = find(locations.get(), idEquals(dataCenter.properties().location().getId()));

      float size = 0f;
      List<Volume> volumes = Lists.newArrayList();
      List<org.apache.jclouds.profitbricks.rest.domain.Volume> storages = server.entities().volumes().items();
      if (storages != null) {
         for (org.apache.jclouds.profitbricks.rest.domain.Volume storage : storages) {
            size += storage.properties().size();
            volumes.add(fnVolume.apply(storage));
         }
      }

      // Build hardware
      String id = String.format("cpu=%d,ram=%d,disk=%.0f", server.properties().cores(), server.properties().ram(), size);
      Hardware hardware = new HardwareBuilder()
              .ids(id)
              .name(id)
              .ram(server.properties().ram())
              .processor(new Processor(server.properties().cores(), 1d))
              .hypervisor("kvm")
              .volumes(volumes)
              .location(location)
              .build();

      // Collect ips
      List<String> addresses = fnCollectIps.apply(server.entities().nics().items());
      OperatingSystem os = null;
      if (server.properties() != null && server.properties().bootVolume() != null && server.properties().bootVolume().properties() != null) {
         os = mapOsType(server.properties().bootVolume().properties().licenceType());

      }
      // Build node
      NodeMetadataBuilder nodeBuilder = new NodeMetadataBuilder();
      nodeBuilder.ids(serverInDataCenter.slashEncode())
              .group(groupNamingConvention.extractGroup(server.properties().name()))
              .name(server.properties().name())
              .backendStatus(server.metadata().state().toString())
              .status(mapStatus(server.properties().vmState()))
              .hardware(hardware)
              .operatingSystem(os)
              .location(location)
              .privateAddresses(Iterables.filter(addresses, InetAddresses2.IsPrivateIPAddress.INSTANCE))
              .publicAddresses(Iterables.filter(addresses, not(InetAddresses2.IsPrivateIPAddress.INSTANCE)));

      return nodeBuilder.build();
   }