add deleteStack for aws class
Change-Id: I72711fd8d653a1f85531d8e82041a43ab7228bfd
diff --git a/src/com/mirantis/mk/Aws.groovy b/src/com/mirantis/mk/Aws.groovy
index c62ff1e..113033d 100644
--- a/src/com/mirantis/mk/Aws.groovy
+++ b/src/com/mirantis/mk/Aws.groovy
@@ -48,6 +48,16 @@
}
}
+def deleteStack(venv_path, env_vars, stack_name) {
+ def python = new com.mirantis.mk.Python()
+
+ def cmd = "aws cloudformation delete-stack --stack-name ${stack_name}"
+
+ withEnv(env_vars) {
+ def out = python.runVirtualenvCommand(venv_path, cmd)
+ }
+}
+
def describeStack(venv_path, env_vars, stack_name) {
def python = new com.mirantis.mk.Python()
def common = new com.mirantis.mk.Common()
@@ -64,7 +74,7 @@
}
}
-def waitForStatus(venv_path, env_vars, stack_name, state, max_timeout = 600, loop_sleep = 30) {
+def waitForStatus(venv_path, env_vars, stack_name, state, state_failed = [], max_timeout = 600, loop_sleep = 30) {
def aws = new com.mirantis.mk.Aws()
def common = new com.mirantis.mk.Common()
def python = new com.mirantis.mk.Python()
@@ -76,12 +86,18 @@
def stack_info = aws.describeStack(venv_path, env_vars, stack_name)
common.infoMsg('Stack status is ' + stack_info['StackStatus'])
+ // check for desired state
if (stack_info['StackStatus'] == state) {
common.successMsg("Stack ${stack_name} in in state ${state}")
common.prettyPrint(stack_info)
break
}
+ // check for failed state
+ if (stack_failed.contains(stack_info['StackStatus'])) {
+ throw new Exception("Stack ${stack_name} in in failed state")
+ }
+
// wait for next loop
sleep(loop_sleep)
}