0

我尝试将 Hono 从 1.2.3 升级到 1.4.3 版本。但是在 1.2.3 版本中,我将数据存储在文件中,现在我想使用基于 mongodb 的设备注册表。但是我发现mongodb集合和文件之间的结构是不同的。如下所示:

1.2.3 租户.json

[ {
  "enabled" : true,
  "tenant-id" : "test"
}, {
  "enabled" : true,
  "trusted-ca" : [ {
    "subject-dn" : "CN=loadtest CA,OU=Hono,O=Bosch,L=NJ,C=CN",
    "public-key" : "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxN+0lLMoRvMyiINcP4COYFbx6X5tPzNJ/kg57dFAEf6dPVtLuO4wBI44X6BHmefOskLsAOW0UGFztXwfYxYgVgEFdDWWGqEXFjMPXfDR48ace7DsxqLFl98dOIp0VEB0HWf5sQi6CtMb6r0RWatvw2Otx2GZuaxCix/rJ96UnkoiqUt6aaCwfLRXEYTeNJOqyValzhgJ0R5vUH/QqO4lTIejTS3uCep08l2I7YcZvpSTshETKVH847ByxYE3uOSgtnYRUTmOtHh44r3g8vlL8bJfkmrps3atXpkvKxo+xj2TAszjRSEfjH2zfGWrHl46zdz5hr7gBJSHh9LegXc/V843YSbPcN/7fVJr5qX9fNSvVPTGLqoL4dGuYzWoLxjeC9lYihizRUrcdy+ApS9COlwRL4VHPE8quid3QK12+DcwK4k1nrBbxi9UshlQEW7KMHkSl8wNnwKLGhKR/d9KJ71C7blsVfmC+JNA+WPFhzSa+kYM3WvGf/SnwpZoErW009izgWFgHCY19jZFjy0qgMWUoLdXzUkSEkhP5JUhPl+PMxcfGe46BSIZm38yBJI85KN0pui/990BvusnrKYs6WaP1zx+/KmWwBvlbBVcingnRHUQ4n/lGeps5+HscjbTwMXOzk1gwmzyqvZbhCyYiTZM4uC6GAsNKD69kyzfvh8CAwEAAQ==",
    "algorithm" : "RSA",
    "not-before" : "2020-06-16T23:42:42Z",
    "not-after" : "2021-06-16T23:42:42Z",
    "auto-provisioning-enabled" : false
  } ],
  "tenant-id" : "loadtest"
} ]

1.4.3 租户集合

{
        "_id" : "5fbca60323059c55e8bf7174",
        "version" : "466f5076-6e4f-4c10-a4c7-1434b1725b7e",
        "updatedOn" : "2020-11-24T06:19:47Z",
        "tenant-id" : "DEFAULT_TENANT",
        "tenant" : {
                "enabled" : true,
                "trusted-ca" : [
                        {
                                "subject-dn" : "CN=DEFAULT_TENANT_CA,OU=Hono,O=Eclipse IoT,L=Ottawa,C=CA",
                                "public-key" : "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElkwCSPlO563eQb6ONdULAISm2XngGGSoAAz+I1s8zkS9guPUpNKoxeczLtKlObelHqBgIZtRXdrPRgXidGOnmQ==",
                                "algorithm" : "EC",
                                "not-before" : "2019-09-18T08:35:40Z",
                                "not-after" : "2020-09-17T08:35:40Z",
                                "auto-provisioning-enabled" : false
                        }
                ]
        }
}
{
        "_id" : "5fbca60423059c55e8bf7175",
        "version" : "c41fe230-88ae-4701-bbd6-66ea4b068271",
        "updatedOn" : "2020-11-24T06:19:48Z",
        "tenant-id" : "HTTP_TENANT",
        "tenant" : {
                "enabled" : true,
                "adapters" : [
                        {
                                "type" : "hono-http",
                                "enabled" : true,
                                "device-authentication-required" : true
                        },
                        {
                                "type" : "hono-mqtt",
                                "enabled" : false,
                                "device-authentication-required" : true
                        },
                        {
                                "type" : "hono-kura",
                                "enabled" : false,
                                "device-authentication-required" : true
                        },
                        {
                                "type" : "hono-coap",
                                "enabled" : false,
                                "device-authentication-required" : true
                        }
                ]
        }
}

其他两个收集设备/凭据也具有不同的结构。

那么如何升级我的 Hono 实例呢?

提前致谢。

4

1 回答 1

3

更新
此解决方案已添加到hono-extras github 存储库中。当您有更新或修复时,这可能是分享此内容的合适位置。

我们也进行了这种转换并编写了一个小 Python 脚本:https ://gist.github.com/BobClaerhout/4dd1d2558e3210954419e2746232bbf9 。
我必须警告你,这对我们来说已经足够了,但可能还不完整。但是,这可以为您提供先机。

您可以按照以下指南移动数据:

  • 从基于文件的注册表导出:
kubectl cp hono-service-device-registry-0:/var/lib/hono/device-registry .
  • 转换所有集合:
./file2mongo.py tenants device-registry/tenants.json > tenants-converted.json
./file2mongo.py devices device-registry/devices.json > devices-converted.json
./file2mongo.py credentials device-registry/credentials.json > credentials-converted.json

sudo -E kubefwd svc
mongoimport --host hono-monogodb-server:27017 -u device-registry@HONO -p hono-secret -d honodb -c tenants --jsonArray --file tenants-converted.json
mongoimport --host hono-monogodb-server:27017 -u device-registry@HONO -p hono-secret -d honodb -c devices --jsonArray --file devices-converted.json
mongoimport --host hono-monogodb-server:27017 -u device-registry@HONO -p hono-secret -d honodb -c credentials --jsonArray --file credentials-converted.json
于 2020-11-25T16:09:00.293 回答