Merge "Test case description and configuration file for yardstick_tc090:Control Node...
[yardstick.git] / yardstick / common / exceptions.py
index 9c0ec2c..8160c5b 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from oslo_utils import excutils
+
 
 class ProcessExecutionError(RuntimeError):
     def __init__(self, message, returncode):
         super(ProcessExecutionError, self).__init__(message)
         self.returncode = returncode
+
+
+class YardstickException(Exception):
+    """Base Yardstick Exception.
+
+    To correctly use this class, inherit from it and define
+    a 'message' property. That message will get printf'd
+    with the keyword arguments provided to the constructor.
+
+    Based on NeutronException class.
+    """
+    message = "An unknown exception occurred."
+
+    def __init__(self, **kwargs):
+        try:
+            super(YardstickException, self).__init__(self.message % kwargs)
+            self.msg = self.message % kwargs
+        except Exception:  # pylint: disable=broad-except
+            with excutils.save_and_reraise_exception() as ctxt:
+                if not self.use_fatal_exceptions():
+                    ctxt.reraise = False
+                    # at least get the core message out if something happened
+                    super(YardstickException, self).__init__(self.message)
+
+    def __str__(self):
+        return self.msg
+
+    def use_fatal_exceptions(self):
+        """Is the instance using fatal exceptions.
+
+        :returns: Always returns False.
+        """
+        return False
+
+
+class FunctionNotImplemented(YardstickException):
+    message = ('The function "%(function_name)s" is not implemented in '
+               '"%(class_name)" class.')
+
+
+class YardstickBannedModuleImported(YardstickException):
+    # pragma: no cover
+    message = 'Module "%(module)s" cannnot be imported. Reason: "%(reason)s"'
+
+
+class HeatTemplateError(YardstickException):
+    """Error in Heat during the stack deployment"""
+    message = ('Error in Heat during the creation of the OpenStack stack '
+               '"%(stack_name)s"')
+
+
+class IPv6RangeError(YardstickException):
+    message = 'Start IP "%(start_ip)s" is greater than end IP "%(end_ip)s"'
+
+
+class TrafficProfileNotImplemented(YardstickException):
+    message = 'No implementation for traffic profile %(profile_class)s.'
+
+
+class DPDKSetupDriverError(YardstickException):
+    message = '"igb_uio" driver is not loaded'
+
+
+class ScenarioConfigContextNameNotFound(YardstickException):
+    message = 'Context name "%(context_name)s" not found'
+
+
+class StackCreationInterrupt(YardstickException):
+    message = 'Stack create interrupted.'
+
+
+class TaskRenderArgumentError(YardstickException):
+    message = 'Error reading the task input arguments'
+
+
+class TaskReadError(YardstickException):
+    message = 'Failed to read task %(task_file)s'
+
+
+class TaskRenderError(YardstickException):
+    message = 'Failed to render template:\n%(input_task)s'
+
+
+class ScenarioCreateNetworkError(YardstickException):
+    message = 'Create Neutron Network Scenario failed'
+
+
+class ScenarioCreateSubnetError(YardstickException):
+    message = 'Create Neutron Subnet Scenario failed'
+
+
+class ScenarioDeleteRouterError(YardstickException):
+    message = 'Delete Neutron Router Scenario failed'
+
+
+class MissingPodInfoError(YardstickException):
+    message = 'Missing pod args, please check'
+
+
+class UnsupportedPodFormatError(YardstickException):
+    message = 'Failed to load pod info, unsupported format'
+
+
+class ScenarioCreateRouterError(YardstickException):
+    message = 'Create Neutron Router Scenario failed'