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();
}