Added checking of already created stacks to deploy pipeline

Change-Id: I192b6111639ef8d4824b955dc9f601c4128de9a5
diff --git a/lab-pipeline.groovy b/lab-pipeline.groovy
index 5a26ba5..b00c018 100644
--- a/lab-pipeline.groovy
+++ b/lab-pipeline.groovy
@@ -47,6 +47,7 @@
 salt = new com.mirantis.mk.Salt()
 test = new com.mirantis.mk.Test()
 
+_MAX_PERMITTED_STACKS = 2
 overwriteFile = "/srv/salt/reclass/classes/cluster/overwrite.yml"
 
 timestamps {
@@ -89,7 +90,15 @@
                     openstack.setupOpenstackVirtualenv(openstackEnv, openstackVersion)
                     openstackCloud = openstack.createOpenstackEnv(OPENSTACK_API_URL, OPENSTACK_API_CREDENTIALS, OPENSTACK_API_PROJECT)
                     openstack.getKeystoneToken(openstackCloud, openstackEnv)
-
+                    //
+                    // Verify possibility of create stack for given user and stack type
+                    //
+                    wrap([$class: 'BuildUser']) {
+                        def existingStacks = openstack.getStacksForNameContains(openstackCloud, "${env.BUILD_USER_ID}-${JOB_NAME}", openstackEnv)
+                        if(existingStacks.size() > _MAX_PERMITTED_STACKS){
+                            throw new Exception("You cannot create new stack, you already have ${_MAX_PERMITTED_STACKS} stacks of this type (${JOB_NAME}). \nStack names: ${existingStacks}")
+                        }
+                    }
                     // launch stack
                     if (HEAT_STACK_REUSE.toBoolean() == false) {
                         stage('Launch new Heat stack') {