Cuando elimina una puerta de enlace y luego agrega una nueva con el mismo EUI, falla porque se queja de que la puerta de enlace ya existe.
{
"code": 6,
"message": "error:pkg/identityserver/store:already_exists (entity already exists)",
"details": [
{
"@type": "type.googleapis.com/ttn.lorawan.v3.ErrorDetails",
"namespace": "pkg/identityserver/store",
"name": "already_exists",
"message_format": "entity already exists",
"attributes": {
"field": "gateway_eui",
"value": "'3135313749005303'"
},
"correlation_id": "c0dc6bb73d714702bd8d0be57e83f369"
}
]
}
Crear con éxito la nueva puerta de enlace
amazon linux usando TTN CLI y Postman usando API Call
Cuando el usuario intente insertar una puerta de enlace eliminada, actualice el indicador eliminado a falso
...
Relacionado con https://github.com/TheThingsNetwork/lorawan-stack/issues/1121
Actualicé un poco este problema para que tenga un alcance ligeramente diferente al n.º 1121, que podemos hacer más sobre la restauración de entidades eliminadas en general (en lugar de solo aplicaciones).
En la edición actual, concentrémonos más en agregar nuevas puertas de enlace con el mismo EUI que una puerta de enlace eliminada.
Relacionado con https://github.com/TheThingsNetwork/lorawan-stack/issues/604 (liberación de ID/EUI)
@htdvisser incluso teniendo https://github.com/TheThingsNetwork/lorawan-stack/issues/1703 (ahora en Next Up) no cubre completamente el caso de uso común de poder crear una puerta de enlace con un EUI que se ha utilizado antes . Hacer que un administrador purgue una entidad no es una buena experiencia para el usuario, además, purgar una entidad es más destructivo que simplemente liberar el EUI.
Afaik, no tenemos problemas de seguridad con la liberación de la EUI al eliminar la puerta de enlace. Ya es opcional. Obviamente, haría que la recuperación fuera parcial, es decir, el EUI desaparece, pero creo que es aceptable y también se alinea con la forma en que los EUI del dispositivo se liberan al eliminarse inmediatamente.
¿Podemos cerrar este problema simplemente liberando el EUI en la eliminación de la puerta de enlace? ¿Si no, porque no?
Sí, podríamos actualizar el campo Gateway EUI a nil/NULL en la eliminación. Debería ser tan simple como agregar un
// AfterDelete releases the EUI of a Gateway after it is deleted.
func (gtw *Gateway) AfterDelete(db *gorm.DB) error {
return db.Unscoped().Model(gtw).UpdateColumn("gateway_eui", nil).Error
}
en pkg/identityserver/store/hooks.go
.
@bafonins , ¿puedes recoger esto?
@adamsondelacruz vuelva a abrir si https://github.com/TheThingsNetwork/lorawan-stack/pull/1843 no resuelve el problema.