Lorawan-stack: Повторное использование EUI удаленных шлюзов

Созданный на 7 авг. 2019  ·  7Комментарии  ·  Источник: TheThingsNetwork/lorawan-stack

Резюме

Когда вы удаляете шлюз, а затем добавляете новый с тем же EUI, если происходит сбой, потому что он жалуется, что шлюз уже существует.

Действия по воспроизведению

  1. Удалить существующий шлюз
  2. Добавьте его с помощью CLI или
  3. Добавьте его с помощью API

Что ты видишь сейчас?

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

Что вы хотите видеть вместо этого?


Успешно создать новый шлюз

Окружающая обстановка

amazon linux с использованием TTN CLI и Postman с использованием вызова API

Как вы предлагаете это реализовать?

Когда пользователь пытается вставить удаленный шлюз, обновите удаленный флаг до false

Можете ли вы сделать это самостоятельно и отправить запрос на слияние?

...

identity server in progress

Все 7 Комментарий

Я немного обновил эту проблему, чтобы иметь немного другую область действия, чем # 1121, что мы можем сделать больше о восстановлении удаленных объектов в целом (а не только приложений).

В текущем выпуске давайте больше сосредоточимся на добавлении новых шлюзов с тем же EUI, что и у удаленного шлюза.

Связано с https://github.com/TheThingsNetwork/lorawan-stack/issues/604 (выпуск идентификаторов/EUI)

@htdvisser , даже наличие https://github.com/TheThingsNetwork/lorawan-stack/issues/1703 (теперь в Next Up), не полностью покрывает распространенный вариант использования возможности создания шлюза с EUI, который использовался ранее . Зацикливание администратора на очистке сущности не очень удобно для пользователя, к тому же очистка сущности более разрушительна, чем простое освобождение EUI.

Насколько я знаю, у нас нет проблем с безопасностью при выпуске EUI при удалении шлюза. Это уже опционально. Это, очевидно, сделает восстановление частичным, т. е. EUI исчезнет, ​​но я думаю, что это приемлемо, а также согласуется с тем, как EUI устройства выпускаются сразу после удаления.

Можем ли мы решить эту проблему, просто отключив EUI при удалении шлюза? Если нет, то почему?

Да, мы могли бы обновить поле EUI шлюза до nil/NULL при удалении. Должно быть так же просто, как добавить

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

в pkg/identityserver/store/hooks.go .

@bafonins , ты можешь забрать это?

@adamsondelacruz, пожалуйста, снова откройте, если https://github.com/TheThingsNetwork/lorawan-stack/pull/1843 не решит проблему.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги