Example usage for com.amazonaws.services.opsworks.model CreateDeploymentRequest CreateDeploymentRequest

List of usage examples for com.amazonaws.services.opsworks.model CreateDeploymentRequest CreateDeploymentRequest

Introduction

In this page you can find the example usage for com.amazonaws.services.opsworks.model CreateDeploymentRequest CreateDeploymentRequest.

Prototype

CreateDeploymentRequest

Source Link

Usage

From source file:com.tispr.aws.OpsWorksClient.java

License:Apache License

protected Deployment deploy(App app, List<String> instanceIds, String comment, String revision, boolean noWait)
        throws ExecutionException, InterruptedException {
    DeploymentCommand command = new DeploymentCommand().withName(DeploymentCommandName.Deploy);

    CreateDeploymentRequest deployReq = new CreateDeploymentRequest().withAppId(app.getAppId())
            .withStackId(app.getStackId()).withCommand(command);

    if (instanceIds != null && !instanceIds.isEmpty()) {
        deployReq.withInstanceIds(instanceIds);
    }/*from   ww w. java2  s .  c o  m*/

    if (comment != null && !comment.isEmpty()) {
        deployReq.withComment(comment);
    }

    if (revision != null && !revision.isEmpty()) {
        String customJson = String.format(
                "{\"deploy\":{\"%s\":{\"migrate\":false,\"scm\":{\"revision\":\"%s\"}}}}", app.getShortname(),
                revision);
        deployReq.withCustomJson(customJson);
    }

    CreateDeploymentResult deployRes = opsWorksClient.createDeployment(deployReq);

    String deploymentId = deployRes.getDeploymentId();
    Deployment deployment;
    int timeSpent = 0;

    while (timeSpent < DEPLOYMENT_TIMEOUT) {
        deployment = getDeployment(app.getAppId(), app.getStackId(), deploymentId);
        if (!deployment.getStatus().equals("running") || noWait) {
            return deployment;
        }

        Thread.sleep(DEPLOYMENT_CHECK_INTERVAL * 1000);
        timeSpent += DEPLOYMENT_CHECK_INTERVAL;
    }

    throw new IllegalStateException(
            String.format("Deployment [appId=%s], [stackId=%s], [deploymentId=%s] timed out.", app.getAppId(),
                    app.getStackId(), deploymentId));
}