Initial checkin of Stress Test for nova.

Change-Id: I1c4c656e3b8ec715524d369c226ec122920f89fb
diff --git a/stress/pending_action.py b/stress/pending_action.py
new file mode 100644
index 0000000..913cc42
--- /dev/null
+++ b/stress/pending_action.py
@@ -0,0 +1,65 @@
+# Copyright 2011 Quanta Research Cambridge, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License");
+#    you may not use this file except in compliance with the License.
+#    You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License 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.
+"""Describe follow-up actions using `PendingAction` class to verify
+that nova API calls such as create/delete are completed"""
+
+
+import logging
+import time
+
+
+class PendingAction(object):
+    """
+    Initialize and describe actions to verify that a Nova API call
+    is successful.
+    """
+
+    def __init__(self, nova_manager, state, target_server, timeout=600):
+        """
+        `nova_manager` : Manager object.
+        `state`           : externally maintained data structure about
+                            state of VMs or other persistent objects in
+                            the nova cluster
+        `target_server`   : server that actions were performed on
+        `target_server`   : time before we declare a TimeoutException
+        `pargs`           : positional arguments
+        `kargs`           : keyword arguments
+        """
+        self._manager = nova_manager
+        self._state = state
+        self._target = target_server
+
+        self._logger = logging.getLogger(self.__class__.__name__)
+        self._start_time = time.time()
+        self._timeout = timeout
+
+    def _check_for_status(self, state_string):
+        """Check to see if the machine has transitioned states"""
+        t = time.time()  # for debugging
+        target = self._target
+        _resp, body = self._manager.servers_client.get_server(target['id'])
+        if body['status'] != state_string:
+            # grab the actual state as we think it is
+            temp_obj = self._state.get_instances()[target['id']]
+            self._logger.debug("machine %s in state %s" %
+                               (target['id'], temp_obj[1]))
+            self._logger.debug('%s, time: %d' % (temp_obj[1], time.time() - t))
+            return temp_obj[1]
+        self._logger.debug('%s, time: %d' % (state_string, time.time() - t))
+        return state_string
+
+    def retry(self):
+        """Invoked by user of this class to verify completion of"""
+        """previous TestCase actions"""
+        return False