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