package tw.com;
import com.amazonaws.services.cloudformation.model.StackStatus;
import static org.junit.Assert.assertTrue;
public class CLIArgBuilder {
private static final String region = EnvironmentSetupForTests.getRegion().toString();
public static void checkForExpectedLine(String stackName, String project,
String env, String result) {
//String result = stream.toString();
String lines[] = result.split("\\r?\\n");
boolean found=false;
for(String line : lines) {
found = line.equals(String.format("%s\t%s\t%s\t%s",stackName, project, env, StackStatus.CREATE_COMPLETE.toString()));
if (found) break;
}
assertTrue(found);
}
public static String[] createSimpleStack(String testName) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SIMPLE_STACK,
"-comment", testName
};
}
public static String[] createIAMStack(String testName) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-capabilityIAM",
"-file", FilesForTesting.STACK_IAM_CAP,
"-comment", testName
};
}
public static String[] createSubnetStack(String testName) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SUBNET_STACK,
"-comment", testName
};
}
public static String[] createSubnetStackWithZones(String testName) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SIMPLE_STACK_WITH_AZ,
"-comment", testName
};
}
public static String[] updateSimpleStack(String testName, String sns) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SUBNET_STACK_DELTA,
sns,
"-comment", testName
};
}
public static String[] createSimpleStackWithSNS(String testName) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SIMPLE_STACK,
"-sns",
"-comment", testName
};
}
public static String[] createSimpleStackWithBuildNumber(String testName, String buildNumber) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SIMPLE_STACK,
"-build", buildNumber,
"-comment", testName
};
}
public static String[] deleteSimpleStackWithBuildNumber(String buildNumber) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-delete", FilesForTesting.SIMPLE_STACK,
"-build", buildNumber
};
}
public static String[] deleteByNameSimpleStackWithBuildNumber(String name, String buildNumber) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-rm", name,
"-build", buildNumber
};
}
public static String[] deleteSimpleStack() {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-delete", FilesForTesting.SIMPLE_STACK
};
}
public static String[] deleteByNameSimpleStack(String name) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-rm", name
};
}
public static String[] listStacks() {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-ls"
};
}
public static String[] listInstances() {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-instances"
};
}
public static String[] createDiagrams(String folder) {
return new String[]{
"-region", region,
"-diagrams", folder
};
}
public static String[] createSubnetStackWithParams(String testName) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SUBNET_WITH_PARAM,
"-parameters", "zoneA=eu-west-1a",
"-comment", testName
};
}
public static String[] deployFromDir(String orderedScriptsFolder,
String sns, String testName) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-dir", orderedScriptsFolder,
"-comment", testName,
sns
};
}
@Deprecated
public static String[] rollbackFromDir(String orderedScriptsFolder, String sns) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-rollback", orderedScriptsFolder,
sns
};
}
public static String[] purge(String sns) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-purge",
sns
};
}
@Deprecated
public static String[] stepback(String orderedScriptsFolder, String sns) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-stepback", orderedScriptsFolder,
sns
};
}
public static String[] back(String sns) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-back",
sns
};
}
public static String[] updateELB(String typeTag, Integer buildNumber) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-build", buildNumber.toString(),
"-elbUpdate", typeTag
};
}
public static String[] whitelistCurrentIP(String type, Integer port) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-whitelist", type, port.toString()
};
}
public static String[] blacklistCurrentIP(String type, Integer port) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-blacklist", type, port.toString()
};
}
public static String[] tidyNonLBAssociatedStacks() {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-tidyOldStacks", FilesForTesting.SIMPLE_STACK, "typeTag"
};
}
public static String[] createSubnetStackWithArtifactUpload(Integer buildNumber, String testName) {
String uploads = String.format("urlA=%s;urlB=%s", FilesForTesting.ACL, FilesForTesting.SUBNET_STACK);
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-file", FilesForTesting.SUBNET_WITH_S3_PARAM,
"-artifacts", uploads,
"-build", buildNumber.toString(),
"-bucket", EnvironmentSetupForTests.BUCKET_NAME,
"-sns",
"-comment", testName
};
}
public static String[] uploadArtifacts(Integer buildNumber) {
String artifacts = String.format("art1=%s;art2=%s", FilesForTesting.ACL, FilesForTesting.SUBNET_STACK);
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-s3create",
"-artifacts", artifacts,
"-bucket", EnvironmentSetupForTests.BUCKET_NAME,
"-build", buildNumber.toString()
};
}
public static String[] createSSHCommand(String user) {
if (user.isEmpty()) {
return new String[] {
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-ssh"
};
} else {
return new String[] {
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-ssh", user
};
}
}
public static String[] createKeyPair(String filename) {
if (filename.isEmpty()) {
return new String[] {
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-keypair"
};
} else {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-keypair", filename
};
}
}
public static String[] deleteArtifacts(Integer buildNumber, String filenameA, String filenameB) {
String artifacts = String.format("art1=%s;art2=%s", filenameA, filenameB);
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-s3delete",
"-artifacts", artifacts,
"-bucket", EnvironmentSetupForTests.BUCKET_NAME,
"-build", buildNumber.toString()
};
}
public static String[] tagVPC(String tagName, String tagValue) {
return new String[]{
"-env", EnvironmentSetupForTests.ENV,
"-project", EnvironmentSetupForTests.PROJECT,
"-region", region,
"-tag", tagName, tagValue
};
}
public static String[] initVPC(String env, String project, String vpcId) {
return new String[]{
"-env", env,
"-project", project,
"-region", region,
"-init", vpcId
};
}
}