String buildJson()

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