a lot of changes
diff --git a/wally/start_vms.py b/wally/start_vms.py
index 0bd2b9a..7e1c687 100644
--- a/wally/start_vms.py
+++ b/wally/start_vms.py
@@ -5,7 +5,7 @@
 import logging
 import subprocess
 
-from concurrent.futures import ThreadPoolExecutor
+from concurrent.futures import ThreadPoolExecutor, wait
 
 from novaclient.exceptions import NotFound
 from novaclient.client import Client as n_client
@@ -23,6 +23,10 @@
 CINDER_CONNECTION = None
 
 
+def is_connected():
+    return NOVA_CONNECTION is not None
+
+
 def ostack_get_creds():
     if STORED_OPENSTACK_CREDS is None:
         env = os.environ.get
@@ -119,6 +123,42 @@
                         break
 
 
+def pause(ids):
+    def pause_vm(conn, vm_id):
+        vm = conn.servers.get(vm_id)
+        if vm.status == 'ACTIVE':
+            vm.pause()
+
+    conn = nova_connect()
+    with ThreadPoolExecutor(max_workers=16) as executor:
+        futures = [executor.submit(pause_vm, conn, vm_id)
+                   for vm_id in ids]
+        for future in futures:
+            future.result()
+
+
+def unpause(ids, max_resume_time=10):
+    def unpause(conn, vm_id):
+        vm = conn.servers.get(vm_id)
+        if vm.status == 'PAUSED':
+            vm.unpause()
+
+        for i in range(max_resume_time * 10):
+            vm = conn.servers.get(vm_id)
+            if vm.status != 'PAUSED':
+                return
+            time.sleep(0.1)
+        raise RuntimeError("Can't unpause vm {0}".format(vm_id))
+
+    conn = nova_connect()
+    with ThreadPoolExecutor(max_workers=16) as executor:
+        futures = [executor.submit(unpause, conn, vm_id)
+                   for vm_id in ids]
+
+        for future in futures:
+            future.result()
+
+
 def prepare_os(nova, params):
     allow_ssh(nova, params['security_group'])
 
@@ -253,7 +293,8 @@
 def launch_vms(params, already_has_count=0):
     logger.debug("Starting new nodes on openstack")
     count = params['count']
-    lst = NOVA_CONNECTION.services.list(binary='nova-compute')
+    nova = nova_connect()
+    lst = nova.services.list(binary='nova-compute')
     srv_count = len([srv for srv in lst if srv.status == 'enabled'])
 
     if isinstance(count, basestring):