def insert_equipment(equipment_map, user): ''' Insere um equipamento e o relacionamento entre equipamento e o grupo. @param equipment_map: Map com as chaves: id_grupo, id_tipo_equipamento, id_modelo e nome @param user: Usuário autenticado na API. @return Em caso de erro retorna a tupla: (código da mensagem de erro, argumento01, argumento02, ...) Em caso de sucesso retorna a tupla: (0, <identificador do equipamento_grupo>, <equipamento>) @raise InvalidGroupToEquipmentTypeError: Equipamento do grupo “Equipamentos Orquestração” somente poderá ser criado com tipo igual a “Servidor Virtual”. @raise EGrupoNotFoundError: Grupo não cadastrado. @raise GrupoError: Falha ao pesquisar o Grupo. @raise TipoEquipamentoNotFoundError: Tipo de equipamento nao cadastrado. @raise ModeloNotFoundError: Modelo nao cadastrado. @raise EquipamentoNameDuplicatedError: Nome do equipamento duplicado. @raise EquipamentoError: Falha ou inserir o equipamento. @raise UserNotAuthorizedError: Usuário sem autorização para executar a operação. ''' log = Log('insert_equipment') log.debug('EQUIPAMENTO_MAP: %s', equipment_map) equipment = Equipamento() equipment.tipo_equipamento = TipoEquipamento() equipment.modelo = Modelo() group_id = equipment_map.get('id_grupo') if not is_valid_int_greater_zero_param(group_id): log.error( u'The group_id parameter is not a valid value: %s.', group_id) raise InvalidValueError(None, 'group_id', group_id) else: group_id = int(group_id) if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, group_id, None, AdminPermission.EQUIP_WRITE_OPERATION): raise UserNotAuthorizedError( None, u'Usuário não tem permissão para executar a operação.') equipment_type_id = equipment_map.get('id_tipo_equipamento') if not is_valid_int_greater_zero_param(equipment_type_id): log.error( u'The equipment_type_id parameter is not a valid value: %s.', equipment_type_id) raise InvalidValueError(None, 'equipment_type_id', equipment_type_id) else: equipment.tipo_equipamento.id = int(equipment_type_id) model_id = equipment_map.get('id_modelo') if not is_valid_int_greater_zero_param(model_id): log.error( u'The model_id parameter is not a valid value: %s.', model_id) raise InvalidValueError(None, 'model_id', model_id) else: equipment.modelo.id = int(model_id) name = equipment_map.get('nome') if not is_valid_string_minsize(name, 3) or not is_valid_string_maxsize(name, 50): log.error(u'The name parameter is not a valid value: %s.', name) raise InvalidValueError(None, 'name', name) else: equipment.nome = name #maintenance is a new feature. Check existing value if not defined in request #Old calls does not send this field maintenance = equipment_map.get('maintenance') if maintenance is None: maintenance = False if not is_valid_boolean_param(maintenance): log.error(u'The maintenance parameter is not a valid value: %s.', maintenance) raise InvalidValueError(None, 'maintenance', maintenance) else: equipment.maintenance = maintenance equipment_group_id = equipment.create(user, group_id) return 0, equipment_group_id, equipment
try: data = facade.generate_and_deploy_interface_config_sync(request.user, id_interface) return Response(data) except exceptions.InvalidIdInterfaceException, exception: raise exception except exceptions.UnsupportedEquipmentException, exception: raise exception except exceptions.InterfaceTemplateException, exception: raise exception except InterfaceNotFoundError: raise exceptions.InvalidIdInterfaceException except Exception, exception: log.error(exception) raise exception @api_view(['PUT']) @permission_classes((IsAuthenticated, DeployConfig)) def deploy_channel_configuration_sync(request, id_channel): """ Deploy interface channel configuration on equipment(s) """ try: data = facade.generate_and_deploy_channel_config_sync(request.user, id_channel) return Response(data) except exceptions.InvalidIdInterfaceException, exception:
def insert_vip_request(vip_map, user): '''Insere uma requisição de VIP. @param vip_map: Mapa com os dados da requisição. @param user: Usuário autenticado. @return: Em caso de sucesso: tupla (0, <requisição de VIP>). Em caso de erro: tupla (código da mensagem de erro, argumento01, argumento02, ...) @raise IpNotFoundError: IP não cadastrado. @raise IpError: Falha ao pesquisar o IP. @raise HealthcheckExpectNotFoundError: HealthcheckExpect não cadastrado. @raise HealthcheckExpectError: Falha ao pesquisar o HealthcheckExpect. @raise InvalidFinalidadeValueError: Finalidade com valor inválido. @raise InvalidClienteValueError: Cliente com valor inválido. @raise InvalidAmbienteValueError: Ambiente com valor inválido. @raise InvalidCacheValueError: Cache com valor inválido. @raise InvalidMetodoBalValueError: Valor do método de balanceamento inválido. @raise InvalidPersistenciaValueError: Persistencia com valor inválido. @raise InvalidHealthcheckTypeValueError: Healthcheck_Type com valor inválido ou inconsistente em relação ao valor do healthcheck_expect. @raise InvalidTimeoutValueError: Timeout com valor inválido. @raise InvalidHostNameError: Host não cadastrado. @raise EquipamentoError: Falha ao pesquisar o equipamento. @raise InvalidMaxConValueError: Número máximo de conexões com valor inválido. @raise InvalidBalAtivoValueError: Bal_Ativo com valor inválido. @raise InvalidTransbordoValueError: Transbordo com valor inválido. @raise InvalidServicePortValueError: Porta do Serviço com valor inválido. @raise InvalidRealValueError: Valor inválido de um real. @raise InvalidHealthcheckValueError: Valor do healthcheck inconsistente em relação ao valor do healthcheck_type. @raise RequisicaoVipsError: Falha ao inserir a requisição de VIP. @raise UserNotAuthorizedError: ''' log = Log('insert_vip_request') if not has_perm(user, AdminPermission.VIPS_REQUEST, AdminPermission.WRITE_OPERATION): raise UserNotAuthorizedError( None, u'Usuário não tem permissão para executar a operação.') ip_id = vip_map.get('id_ip') if not is_valid_int_greater_zero_param(ip_id): log.error(u'The ip_id parameter is not a valid value: %s.', ip_id) raise InvalidValueError(None, 'ip_id', ip_id) else: ip_id = int(ip_id) vip = RequisicaoVips() vip.ip = Ip() vip.ip.id = ip_id # Valid ports vip_map, code = vip.valid_values_ports(vip_map) if code is not None: return code, vip # get environmentVip dor validation dynamic heathcheck finalidade = vip_map.get('finalidade') cliente = vip_map.get('cliente') ambiente = vip_map.get('ambiente') if not is_valid_string_minsize(finalidade, 3) or not is_valid_string_maxsize(finalidade, 50): log.error(u'Finality value is invalid: %s.', finalidade) raise InvalidValueError(None, 'finalidade', finalidade) if not is_valid_string_minsize(cliente, 3) or not is_valid_string_maxsize(cliente, 50): log.error(u'Client value is invalid: %s.', cliente) raise InvalidValueError(None, 'cliente', cliente) if not is_valid_string_minsize(ambiente, 3) or not is_valid_string_maxsize(ambiente, 50): log.error(u'Environment value is invalid: %s.', ambiente) raise InvalidValueError(None, 'ambiente', ambiente) try: environment_vip = EnvironmentVip.get_by_values( finalidade, cliente, ambiente) except Exception, e: raise EnvironmentVipNotFoundError( e, 'The fields finality or client or ambiente is None')
def update_vip_request(vip_id, vip_map, user): log = Log('update_vip_request') if not has_perm(user, AdminPermission.VIPS_REQUEST, AdminPermission.WRITE_OPERATION): raise UserNotAuthorizedError( None, u'Usuário não tem permissão para executar a operação.') healthcheck_expect_id = vip_map.get('id_healthcheck_expect') if healthcheck_expect_id is not None: if not is_valid_int_greater_zero_param(healthcheck_expect_id): log.error( u'The healthcheck_expect_id parameter is not a valid value: %s.', healthcheck_expect_id) raise InvalidValueError( None, 'healthcheck_expect_id', healthcheck_expect_id) else: healthcheck_expect_id = int(healthcheck_expect_id) ip_id = vip_map.get('id_ip') if not is_valid_int_greater_zero_param(ip_id): log.error(u'The ip_id parameter is not a valid value: %s.', ip_id) raise InvalidValueError(None, 'ip_id', ip_id) else: ip_id = int(ip_id) validated = vip_map.get('validado') if validated is None: return 246 if validated == '0': validated = False elif validated == '1': validated = True else: return 244 vip_created = vip_map.get('vip_criado') if vip_created is None: return 247 if vip_created == '0': vip_created = False elif vip_created == '1': vip_created = True else: return 245 # Valid maxcon if not is_valid_int_greater_equal_zero_param(vip_map.get('maxcon')): log.error( u'The maxcon parameter is not a valid value: %s.', vip_map.get('maxcon')) raise InvalidValueError(None, 'maxcon', vip_map.get('maxcon')) code = RequisicaoVips.update(user, vip_id, vip_map, healthcheck_expect_id=healthcheck_expect_id, ip_id=ip_id, vip_criado=vip_created, validado=validated) if code is not None: return code return 0
try: network_template_file = _load_template_file(equipment, template_type) key_dict = _generate_template_dict(dict_ips, equipment) config_to_be_saved += network_template_file.render( Context(key_dict) ) except KeyError, exception: log.error("Erro: %s " % exception) raise exceptions.InvalidKeyException(exception) #Save new file try: file_handle = open(filename_to_save, 'w') file_handle.write(config_to_be_saved) file_handle.close() except IOError, e: log.error("Error writing to config file: %s" % filename_to_save) raise e return rel_file_to_deploy def _generate_template_dict(dict_ips, equipment): '''Creates a 1-dimension dictionary from a 2 dimension with equipment information Args: dict_ips dictionary for template rendering equipment to create dictionary to Returns: 1-dimension dictionary to use in template rendering for equipment ''' key_dict = {} #TODO Separate differet vendor support if needed for gateway redundancy
def insert_ip(ip_map, user): """Insere um IP e o relacionamento entre o IP e o equipamento. @param ip_map: Map com as chaves: id_equipamento, id_vlan e descricao @param user: Usuário autenticado na API. @return Em caso de erro retorna a tupla: (código da mensagem de erro, argumento01, argumento02, ...) Em caso de sucesso retorna a tupla: (0, <mapa com os dados do IP>) @raise VlanNotFoundError: VLAN não cadastrada. @raise VlanError: Falha ao pesquisar a VLAN. @raise EquipamentoNotFoundError: Equipamento não cadastrado. @raise EquipamentoError: Falha ao pesquisar o Equipamento. @raise IpNotAvailableError: Não existe um IP disponível para a VLAN. @raise IpError: Falha ao inserir no banco de dados. @raise UserNotAuthorizedError: Usuário sem autorização para executar a operação. """ log = Log("insert_ip") equip_id = ip_map.get("id_equipamento") if not is_valid_int_greater_zero_param(equip_id): log.error(u"The equip_id parameter is not a valid value: %s.", equip_id) raise InvalidValueError(None, "equip_id", equip_id) else: equip_id = int(equip_id) 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.") vlan_id = ip_map.get("id_vlan") if not is_valid_int_greater_zero_param(vlan_id): log.error(u"The vlan_id parameter is not a valid value: %s.", vlan_id) raise InvalidValueError(None, "vlan_id", vlan_id) else: vlan_id = int(vlan_id) desc_ip = ip_map.get("descricao") if desc_ip is not None: if not is_valid_string_maxsize(desc_ip, 100) or not is_valid_string_minsize(desc_ip, 3): log.error(u"Parameter desc_ip is invalid. Value: %s.", desc_ip) raise InvalidValueError(None, "desc_ip", desc_ip) ip = Ip() ip.descricao = desc_ip ip.create(user, equip_id, vlan_id, False) ip_map = dict() ip_map["id"] = ip.id ip_map["id_redeipv4"] = ip.networkipv4.id ip_map["oct4"] = ip.oct4 ip_map["oct3"] = ip.oct3 ip_map["oct2"] = ip.oct2 ip_map["oct1"] = ip.oct1 ip_map["descricao"] = ip.descricao return 0, ip_map