in providers/softlayer/src/main/java/org/jclouds/softlayer/binders/VirtualGuestToJson.java [83:157]
String buildJson(VirtualGuest virtualGuest) {
TemplateObject.Builder templateObjectBuilder = TemplateObject.builder();
String hostname = checkNotNull(virtualGuest.getHostname(), "hostname");
String domain = checkNotNull(virtualGuest.getDomain(), "domain");
int startCpus = virtualGuest.getStartCpus();
int maxMemory = virtualGuest.getMaxMemory();
boolean hourlyBillingFlag = virtualGuest.isHourlyBillingFlag();
boolean localDisk = virtualGuest.isLocalDiskFlag();
String datacenterName = checkNotNull(virtualGuest.getDatacenter().getName(), "datacenterName");
Set<VirtualGuestNetworkComponent> virtualGuestNetworkComponents = virtualGuest.getVirtualGuestNetworkComponents();
Set<NetworkComponent> networkComponents = Sets.newHashSet();
if (virtualGuestNetworkComponents != null) {
networkComponents = FluentIterable.from(virtualGuestNetworkComponents)
.transform(new Function<VirtualGuestNetworkComponent, NetworkComponent>() {
@Override
public NetworkComponent apply(VirtualGuestNetworkComponent virtualGuestNetworkComponent) {
return new NetworkComponent(virtualGuestNetworkComponent.getSpeed());
}
}).toSet();
}
templateObjectBuilder.hostname(hostname)
.domain(domain)
.startCpus(startCpus)
.maxMemory(maxMemory)
.hourlyBillingFlag(hourlyBillingFlag)
.localDiskFlag(localDisk)
.dedicatedAccountHostOnlyFlag(virtualGuest.isDedicatedAccountHostOnly())
.privateNetworkOnlyFlag(virtualGuest.isPrivateNetworkOnly())
.datacenter(new Datacenter(datacenterName));
if (!networkComponents.isEmpty()) {
templateObjectBuilder.networkComponents(networkComponents);
}
if (virtualGuest.getOperatingSystem() != null) {
String operatingSystemReferenceCode = checkNotNull(virtualGuest.getOperatingSystem()
.getOperatingSystemReferenceCode(), "operatingSystemReferenceCode");
templateObjectBuilder.operatingSystemReferenceCode(operatingSystemReferenceCode)
.blockDevices(getBlockDevices(virtualGuest));
} else if (virtualGuest.getVirtualGuestBlockDeviceTemplateGroup() != null) {
String globalIdentifier = checkNotNull(virtualGuest.getVirtualGuestBlockDeviceTemplateGroup()
.getGlobalIdentifier(), "blockDeviceTemplateGroup.globalIdentifier");
templateObjectBuilder.blockDeviceTemplateGroup(new BlockDeviceTemplateGroup(globalIdentifier));
}
if (virtualGuest.getPrimaryNetworkComponent() != null) {
templateObjectBuilder.primaryNetworkComponent(new PrimaryNetworkComponent(new NetworkVlan(virtualGuest
.getPrimaryNetworkComponent().getNetworkVlan().getId())));
}
if (virtualGuest.getPrimaryBackendNetworkComponent() != null) {
templateObjectBuilder.primaryBackendNetworkComponent(new PrimaryBackendNetworkComponent(new NetworkVlan(virtualGuest
.getPrimaryBackendNetworkComponent().getNetworkVlan().getId())));
}
if (virtualGuest.getPostInstallScriptUri() != null) {
templateObjectBuilder.postInstallScriptUri(virtualGuest.getPostInstallScriptUri());
}
if (virtualGuest.getVirtualGuestAttribute() != null) {
templateObjectBuilder.userData(ImmutableSet.<Map<String, String>>of(ImmutableMap.of(USER_DATA_KEY,
virtualGuest.getVirtualGuestAttribute().getValue())));
}
if (virtualGuest.getSshKeys() != null) {
Set<Map<String, Integer>> sshKeys = Sets.newHashSet();
for (SecuritySshKey securitySshKey : virtualGuest.getSshKeys()) {
sshKeys.add(ImmutableMap.of(SSH_KEY_ID, securitySshKey.getId()));
}
templateObjectBuilder.sshKeys(sshKeys);
}
return json.toJson(ImmutableMap.of("parameters", ImmutableList.of(templateObjectBuilder.build())));
}