def handle_put(self, request, user, *args, **kwargs): '''Treat PUT requests to Invalidate a vlan URL: vlan/<id_vlan>/invalidate/<network> ''' try: id_vlan = kwargs.get('id_vlan') network = kwargs.get('network') # User permission if not has_perm(user, AdminPermission.ACL_VLAN_VALIDATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Valid Vlan ID if not is_valid_int_greater_zero_param(id_vlan): self.log.error( u'The id_vlan parameter is not a valid value: %s.', id_vlan) raise InvalidValueError(None, 'vlan_id', id_vlan) # Valid Network if not is_valid_version_ip(network, IP_VERSION): self.log.error( u'The network parameter is not a valid value: %s.', network) raise InvalidValueError(None, 'network', network) # Find Vlan by ID to check if it exist vlan = Vlan().get_by_pk(id_vlan) with distributedlock(LOCK_VLAN % id_vlan): # Set Values if network == IP_VERSION.IPv4[0]: vlan.acl_valida = 0 vlan.acl_file_name = None else: vlan.acl_valida_v6 = 0 vlan.acl_file_name_v6 = None vlan.save() return self.response(dumps_networkapi({})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_put(self, request, user, *args, **kwargs): '''Treat PUT requests to Invalidate a vlan URL: vlan/<id_vlan>/invalidate/<network> ''' try: id_vlan = kwargs.get('id_vlan') network = kwargs.get('network') # User permission if not has_perm(user, AdminPermission.ACL_VLAN_VALIDATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Valid Vlan ID if not is_valid_int_greater_zero_param(id_vlan): self.log.error( u'The id_vlan parameter is not a valid value: %s.', id_vlan) raise InvalidValueError(None, 'vlan_id', id_vlan) # Valid Network if not is_valid_version_ip(network, IP_VERSION): self.log.error( u'The network parameter is not a valid value: %s.', network) raise InvalidValueError(None, 'network', network) # Find Vlan by ID to check if it exist vlan = Vlan().get_by_pk(id_vlan) with distributedlock(LOCK_VLAN % id_vlan): # Set Values if network == IP_VERSION.IPv4[0]: vlan.acl_valida = 0 vlan.acl_file_name = None else: vlan.acl_valida_v6 = 0 vlan.acl_file_name_v6 = None vlan.save(user) return self.response(dumps_networkapi({})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_post(self, request, user, *args, **kwargs): '''Treat POST requests to Create ACL URL: vlan/create/acl/ ''' self.log.info('Create ACL Vlan') try: is_suggest_acl_name = False # 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() # Load XML data xml_map, _ = loads(request.raw_post_data, ["searchable_columns", "asorting_cols"]) # XML data format networkapi_map = xml_map.get('networkapi') self.validate_networkapi_map(networkapi_map) vlan_map = networkapi_map.get('vlan') self.validate_vlan_map(vlan_map) id_vlan = vlan_map.get('id_vlan') network_type = vlan_map.get('network_type') self.validate_id_vlan(id_vlan) self.validate_ip_version(network_type) vlan = Vlan().get_by_pk(id_vlan) environment = get_environment_map(vlan.ambiente) if network_type == NETWORK_TYPES.v4: if not vlan.acl_file_name: is_suggest_acl_name = True vlan.acl_file_name = self.__create_suggest_acl_name(vlan) acl_name = vlan.acl_file_name else: if not vlan.acl_file_name_v6: is_suggest_acl_name = True vlan.acl_file_name_v6 = self.__create_suggest_acl_name( vlan) acl_name = vlan.acl_file_name_v6 self.validate_duplicate_acl(acl_name, environment, network_type, user) if is_suggest_acl_name: vlan.save() createAclCvs(acl_name, environment, network_type, user) # Send to Queue queue_manager = QueueManager() serializer = VlanSerializer(vlan) data_to_queue = serializer.data data_to_queue.update({'description': queue_keys.VLAN_CREATE_ACL}) queue_manager.append({ 'action': queue_keys.VLAN_CREATE_ACL, 'kind': queue_keys.VLAN_KEY, 'data': data_to_queue }) queue_manager.send() return self.response( dumps_networkapi({'vlan': model_to_dict(vlan)})) except InvalidValueError, e: return self.response_error(self.CODE_MESSAGE_INVALID_PARAM, e.param, e.value)
def handle_post(self, request, user, *args, **kwargs): '''Treat POST requests to Create ACL URL: vlan/create/acl/ ''' self.log.info('Create ACL Vlan') try: is_suggest_acl_name = False # 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() # Load XML data xml_map, _ = loads( request.raw_post_data, ["searchable_columns", "asorting_cols"]) # XML data format networkapi_map = xml_map.get('networkapi') self.validate_networkapi_map(networkapi_map) vlan_map = networkapi_map.get('vlan') self.validate_vlan_map(vlan_map) id_vlan = vlan_map.get('id_vlan') network_type = vlan_map.get('network_type') self.validate_id_vlan(id_vlan) self.validate_ip_version(network_type) vlan = Vlan().get_by_pk(id_vlan) environment = get_environment_map(vlan.ambiente) if network_type == NETWORK_TYPES.v4: if not vlan.acl_file_name: is_suggest_acl_name = True vlan.acl_file_name = self.__create_suggest_acl_name(vlan) acl_name = vlan.acl_file_name else: if not vlan.acl_file_name_v6: is_suggest_acl_name = True vlan.acl_file_name_v6 = self.__create_suggest_acl_name( vlan) acl_name = vlan.acl_file_name_v6 self.validate_duplicate_acl( acl_name, environment, network_type, user) if is_suggest_acl_name: vlan.save() createAclCvs(acl_name, environment, network_type, user) # Send to Queue queue_manager = QueueManager() serializer = VlanSerializer(vlan) data_to_queue = serializer.data data_to_queue.update({'description': queue_keys.VLAN_CREATE_ACL}) queue_manager.append({'action': queue_keys.VLAN_CREATE_ACL,'kind': queue_keys.VLAN_KEY,'data': data_to_queue}) queue_manager.send() return self.response(dumps_networkapi({'vlan': model_to_dict(vlan)})) except InvalidValueError, e: return self.response_error(self.CODE_MESSAGE_INVALID_PARAM, e.param, e.value)