Lorawan-stack: Reutilización de EUI de puertas de enlace eliminadas

Creado en 7 ago. 2019  ·  7Comentarios  ·  Fuente: TheThingsNetwork/lorawan-stack

Resumen

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.

Pasos para reproducir

  1. Eliminar una puerta de enlace existente
  2. Agréguelo usando la CLI o
  3. Agréguelo usando la API

¿Qué ves ahora?

{
    "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"
        }
    ]
}

¿Qué quieres ver en su lugar?


Crear con éxito la nueva puerta de enlace

Ambiente

amazon linux usando TTN CLI y Postman usando API Call

¿Cómo propone implementar esto?

Cuando el usuario intente insertar una puerta de enlace eliminada, actualice el indicador eliminado a falso

¿Puedes hacerlo tú mismo y enviar una solicitud de extracción?

...

identity server in progress

Todos 7 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones