Added traffic update capability to Ixload TG
[yardstick.git] / yardstick / common / exceptions.py
index ec21c33..c9d61e4 100644 (file)
@@ -14,6 +14,8 @@
 
 from oslo_utils import excutils
 
+from yardstick.common import constants
+
 
 class ProcessExecutionError(RuntimeError):
     def __init__(self, message, returncode):
@@ -21,6 +23,16 @@ class ProcessExecutionError(RuntimeError):
         self.returncode = returncode
 
 
+class ErrorClass(object):
+
+    def __init__(self, *args, **kwargs):
+        if 'test' not in kwargs:
+            raise RuntimeError
+
+    def __getattr__(self, item):
+        raise AttributeError
+
+
 class YardstickException(Exception):
     """Base Yardstick Exception.
 
@@ -54,23 +66,46 @@ class YardstickException(Exception):
         return False
 
 
+class ResourceCommandError(YardstickException):
+    message = 'Command: "%(command)s" Failed, stderr: "%(stderr)s"'
+
+
+class ContextUpdateCollectdForNodeError(YardstickException):
+    message = 'Cannot find node %(attr_name)s'
+
+
 class FunctionNotImplemented(YardstickException):
     message = ('The function "%(function_name)s" is not implemented in '
                '"%(class_name)" class.')
 
 
+class InvalidType(YardstickException):
+    message = 'Type "%(type_to_convert)s" is not valid'
+
+
+class InvalidRxfFile(YardstickException):
+    message = 'Loaded rxf file has unexpected format'
+
+
+class InfluxDBConfigurationMissing(YardstickException):
+    message = ('InfluxDB configuration is not available. Add "influxdb" as '
+               'a dispatcher and the configuration section')
+
+
 class YardstickBannedModuleImported(YardstickException):
-    # pragma: no cover
     message = 'Module "%(module)s" cannnot be imported. Reason: "%(reason)s"'
 
 
+class IXIAUnsupportedProtocol(YardstickException):
+    message = 'Protocol "%(protocol)" is not supported in IXIA'
+
+
 class PayloadMissingAttributes(YardstickException):
     message = ('Error instantiating a Payload class, missing attributes: '
                '%(missing_attributes)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"')
 
@@ -83,6 +118,10 @@ class TrafficProfileNotImplemented(YardstickException):
     message = 'No implementation for traffic profile %(profile_class)s.'
 
 
+class TrafficProfileRate(YardstickException):
+    message = 'Traffic profile rate must be "<number>[fps|%]"'
+
+
 class DPDKSetupDriverError(YardstickException):
     message = '"igb_uio" driver is not loaded'
 
@@ -128,8 +167,28 @@ class LibvirtQemuImageCreateError(YardstickException):
                '%(base_image)s. Error: %(error)s.')
 
 
+class SSHError(YardstickException):
+    message = '%(error_msg)s'
+
+
+class SSHTimeout(SSHError):
+    pass
+
+
+class IncorrectConfig(YardstickException):
+    message = '%(error_msg)s'
+
+
+class IncorrectSetup(YardstickException):
+    message = '%(error_msg)s'
+
+
+class IncorrectNodeSetup(IncorrectSetup):
+    pass
+
+
 class ScenarioConfigContextNameNotFound(YardstickException):
-    message = 'Context name "%(context_name)s" not found'
+    message = 'Context for host name "%(host_name)s" not found'
 
 
 class StackCreationInterrupt(YardstickException):
@@ -148,6 +207,88 @@ class TaskRenderError(YardstickException):
     message = 'Failed to render template:\n%(input_task)s'
 
 
+class RunnerIterationIPCSetupActionNeeded(YardstickException):
+    message = ('IterationIPC needs the "setup" action to retrieve the VNF '
+               'handling processes PIDs to receive the messages sent')
+
+
+class RunnerIterationIPCNoCtxs(YardstickException):
+    message = 'Benchmark "setup" action did not return any VNF process PID'
+
+
+class TimerTimeout(YardstickException):
+    message = 'Timer timeout expired, %(timeout)s seconds'
+
+
+class WaitTimeout(YardstickException):
+    message = 'Wait timeout while waiting for condition'
+
+
+class PktgenActionError(YardstickException):
+    message = 'Error in "%(action)s" action'
+
+
+class KubernetesApiException(YardstickException):
+    message = ('Kubernetes API errors. Action: %(action)s, '
+               'resource: %(resource)s')
+
+
+class KubernetesConfigFileNotFound(YardstickException):
+    message = 'Config file (%s) not found' % constants.K8S_CONF_FILE
+
+
+class KubernetesTemplateInvalidVolumeType(YardstickException):
+    message = 'No valid "volume" types present in %(volume)s'
+
+
+class KubernetesSSHPortNotDefined(YardstickException):
+    message = 'Port 22 needs to be defined'
+
+
+class KubernetesServiceObjectNotDefined(YardstickException):
+    message = 'ServiceObject is not defined'
+
+
+class KubernetesServiceObjectDefinitionError(YardstickException):
+    message = ('Kubernetes Service object definition error, missing '
+               'parameters: %(missing_parameters)s')
+
+
+class KubernetesServiceObjectNameError(YardstickException):
+    message = ('Kubernetes Service object name "%(name)s" does not comply'
+               'naming convention')
+
+
+class KubernetesCRDObjectDefinitionError(YardstickException):
+    message = ('Kubernetes Custom Resource Definition Object error, missing '
+               'parameters: %(missing_parameters)s')
+
+
+class KubernetesNetworkObjectDefinitionError(YardstickException):
+    message = ('Kubernetes Network object definition error, missing '
+               'parameters: %(missing_parameters)s')
+
+
+class KubernetesNetworkObjectKindMissing(YardstickException):
+    message = 'Kubernetes kind "Network" is not defined'
+
+
+class KubernetesWrongRestartPolicy(YardstickException):
+    message = 'Restart policy "%(rpolicy)s" is not valid'
+
+
+class KubernetesContainerPortNotDefined(YardstickException):
+    message = 'Container port not defined in "%(port)s"'
+
+
+class KubernetesContainerWrongImagePullPolicy(YardstickException):
+    message = 'Image pull policy must be "Always", "IfNotPresent" or "Never"'
+
+
+class KubernetesContainerCommandType(YardstickException):
+    message = '"args" and "command" must be string or list of strings'
+
+
 class ScenarioCreateNetworkError(YardstickException):
     message = 'Create Neutron Network Scenario failed'
 
@@ -190,3 +331,96 @@ class ScenarioCreateSecurityGroupError(YardstickException):
 
 class ScenarioDeleteNetworkError(YardstickException):
     message = 'Delete Neutron Network Scenario failed'
+
+
+class ScenarioCreateServerError(YardstickException):
+    message = 'Nova Create Server Scenario failed'
+
+
+class ScenarioDeleteServerError(YardstickException):
+    message = 'Delete Server Scenario failed'
+
+
+class ScenarioCreateKeypairError(YardstickException):
+    message = 'Nova Create Keypair Scenario failed'
+
+
+class ScenarioDeleteKeypairError(YardstickException):
+    message = 'Nova Delete Keypair Scenario failed'
+
+
+class ScenarioAttachVolumeError(YardstickException):
+    message = 'Nova Attach Volume Scenario failed'
+
+
+class ScenarioGetServerError(YardstickException):
+    message = 'Nova Get Server Scenario failed'
+
+
+class ScenarioGetFlavorError(YardstickException):
+    message = 'Nova Get Falvor Scenario failed'
+
+
+class ScenarioCreateVolumeError(YardstickException):
+    message = 'Cinder Create Volume Scenario failed'
+
+
+class ScenarioDeleteVolumeError(YardstickException):
+    message = 'Cinder Delete Volume Scenario failed'
+
+
+class ScenarioDetachVolumeError(YardstickException):
+    message = 'Cinder Detach Volume Scenario failed'
+
+
+class ApiServerError(YardstickException):
+    message = 'An unkown exception happened to Api Server!'
+
+
+class UploadOpenrcError(ApiServerError):
+    message = 'Upload openrc ERROR!'
+
+
+class UpdateOpenrcError(ApiServerError):
+    message = 'Update openrc ERROR!'
+
+
+class ScenarioCreateImageError(YardstickException):
+    message = 'Glance Create Image Scenario failed'
+
+
+class ScenarioDeleteImageError(YardstickException):
+    message = 'Glance Delete Image Scenario failed'
+
+
+class IxNetworkClientNotConnected(YardstickException):
+    message = 'IxNetwork client not connected to a TCL server'
+
+
+class IxNetworkFlowNotPresent(YardstickException):
+    message = 'Flow Group "%(flow_group)s" is not present'
+
+
+class IxNetworkFieldNotPresentInStackItem(YardstickException):
+    message = 'Field "%(field_name)s" not present in stack item %(stack_item)s'
+
+
+class SLAValidationError(YardstickException):
+    message = '%(case_name)s SLA validation failed. Error: %(error_msg)s'
+
+
+class AclMissingActionArguments(YardstickException):
+    message = ('Missing ACL action parameter '
+               '[action=%(action_name)s parameter=%(action_param)s]')
+
+
+class AclUnknownActionTemplate(YardstickException):
+    message = 'No ACL CLI template found for "%(action_name)s" action'
+
+
+class InvalidMacAddress(YardstickException):
+    message = 'Mac address "%(mac_address)s" is invalid'
+
+
+class ValueCheckError(YardstickException):
+    message = 'Constraint "%(value1)s %(operator)s %(value2)s" does not hold'