def create_vlan(self, user, vlan_id): if not has_perm(user, AdminPermission.VLAN_MANAGEMENT, AdminPermission.WRITE_OPERATION): return self.not_authorized() vlan = Vlan().get_by_pk(vlan_id) # Check permission group equipments equips_from_ipv4 = Equipamento.objects.filter( ipequipamento__ip__networkipv4__vlan=vlan_id, equipamentoambiente__is_router=1) equips_from_ipv6 = Equipamento.objects.filter( ipv6equipament__ip__networkipv6__vlan=vlan_id, equipamentoambiente__is_router=1) for equip in equips_from_ipv4: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() for equip in equips_from_ipv6: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() if vlan.ativada: return self.response_error(122) command = settings.VLAN_CREATE % (vlan.id) code, stdout, stderr = exec_script(command) if code == 0: vlan.activate(user) success_map = dict() success_map['codigo'] = '%04d' % code success_map['descricao'] = {'stdout': stdout, 'stderr': stderr} map = dict() map['sucesso'] = success_map # Send to Queue queue_manager = QueueManager() serializer = VlanSerializer(vlan) data_to_queue = serializer.data data_to_queue.update({'description': queue_keys.VLAN_CREATE}) queue_manager.append({'action': queue_keys.VLAN_CREATE,'kind': queue_keys.VLAN_KEY,'data': data_to_queue}) queue_manager.send() return self.response(dumps_networkapi(map)) else: return self.response_error(2, stdout + stderr)
def create_vlan(self, user, vlan_id): if not has_perm(user, AdminPermission.VLAN_MANAGEMENT, AdminPermission.WRITE_OPERATION): return self.not_authorized() vlan = Vlan().get_by_pk(vlan_id) # Check permission group equipments equips_from_ipv4 = Equipamento.objects.filter( ipequipamento__ip__networkipv4__vlan=vlan_id, equipamentoambiente__is_router=1) equips_from_ipv6 = Equipamento.objects.filter( ipv6equipament__ip__networkipv6__vlan=vlan_id, equipamentoambiente__is_router=1) for equip in equips_from_ipv4: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() for equip in equips_from_ipv6: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() if vlan.ativada: return self.response_error(122) command = settings.VLAN_CREATE % (vlan.id) code, stdout, stderr = exec_script(command) if code == 0: vlan.activate(user) success_map = dict() success_map['codigo'] = '%04d' % code success_map['descricao'] = {'stdout': stdout, 'stderr': stderr} map = dict() map['sucesso'] = success_map return self.response(dumps_networkapi(map)) else: return self.response_error(2, stdout + stderr)
def handle_put(self, request, user, *args, **kwargs): '''Treat PUT requests to activate a vlan Set column ativada = 1 URL: vlan/create/ ''' try: # 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, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') vlan_map = networkapi_map.get('vlan') id_vlan = vlan_map.get('vlan_id') vlan = Vlan() vlan = vlan.get_by_pk(id_vlan) # Check permission group equipments equips_from_ipv4 = Equipamento.objects.filter( ipequipamento__ip__networkipv4__vlan=id_vlan, equipamentoambiente__is_router=1) equips_from_ipv6 = Equipamento.objects.filter( ipv6equipament__ip__networkipv6__vlan=id_vlan, equipamentoambiente__is_router=1) for equip in equips_from_ipv4: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() for equip in equips_from_ipv6: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() if vlan.ativada: return self.response_error(122) # Make command vlan_command = settings.VLAN_CREATE % int(id_vlan) # Execute command code, stdout, stderr = exec_script(vlan_command) # if command was successfully executed if code == 0: # After execute script, change to activated vlan.activate(user) else: return self.response_error(2, stdout + stderr) # Send to Queue queue_manager = QueueManager() serializer = VlanSerializer(vlan) data_to_queue = serializer.data data_to_queue.update({'description': queue_keys.VLAN_ACTIVATE}) queue_manager.append({'action': queue_keys.VLAN_ACTIVATE,'kind': queue_keys.VLAN_KEY,'data': data_to_queue}) queue_manager.send() 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 activate a vlan Set column ativada = 1 URL: vlan/create/ """ try: # 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, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') vlan_map = networkapi_map.get('vlan') id_vlan = vlan_map.get('vlan_id') vlan = Vlan() vlan = vlan.get_by_pk(id_vlan) # Check permission group equipments equips_from_ipv4 = Equipamento.objects.filter( ipequipamento__ip__networkipv4__vlan=id_vlan, equipamentoambiente__is_router=1) equips_from_ipv6 = Equipamento.objects.filter( ipv6equipament__ip__networkipv6__vlan=id_vlan, equipamentoambiente__is_router=1) for equip in equips_from_ipv4: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() for equip in equips_from_ipv6: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() if vlan.ativada: return self.response(dumps_networkapi({})) # Make command vlan_command = settings.VLAN_CREATE % int(id_vlan) # Execute command code, stdout, stderr = exec_script(vlan_command) # if command was successfully executed if code == 0: # After execute script, change to activated vlan.activate(user) else: return self.response_error(2, stdout + stderr) return self.response(dumps_networkapi({})) except InvalidValueError as e: return self.response_error(269, e.param, e.value) except AmbienteNotFoundError as e: return self.response_error(112) except VlanNameDuplicatedError as e: return self.response_error(108) except VlanNumberNotAvailableError as e: return self.response_error(306, vlan.num_vlan) except VlanNumberEnvironmentNotAvailableError as e: return self.response_error(315, e.message) except VlanNotFoundError as e: return self.response_error(150, e.message) except XMLError as e: self.log.error(u'Error reading the XML request.') return self.response_error(3, e) except (VlanError, AmbienteError) as e: return self.response_error(1)
def handle_put(self, request, user, *args, **kwargs): '''Handles PUT requests to create Network and Vlan. URL: network/create/ ''' try: # 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, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') network_map = networkapi_map.get('network') ids = network_map.get('ids') id_vlan = network_map.get('id_vlan') if not is_valid_int_greater_zero_param(id_vlan): self.log.error( u'The id network parameter is invalid. Value: %s.', id_vlan) raise InvalidValueError(None, 'id_network', id_vlan) vlan = Vlan() vlan = vlan.get_by_pk(id_vlan) # Check permission group equipments equips_from_ipv4 = Equipamento.objects.filter( ipequipamento__ip__networkipv4__vlan=id_vlan, equipamentoambiente__is_router=1).distinct() equips_from_ipv6 = Equipamento.objects.filter( ipv6equipament__ip__networkipv6__vlan=id_vlan, equipamentoambiente__is_router=1).distinct() for equip in equips_from_ipv4: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() for equip in equips_from_ipv6: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() with distributedlock(LOCK_VLAN % id_vlan): if vlan.ativada == 0: # Make command - VLAN' vlan_command = VLAN_CREATE % int(id_vlan) # Execute command code, stdout, stderr = exec_script(vlan_command) # code = 0 means OK if code == 0: vlan.activate(user) else: return self.response_error(2, stdout + stderr) # if 'ids' is a list if isinstance(ids, list): for id in ids: code, stdout, stderr = self.activate_network(user, id) else: code, stdout, stderr = self.activate_network(user, ids) if code != 0: return self.response_error(2, stdout + stderr) return self.response(dumps_networkapi({'network': network_map})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_put(self, request, user, *args, **kwargs): """Handles PUT requests to create Network and Vlan. URL: network/create/ """ try: # 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, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') network_map = networkapi_map.get('network') ids = network_map.get('ids') id_vlan = network_map.get('id_vlan') if not is_valid_int_greater_zero_param(id_vlan): self.log.error( u'The id network parameter is invalid. Value: %s.', id_vlan) raise InvalidValueError(None, 'id_network', id_vlan) vlan = Vlan() vlan = vlan.get_by_pk(id_vlan) # Check permission group equipments equips_from_ipv4 = Equipamento.objects.filter( ipequipamento__ip__networkipv4__vlan=id_vlan, equipamentoambiente__is_router=1).distinct() equips_from_ipv6 = Equipamento.objects.filter( ipv6equipament__ip__networkipv6__vlan=id_vlan, equipamentoambiente__is_router=1).distinct() for equip in equips_from_ipv4: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() for equip in equips_from_ipv6: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() with distributedlock(LOCK_VLAN % id_vlan): if vlan.ativada == 0: # Make command - VLAN' vlan_command = VLAN_CREATE % int(id_vlan) # Execute command code, stdout, stderr = exec_script(vlan_command) # code = 0 means OK if code == 0: vlan.activate(user) else: return self.response_error(2, stdout + stderr) # if 'ids' is a list if isinstance(ids, list): for id in ids: code, stdout, stderr = self.activate_network(user, id) else: code, stdout, stderr = self.activate_network(user, ids) if code != 0: return self.response_error(2, stdout + stderr) return self.response(dumps_networkapi({'network': network_map})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)