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