diff --git a/networkapi/ip/models.py b/networkapi/ip/models.py index 0e2f4d2ac..a97f79072 100644 --- a/networkapi/ip/models.py +++ b/networkapi/ip/models.py @@ -62,10 +62,12 @@ from networkapi.util.geral import create_lock_with_blocking from networkapi.util.geral import destroy_lock from networkapi.util.geral import get_app +from networkapi.api_rest.exceptions import NetworkAPIException log = logging.getLogger(__name__) + class NetworkIPv4Error(Exception): """Generic exception for everything related to NetworkIPv4.""" @@ -625,6 +627,8 @@ def add_network_ipv4(self, user, id_vlan, network_type, evip, prefix=None): except (ValueError, TypeError, AddressValueError), e: raise ConfigEnvironmentInvalidError(e, u'Invalid Configuration') + except NetworkAPIException as e: + return self.response_error(150, e) # Return vlan map vlan_map = dict() diff --git a/networkapi/ip/resource/NetworkIPv4AddResource.py b/networkapi/ip/resource/NetworkIPv4AddResource.py index e7d9e8e66..0bc760b19 100644 --- a/networkapi/ip/resource/NetworkIPv4AddResource.py +++ b/networkapi/ip/resource/NetworkIPv4AddResource.py @@ -17,6 +17,7 @@ from networkapi.admin_permission import AdminPermission from networkapi.ambiente.models import ConfigEnvironmentInvalidError +from networkapi.api_rest.exceptions import NetworkAPIException from networkapi.ambiente.models import EnvironmentVip from networkapi.auth import has_perm from networkapi.config.models import Configuration @@ -51,28 +52,22 @@ def handle_post(self, request, user, *args, **kwargs): URL: network/ipv4/add/ """ - # Commons Validations - - # User permission if not has_perm(user, AdminPermission.VLAN_MANAGEMENT, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() - # Business Validations - - # Load XML data xml_map, _ = loads(request.raw_post_data) - - # XML data format networkapi_map = xml_map.get('networkapi') + if networkapi_map is None: - msg = u'There is no value to the networkapi tag of XML request.' + msg = "There is no value to the networkapi tag of XML request." self.log.error(msg) return self.response_error(3, msg) + vlan_map = networkapi_map.get('vlan') if vlan_map is None: - msg = u'There is no value to the vlan tag of XML request.' + msg = "There is no value to the vlan tag of XML request." self.log.error(msg) return self.response_error(3, msg) @@ -84,8 +79,9 @@ def handle_post(self, request, user, *args, **kwargs): # Valid prefix if not is_valid_int_greater_zero_param(prefix, False) or (prefix and int(prefix) > 32): - self.log.error(u'Parameter prefix is invalid. Value: %s.', prefix) - return self.response_error(269, 'prefix', prefix) + msg = "CIDR prefix is invalid. It must be between 1 and 32 Value: {}".format(prefix) + self.log.error(msg) + return self.response_error(150, msg) return self.network_ipv4_add(user, vlan_id, network_type, environment_vip, prefix) @@ -146,35 +142,21 @@ def network_ipv4_add(self, user, vlan_id, network_type, environment_vip, prefix= try: - # Valid vlan ID if not is_valid_int_greater_zero_param(vlan_id): - self.log.error(u'Parameter id_vlan is invalid. Value: %s.', vlan_id) - raise InvalidValueError(None, 'id_vlan', vlan_id) - - # Network Type - - # Valid network_type ID - # if not is_valid_int_greater_zero_param(network_type): - # self.log.error( - # u'Parameter id_tipo_rede is invalid. Value: %s.', network_type) - # raise InvalidValueError(None, 'id_tipo_rede', network_type) + msg = "The Vlan number is invalid. Value: {}".format(prefix) + self.log.error(msg) + return self.response_error(150, msg) - # Find network_type by ID to check if it exist net = None if network_type: net = TipoRede.get_by_pk(network_type) - # Environment Vip - if environment_vip is not None: - # Valid environment_vip ID if not is_valid_int_greater_zero_param(environment_vip): - self.log.error( - u'Parameter id_ambiente_vip is invalid. Value: %s.', environment_vip) - raise InvalidValueError( - None, 'id_ambiente_vip', environment_vip) - + msg = "The VIP Environment id is invalid. Value: {}".format(prefix) + self.log.error(msg) + return self.response_error(150, msg) # Find Environment VIP by ID to check if it exist evip = EnvironmentVip.get_by_pk(environment_vip) @@ -271,3 +253,5 @@ def network_ipv4_add(self, user, vlan_id, network_type, environment_vip, prefix= return self.response_error(294) except IpNotAvailableError, e: return self.response_error(150, e) + except NetworkAPIException as e: + return self.response_error(150, e) diff --git a/networkapi/vlan/resource/VlanFindResource.py b/networkapi/vlan/resource/VlanFindResource.py index bc2671ac8..7fce59fbc 100644 --- a/networkapi/vlan/resource/VlanFindResource.py +++ b/networkapi/vlan/resource/VlanFindResource.py @@ -352,7 +352,7 @@ def handle_post(self, request, user, *args, **kwargs): if name is not None: # If name is valid, add to filter - if not is_valid_string_minsize(name, 3, False): + if not is_valid_string_minsize(name, 1, False): raise InvalidValueError(None, 'nome', name) else: # Iexact must be valid to add name to filter