Merge "Replace neutron create security group rule with shade."
[yardstick.git] / yardstick / common / exceptions.py
1 # Copyright (c) 2017 Intel Corporation
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #      http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 from oslo_utils import excutils
16
17
18 class ProcessExecutionError(RuntimeError):
19     def __init__(self, message, returncode):
20         super(ProcessExecutionError, self).__init__(message)
21         self.returncode = returncode
22
23
24 class YardstickException(Exception):
25     """Base Yardstick Exception.
26
27     To correctly use this class, inherit from it and define
28     a 'message' property. That message will get printf'd
29     with the keyword arguments provided to the constructor.
30
31     Based on NeutronException class.
32     """
33     message = "An unknown exception occurred."
34
35     def __init__(self, **kwargs):
36         try:
37             super(YardstickException, self).__init__(self.message % kwargs)
38             self.msg = self.message % kwargs
39         except Exception:  # pylint: disable=broad-except
40             with excutils.save_and_reraise_exception() as ctxt:
41                 if not self.use_fatal_exceptions():
42                     ctxt.reraise = False
43                     # at least get the core message out if something happened
44                     super(YardstickException, self).__init__(self.message)
45
46     def __str__(self):
47         return self.msg
48
49     def use_fatal_exceptions(self):
50         """Is the instance using fatal exceptions.
51
52         :returns: Always returns False.
53         """
54         return False
55
56
57 class FunctionNotImplemented(YardstickException):
58     message = ('The function "%(function_name)s" is not implemented in '
59                '"%(class_name)" class.')
60
61
62 class YardstickBannedModuleImported(YardstickException):
63     # pragma: no cover
64     message = 'Module "%(module)s" cannnot be imported. Reason: "%(reason)s"'
65
66
67 class HeatTemplateError(YardstickException):
68     """Error in Heat during the stack deployment"""
69     message = ('Error in Heat during the creation of the OpenStack stack '
70                '"%(stack_name)s"')
71
72
73 class IPv6RangeError(YardstickException):
74     message = 'Start IP "%(start_ip)s" is greater than end IP "%(end_ip)s"'
75
76
77 class TrafficProfileNotImplemented(YardstickException):
78     message = 'No implementation for traffic profile %(profile_class)s.'
79
80
81 class DPDKSetupDriverError(YardstickException):
82     message = '"igb_uio" driver is not loaded'
83
84
85 class OVSUnsupportedVersion(YardstickException):
86     message = ('Unsupported OVS version "%(ovs_version)s". Please check the '
87                'config. OVS to DPDK version map: %(ovs_to_dpdk_map)s.')
88
89
90 class OVSHugepagesInfoError(YardstickException):
91     message = 'MemInfo cannnot be retrieved.'
92
93
94 class OVSHugepagesNotConfigured(YardstickException):
95     message = 'HugePages are not configured in this system.'
96
97
98 class OVSHugepagesZeroFree(YardstickException):
99     message = ('There are no HugePages free in this system. Total HugePages '
100                'configured: %(total_hugepages)s')
101
102
103 class OVSDeployError(YardstickException):
104     message = 'OVS deploy tool failed with error: %(stderr)s.'
105
106
107 class OVSSetupError(YardstickException):
108     message = 'OVS setup error. Command: %(command)s. Error: %(error)s.'
109
110
111 class LibvirtCreateError(YardstickException):
112     message = 'Error creating the virtual machine. Error: %(error)s.'
113
114
115 class ScenarioConfigContextNameNotFound(YardstickException):
116     message = 'Context name "%(context_name)s" not found'
117
118
119 class StackCreationInterrupt(YardstickException):
120     message = 'Stack create interrupted.'
121
122
123 class TaskRenderArgumentError(YardstickException):
124     message = 'Error reading the task input arguments'
125
126
127 class TaskReadError(YardstickException):
128     message = 'Failed to read task %(task_file)s'
129
130
131 class TaskRenderError(YardstickException):
132     message = 'Failed to render template:\n%(input_task)s'
133
134
135 class ScenarioCreateNetworkError(YardstickException):
136     message = 'Create Neutron Network Scenario failed'
137
138
139 class ScenarioCreateSubnetError(YardstickException):
140     message = 'Create Neutron Subnet Scenario failed'
141
142
143 class ScenarioDeleteRouterError(YardstickException):
144     message = 'Delete Neutron Router Scenario failed'
145
146
147 class MissingPodInfoError(YardstickException):
148     message = 'Missing pod args, please check'
149
150
151 class UnsupportedPodFormatError(YardstickException):
152     message = 'Failed to load pod info, unsupported format'
153
154
155 class ScenarioCreateRouterError(YardstickException):
156     message = 'Create Neutron Router Scenario failed'
157
158
159 class ScenarioRemoveRouterIntError(YardstickException):
160     message = 'Remove Neutron Router Interface Scenario failed'
161
162
163 class ScenarioCreateFloatingIPError(YardstickException):
164     message = 'Create Neutron Floating IP Scenario failed'
165
166
167 class ScenarioDeleteFloatingIPError(YardstickException):
168     message = 'Delete Neutron Floating IP Scenario failed'