Ketika Anda menghapus gateway dan kemudian menambahkan yang baru dengan EUI yang sama, jika gagal karena mengeluh bahwa gateway sudah ada.
{
"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"
}
]
}
Berhasil membuat gateway baru
amazon linux menggunakan TTN CLI dan Postman menggunakan Panggilan API
Saat pengguna mencoba memasukkan gateway yang dihapus, perbarui flag yang dihapus menjadi false
...
Saya memperbarui masalah ini sedikit untuk memiliki cakupan yang sedikit berbeda dari #1121, yang dapat kami buat lebih lanjut tentang memulihkan entitas yang dihapus secara umum (bukan hanya aplikasi).
Dalam edisi saat ini, mari lebih fokus pada penambahan gateway baru dengan EUI yang sama dengan gateway yang dihapus.
Terkait dengan https://github.com/TheThingsNetwork/lorawan-stack/issues/604 (melepaskan ID/EUI)
@htdvisser bahkan memiliki https://github.com/TheThingsNetwork/lorawan-stack/issues/1703 (sekarang di Next Up) tidak sepenuhnya mencakup kasus penggunaan umum untuk dapat membuat gateway dengan EUI yang telah digunakan sebelumnya . Mengulang administrator untuk membersihkan entitas bukanlah pengalaman pengguna yang menyenangkan, ditambah pembersihan entitas lebih merusak daripada sekadar melepaskan EUI.
Afaik kami tidak memiliki masalah keamanan dengan merilis EUI saat menghapus gateway. Ini sudah opsional. Jelas, itu akan membuat pemulihan parsial, yaitu EUI hilang, tetapi saya pikir itu dapat diterima dan juga sejalan dengan bagaimana EUI perangkat segera dirilis saat dihapus.
Bisakah kita menutup masalah ini hanya dengan melepaskan EUI pada penghapusan gateway? Jika tidak, mengapa tidak?
Ya, kami dapat memperbarui bidang Gateway EUI ke nil/NULL saat dihapus. Harus sesederhana menambahkan
// 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
}
di pkg/identityserver/store/hooks.go
.
@bafonins bisakah kamu mengambil ini?
@adamsondelacruz silakan buka kembali jika https://github.com/TheThingsNetwork/lorawan-stack/pull/1843 tidak menyelesaikan masalah.