Lorawan-stack: EUIs gelöschter Gateways wiederverwenden

Erstellt am 7. Aug. 2019  ·  7Kommentare  ·  Quelle: TheThingsNetwork/lorawan-stack

Zusammenfassung

Wenn Sie ein Gateway löschen und dann ein neues mit demselben EUI hinzufügen, schlägt dies fehl, weil es sich beschwert, dass das Gateway bereits vorhanden ist.

Schritte zum Reproduzieren

  1. Entfernen Sie ein vorhandenes Gateway
  2. Fügen Sie es über die CLI hinzu oder
  3. Fügen Sie es über die API hinzu

Was siehst du jetzt?

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

Was möchtest du stattdessen sehen?


Erstellen Sie erfolgreich das neue Gateway

Umfeld

Amazon Linux mit TTN CLI und Postman mit API Call

Wie schlagen Sie vor, dies umzusetzen?

Wenn der Benutzer versucht, ein gelöschtes Gateway einzufügen, aktualisieren Sie das Gelöscht-Flag auf „false“.

Können Sie dies selbst tun und einen Pull-Request einreichen?

...

identity server in progress

Alle 7 Kommentare

Ich habe dieses Problem ein wenig aktualisiert, um einen etwas anderen Umfang als # 1121 zu haben, wodurch wir mehr über die Wiederherstellung gelöschter Entitäten im Allgemeinen (anstatt nur Anwendungen) machen können.

In der aktuellen Ausgabe konzentrieren wir uns mehr auf das Hinzufügen neuer Gateways mit demselben EUI wie ein gelöschtes Gateway.

@htdvisser selbst mit https://github.com/TheThingsNetwork/lorawan-stack/issues/1703 (jetzt in Next Up) deckt den üblichen Anwendungsfall nicht vollständig ab, ein Gateway mit einem zuvor verwendeten EUI erstellen zu können . Einen Administrator einzuschleifen, um eine Entität zu bereinigen, ist keine schöne Benutzererfahrung, außerdem ist die Bereinigung einer Entität zerstörerischer als die einfache Freigabe der EUI.

Afaik haben wir keine Sicherheitsprobleme mit der Freigabe der EUI beim Löschen des Gateways. Es ist bereits optional. Es würde natürlich zu einer teilweisen Wiederherstellung führen, dh die EUI ist weg, aber ich denke, das ist akzeptabel und stimmt auch damit überein, wie Geräte-EUIs beim sofortigen Löschen freigegeben werden.

Können wir dieses Problem schließen, indem wir einfach die EUI beim Löschen des Gateways freigeben? Wenn nein, warum nicht?

Ja, wir könnten das Gateway-EUI-Feld beim Löschen auf nil/NULL aktualisieren. Sollte so einfach sein wie das Hinzufügen von a

// 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
}

in pkg/identityserver/store/hooks.go .

@bafonins kannst du das abholen?

@adamsondelacruz bitte erneut öffnen, wenn https://github.com/TheThingsNetwork/lorawan-stack/pull/1843 das Problem nicht löst.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen