9bab0960b6
This change condenses the directory structure to something more similar to what we had before while producing similar packages. It also introduces version.py which allows us to get the version from git tags (or a fallback version if not available). Fixes lp bug 889336 Fixes lp bug 888795 Change-Id: I86136bd9dbabb5eb1f8366ed665ed9b54f695124
200 lines
6.9 KiB
Python
200 lines
6.9 KiB
Python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
#
|
|
# Copyright 2011 Cisco Systems, Inc. All rights reserved.
|
|
#
|
|
# 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.
|
|
#
|
|
# @author: Sumit Naiksatam, Cisco Systems, Inc.
|
|
# @author: Rohit Agarwalla, Cisco Systems, Inc.
|
|
|
|
"""
|
|
Exceptions used by the Cisco plugin
|
|
"""
|
|
from quantum.common import exceptions
|
|
|
|
|
|
class NoMoreNics(exceptions.QuantumException):
|
|
"""No more dynamic nics are available in the system"""
|
|
message = _("Unable to complete operation. No more dynamic nics are " \
|
|
"available in the system.")
|
|
|
|
|
|
class PortProfileLimit(exceptions.QuantumException):
|
|
"""Port profile limit has been hit"""
|
|
message = _("Unable to complete operation on port %(port_id)s " \
|
|
"for network %(net_id)s. The system has reached the maximum" \
|
|
"limit of allowed port profiles.")
|
|
|
|
|
|
class UCSMPortProfileLimit(exceptions.QuantumException):
|
|
"""UCSM Port profile limit has been hit"""
|
|
message = _("Unable to complete operation on port %(port_id)s " \
|
|
"for network %(net_id)s. The system has reached the maximum" \
|
|
"limit of allowed UCSM port profiles.")
|
|
|
|
|
|
class NetworksLimit(exceptions.QuantumException):
|
|
"""Total number of network objects limit has been hit"""
|
|
message = _("Unable to create new network. Number of networks" \
|
|
"for the system has exceeded the limit")
|
|
|
|
|
|
class PortProfileNotFound(exceptions.QuantumException):
|
|
"""Port profile cannot be found"""
|
|
message = _("Port profile %(portprofile_id)s could not be found " \
|
|
"for tenant %(tenant_id)s")
|
|
|
|
|
|
class MultiportNotFound(exceptions.QuantumException):
|
|
"""Multiport cannot be found"""
|
|
message = _("Multiports %(port_id)s could not be found " \
|
|
"for tenant %(tenant_id)s")
|
|
|
|
|
|
class PortProfileInvalidDelete(exceptions.QuantumException):
|
|
"""Port profile cannot be deleted since its being used"""
|
|
message = _("Port profile %(profile_id)s could not be deleted " \
|
|
"for tenant %(tenant_id)s since port associations exist")
|
|
|
|
|
|
class NetworkVlanBindingAlreadyExists(exceptions.QuantumException):
|
|
"""Binding cannot be created, since it already exists"""
|
|
message = _("NetworkVlanBinding for %(vlan_id)s and network " \
|
|
"%(network_id)s already exists")
|
|
|
|
|
|
class PortProfileAlreadyExists(exceptions.QuantumException):
|
|
"""Port profile cannot be created since it already exisits"""
|
|
message = _("PortProfile %(pp_name) for %(tenant_id)s " \
|
|
"already exists")
|
|
|
|
|
|
class PortProfileBindingAlreadyExists(exceptions.QuantumException):
|
|
"""Binding cannot be created, since it already exists"""
|
|
message = _("PortProfileBinding for port profile %(pp_id)s to " \
|
|
"port %(port_id) already exists")
|
|
|
|
|
|
class VlanIDNotFound(exceptions.QuantumException):
|
|
"""VLAN ID cannot be found"""
|
|
message = _("Vlan ID %(vlan_id)s not found")
|
|
|
|
|
|
class VlanIDNotAvailable(exceptions.QuantumException):
|
|
"""No VLAN ID available"""
|
|
message = _("No Vlan ID available")
|
|
|
|
|
|
class QosNotFound(exceptions.QuantumException):
|
|
"""QoS level with this ID cannot be found"""
|
|
message = _("QoS level %(qos_id)s could not be found " \
|
|
"for tenant %(tenant_id)s")
|
|
|
|
|
|
class QoSLevelInvalidDelete(exceptions.QuantumException):
|
|
"""QoS is associated with a port profile, hence cannot be deleted"""
|
|
message = _("QoS level %(qos_id)s could not be deleted " \
|
|
"for tenant %(tenant_id)s since association exists")
|
|
|
|
|
|
class QosNameAlreadyExists(exceptions.QuantumException):
|
|
"""QoS Name already exists"""
|
|
message = _("QoS level with name %(qos_name)s already exists " \
|
|
"for tenant %(tenant_id)s")
|
|
|
|
|
|
class CredentialNotFound(exceptions.QuantumException):
|
|
"""Credential with this ID cannot be found"""
|
|
message = _("Credential %(credential_id)s could not be found " \
|
|
"for tenant %(tenant_id)s")
|
|
|
|
|
|
class CredentialNameNotFound(exceptions.QuantumException):
|
|
"""Credential Name could not be found"""
|
|
message = _("Credential %(credential_name)s could not be found " \
|
|
"for tenant %(tenant_id)s")
|
|
|
|
|
|
class CredentialAlreadyExists(exceptions.QuantumException):
|
|
"""Credential ID already exists"""
|
|
message = _("Credential %(credential_id)s already exists " \
|
|
"for tenant %(tenant_id)s")
|
|
|
|
|
|
class NexusPortBindingNotFound(exceptions.QuantumException):
|
|
"""NexusPort Binding is not present"""
|
|
message = _("Nexus Port Binding %(port_id) is not present")
|
|
|
|
|
|
class UcsmBindingNotFound(exceptions.QuantumException):
|
|
"""Ucsm Binding is not present"""
|
|
message = _("Ucsm Binding with ip %(ucsm_ip) is not present")
|
|
|
|
|
|
class UcsmBindingAlreadyExists(exceptions.QuantumException):
|
|
"""Ucsm Binding already exists"""
|
|
message = _("Ucsm Binding with ip %(ucsm_ip) already exists")
|
|
|
|
|
|
class DynamicVnicNotFound(exceptions.QuantumException):
|
|
"""Ucsm Binding is not present"""
|
|
message = _("Dyanmic Vnic %(vnic_id) is not present")
|
|
|
|
|
|
class DynamicVnicAlreadyExists(exceptions.QuantumException):
|
|
"""Ucsm Binding already exists"""
|
|
message = _("Dynamic Vnic with name %(device_name) already exists")
|
|
|
|
|
|
class BladeNotFound(exceptions.QuantumException):
|
|
"""Blade is not present"""
|
|
message = _("Blade %(blade_id) is not present")
|
|
|
|
|
|
class BladeAlreadyExists(exceptions.QuantumException):
|
|
"""Blade already exists"""
|
|
message = _("Blade with mgmt_ip %(mgmt_ip) already exists")
|
|
|
|
|
|
class PortVnicBindingAlreadyExists(exceptions.QuantumException):
|
|
"""PortVnic Binding already exists"""
|
|
message = _("PortVnic Binding %(port_id) already exists")
|
|
|
|
|
|
class PortVnicNotFound(exceptions.QuantumException):
|
|
"""PortVnic Binding is not present"""
|
|
message = _("PortVnic Binding %(port_id) is not present")
|
|
|
|
|
|
class InvalidAttach(exceptions.QuantumException):
|
|
message = _("Unable to plug the attachment %(att_id)s into port " \
|
|
"%(port_id)s for network %(net_id)s. Association of " \
|
|
"attachment ID with port ID happens implicitly when " \
|
|
"VM is instantiated; attach operation can be " \
|
|
"performed subsequently.")
|
|
|
|
|
|
try:
|
|
_("test")
|
|
except NameError:
|
|
|
|
def _(a_string):
|
|
"""
|
|
Default implementation of the gettext string
|
|
translation function: no translation
|
|
"""
|
|
return a_string
|
|
except TypeError:
|
|
# during doctesting, _ might mean something else
|
|
pass
|