/*
* Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.services.simpleworkflow.flow.examples.deployment;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import org.apache.log4j.PropertyConfigurator;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DeploymentInitiator {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
URL pUrl = DeploymentHost.class.getResource("/com/amazonaws/services/simpleworkflow/flow/examples/log4j.properties");
PropertyConfigurator.configure(pUrl);
ApplicationContext appContext = new ClassPathXmlApplicationContext(
"/com/amazonaws/services/simpleworkflow/flow/examples/deployment/DeploymentInitiator-context.xml");
DeploymentWorkflowClientExternalFactory workflowFactory = appContext.getBean("workflowFactory",
DeploymentWorkflowClientExternalFactory.class);
String applicationStackConfigFile = args[0];
// Use applicationStackConfig as workflowId to prohibit running multiple deployments of the same stack in parallel
String workflowId = new File(applicationStackConfigFile).getName();
DeploymentWorkflowClientExternal worklfowClient = workflowFactory.getClient(workflowId);
String template = loadFile(applicationStackConfigFile);
worklfowClient.deploy(template);
System.out.println("Initiated deployment from " + applicationStackConfigFile);
}
public static String loadFile(String fileName) throws IOException {
int length = (int) new File(fileName).length();
byte[] buffer = new byte[length];
BufferedInputStream is = null;
try {
is = new BufferedInputStream(new FileInputStream(fileName));
is.read(buffer);
}
finally {
if (is != null) {
is.close();
}
}
return new String(buffer);
}
}