Fix and simplify reboot stress test. Add new env stuff.

Added stress environment var for max_instances.
Added tempest var for log_level of rest_client.

Change-Id: Ia92536a547cdab4d2496bd9ba9067be3595b79cd

xxxxx

Change-Id: I8c2f499a41f74c2fe6fb08c80ab6fc31f6b93426
diff --git a/stress/test_server_actions.py b/stress/test_server_actions.py
index 3cf3698..7080630 100644
--- a/stress/test_server_actions.py
+++ b/stress/test_server_actions.py
@@ -25,7 +25,7 @@
 # local imports
 import test_case
 import pending_action
-from tempest.exceptions import TimeoutException
+from tempest.exceptions import TimeoutException, Duplicate
 from utils.util import *
 
 
@@ -52,51 +52,35 @@
             self._logger.info('no ACTIVE instances to reboot')
             return
 
-        _reboot_type = kwargs.get('type', 'SOFT')
+        _reboot_arg = kwargs.get('type', 'SOFT')
 
         # select active vm to reboot and then send request to nova controller
         target = random.choice(active_vms)
         reboot_target = target[0]
+        # It seems that doing a reboot when in reboot is an error.
+        try:
+            response, body = manager.servers_client.reboot(
+                                                           reboot_target['id'],
+                                                           _reboot_arg)
+        except Duplicate:
+            return
 
-        response, body = manager.servers_client.reboot(
-                                                          reboot_target['id'],
-                                                          _reboot_type)
         if (response.status != 202):
             self._logger.error("response: %s" % response)
             raise Exception
 
-        if _reboot_type == 'SOFT':
-            state_name = 'REBOOT'
+        if _reboot_arg == 'SOFT':
+            reboot_state = 'REBOOT'
         else:
-            state_name = 'REBOOT'  # this is a bug, should be HARD_REBOOT
+            reboot_state = 'HARD_REBOOT'
 
         self._logger.info('waiting for machine %s to change to %s' %
-                          (reboot_target['id'], state_name))
-
-        # check for state transition
-        _resp, body = manager.servers_client.get_server(reboot_target['id'])
-        if body['status'] == state_name:
-            state_string = state_name
-        else:
-            # grab the actual state as we think it is
-            temp_obj = state.get_instances()[self._target['id']]
-            self._logger.debug(
-                "machine %s in state %s" %
-                (reboot_target['id'], temp_obj[1])
-                )
-            state_string = temp_obj[1]
-
-        if state_string == state_name:
-            self._logger.info('machine %s ACTIVE -> %s' %
-                              (reboot_target['id'], state_name))
-            state.set_instance_state(reboot_target['id'],
-                                    (reboot_target, state_name))
+                          (reboot_target['id'], reboot_state))
 
         return VerifyRebootVM(manager,
                               state,
                               reboot_target,
-                              reboot_type=_reboot_type,
-                              state_name=state_string)
+                              reboot_state=reboot_state)
 
 
 class VerifyRebootVM(pending_action.PendingAction):
@@ -104,22 +88,13 @@
     States = enum('REBOOT_CHECK', 'ACTIVE_CHECK')
 
     def __init__(self, manager, state, target_server,
-                 reboot_type=None,
-                 state_name=None,
+                 reboot_state=None,
                  ip_addr=None):
         super(VerifyRebootVM, self).__init__(manager,
                                              state,
                                              target_server)
-        # FIX ME: this is a nova bug
-        if reboot_type == 'SOFT':
-            self._reboot_state = 'REBOOT'
-        else:
-            self._reboot_state = 'REBOOT'  # should be HARD REBOOT
-
-        if state_name == 'ACTIVE':  # was still active, check to see if REBOOT
-            self._retry_state = self.States.REBOOT_CHECK
-        else:  # was REBOOT, so now check for ACTIVE
-            self._retry_state = self.States.ACTIVE_CHECK
+        self._reboot_state = reboot_state
+        self._retry_state = self.States.REBOOT_CHECK
 
     def retry(self):
         """
@@ -155,8 +130,9 @@
             if not self._check_for_status('ACTIVE'):
                 return False
         target = self._target
-        self._logger.info('machine %s REBOOT -> ACTIVE [%.1f secs elapsed]' %
-                              (target['id'], time.time() - self._start_time))
+        self._logger.info('machine %s %s -> ACTIVE [%.1f secs elapsed]' %
+                              (target['id'], reboot_state,
+                                time.time() - self._start_time))
         self._state.set_instance_state(target['id'],
                                       (target, 'ACTIVE'))