def check_permission_equipment(self, user, ids): # Check permission group equipments for row in ids: id_network, network_type = self.get_id_and_net_type(row) if network_type == self.NETWORK_TYPE_V4: equips_from_ipv4 = Equipamento.objects.filter( ipequipamento__ip__networkipv4=id_network, 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 False else: equips_from_ipv6 = Equipamento.objects.filter( ipv6equipament__ip__networkipv6=id_network, equipamentoambiente__is_router=1) 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 False return True
def handle_get(self, request, user, *args, **kwargs): '''Trata as requisições de GET para listar Roteiros. URLs: roteiro/$ roteiro/tiporoteiro/<id_tipo_roteiro>/ roteiro/equipamento/<id_equip>/ ''' try: map_list = [] equipment_id = kwargs.get('id_equip') if equipment_id is None: if not has_perm(user, AdminPermission.SCRIPT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() scripts = Roteiro.search(kwargs.get('id_tipo_roteiro')) for script in scripts: script_map = dict() script_map['id'] = script.id script_map['nome'] = script.roteiro script_map['descricao'] = script.descricao script_map['id_tipo_roteiro'] = script.tipo_roteiro_id map_list.append(script_map) else: if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION, None, equipment_id, AdminPermission.EQUIP_READ_OPERATION): return self.not_authorized() equipment_scripts = EquipamentoRoteiro.search( None, equipment_id) for equipment_script in equipment_scripts: script_map = dict() script_map['id'] = equipment_script.roteiro.id script_map['nome'] = equipment_script.roteiro.roteiro script_map[ 'descricao'] = equipment_script.roteiro.descricao script_map[ 'id_tipo_roteiro'] = equipment_script.roteiro.tipo_roteiro.id script_map[ 'nome_tipo_roteiro'] = equipment_script.roteiro.tipo_roteiro.tipo script_map[ 'descricao_tipo_roteiro'] = equipment_script.roteiro.tipo_roteiro.descricao map_list.append(script_map) return self.response(dumps_networkapi({'roteiro': map_list})) except EquipamentoNotFoundError: return self.response_error(117, equipment_id) except (RoteiroError, GrupoError, EquipamentoError): return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all Environments. URL: /ambiente/equip/id_equip """ try: # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() id_equip = kwargs.get('id_equip') if not is_valid_int_greater_zero_param(id_equip): raise InvalidValueError(None, 'id_equip', id_equip) # Business Rules equip = Equipamento.get_by_pk(id_equip) environments_list = EquipamentoAmbiente.get_by_equipment(equip.id) # Get all environments in DB lists_aux = [] for environment in environments_list: env = Ambiente.get_by_pk(environment.ambiente.id) env_map = model_to_dict(env) env_map['grupo_l3_name'] = env.grupo_l3.nome env_map['ambiente_logico_name'] = env.ambiente_logico.nome env_map['divisao_dc_name'] = env.divisao_dc.nome env_map['is_router'] = environment.is_router try: env_map['range'] = str( env.min_num_vlan_1) + ' - ' + str(env.max_num_vlan_1) if env.min_num_vlan_1 != env.min_num_vlan_2: env_map['range'] = env_map[ 'range'] + '; ' + str(env.min_num_vlan_2) + ' - ' + str(env.max_num_vlan_2) except: env_map['range'] = 'Nao definido' if env.filter is not None: env_map['filter_name'] = env.filter.name lists_aux.append(env_map) # Return XML environment_list = dict() environment_list['ambiente'] = lists_aux return self.response(dumps_networkapi(environment_list)) except InvalidValueError, e: self.log.error( u'Parameter %s is invalid. Value: %s.', e.param, e.value) return self.response_error(269, e.param, e.value)
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 handle_get(self, request, user, *args, **kwargs): try: self.log.info('Get rules in Environment') # User permission if not has_perm(user, AdminPermission.VIP_VALIDATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_env = kwargs.get('id_env') if not is_valid_int_greater_zero_param(id_env): self.log.error( u'The id_env parameter is not a valid value: %s.', id_env) raise InvalidValueError(None, 'id_env', id_env) Ambiente.objects.get(pk=id_env) rules = Rule.objects.filter(environment=id_env, vip=None) rule_list = [] for rule in rules: rule_list.append(model_to_dict(rule)) return self.response(dumps_networkapi({'rules': rule_list})) except InvalidValueError, e: self.log.error( u'Parameter %s is invalid. Value: %s.', e.param, e.value) return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Trata as requisições GET para consulta de tipos de rede. Permite a consulta de tipos de rede existentes. URL: /tiporede/ """ try: if not has_perm(user, AdminPermission.NETWORK_TYPE_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() # Efetua a consulta de todos os tipos de rede results = TipoRede.search() if results.count() > 0: # Monta lista com dados retornados map_list = [] for item in results: item_map = self.get_tipo_rede_map(item) map_list.append(item_map) # Gera response (XML) com resultados return self.response(dumps_networkapi({'tipo_rede': map_list})) else: # Gera response (XML) para resultado vazio return self.response(dumps_networkapi({})) except (VlanError, GrupoError): return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Handles GET requests to find all finalitys of environment VIP. URLs: /vip/get/finality """ self.log.info("Find all finality distinct of environment_vip") try: # Commons Validations # User permission if not has_perm(user, AdminPermission.VIPS_REQUEST, AdminPermission.READ_OPERATION): self.log.error(u"User does not have permission to perform the operation.") return self.not_authorized() evip = EnvironmentVip() # Business Validations evips = evip.list_all_finalitys() finality_map = dict() finality_list = [] for evip in evips: finality_map["finality"] = evip.get("finalidade_txt") finality_list.append(finality_map) finality_map = dict() return self.response(dumps_networkapi({"finalidade": finality_list})) except InvalidValueError, e: self.log.error(u"Parameter %s is invalid. Value: %s.", e.param, e.value) return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Handles GET requests to find all Racks URLs: /rack/find/ """ self.log.info('List all Racks') try: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT , AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() rack_list = [] for rack in Rack.objects.all(): rack_list.append(model_to_dict(rack)) return self.response(dumps_networkapi({'rack': rack_list})) except UserNotAuthorizedError: return self.not_authorized() except RackError: return self.response_error(379)
def handle_get(self, request, user, *args, **kwargs): """GET requests to list all TipoAcesso. URL: /tipoacesso/ """ try: if not has_perm(user, AdminPermission.ACCESS_TYPE_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Efetua a consulta de todos os tipos de acesso map_list = [] for item in TipoAcesso.objects.all(): map_list.append(model_to_dict(item)) # Gera response (XML) com resultados return self.response(dumps_networkapi({'tipo_acesso': map_list})) except UserNotAuthorizedError: return self.not_authorized() except (TipoAcessoError, GrupoError): return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get User Ldap by the username. URL: user/get/ldap/<user_name>/ """ try: self.log.info("Get User Ldap by the identifier") # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) user_name = kwargs.get('user_name') # Find User by Username to check if it exist usr = Usuario.get_by_ldap_user(user_name) user_map = dict() user_map['usuario'] = model_to_dict(usr) user_map['usuario']['grupos'] = user_map['usuario'][ 'grupos'] if user_map['usuario']['grupos'] is not None and len( user_map['usuario']['grupos']) > 0 else [None] return self.response(dumps_networkapi(user_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat GET requests list all Environment VIP Availables. URL: environmentvip/search/id_vlan """ try: id_vlan = int(kwargs['id_vlan']) self.log.info("List all Environment VIP availables") # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_VIP, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() # Business Rules evips = EnvironmentVip.objects.all() evip_list = EnvironmentVip.available_evips(EnvironmentVip(), evips, id_vlan) return self.response( dumps_networkapi({'environment_vip': evip_list})) except (EnvironmentVipError, GrupoError), e: self.log.error(e) return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Script. URL: script/all """ try: self.log.info("GET to list all the Script") # User permission if not has_perm(user, AdminPermission.SCRIPT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_script = kwargs.get('id_script') if id_script is not None: script = Roteiro.get_by_pk(int(id_script)) script = model_to_dict(script) return self.response(dumps_networkapi({'script': script})) script_list = [] for script in Roteiro.objects.all(): script_list.append(model_to_dict(script)) return self.response(dumps_networkapi({'script': script_list})) except UserNotAuthorizedError: return self.not_authorized() except RoteiroError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat GET requests list all Filters. URL: filter/all/ """ try: self.log.info('List all Filters') # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() # Business Rules filters = Filter.objects.all() filter_list = [] for filter_ in filters: filter_dict = model_to_dict(filter_) filter_dict['equip_types'] = list() for fil_equip_type in filter_.filterequiptype_set.all(): filter_dict['equip_types'].append( model_to_dict(fil_equip_type.equiptype)) filter_list.append(filter_dict) return self.response(dumps_networkapi({'filter': filter_list})) except BaseException, e: return self.response_error(1)
def handle_delete(self, request, user, *args, **kwargs): """Treat requests DELETE to remove Rule. URL: rule/delete/<id_rule>/ """ try: self.log.info('Delete rule from an environment') # User permission if not has_perm(user, AdminPermission.VIP_VALIDATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_rule = kwargs.get('id_rule') if not is_valid_int_greater_zero_param(id_rule): self.log.error( u'The id_rule parameter is not a valid value: %s.', id_rule) raise InvalidValueError(None, 'id_rule', id_rule) rule = Rule.objects.get(pk=id_rule) rule.delete() return self.response(dumps_networkapi({})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Division Dc. URL: divisiondc/all """ try: self.log.info("GET to list all the Division Dc") # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) division_dc_list = [] for division in DivisaoDc.objects.all(): division_dc_list.append(model_to_dict(division)) return self.response(dumps_networkapi({'division_dc': division_dc_list})) except UserNotAuthorizedError: return self.not_authorized() except AmbienteError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat GET requests to get a Filter by id. URL: filter/get/<id_filter>/ """ try: self.log.info("Get Filter by id") # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() if not is_valid_int_greater_zero_param(kwargs['id_filter']): self.log.error( u'Parameter id_filter is invalid. Value: %s.', kwargs['id_filter']) raise InvalidValueError(None, 'id_filter', kwargs['id_filter']) else: # Check existence fil = Filter().get_by_pk(kwargs['id_filter']) filter_dict = model_to_dict(fil) filter_dict['equip_types'] = list() for fil_equip_type in fil.filterequiptype_set.all(): filter_dict['equip_types'].append( model_to_dict(fil_equip_type.equiptype)) return self.response(dumps_networkapi({'filter': filter_dict})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get Group User. URL: ugroup/get/<id_ugroup>/ """ try: self.log.info("Get Group User by ID") id_ugroup = kwargs.get('id_ugroup') # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Valid Group User ID if not is_valid_int_greater_zero_param(id_ugroup): self.log.error( u'The id_ugroup parameter is not a valid value: %s.', id_ugroup) raise InvalidValueError(None, 'id_ugroup', id_ugroup) # Find Group User by ID to check if it exist ugroup = UGrupo.get_by_pk(id_ugroup) ugroup_map = dict() ugroup_map['user_group'] = model_to_dict(ugroup) return self.response(dumps_networkapi(ugroup_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Script. URL: script/all """ try: self.log.info("GET to list all the Script") # User permission if not has_perm(user, AdminPermission.SCRIPT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error(u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_script = kwargs.get('id_script') if id_script is not None: script = Roteiro.get_by_pk(int(id_script)) script = model_to_dict(script) return self.response(dumps_networkapi({'script': script})) script_list = [] for script in Roteiro.objects.all(): script_list.append(model_to_dict(script)) return self.response(dumps_networkapi({'script': script_list})) except UserNotAuthorizedError: return self.not_authorized() except RoteiroError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Brand. URL: brand/all """ try: self.log.info("GET to list all the Brand") # User permission if not has_perm(user, AdminPermission.BRAND_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) brand_list = [] for brand in Marca.objects.all(): brand_list.append(model_to_dict(brand)) return self.response(dumps_networkapi({'brand': brand_list})) except UserNotAuthorizedError: return self.not_authorized() except EquipamentoError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Trata as requisições GET para consulta de HealthCheckExpects por id. Lista as informações de um HealthCheckExpect por id. URL: /healthcheckexpect/get/<id_healthcheck_expect>/ """ try: if not has_perm(user, AdminPermission.HEALTH_CHECK_EXPECT, AdminPermission.READ_OPERATION): return self.not_authorized() id_healthcheck = kwargs.get('id_healthcheck') if not is_valid_int_greater_zero_param(id_healthcheck): self.log.error( u'The id_healthcheck parameter is not a valid value: %s.', id_healthcheck) raise InvalidValueError(None, 'id_healthcheck', id_healthcheck) heal = HealthcheckExpect.get_by_pk(id_healthcheck) healthcheckexpect_map = model_to_dict(heal) return self.response(dumps_networkapi({'healthcheck_expect': healthcheckexpect_map})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get User by the identifier. URL: user/get/<id_user>/ """ try: self.log.info("Get User by the identifier") # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_user = kwargs.get('id_user') # Valid User ID if not is_valid_int_greater_zero_param(id_user): self.log.error( u'The id_user parameter is not a valid value: %s.', id_user) raise InvalidValueError(None, 'id_user', id_user) # Find User by ID to check if it exist usr = Usuario.get_by_pk(id_user) user_map = dict() user_map['usuario'] = model_to_dict(usr) user_map['usuario']['grupos'] = user_map['usuario']['grupos'] if user_map['usuario'][ 'grupos'] is not None and len(user_map['usuario']['grupos']) > 0 else [None] return self.response(dumps_networkapi(user_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): try: self.log.info("Get rules in Environment") # User permission if not has_perm(user, AdminPermission.VIP_VALIDATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_env = kwargs.get('id_env') if not is_valid_int_greater_zero_param(id_env): self.log.error( u'The id_env parameter is not a valid value: %s.', id_env) raise InvalidValueError(None, 'id_env', id_env) Ambiente.objects.get(pk=id_env) rules = Rule.objects.filter(environment=id_env, vip=None) rule_list = [] for rule in rules: rule_list.append(model_to_dict(rule)) return self.response(dumps_networkapi({'rules': rule_list})) except InvalidValueError, e: self.log.error( u'Parameter %s is invalid. Value: %s.', e.param, e.value) return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Option VIP. URL: vip/dsrl3//all' """ try: self.log.info("GET to list all the DSRL3 of VIPs") # User permission if not has_perm(user, AdminPermission.OPTION_VIP, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Find All Option VIP dsrl3 = DsrL3_to_Vip.get_all() ovips = [] for ov in dsrl3: ovips.append(model_to_dict(ov)) return self.response(dumps_networkapi({'dsrl3': ovips})) except UserNotAuthorizedError: return self.not_authorized() except OptionVipError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Script Type. URL: scripttype/all """ try: self.log.info('GET to list all the Script Type') # User permission if not has_perm(user, AdminPermission.SCRIPT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) script_type_list = [] for script_type in TipoRoteiro.objects.all(): script_type_list.append(model_to_dict(script_type)) return self.response(dumps_networkapi({'script_type': script_type_list})) except UserNotAuthorizedError: return self.not_authorized() except RoteiroError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Permissions. URL: perms/all """ try: self.log.info("GET to list all the Permissions") # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) perms_list = [] for perm in Permission.objects.all(): perms_list.append(model_to_dict(perm)) return self.response(dumps_networkapi({'perms': perms_list})) except UserNotAuthorizedError: return self.not_authorized() except GrupoError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get Group Equipment. URL: egroup/<id_egroup>/ """ try: self.log.info('Get Group Equipment by ID') id_egroup = kwargs.get('id_egroup') # User permission if not has_perm(user, AdminPermission.EQUIPMENT_GROUP_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Valid Group Equipment ID if not is_valid_int_greater_zero_param(id_egroup): self.log.error( u'The id_egroup parameter is not a valid value: %s.', id_egroup) raise InvalidValueError(None, 'id_egroup', id_egroup) # Find Group Equipment by ID to check if it exist egroup = EGrupo.get_by_pk(id_egroup) egroup_map = dict() egroup_map['group_equipament'] = model_to_dict(egroup) return self.response(dumps_networkapi(egroup_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Group l3. URL: groupl3/all """ try: self.log.info('GET to list all the Group l3') # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) groupl3_list = [] for group in GrupoL3.objects.all(): groupl3_list.append(model_to_dict(group)) return self.response(dumps_networkapi({'group_l3': groupl3_list})) except UserNotAuthorizedError: return self.not_authorized() except AmbienteError: return self.response_error(1)
def handle_delete(self, request, user, *args, **kwargs): """Treat DELETE requests to remove Group User. URL: ugroup/<id_ugroup>/ """ try: self.log.info('Remove Group User') # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_ugroup = kwargs.get('id_ugroup') # Valid Group User ID if not is_valid_int_greater_zero_param(id_ugroup): self.log.error( u'The id_ugroup parameter is not a valid value: %s.', id_ugroup) raise InvalidValueError(None, 'id_ugroup', id_ugroup) # Find Group User by ID to check if it exist ugroup = UGrupo.get_by_pk(id_ugroup) with distributedlock(LOCK_GROUP_USER % id_ugroup): ugroup.delete() return self.response(dumps_networkapi({})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_delete(self, request, user, *args, **kwargs): """Treat DELETE requests to remove Filters. URL: filter/<id_filter>/ """ try: self.log.info('Remove Filter') # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() if not is_valid_int_greater_zero_param(kwargs['id_filter']): self.log.error(u'Parameter id_filter is invalid. Value: %s.', kwargs['id_filter']) raise InvalidValueError(None, 'id_filter', kwargs['id_filter']) else: # Check existence fil = Filter().get_by_pk(kwargs['id_filter']) try: # Remove filter and its relationships fil.delete() except Exception, e: self.log.error(u'Failed to remove the filter.') raise e return self.response(dumps_networkapi({}))
def handle_delete(self, request, user, *args, **kwargs): """Trata uma requisição DELETE para excluir um tipo de rede URL: /tiporede/<id_tipo_rede>/ """ # Verifica acesso e obtém dados do request try: # Verificar a permissão if not has_perm(user, AdminPermission.NETWORK_TYPE_MANAGEMENT, AdminPermission.WRITE_OPERATION): return self.not_authorized() # Obtém argumentos passados na URL id_tipo_rede = kwargs.get('id_tipo_rede') if id_tipo_rede is None: return self.response_error(256) # Remove a informação de acesso a equipamento TipoRede.remove(user, id_tipo_rede) # Retorna response vazio em caso de sucesso return self.response(dumps_networkapi({})) except TipoRedeNotFoundError: return self.response_error(111) except TipoRedeUsedByVlanError: return self.response_error(215, id_tipo_rede) except (GrupoError, VlanError): return self.response_error(1)
def handle_post(self, request, user, *args, **kwargs): """Treat requests POST to create the configuration file. URL: rack/gerar-arq-config/id_rack """ try: self.log.info('CONFIG') # User permission if not has_perm(user, AdminPermission.SCRIPT_MANAGEMENT, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) rack_id = kwargs.get('id_rack') rack = Rack() rack = rack.get_by_pk(rack_id) var = False # Chama o script para gerar os arquivos de configuracao var = gera_config(rack) rack.__dict__.update(id=rack_id, config=var) rack.save() success_map = dict() success_map['rack_conf'] = var map = dict() map['sucesso'] = success_map return self.response(dumps_networkapi(map)) except RackConfigError, e: return self.response_error(382, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat GET requests list all Environment VIP. URL: environmentvip/all/ """ try: self.log.info('List all Environment VIP') # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_VIP, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() # Business Rules evips = EnvironmentVip.objects.all() evip_list = [] for evip in evips: evip_list.append(model_to_dict(evip)) return self.response(dumps_networkapi({'environment_vip': evip_list})) except (EnvironmentVipError, GrupoError), e: self.log.error(e) return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all Equipment Type. URL: equipmenttype/all """ try: self.log.info("GET to list all Equipment Type") # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) map_list = [] for equipment_type in TipoEquipamento.objects.all(): eq_tp = { 'id': equipment_type.id, 'nome': equipment_type.tipo_equipamento} map_list.append(eq_tp) return self.response(dumps_networkapi({'equipment_type': map_list})) except UserNotAuthorizedError: return self.not_authorized() except EquipamentoError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the user groups. URL: ugroup/all """ try: self.log.info("GET to list all the GroupUser") # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) ugroup_list = [] for ugrp in UGrupo.objects.all(): ugroup_list.append(model_to_dict(ugrp)) return self.response(dumps_networkapi({'user_group': ugroup_list})) except UserNotAuthorizedError: return self.not_authorized() except GrupoError: return self.response_error(1)
def _validate_permission(self, user): if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.ENVIRONMENT_MANAGEMENT): self.log.error( u'User does not have permission to perform the operation.') raise PermissionError(None, None)
def handle_get(self, request, user, *args, **kwargs): """Handles GET requests to list all equipment. URLs: equipament/list/ """ try: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() equip_list = Equipamento.objects.all() map_dicts = [] for equip in equip_list: map_dicts.append(model_to_dict(equip)) equip_map = dict() equip_map['equipamentos'] = map_dicts # Return XML return self.response(dumps_networkapi(equip_map)) except (EquipamentoError, GrupoError): return self.response_error(1) except XMLError, x: self.log.error(u'Error reading the XML request.') return self.response_error(3, x)
def handle_get(self, request, user, *args, **kwargs): """ Handles GET requests to list all the VIPs. URL: vip/all/ """ try: if not has_perm(user, AdminPermission.VIPS_REQUEST, AdminPermission.READ_OPERATION): return self.not_authorized() request_vips = RequisicaoVips.get_all() vips = {} for vip in request_vips: request_vip_map = vip.variables_to_map() request_vip_map['id'] = vip.id request_vip_map['validado'] = vip.validado request_vip_map['vip_criado'] = vip.vip_criado request_vip_map['id_ip'] = vip.ip_id request_vip_map['id_ipv6'] = vip.ipv6_id request_vip_map[ 'id_healthcheck_expect'] = vip.healthcheck_expect_id vips['vip_%s' % (vip.id)] = request_vip_map return self.response(dumps_networkapi(vips)) except (RequisicaoVipsNotFoundError): return self.response_error(152) except (RequisicaoVipsError, GrupoError): return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat GET requests list all Filters. URL: filter/all/ """ try: self.log.info("List all Filters") # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() # Business Rules filters = Filter.objects.all() filter_list = [] for filter_ in filters: filter_dict = model_to_dict(filter_) filter_dict['equip_types'] = list() for fil_equip_type in filter_.filterequiptype_set.all(): filter_dict['equip_types'].append( model_to_dict(fil_equip_type.equiptype)) filter_list.append(filter_dict) return self.response(dumps_networkapi({'filter': filter_list})) except BaseException, e: return self.response_error(1)
def handle_post(self, request, user, *args, **kwargs): """Trata as requisições de POST para inserir um grupo de equipamento. URL: egrupo/ """ try: if not has_perm(user, AdminPermission.EQUIPMENT_GROUP_MANAGEMENT, AdminPermission.WRITE_OPERATION): return self.not_authorized() xml_map, attrs_map = loads(request.raw_post_data) self.log.debug('XML_MAP: %s', xml_map) networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error(3, u'Não existe valor para a tag networkapi do XML de requisição.') egroup_map = networkapi_map.get('grupo') if egroup_map is None: return self.response_error(3, u'Não existe valor para a tag grupo do XML de requisição.') name = egroup_map.get('nome') if not is_valid_string_maxsize(name, 100): self.log.error(u'Parameter name is invalid. Value: %s', name) raise InvalidValueError(None, 'name', name) egroup = EGrupo() egroup.nome = name egroup.create(user) return self.response(dumps_networkapi({'grupo': {'id': egroup.id}})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Trata as requisições GET para consulta de Informações de Acesso a Equipamentos. Permite a consulta de Informações de Acesso a Equipamentos existentes. URL: /equipamentoacesso/ """ try: if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() # Efetua a consulta de todos os tipos de acesso results = EquipamentoAcesso.search(user.grupos.all()) if results.count() > 0: # Monta lista com dados retornados map_list = [] for item in results: item_map = self.get_equipamento_acesso_map(item) if item_map not in map_list: map_list.append(item_map) # Gera response (XML) com resultados return self.response( dumps_networkapi({'equipamento_acesso': map_list})) else: # Gera response (XML) para resultado vazio return self.response(dumps_networkapi({})) except (EquipamentoError, GrupoError): return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Handles GET requests to find all Racks URLs: /rack/find/ """ self.log.info('Find all Racks') try: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT , AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() nome = kwargs.get('rack_name') rack = Rack() rack = rack.get_by_name(nome) rack = model_to_dict(rack) return self.response(dumps_networkapi({'rack': rack})) except UserNotAuthorizedError: return self.not_authorized() except RackError: return self.response_error(379)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get Administrative Permission by the identifier. URL: aperms/get/<id_perm>/ """ try: self.log.info("Get Administrative Permission by the identifier") # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_perm = kwargs.get('id_perm') # Valid Administrative Permission ID if not is_valid_int_greater_zero_param(id_perm): self.log.error( u'The id_perm parameter is not a valid value: %s.', id_perm) raise InvalidValueError(None, 'id_perm', id_perm) # Find Administrative Permission by ID to check if it exist perm = PermissaoAdministrativa.get_by_pk(id_perm) perms_map = dict() perms_map['perm'] = model_to_dict(perm) return self.response(dumps_networkapi(perms_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Trata as requisições GET para consulta de Informações de Acesso a Equipamentos. Permite a consulta de Informações de Acesso a Equipamentos existentes. URL: /equipamentoacesso/ """ try: if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() # Efetua a consulta de todos os tipos de acesso results = EquipamentoAcesso.search(user.grupos.all()) if results.count() > 0: # Monta lista com dados retornados map_list = [] for item in results: item_map = self.get_equipamento_acesso_map(item) if item_map not in map_list: map_list.append(item_map) # Gera response (XML) com resultados return self.response(dumps_networkapi({'equipamento_acesso': map_list})) else: # Gera response (XML) para resultado vazio return self.response(dumps_networkapi({})) except (EquipamentoError, GrupoError): return self.response_error(1)
def insert_ip_equipment(ip_id, equip_id, user): '''Insere o relacionamento entre o IP e o equipamento. @param ip_id: Identificador do IP. @param equip_id: Identificador do equipamento. @param user: Usuário autenticado. @return: O ip_equipamento criado. @raise IpError: Falha ao inserir. @raise EquipamentoNotFoundError: Equipamento não cadastrado. @raise IpNotFoundError: Ip não cadastrado. @raise IpEquipamentoDuplicatedError: IP já cadastrado para o equipamento. @raise EquipamentoError: Falha ao pesquisar o equipamento. @raise UserNotAuthorizedError: Usuário sem autorização para executar a operação. ''' if not has_perm(user, AdminPermission.IPS, AdminPermission.WRITE_OPERATION, None, equip_id, AdminPermission.EQUIP_WRITE_OPERATION): raise UserNotAuthorizedError( None, u'Usuário não tem permissão para executar a operação.') ip_equipment = IpEquipamento() ip_equipment.create(user, ip_id, equip_id) return ip_equipment
def handle_get(self, request, user, *args, **kwargs): """Trata as requisições GET para consulta de HealthCheckExpects por id. Lista as informações de um HealthCheckExpect por id. URL: /healthcheckexpect/get/<id_healthcheck_expect>/ """ try: if not has_perm(user, AdminPermission.HEALTH_CHECK_EXPECT, AdminPermission.READ_OPERATION): return self.not_authorized() id_healthcheck = kwargs.get('id_healthcheck') if not is_valid_int_greater_zero_param(id_healthcheck): self.log.error( u'The id_healthcheck parameter is not a valid value: %s.', id_healthcheck) raise InvalidValueError(None, 'id_healthcheck', id_healthcheck) heal = HealthcheckExpect.get_by_pk(id_healthcheck) healthcheckexpect_map = model_to_dict(heal) return self.response( dumps_networkapi({'healthcheck_expect': healthcheckexpect_map})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Handles GET requests to find EnvironmentInterface. URLs: int/get-env-by-interface/<id_interface> """ self.log.info('buscando os ambientes associados a uma interface') try: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT , AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() # Get XML data interface = kwargs.get('id_interface') int_ambiente = EnvironmentInterface.get_by_interface(int(interface)) ambiente_map = [] for ids in int_ambiente: ambiente_map.append(self.get_environment_map(ids.ambiente)) return self.response(dumps_networkapi({'ambiente': ambiente_map})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_post(self, request, user, *args, **kwargs): """Treat requests POST to create the configuration file. URL: rack/gerar-arq-config/id_rack """ try: self.log.info("CONFIG") # User permission if not has_perm(user, AdminPermission.SCRIPT_MANAGEMENT, AdminPermission.WRITE_OPERATION): self.log.error(u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) rack_id = kwargs.get('id_rack') rack = Rack() rack = rack.get_by_pk(rack_id) var = False #Chama o script para gerar os arquivos de configuracao var = gera_config(rack) rack.__dict__.update(id=rack_id, config=var) rack.save() success_map = dict() success_map['rack_conf'] = var map = dict() map['sucesso'] = success_map return self.response(dumps_networkapi(map)) except RackConfigError, e: return self.response_error(382, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat GET requests to get a Filter by id. URL: filter/get/<id_filter>/ """ try: self.log.info("Get Filter by id") # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error(u"User does not have permission to perform the operation.") return self.not_authorized() if not is_valid_int_greater_zero_param(kwargs["id_filter"]): self.log.error(u"Parameter id_filter is invalid. Value: %s.", kwargs["id_filter"]) raise InvalidValueError(None, "id_filter", kwargs["id_filter"]) else: # Check existence fil = Filter().get_by_pk(kwargs["id_filter"]) filter_dict = model_to_dict(fil) filter_dict["equip_types"] = list() for fil_equip_type in fil.filterequiptype_set.all(): filter_dict["equip_types"].append(model_to_dict(fil_equip_type.equiptype)) return self.response(dumps_networkapi({"filter": filter_dict})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Handles GET requests to find all Racks URLs: /rack/find/ """ self.log.info('Find all Racks') try: # User permission if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() nome = kwargs.get('rack_name') rack = Rack() rack = rack.get_by_name(nome) rack = model_to_dict(rack) return self.response(dumps_networkapi({'rack': rack})) except UserNotAuthorizedError: return self.not_authorized() except RackError: return self.response_error(379)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Option VIP. URL: optionvip/all' """ try: self.log.info('GET to list all the Option VIP') # User permission if not has_perm(user, AdminPermission.OPTION_VIP, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Find All Option VIP option_vips = OptionVip.get_all() ovips = [] for ov in option_vips: ovips.append(model_to_dict(ov)) return self.response(dumps_networkapi({'option_vip': ovips})) except UserNotAuthorizedError: return self.not_authorized() except OptionVipError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all . URL: interface/get-type/ """ try: # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() lista_tipo_interface = [] tipos_interface = TipoInterface.objects.all() for tipo in tipos_interface: lista_tipo_interface.append(tipo) lists = self.get_envs(lista_tipo_interface) # Return XML interface_list = dict() interface_list['tipo_interface'] = lists return self.response(dumps_networkapi(interface_list)) except GrupoError: return self.response_error(1) except InvalidValueError, e: return self.response_error(369, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Administrative Permission. URL: aperms/all """ try: self.log.info('GET to list all the Administrative Permission') # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) perms_list = [] for perm in PermissaoAdministrativa.objects.all(): perms_list.append(model_to_dict(perm)) return self.response(dumps_networkapi({'perms': perms_list})) except UserNotAuthorizedError: return self.not_authorized() except GrupoError: return self.response_error(1)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to list all the Group l3. URL: groupl3/all """ try: self.log.info("GET to list all the Group l3") # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) groupl3_list = [] for group in GrupoL3.objects.all(): groupl3_list.append(model_to_dict(group)) return self.response(dumps_networkapi({'group_l3': groupl3_list})) except UserNotAuthorizedError: return self.not_authorized() except AmbienteError: return self.response_error(1)
def handle_post(self, request, user, *args, **kwargs): """Handles POST requests associate environment to ip config URL: ipconfig/ """ try: # Commons Validations # User permission if not has_perm(user, AdminPermission.ENVIRONMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION): return self.not_authorized() # Business Validations # Load XML data xml_map, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error(3, u'Não existe valor para a tag networkapi do XML de requisição.') environment_map = networkapi_map.get('ambiente') if environment_map is None: return self.response_error(3, u'Não existe valor para a tag ambiente do XML de requisição.') # Get XML data id_environment = environment_map.get('id_environment') id_ip_config = environment_map.get('id_ip_config') # Valid environment if not is_valid_int_greater_zero_param(id_environment): raise InvalidValueError(None, 'id_environment', id_environment) # Valid ip config if not is_valid_int_greater_zero_param(id_ip_config): raise InvalidValueError(None, 'id_ip_config', id_ip_config) # Environment must exists environment = Ambiente().get_by_pk(id_environment) # Ip config must exists ip_conf = IPConfig().get_by_pk(id_ip_config) # Makes the relationship config = ConfigEnvironment() config.ip_config = ip_conf config.environment = environment config.save(user) # Make return xml conf_env_map = dict() conf_env_map['id_config_do_ambiente'] = config.id return self.response(dumps_networkapi({'config_do_ambiente': conf_env_map})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)