class MockPluginNetwork(object): _status = True equipment_access = EquipamentoAcesso() @classmethod def status(cls, status=True): cls._status = status @classmethod def remove_svi(cls, svi_number): if cls._status: log.info('Mock Remove Network') else: raise Exception('Error') @classmethod def create_svi(cls, svi_number, svi_description='no description'): if cls._status: log.info('Mock Create Network') else: raise Exception('Error') @classmethod def connect(cls): if cls._status: log.info('Mock Connecting') else: raise Exception('Error') @classmethod def close(cls): if cls._status: log.info('Mock Closing') else: raise Exception('Error') @classmethod def ensure_privilege_level(cls): if cls._status: log.info('Mock Ensuring Privilege Level') else: raise Exception('Error') @classmethod def copyScriptFileToConfig(cls, filename, use_vrf=None, destination='running-config'): if cls._status: log.info('Mock Copying script file to config') else: raise Exception('Error')
def handle_post(self, request, user, *args, **kwargs): """Trata as requisições de POST para criar Informações de Acesso a Equipamentos. URL: /equipamentoacesso """ # Obtém dados do request e verifica acesso try: # Obtém os dados do xml do request xml_map, attrs_map = loads(request.raw_post_data) # Obtém o mapa correspondente ao root node do mapa do XML # (networkapi) 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.' ) # Verifica a existência do node "equipamento_acesso" equipamento_acesso_map = networkapi_map.get('equipamento_acesso') if equipamento_acesso_map is None: return self.response_error( 3, u'Não existe valor para a tag equipamento_acesso do XML de requisição.' ) # Verifica a existência do valor "id_equipamento" id_equipamento = equipamento_acesso_map.get('id_equipamento') # Valid ID Equipment if not is_valid_int_greater_zero_param(id_equipamento): self.log.error( u'The id_equipamento parameter is not a valid value: %s.', id_equipamento) raise InvalidValueError(None, 'id_equipamento', id_equipamento) try: id_equipamento = int(id_equipamento) except (TypeError, ValueError): self.log.error(u'Valor do id_equipamento inválido: %s.', id_equipamento) return self.response_error(117, id_equipamento) # Após obtenção do id_equipamento podemos verificar a permissão if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, id_equipamento, AdminPermission.EQUIP_WRITE_OPERATION): return self.not_authorized() # Verifica a existência do valor "fqdn" fqdn = equipamento_acesso_map.get('fqdn') # Valid fqdn if not is_valid_string_maxsize( fqdn, 100) or not is_valid_string_minsize(fqdn, 4): self.log.error(u'Parameter fqdn is invalid. Value: %s', fqdn) raise InvalidValueError(None, 'fqdn', fqdn) # Verifica a existência do valor "user" username = equipamento_acesso_map.get('user') # Valid username if not is_valid_string_maxsize( username, 20) or not is_valid_string_minsize(username, 3): self.log.error(u'Parameter username is invalid. Value: %s', username) raise InvalidValueError(None, 'username', username) # Verifica a existência do valor "pass" password = equipamento_acesso_map.get('pass') # Valid password if not is_valid_string_maxsize( password, 150) or not is_valid_string_minsize(password, 3): self.log.error(u'Parameter password is invalid.') raise InvalidValueError(None, 'password', '****') # Verifica a existência do valor "id_tipo_acesso" id_tipo_acesso = equipamento_acesso_map.get('id_tipo_acesso') # Valid ID Equipment if not is_valid_int_greater_zero_param(id_tipo_acesso): self.log.error( u'The id_tipo_acesso parameter is not a valid value: %s.', id_tipo_acesso) raise InvalidValueError(None, 'id_tipo_acesso', id_tipo_acesso) try: id_tipo_acesso = int(id_tipo_acesso) except (TypeError, ValueError): self.log.error(u'Valor do id_tipo_acesso inválido: %s.', id_tipo_acesso) return self.response_error(171, id_tipo_acesso) # Obtém o valor de "enable_pass" enable_pass = equipamento_acesso_map.get('enable_pass') # Valid enable_pass if not is_valid_string_maxsize(enable_pass, 150) or not is_valid_string_minsize( enable_pass, 3): self.log.error(u'Parameter enable_pass is invalid.') raise InvalidValueError(None, 'enable_pass', '****') # Cria acesso ao equipamento conforme dados recebidos no XML equipamento_acesso = EquipamentoAcesso( equipamento=Equipamento(id=id_equipamento), fqdn=fqdn, user=username, password=password, tipo_acesso=TipoAcesso(id=id_tipo_acesso), enable_pass=enable_pass) equipamento_acesso.create(user) # Monta dict para response networkapi_map = dict() equipamento_acesso_map = dict() equipamento_acesso_map['id'] = equipamento_acesso.id networkapi_map['equipamento_acesso'] = equipamento_acesso_map return self.response(dumps_networkapi(networkapi_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)