Пример #1
0
  /**
   * Create a launch configuration
   *
   * @param config the launch configuration
   * @throws AutoScalingException wraps checked exceptions
   */
  public void createLaunchConfiguration(LaunchConfiguration config) throws AutoScalingException {
    Map<String, String> params = new HashMap<String, String>();
    params.put("LaunchConfigurationName", config.getConfigName());
    params.put("ImageId", config.getImageId());
    // params.put("MinCount", "" + config.getMinCount());
    // params.put("MaxCount", "" + config.getMaxCount());

    byte[] userData = config.getUserData();
    if (userData != null && userData.length > 0) {
      params.put("UserData", new String(Base64.encodeBase64(userData)));
    }
    params.put("AddressingType", "public");
    String keyName = config.getKeyName();
    if (keyName != null && !keyName.trim().equals("")) {
      params.put("KeyName", keyName);
    }

    if (config.getSecurityGroup() != null) {
      for (int i = 0; i < config.getSecurityGroup().size(); i++) {
        params.put("SecurityGroup." + (i + 1), config.getSecurityGroup().get(i));
      }
    }
    params.put("InstanceType", config.getInstanceType().getTypeId());
    if (config.getAvailabilityZone() != null && !config.getAvailabilityZone().trim().equals("")) {
      params.put("Placement.AvailabilityZone", config.getAvailabilityZone());
    }
    if (config.getKernelId() != null && !config.getKernelId().trim().equals("")) {
      params.put("KernelId", config.getKernelId());
    }
    if (config.getRamdiskId() != null && !config.getRamdiskId().trim().equals("")) {
      params.put("RamdiskId", config.getRamdiskId());
    }
    if (config.getBlockDevicemappings() != null) {
      for (int i = 0; i < config.getBlockDevicemappings().size(); i++) {
        BlockDeviceMapping bdm = config.getBlockDevicemappings().get(i);
        params.put("BlockDeviceMapping." + (i + 1) + ".VirtualName", bdm.getVirtualName());
        params.put("BlockDeviceMapping." + (i + 1) + ".DeviceName", bdm.getDeviceName());
      }
    }

    HttpGet method = new HttpGet();
    //	CreateLaunchConfigurationResponse response =
    makeRequestInt(
        method, "CreateLaunchConfiguration", params, CreateLaunchConfigurationResponse.class);
  }
  public Request<CreateInstanceRequest> marshall(CreateInstanceRequest createInstanceRequest) {
    if (createInstanceRequest == null) {
      throw new AmazonClientException("Invalid argument passed to marshall(...)");
    }

    Request<CreateInstanceRequest> request =
        new DefaultRequest<CreateInstanceRequest>(createInstanceRequest, "AWSOpsWorks");
    String target = "OpsWorks_20130218.CreateInstance";
    request.addHeader("X-Amz-Target", target);

    request.setHttpMethod(HttpMethodName.POST);
    request.setResourcePath("");

    try {
      StringWriter stringWriter = new StringWriter();
      JSONWriter jsonWriter = new JSONWriter(stringWriter);

      jsonWriter.object();

      if (createInstanceRequest.getStackId() != null) {
        jsonWriter.key("StackId").value(createInstanceRequest.getStackId());
      }

      com.amazonaws.internal.ListWithAutoConstructFlag<String> layerIdsList =
          (com.amazonaws.internal.ListWithAutoConstructFlag<String>)
              (createInstanceRequest.getLayerIds());
      if (layerIdsList != null && !(layerIdsList.isAutoConstruct() && layerIdsList.isEmpty())) {

        jsonWriter.key("LayerIds");
        jsonWriter.array();

        for (String layerIdsListValue : layerIdsList) {
          if (layerIdsListValue != null) {
            jsonWriter.value(layerIdsListValue);
          }
        }
        jsonWriter.endArray();
      }
      if (createInstanceRequest.getInstanceType() != null) {
        jsonWriter.key("InstanceType").value(createInstanceRequest.getInstanceType());
      }
      if (createInstanceRequest.getAutoScalingType() != null) {
        jsonWriter.key("AutoScalingType").value(createInstanceRequest.getAutoScalingType());
      }
      if (createInstanceRequest.getHostname() != null) {
        jsonWriter.key("Hostname").value(createInstanceRequest.getHostname());
      }
      if (createInstanceRequest.getOs() != null) {
        jsonWriter.key("Os").value(createInstanceRequest.getOs());
      }
      if (createInstanceRequest.getAmiId() != null) {
        jsonWriter.key("AmiId").value(createInstanceRequest.getAmiId());
      }
      if (createInstanceRequest.getSshKeyName() != null) {
        jsonWriter.key("SshKeyName").value(createInstanceRequest.getSshKeyName());
      }
      if (createInstanceRequest.getAvailabilityZone() != null) {
        jsonWriter.key("AvailabilityZone").value(createInstanceRequest.getAvailabilityZone());
      }
      if (createInstanceRequest.getVirtualizationType() != null) {
        jsonWriter.key("VirtualizationType").value(createInstanceRequest.getVirtualizationType());
      }
      if (createInstanceRequest.getSubnetId() != null) {
        jsonWriter.key("SubnetId").value(createInstanceRequest.getSubnetId());
      }
      if (createInstanceRequest.getArchitecture() != null) {
        jsonWriter.key("Architecture").value(createInstanceRequest.getArchitecture());
      }
      if (createInstanceRequest.getRootDeviceType() != null) {
        jsonWriter.key("RootDeviceType").value(createInstanceRequest.getRootDeviceType());
      }

      com.amazonaws.internal.ListWithAutoConstructFlag<BlockDeviceMapping> blockDeviceMappingsList =
          (com.amazonaws.internal.ListWithAutoConstructFlag<BlockDeviceMapping>)
              (createInstanceRequest.getBlockDeviceMappings());
      if (blockDeviceMappingsList != null
          && !(blockDeviceMappingsList.isAutoConstruct() && blockDeviceMappingsList.isEmpty())) {

        jsonWriter.key("BlockDeviceMappings");
        jsonWriter.array();

        for (BlockDeviceMapping blockDeviceMappingsListValue : blockDeviceMappingsList) {
          if (blockDeviceMappingsListValue != null) {
            jsonWriter.object();
            if (blockDeviceMappingsListValue.getDeviceName() != null) {
              jsonWriter.key("DeviceName").value(blockDeviceMappingsListValue.getDeviceName());
            }
            if (blockDeviceMappingsListValue.getNoDevice() != null) {
              jsonWriter.key("NoDevice").value(blockDeviceMappingsListValue.getNoDevice());
            }
            if (blockDeviceMappingsListValue.getVirtualName() != null) {
              jsonWriter.key("VirtualName").value(blockDeviceMappingsListValue.getVirtualName());
            }
            EbsBlockDevice ebs = blockDeviceMappingsListValue.getEbs();
            if (ebs != null) {

              jsonWriter.key("Ebs");
              jsonWriter.object();

              if (ebs.getSnapshotId() != null) {
                jsonWriter.key("SnapshotId").value(ebs.getSnapshotId());
              }
              if (ebs.getIops() != null) {
                jsonWriter.key("Iops").value(ebs.getIops());
              }
              if (ebs.getVolumeSize() != null) {
                jsonWriter.key("VolumeSize").value(ebs.getVolumeSize());
              }
              if (ebs.getVolumeType() != null) {
                jsonWriter.key("VolumeType").value(ebs.getVolumeType());
              }
              if (ebs.isDeleteOnTermination() != null) {
                jsonWriter.key("DeleteOnTermination").value(ebs.isDeleteOnTermination());
              }
              jsonWriter.endObject();
            }
            jsonWriter.endObject();
          }
        }
        jsonWriter.endArray();
      }
      if (createInstanceRequest.isInstallUpdatesOnBoot() != null) {
        jsonWriter
            .key("InstallUpdatesOnBoot")
            .value(createInstanceRequest.isInstallUpdatesOnBoot());
      }
      if (createInstanceRequest.isEbsOptimized() != null) {
        jsonWriter.key("EbsOptimized").value(createInstanceRequest.isEbsOptimized());
      }
      if (createInstanceRequest.getAgentVersion() != null) {
        jsonWriter.key("AgentVersion").value(createInstanceRequest.getAgentVersion());
      }

      jsonWriter.endObject();

      String snippet = stringWriter.toString();
      byte[] content = snippet.getBytes(UTF8);
      request.setContent(new StringInputStream(snippet));
      request.addHeader("Content-Length", Integer.toString(content.length));
      request.addHeader("Content-Type", "application/x-amz-json-1.1");
    } catch (Throwable t) {
      throw new AmazonClientException("Unable to marshall request to JSON: " + t.getMessage(), t);
    }

    return request;
  }