hcs-cli 0.1.317__py3-none-any.whl → 0.1.319__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. hcs_cli/__init__.py +1 -1
  2. hcs_cli/cmds/advisor/html_utils.py +30 -26
  3. hcs_cli/cmds/advisor/recommendation_engine.py +7 -10
  4. hcs_cli/cmds/api.py +5 -3
  5. hcs_cli/cmds/daas/tenant/plan.py +1 -1
  6. hcs_cli/cmds/debug/start.py +2 -3
  7. hcs_cli/cmds/dev/fs/helper/credential_helper.py +2 -0
  8. hcs_cli/cmds/dev/fs/helper/k8s_util.py +0 -1
  9. hcs_cli/cmds/dev/fs/helper/license_info.py +36 -12
  10. hcs_cli/cmds/dev/fs/init.py +38 -5
  11. hcs_cli/cmds/dev/fs/profiler.py +0 -1
  12. hcs_cli/cmds/dev/fs/provided_files/akka.plan.yml +94 -250
  13. hcs_cli/cmds/dev/fs/provided_files/azsim.plan.yml +27 -34
  14. hcs_cli/cmds/dev/fs/provided_files/azure.plan.yml +294 -322
  15. hcs_cli/cmds/dev/fs/provided_files/mqtt-secret.yaml +188 -93
  16. hcs_cli/cmds/dev/fs/provided_files/mqtt-server-external.yaml +4 -5
  17. hcs_cli/cmds/dev/fs/provided_files/patch-mqtt-hostname.yml +3 -3
  18. hcs_cli/cmds/dev/fs/provided_files/patch-vernemq-ssl-depth.json +1 -1
  19. hcs_cli/cmds/dev/fs/tailor.py +7 -12
  20. hcs_cli/cmds/dev/mqtt.py +1 -2
  21. hcs_cli/cmds/dev/onboard.py +35 -1
  22. hcs_cli/cmds/dev/util/mqtt_helper.py +0 -1
  23. hcs_cli/cmds/hoc/search.py +39 -9
  24. hcs_cli/cmds/hst/clean.py +2 -1
  25. hcs_cli/cmds/inventory/assign.py +72 -28
  26. hcs_cli/cmds/inventory/deassign.py +35 -18
  27. hcs_cli/cmds/inventory/logoff.py +86 -8
  28. hcs_cli/cmds/inventory/session.py +2 -2
  29. hcs_cli/cmds/scm/operator.py +2 -2
  30. hcs_cli/cmds/scm/plan.py +131 -3
  31. hcs_cli/cmds/task.py +2 -4
  32. hcs_cli/cmds/template/expand.py +65 -0
  33. hcs_cli/cmds/template/list_usage.py +2 -2
  34. hcs_cli/cmds/template/usage.py +20 -7
  35. hcs_cli/cmds/vm/list.py +0 -1
  36. hcs_cli/config/hcs-deployments.yaml +52 -52
  37. hcs_cli/main.py +0 -2
  38. hcs_cli/payload/akka.blueprint.yml +95 -243
  39. hcs_cli/payload/app/manual.json +19 -19
  40. hcs_cli/payload/edge/akka.json +6 -6
  41. hcs_cli/payload/edge/vsphere.json +6 -6
  42. hcs_cli/payload/hoc/lcm-capcalc.json.template +43 -0
  43. hcs_cli/payload/hoc/no-spare.json.template +1 -1
  44. hcs_cli/payload/inventory/assign.json +14 -16
  45. hcs_cli/payload/inventory/deassign.json +11 -11
  46. hcs_cli/payload/lcm/akka.json +31 -33
  47. hcs_cli/payload/lcm/azure-dummy-nt.json +64 -66
  48. hcs_cli/payload/lcm/azure-dummy.json +64 -66
  49. hcs_cli/payload/lcm/azure-real.json +13 -11
  50. hcs_cli/payload/lcm/edge-proxy.json +34 -36
  51. hcs_cli/payload/lcm/zero-dedicated.json +34 -36
  52. hcs_cli/payload/lcm/zero-delay-1m-per-vm.json +53 -69
  53. hcs_cli/payload/lcm/zero-fail-delete-template.json +43 -0
  54. hcs_cli/payload/lcm/zero-fail-destroy-onthread.json +38 -40
  55. hcs_cli/payload/lcm/zero-fail-destroy.json +38 -40
  56. hcs_cli/payload/lcm/zero-fail-prepare-onthread.json +38 -40
  57. hcs_cli/payload/lcm/zero-fail-prepare.json +38 -40
  58. hcs_cli/payload/lcm/zero-fail-vm-onthread.json +58 -74
  59. hcs_cli/payload/lcm/zero-fail-vm.json +58 -74
  60. hcs_cli/payload/lcm/zero-floating.json +34 -36
  61. hcs_cli/payload/lcm/zero-manual.json +33 -35
  62. hcs_cli/payload/lcm/zero-multisession.json +34 -36
  63. hcs_cli/payload/lcm/zero-nanw.json +31 -33
  64. hcs_cli/payload/lcm/zero-new-5k-delay.json +69 -78
  65. hcs_cli/payload/lcm/zero-new-5k.json +36 -38
  66. hcs_cli/payload/lcm/zero-new-snapshot.json +37 -39
  67. hcs_cli/payload/lcm/zero-new.json +37 -39
  68. hcs_cli/payload/lcm/zero-reuse-vm-id.json +33 -35
  69. hcs_cli/payload/lcm/zero-with-max-id-offset.json +32 -34
  70. hcs_cli/payload/lcm/zero.json +59 -73
  71. hcs_cli/payload/provider/ad-stes-vsphere.json +26 -26
  72. hcs_cli/payload/provider/akka.json +12 -12
  73. hcs_cli/payload/provider/azure.json +14 -14
  74. hcs_cli/payload/provider/edgeproxy.json +12 -12
  75. hcs_cli/payload/provider/vsphere.json +14 -14
  76. hcs_cli/payload/scm/starter.json +22 -23
  77. hcs_cli/payload/synt/core/p01-dummy-success.json +11 -15
  78. hcs_cli/payload/synt/core/p02-dummy-fail.json +12 -15
  79. hcs_cli/payload/synt/core/p03-dummy-exception.json +12 -15
  80. hcs_cli/payload/synt/core/p04-dummy-success-repeat.json +12 -15
  81. hcs_cli/payload/synt/core/p05-dummy-fail-repeat.json +13 -16
  82. hcs_cli/payload/synt/core/p06-dummy-exception-repeat.json +13 -16
  83. hcs_cli/payload/synt/core/p07-dummy-delay.json +12 -15
  84. hcs_cli/payload/synt/core/p08-dummy-property.json +12 -15
  85. hcs_cli/payload/synt/ext/p20-connect-success.json +12 -15
  86. hcs_cli/payload/synt/ext/p21-connect-fail.json +12 -15
  87. hcs_cli/payload/synt/ext/p30-ssl-success.json +12 -15
  88. hcs_cli/payload/synt/ext/p31-ssl-fail.json +13 -16
  89. hcs_cli/payload/synt/ext/p40-http-success.json +12 -15
  90. hcs_cli/payload/synt/ext/p41-http-fail.json +12 -15
  91. hcs_cli/payload/synt/ext/p42-http-status-code.json +14 -20
  92. hcs_cli/payload/synt/ext1/p10-ping-success.json +13 -16
  93. hcs_cli/payload/synt/ext1/p11-ping-fail.json +12 -15
  94. hcs_cli/payload/synt/ext1/p12-ping-success-repeat.json +14 -17
  95. hcs_cli/provider/hcs/cert.py +0 -1
  96. hcs_cli/provider/hcs/edge.py +1 -1
  97. hcs_cli/provider/hcs/uag.py +6 -1
  98. hcs_cli/service/hoc/diagnostic.py +0 -3
  99. hcs_cli/service/inventory/__init__.py +1 -1
  100. hcs_cli/service/inventory/session.py +23 -7
  101. hcs_cli/service/lcm/vm.py +0 -1
  102. hcs_cli/service/task.py +0 -1
  103. hcs_cli/support/debug_util.py +0 -1
  104. hcs_cli/support/plan_util.py +0 -1
  105. hcs_cli/support/predefined_payload.py +4 -1
  106. hcs_cli/support/template_util.py +0 -1
  107. hcs_cli/support/test_utils.py +2 -2
  108. hcs_cli/support/test_utils2.py +536 -0
  109. {hcs_cli-0.1.317.dist-info → hcs_cli-0.1.319.dist-info}/METADATA +24 -17
  110. {hcs_cli-0.1.317.dist-info → hcs_cli-0.1.319.dist-info}/RECORD +112 -108
  111. {hcs_cli-0.1.317.dist-info → hcs_cli-0.1.319.dist-info}/WHEEL +0 -0
  112. {hcs_cli-0.1.317.dist-info → hcs_cli-0.1.319.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,4 @@
1
+ ---
1
2
  apiVersion: v1
2
3
  stringData:
3
4
  mqtt.server-host: "<mqtt-service-public-ip>"
@@ -6,24 +7,38 @@ stringData:
6
7
  mqtt.ssl: "true"
7
8
  mqtt.ca-cert: |-
8
9
  -----BEGIN CERTIFICATE-----
9
- MIIDWDCCAkACCQCpb59HXtF0xzANBgkqhkiG9w0BAQsFADBuMQswCQYDVQQGEwJV
10
- UzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UEBwwJUGFsbyBBbHRvMQwwCgYD
11
- VQQKDANFVUMxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxEDAOBgNVBAMMB0NBIFJv
12
- b3QwHhcNMjAwNDAzMTgyNjA4WhcNMzAwNDAxMTgyNjA4WjBuMQswCQYDVQQGEwJV
13
- UzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UEBwwJUGFsbyBBbHRvMQwwCgYD
14
- VQQKDANFVUMxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxEDAOBgNVBAMMB0NBIFJv
15
- b3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcMtfoxsZcGlIM6HPg
16
- +TG7Obh05DScU4XXXtgPckknoPfh085yfBSrAKT0n2hTeF+0qFDEVRBVu6MXRCbW
17
- DyWCC+w5Fo9gBnqsDgoLzmhia/hQZOP6wc2u/gzmYjdUsT29tv4X+5w0PxA36gJd
18
- ZdsM8hqn/QY5SJbiks0RzN9K9qQ/dfEbRiRlmpWNkQk0URBgg21/fYtnZvtDc3Vf
19
- hXJRUYOuXdGdhSZdbmtH/75fwFKiZb1QdnmBCQSzJIGyxd1KmwjebB0DZfjmDnTp
20
- QnDyXnsgL7rMRqa5dQUrUQF6tJox7B87oIsQKvX7PkCWuLrdhJZp8uQYGU4hKG87
21
- NTBLAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAFNL8oDvKddtYcV+cEVEoB2QIm41
22
- g8PgpjAz3tC3zUBpsc6fuAl1EQJvLDsE49dVEr7xcMb8/F0rZ+ntv4rMZJQDn1qW
23
- 2kamm3dmrHMO59FV6LUEFoPdpbHOHkELv0csHc1N042VqvwCRwOj9DR+iq3ZeVB8
24
- E1/HM0qSCHdHG6hW+snOf/+jY2P19oTGPt+T19RboFF0pd06m2Fax0BDtjtm11Db
25
- B7jpmBh+z5zcp9JM0QtfnUc9/uBnkOLPQziHG2EqpaGEVIKS5RuioOX9qCAOW6ld
26
- eFbmJAx17IB0pMppD0dxyaBt1AhLJRR5is/mslu+1ppw5jm4DAgKIiy03GE=
10
+ MIIF3TCCA8WgAwIBAgICEAAwDQYJKoZIhvcNAQENBQAwgYUxMDAuBgNVBAMMJ0hv
11
+ cml6b24gQ2xvdWQgU2VydmljZXMgTm9uIFByb2QgUm9vdCBDQTELMAkGA1UEBhMC
12
+ VVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MR8wHQYDVQQK
13
+ DBZIb3Jpem9uIENsb3VkIFNlcnZpY2VzMB4XDTI1MDIyMTE3MzA0NVoXDTMwMDIy
14
+ MDE3MzA0NVowdTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMR8wHQYDVQQKDBZI
15
+ b3Jpem9uIENsb3VkIFNlcnZpY2VzMTgwNgYDVQQDDC9Ib3Jpem9uIENsb3VkIFNl
16
+ cnZpY2VzIE5vbiBQcm9kIEludGVybWVkaWF0ZSBDQTCCAiIwDQYJKoZIhvcNAQEB
17
+ BQADggIPADCCAgoCggIBANWNBcAUjV+MiAH+x/2WBTvnLRnoXPcMF+8tH4SIM8BS
18
+ 4aZVnQtJCxhISfqKXhs1aQKv27diSL6vMi221bgXfS7jrqiJIkgT4ec45IA8vYW4
19
+ dlrYlA4OMDwrdEZlI/7FjirSc9TXeslPq8Dx5C0rpMP4dZ97ADhm6c44AwYsOzD/
20
+ GttwWb6JL+1jBzSCEnOou8XP6fUcxGUw4ZHpqMfWqU/eUYM7auexorTFm2JrNYxT
21
+ RGbT3w7DKKDLBAg0pRuwKuf5y4vfL9GcYkJlEXxDql9LOWsvkiN2sP5upea8ckDT
22
+ dns0co1h6hZslBqFJgMrOdyrMD6+jfNtrHbYHQdnHJ6pCPiJg2HN4WyJB9UtTFKI
23
+ AGadHJ/piAcFE8NTPIemhWzrdGGysbL2xXl/9CZkRXmze0eDM2S/7X4ixMb4nHZw
24
+ bFbPYl9Ydq+FWsdIywRYNC/qmFw+jf3Ne28eQZWLm/D3uwwv/+mSVTwHcsb1PsUz
25
+ zFLxwa0IyHlRYC7VTyGBR/N9NjodlnioFEoEfRez7Zj0G2qkT4YtaChJb+KwD8GH
26
+ M0BCESucelYgbVjxwQWGu7wUMd7NaJuTP3qQpaHGC8SloY9TUu1tGHCV7ThXPcMI
27
+ loJF53tny8yCFfMpilYQf/VfyhXAFyANHW6Y097ekpJ3IAtAvzgtTqc+C/atjok1
28
+ AgMBAAGjZjBkMB0GA1UdDgQWBBSZ8cV5Y1RCYYVup7GkUbKkbNZeCDAfBgNVHSME
29
+ GDAWgBTeYgdNiwgQmn4UfIPsKs6iAgec2TASBgNVHRMBAf8ECDAGAQH/AgECMA4G
30
+ A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQ0FAAOCAgEAXHZHiWY7CCSVV3KAvarj
31
+ xMucEGR+RKEYtjM9EYoBeLUAha7hIdVtQsA3iJIoMISZYVgbSh/rL0tVo/oq3VxY
32
+ tAKFLLiglYbLegBxfHUrigJsUhrAV8WhWdhfJZriU5zTKw/JThvzgMIq4GvnkeJb
33
+ ezAIQcBqY1EDaIZz9U7GNzVIF8MWfGI6sXxr3vWuHajj/mECPkO4W3fHlPiHTWQY
34
+ qd+NwGM/xt7rSXGN+NULl37TkJ9XSjE4gLbNTAQzq9C1Lz86jZUGtndTx0/4Ekoe
35
+ YUCACnIKR4GlTjXhmqy1Ro/zr/v1e1rZgQYjHBZjASTxa8m1dAfvv9YjH+GZpMmu
36
+ OrlglgAz88segTQCe0gU5SKR5rVWwetJvhIyoGAcWcuJ/ajGrRLjCjUT+W/iVu1v
37
+ DzOBljaV5keM8HvfWLH9mwSbaS8jee+YwJBFdYVIPieoKdsguRWnr2KMCY4WlavG
38
+ s8ZOqSGN+55S4u9fZfP4XAWKG41AGDbQNYCzP4dgtw7uC7ZgXTyJhrlM+yGqRpbn
39
+ VEiV+hWjZFV0z/1bC63irCNVbGpO+zfukaVREdeEj5Eh5qcJz2AgAHuBSoW1H0/J
40
+ IcQEFMZ/URm3n2httI6o3hM41e/EtKWPwxqH4YLpxB6St3fuMMwQaSirVmWolShR
41
+ K57pspC1vC6L+K51FSgXIOk=
27
42
  -----END CERTIFICATE-----
28
43
  -----BEGIN CERTIFICATE-----
29
44
  MIIF/TCCA+WgAwIBAgIUU3p7FnhuTu9Ku9DxeShHEHZ9xEswDQYJKoZIhvcNAQEN
@@ -60,86 +75,166 @@ stringData:
60
75
  JcSvTMU2HOuQ/q6vFZq3PRbvroMeXlw2WJrqO3vu04SZwYiP8dcrlHTXQJh+Mp9T
61
76
  mQ==
62
77
  -----END CERTIFICATE-----
63
- mqtt.ca-key: |-
64
- -----BEGIN RSA PRIVATE KEY-----
65
- MIIEowIBAAKCAQEA3DLX6MbGXBpSDOhz4Pkxuzm4dOQ0nFOF117YD3JJJ6D34dPO
66
- cnwUqwCk9J9oU3hftKhQxFUQVbujF0Qm1g8lggvsORaPYAZ6rA4KC85oYmv4UGTj
67
- +sHNrv4M5mI3VLE9vbb+F/ucND8QN+oCXWXbDPIap/0GOUiW4pLNEczfSvakP3Xx
68
- G0YkZZqVjZEJNFEQYINtf32LZ2b7Q3N1X4VyUVGDrl3RnYUmXW5rR/++X8BSomW9
69
- UHZ5gQkEsySBssXdSpsI3mwdA2X45g506UJw8l57IC+6zEamuXUFK1EBerSaMewf
70
- O6CLECr1+z5Alri63YSWafLkGBlOIShvOzUwSwIDAQABAoIBAG1qYjjLlMMtXPoH
71
- A5WVna2Pt+V1g+Lt6cKj4S6DtnAXnzS6n4npuAdksZLQJvHbDYtiW4fDUPOY4ihs
72
- d/PD4Ppm3EFdwW6QqaIW88z8CohlaCTijRoL9R1wJY7Q3PebfrdnV4kpQGwBrhhq
73
- kjRAqYEcSDyTEOWj+T2qfnXK3GWNjwlxA6/kMfZ576qqkcb6wAXt0AijdXIjDwSw
74
- ZTiZktpJH5FGnzNM9UyDkjhDzTvMqZnQrnByWfcXLVz3a7LqKsJPsZKxCfsOLCVC
75
- ISdtAqEDAehxsYL6EC90Ex/pVB6/2h1u4NT7DIflGWLC0lDnJuOduFpVnjIRytXr
76
- OEu2rTECgYEA7eMTQRwHp61USMEXeNgVfBeeOwXJyD35Ip0KshDbenbruvoopO9p
77
- OegknmTC6zKjdsRdlgpzHxKOFSz8UN+3aAb3qNnnuJokb0au6s0ysRCNCC82sUZr
78
- qPKY/vawHerXdXBQSAx9ViblmPC73sD+NBGOTIlRQrdv/SsSSNZ1k7kCgYEA7Pb7
79
- xIP5OSnKiDmEBg/NT2ZKJKTdOsHoqR2G2TNlIccrVk36qvCA52hVg//4WZUR776Z
80
- vahBlEtc9RKrd7DGW5Huo5zy6ll8OEmE1GzPe9nhlrLHMpGcfFKE/wdGDXAe2z5z
81
- 2TqpuTk45rchvGfrcMmFMpWUqcCRcUnvA+Ys7iMCgYACBoLtdP2jsdgb3nkCsGRO
82
- cC0Kt5vmNpDeeJPUvEwCGO0c5HBgJyGwOofFSXpXYlD9++IIGwKr6w6Go6FqVt1K
83
- 53RIXcKZUcapo+JtYV3jIA7zWOOQUtcr0xT2ZsdNGejHuTMVyfVvPFmMGdCfruj7
84
- LIMXp7unY8RyVWGMeTb7EQKBgQDUjDUH79h8DaA80Fo7lbDypy2Z8Mb/DS9DgdiS
85
- uibcRWn537gX2+HDrzIFVHPO5odQJAaCt4kbGv4mVLi4gzdoq10CJKU+z0U8t7UN
86
- VQxGawiNw44pLbLPULU6i6uqIgeLYFlJX/UcztbbGyiHdi8Y26k91i2ilbffhhF9
87
- zdg/QQKBgHCB2wOi4Ax6FZePQI5hV+sxRYW46jZV9P/ELFGIBNmnOrF4nmE+oqiI
88
- aMzBPPROGsloYdTjkzaa7bSGac98aqEjRqacmxwzwGoggckg/xhKXQJOYpQTGJwm
89
- hftB1Vzx09uhbjCCI6RNS7s08bviNY2FFjUClJDqSG/MQ/cO2o7g
90
- -----END RSA PRIVATE KEY-----
91
- mqtt.client-cert: |-
78
+ mqtt.ca-key: |-
79
+ -----BEGIN PRIVATE KEY-----
80
+ MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDUNJx2Cf0noNHc
81
+ DXB9AFPSFMkkpwxb0wtqaCLiB7v5zkF7CVBl5LnecVk7CM8bJY62H90Lv8Zv/2sl
82
+ MXofPfwezhJzHaIKFD+OM3czUE0KXODdPtEDjxuWb1xZfwGP43w+DpECbtvr1G2u
83
+ ArA5ihFCWtesdTi+O0Nwjhn0jEl5hVewNm3R3RVTzZJdePz/Tqrk3l6bMnQcqKmh
84
+ L2+HExvgpTqstqT4xsgMv77w0yGQP94Oagh4qc3kBYzbpZTSrtsMkf/XVogux9F7
85
+ JyspsZlmYf96Wl9IpoGHw65YMpZ3uH9yqbmjg+/M3wnZj3WGqp7hLJZCQUWwDSqu
86
+ a0Bg3563AgMBAAECgf9scyGDMe0EflbCShwIcPe65eSRAXkkyeGLqqzT13VktYRs
87
+ Miu551XBLoHr1GoD9a3PEM8SB3CNdyZ1sP44o/ULHptPOasWe5f/lKMsFl3zwy59
88
+ 48dDil+5rNqwN7hp+64DXm5oT+pqcVDxyBidT3KCoZVCY1DHPS0Pg5AVlZyh/WpV
89
+ /xa25zV39rUDQbDu646+3BIq3h0P2fxtWkDYgtXRCBjnExl67h5BpFYsqkLZEg2A
90
+ mT76wKFFkkTJOHiI0ekDx1auhV1Wm53O7ExTJIeSV9pxRiEZaH7wnkpBkDluY58c
91
+ lSYoD/I9607XUzEXvJdxMwGiw1g3snPI2SRndfkCgYEA91S7DoSZyfdQAHMz0u8/
92
+ NxtgRdjBzokjksHSY/CSuhYREEl69DzSMdB+zRJRpB+lLe3AiZdU4BjcrZdBEOfp
93
+ 20JThNDrhC+/C35VkoAozm+9YLg9Xlv4aKgZbR6b9nbr1QwPe4dpH797mu6iwCPK
94
+ I0qpVrd29uqJrgZ4uBmCpVkCgYEA26S0Q37ZIYsdBbthdqd8ZHYrS+gQOCO7IWpH
95
+ Kyi8W+62QAoxk5pOumUpSFKZbCFcmC28k5lDbjxA7Oq7aVQwErOy3UNZpBFZvQU4
96
+ cLesTFZxkSecszszSr2GlZu1pOfK7o6kKw2rFJfsoUhCaZAFTJqCXtiH0ZTXSsvi
97
+ XrHNEo8CgYAy31K6YbvgNuZVsVxvfpZaF19t/m+es8aFYSiNNeZ4MCHCX9rScdAq
98
+ PuBV/fac84VeNRDtPBtRHMwHSJ0xhQIs/y9+mhpXThrVml6vi3zZOVKSmlLFHdWy
99
+ cSEJuMoLn9pSL/DfT7LnvNMHwx3mt3XUXH8IPyRRFVzMVrht5ZFhwQKBgQCWTHiG
100
+ D1EpoPY1K+oftbBrVml+QciHgfvVe9JDeFacWhcgb1lJdbgV2I+NS+hsk8+22uVF
101
+ 4wS/dD/BX0brZo6W3ZyxyBqZKL5NmDrs9uLSQfzopUCXbRVGObbUvX5o36x/3d/9
102
+ DhdZujRUkQvRDJpztu8rU+Rsx/si1a2LuwNnhQKBgQCmwoO7MADZl286n6imqotM
103
+ IK/djt0N7j52GYEhtnAOSKVKo/8EnbvKkcMqJzXMQOUySRgKkA96fkaKt7yDCvoo
104
+ boPQ+RK1VKj5UFkUKz5LiohLmCBEQ7sh1HBS2Vje8MFtg0P138sRlbMCvdAEARTZ
105
+ uQfAKLns7QFf9W1C60AVAQ==
106
+ -----END PRIVATE KEY-----
107
+ mqtt.client-cert: |-
108
+ -----BEGIN CERTIFICATE-----
109
+ MIIFKDCCAxCgAwIBAgIFALjj4O4wDQYJKoZIhvcNAQELBQAwdTELMAkGA1UEBhMC
110
+ VVMxCzAJBgNVBAgMAkNBMR8wHQYDVQQKDBZIb3Jpem9uIENsb3VkIFNlcnZpY2Vz
111
+ MTgwNgYDVQQDDC9Ib3Jpem9uIENsb3VkIFNlcnZpY2VzIE5vbiBQcm9kIEludGVy
112
+ bWVkaWF0ZSBDQTAeFw0yNTExMTQwNjA0MThaFw0yOTExMTQwNjA5MThaMG0xCzAJ
113
+ BgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEU
114
+ MBIGA1UECgwLT21uaXNzYSBMTEMxDTALBgNVBAsMBEVVQyAxFDASBgNVBAMMC21x
115
+ dHQtY2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuNGguKcs
116
+ tPvvg5A9XD0bDFjuADWfC+C2mh3IP3v9TW4hMXf0JWREjSZ5yMg9vamNYfVhhFQx
117
+ 7SJ7JTnAJuMlNAVNKHsNef08/6ovbe7fHu6cKvopcPxFwMnZgKoZcLV1n6gYjewY
118
+ wugKiFzOXEXeIYeIsjax2afTWdSQJ9xYak+v/glual4ZXYI7BIOCkv7mkaG+sP7H
119
+ /M//mZcjfxFEBpSFpphsDAdj68yy9qu0kj9IReJJh3ou9J0qX0OVZ2yaNt2+pog/
120
+ fXE4WrpVIqRFs1JGCT4vZBSX+fFo/G9JUR0v4HNiPr5D8FObzZh0jdAj+aqja4Tb
121
+ Cqu7U2c4/1F4+QIDAQABo4HGMIHDMB0GA1UdDgQWBBTWq8aIUXO6TYHAIjwu/E4v
122
+ 2vYlbTAfBgNVHSMEGDAWgBSZ8cV5Y1RCYYVup7GkUbKkbNZeCDAOBgNVHQ8BAf8E
123
+ BAMCB4AwDAYDVR0TAQH/BAIwADBjBggrBgEFBQcBAQRXMFUwUwYIKwYBBQUHMAGG
124
+ R2h0dHBzOi8vZGV2MWItd2VzdHVzMi1jcDEwMy5hemNwLmhvcml6b24ub21uaXNz
125
+ YS5jb20vcGtpL29jc3AvcmVzcG9uZGVyMA0GCSqGSIb3DQEBCwUAA4ICAQATLHHI
126
+ XHWEN2VyF/Aew8fEfzwa2Nl6sgRKPCKzgyqCgyn0ksN7SpmKXTIikNnFb2FWG0Pj
127
+ 15VPqn6CkxfrTyt8uVrUMLeanvCOuX4r2zmE91KBzL2to6oXhzD64vyTo3+pHVJc
128
+ +BqIpIym3iEBdwKOOtfSYE4Uxc+uHVN/+Vw2tdQUGx3/GKPegOdvIHrY6LouklhR
129
+ K7MP99vc/orWz5nshEDMSQjXkpNa98NCRp88w14/kwcsT5wMTRNV63rW/CVfR2Xl
130
+ FLFsbFhe4WVYoTfvtyoL1Xfg7JJk5LgjneC/5aRsHK6qk2qLmzHBH82F3Fb4yneh
131
+ G9x/5CNJ+0WvnQeIwWqFB/gzDNS+4p3dGcbSnxPhokFjoJ1x+hzDxm9QY4H3t0O8
132
+ 13ZfLmzeUd0io9S/pVaHGbAE5zW1tfh75RFDpx/HZXAmi5UZ4fzabfTBODoFjE77
133
+ tmlex5+OfVDH9Kr6ZiH6OtF2CQZhg48VvyjpudEh0T1MKv9FHug8obaRyl+i6+u7
134
+ R9ErneIqd1TNA6P3CYDZrs4fJR7nDZn6Elm+SEwdl9lon8PgkaHKT3f+W44aUWOj
135
+ 8YRwdEMtuGpJjaPVzycvQgheYdWh2uVX1vZvgfOhF6htAIcsjtAzgPv4pgkbkrWK
136
+ fXUZKkCetrhvIGex8EfpH+VXIN0q0HkpPMBVHA==
137
+ -----END CERTIFICATE-----
138
+ -----BEGIN CERTIFICATE-----
139
+ MIIF3TCCA8WgAwIBAgICEAAwDQYJKoZIhvcNAQENBQAwgYUxMDAuBgNVBAMMJ0hv
140
+ cml6b24gQ2xvdWQgU2VydmljZXMgTm9uIFByb2QgUm9vdCBDQTELMAkGA1UEBhMC
141
+ VVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MR8wHQYDVQQK
142
+ DBZIb3Jpem9uIENsb3VkIFNlcnZpY2VzMB4XDTI1MDIyMTE3MzA0NVoXDTMwMDIy
143
+ MDE3MzA0NVowdTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMR8wHQYDVQQKDBZI
144
+ b3Jpem9uIENsb3VkIFNlcnZpY2VzMTgwNgYDVQQDDC9Ib3Jpem9uIENsb3VkIFNl
145
+ cnZpY2VzIE5vbiBQcm9kIEludGVybWVkaWF0ZSBDQTCCAiIwDQYJKoZIhvcNAQEB
146
+ BQADggIPADCCAgoCggIBANWNBcAUjV+MiAH+x/2WBTvnLRnoXPcMF+8tH4SIM8BS
147
+ 4aZVnQtJCxhISfqKXhs1aQKv27diSL6vMi221bgXfS7jrqiJIkgT4ec45IA8vYW4
148
+ dlrYlA4OMDwrdEZlI/7FjirSc9TXeslPq8Dx5C0rpMP4dZ97ADhm6c44AwYsOzD/
149
+ GttwWb6JL+1jBzSCEnOou8XP6fUcxGUw4ZHpqMfWqU/eUYM7auexorTFm2JrNYxT
150
+ RGbT3w7DKKDLBAg0pRuwKuf5y4vfL9GcYkJlEXxDql9LOWsvkiN2sP5upea8ckDT
151
+ dns0co1h6hZslBqFJgMrOdyrMD6+jfNtrHbYHQdnHJ6pCPiJg2HN4WyJB9UtTFKI
152
+ AGadHJ/piAcFE8NTPIemhWzrdGGysbL2xXl/9CZkRXmze0eDM2S/7X4ixMb4nHZw
153
+ bFbPYl9Ydq+FWsdIywRYNC/qmFw+jf3Ne28eQZWLm/D3uwwv/+mSVTwHcsb1PsUz
154
+ zFLxwa0IyHlRYC7VTyGBR/N9NjodlnioFEoEfRez7Zj0G2qkT4YtaChJb+KwD8GH
155
+ M0BCESucelYgbVjxwQWGu7wUMd7NaJuTP3qQpaHGC8SloY9TUu1tGHCV7ThXPcMI
156
+ loJF53tny8yCFfMpilYQf/VfyhXAFyANHW6Y097ekpJ3IAtAvzgtTqc+C/atjok1
157
+ AgMBAAGjZjBkMB0GA1UdDgQWBBSZ8cV5Y1RCYYVup7GkUbKkbNZeCDAfBgNVHSME
158
+ GDAWgBTeYgdNiwgQmn4UfIPsKs6iAgec2TASBgNVHRMBAf8ECDAGAQH/AgECMA4G
159
+ A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQ0FAAOCAgEAXHZHiWY7CCSVV3KAvarj
160
+ xMucEGR+RKEYtjM9EYoBeLUAha7hIdVtQsA3iJIoMISZYVgbSh/rL0tVo/oq3VxY
161
+ tAKFLLiglYbLegBxfHUrigJsUhrAV8WhWdhfJZriU5zTKw/JThvzgMIq4GvnkeJb
162
+ ezAIQcBqY1EDaIZz9U7GNzVIF8MWfGI6sXxr3vWuHajj/mECPkO4W3fHlPiHTWQY
163
+ qd+NwGM/xt7rSXGN+NULl37TkJ9XSjE4gLbNTAQzq9C1Lz86jZUGtndTx0/4Ekoe
164
+ YUCACnIKR4GlTjXhmqy1Ro/zr/v1e1rZgQYjHBZjASTxa8m1dAfvv9YjH+GZpMmu
165
+ OrlglgAz88segTQCe0gU5SKR5rVWwetJvhIyoGAcWcuJ/ajGrRLjCjUT+W/iVu1v
166
+ DzOBljaV5keM8HvfWLH9mwSbaS8jee+YwJBFdYVIPieoKdsguRWnr2KMCY4WlavG
167
+ s8ZOqSGN+55S4u9fZfP4XAWKG41AGDbQNYCzP4dgtw7uC7ZgXTyJhrlM+yGqRpbn
168
+ VEiV+hWjZFV0z/1bC63irCNVbGpO+zfukaVREdeEj5Eh5qcJz2AgAHuBSoW1H0/J
169
+ IcQEFMZ/URm3n2httI6o3hM41e/EtKWPwxqH4YLpxB6St3fuMMwQaSirVmWolShR
170
+ K57pspC1vC6L+K51FSgXIOk=
171
+ -----END CERTIFICATE-----
92
172
  -----BEGIN CERTIFICATE-----
93
- MIIDWzCCAkMCCQCQF8C4vi/nmzANBgkqhkiG9w0BAQUFADBuMQswCQYDVQQGEwJV
94
- UzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UEBwwJUGFsbyBBbHRvMQwwCgYD
95
- VQQKDANFVUMxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxEDAOBgNVBAMMB0NBIFJv
96
- b3QwHhcNMjAwNDAzMTgyODIzWhcNMzAwNDAxMTgyODIzWjBxMQswCQYDVQQGEwJV
97
- UzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UEBwwJUGFsbyBBbHRvMQwwCgYD
98
- VQQKDANFVUMxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxEzARBgNVBAMMCnZtd2Fy
99
- ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdOi39VF1yRArx
100
- u27uOjEMBq1Z6lmLm18tlHQqgzTH4HQKk7wfK+aGMMDJE1xv0fa8b5rwC7cWHEWe
101
- H1iPI7KrOBQ2ByK02bY4ltt5wN25YfAdKKsMMQpsu9EKBfQXyLrLVb0k9chZnvch
102
- WeKhDpD+haWdizx5d6FMQ5lxUQCInXA4TAb3yGUB+0tS6PvNp+8KJlJBow57mX4D
103
- 0Igv4vBBgx+SWHWfW2FxDRzKuZ4eUcB8Qshl9d/RV5iT5plUHQFr4PYuw0WnXRXv
104
- oXRS08s/vCKm08xsEiCdcnvQt1Ib8a5OjcE/0y2r5fj11lDJyy8X08tNlgUCM6cn
105
- jfQuX/TZAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAJG6V/7kqVCPN4CC3fCcOmHU
106
- 0kW9+yf2KB4iwwTHsvA/G/2xJ4CqGUjALhr4FcAuuc42KE+jJIpehAtEUr5v8wka
107
- EE8VYbBXwK9BgDweHUVsJh0pHMPpSM2f20FQLD1bwjGOvTLvkuU7oNOpn4XUntVz
108
- /xaUnLh5buoFBrt/DeRFBLTWxjbUxo6mK8h51FHX1dZj0RaWcx5sRTSM3VSEZE3L
109
- Jdn3kuPmpgCwJpzrm6RCzX6XLMpPdwMWUyuvUd4Y0SwlL1uu5uU4NhgTfhSVx+I6
110
- g180kzAVneGVDXXz28roz7RItvDH56aksEmZqxRFtWvchlaIjHuWNsDaxIIF/xo=
173
+ MIIF/TCCA+WgAwIBAgIUU3p7FnhuTu9Ku9DxeShHEHZ9xEswDQYJKoZIhvcNAQEN
174
+ BQAwgYUxMDAuBgNVBAMMJ0hvcml6b24gQ2xvdWQgU2VydmljZXMgTm9uIFByb2Qg
175
+ Um9vdCBDQTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3Vu
176
+ dGFpbiBWaWV3MR8wHQYDVQQKDBZIb3Jpem9uIENsb3VkIFNlcnZpY2VzMB4XDTI1
177
+ MDIyMTE3MjczM1oXDTM1MDIxOTE3MjczM1owgYUxMDAuBgNVBAMMJ0hvcml6b24g
178
+ Q2xvdWQgU2VydmljZXMgTm9uIFByb2QgUm9vdCBDQTELMAkGA1UEBhMCVVMxCzAJ
179
+ BgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MR8wHQYDVQQKDBZIb3Jp
180
+ em9uIENsb3VkIFNlcnZpY2VzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
181
+ AgEAsN/U9IYxPDHWQQ4qB/EpNKJ3qFKBTjs0eRSz7CkcX60q45Tep9Azq67N+MvA
182
+ 8GvbhA52m5TIIvdQTLbgcGfHCGwGPWwhJ8Ve+aLc8kMXQ2s4dwgdbA+jEcyiVFgc
183
+ Hdh1uRSMPeHxVf43BhnEGZm1j09fbvnkPchh/Hx+tpeua99AUEPGd1ZBQHQZv4AN
184
+ iBw4SS7FjBeS3u3FRSUqO9dO4dGScjEEwzWMrbj3RI49jtY5H9Dh6gnrTPi6m4t+
185
+ JMsz1o8bJ/u5oyJFyRwXrwJ0ECLUH8tTQAH4kRF+14iep/8HmtSXoVV4PNhvCpC9
186
+ XZUB06zbcW5IVmVLBK+rUXER0jJd3Zysy5n7tBrFdKpU+n+9WUbCSXzszbHRuBcI
187
+ tH2qZmCa+mSBkH1PcwthhS8/wRimr6nh6m5m1gzZbJz5FY7YTuOYBJu47G/4QEQv
188
+ 2DqXNGQeLEcXhlBaH9id7QRhixdfMWzccELlfkWJD+sgETyXkfPMZ1QWPJiJvOTR
189
+ 58IKVAQ4hgahG/tqE7wikWQAdV16g1ynjVpYLSFig4GspPPYsQIfAfEr37dnxwNI
190
+ x6aIqIncrDRwrK3sRrUJQNnQzUUrBA6nmJx6TmlkzByhz/Qe2UiwHvXzV4EKXFZU
191
+ hDYcJ3UdkwIfjFFhcHquvse8Omz5QFHGmlxwiOCGaPp5jP8CAwEAAaNjMGEwHQYD
192
+ VR0OBBYEFN5iB02LCBCafhR8g+wqzqICB5zZMB8GA1UdIwQYMBaAFN5iB02LCBCa
193
+ fhR8g+wqzqICB5zZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0G
194
+ CSqGSIb3DQEBDQUAA4ICAQCo0FDz5wq6/6eXKyW/b5x99xPnYWc8tmZXfmmZEmyY
195
+ SW4qySsg7ZhUP+3lJiWxLM9p+ZWtekG3OifWFIwdxycLxscoId4M/1UZ6Ku4Crip
196
+ o4SV2BzpB3+Harr4yJvfy95p5uNyivvFHM3iXf//ldjivnyEBozX89T9dvstH/rg
197
+ 7M1At7T8htXGDZGQt1tmt+rY8pYycAQZPgblFiWrhL+oCyNtOMwy3BTj/ipErAX9
198
+ zTnQ2Ktgl2A63xZ0eiTiXXspwUELNxbEIwfFw3Onw4jLhuAwjBLb5Qw9Ae+Qm2Iu
199
+ L7XR7RBTw3KphuxLcLpY0Qfh2n4NIUogl+zkANFWHTMT9PflhPeHxI5hRChKr8hE
200
+ YSmj7iUrNzpa2XVT0WUgHBR5uSb3gUzp6Jtg2ivXP2c/ll8RKghAYeEDOG6F7ls7
201
+ 6bLEATOGrYgbawGhnxnWqp7lkXCo0BvgASA/dDGjPf8lEg6f5j99z+PN5DJsH17T
202
+ eloh+wa9XucNolC4x+Yv9Nj3ElOrkGHaVV7mNl1PpY20hC8WCvRmbrchMGRcrGU/
203
+ lgDR3KqjPQEexXDqqhxQxZC5/Gsw0NgJuVxYFB6QjItuB4bmWvC5ptPqJBmjm8LK
204
+ JcSvTMU2HOuQ/q6vFZq3PRbvroMeXlw2WJrqO3vu04SZwYiP8dcrlHTXQJh+Mp9T
205
+ mQ==
111
206
  -----END CERTIFICATE-----
112
- mqtt.client-key: |-
207
+ mqtt.client-key: |-
113
208
  -----BEGIN PRIVATE KEY-----
114
- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCdOi39VF1yRArx
115
- u27uOjEMBq1Z6lmLm18tlHQqgzTH4HQKk7wfK+aGMMDJE1xv0fa8b5rwC7cWHEWe
116
- H1iPI7KrOBQ2ByK02bY4ltt5wN25YfAdKKsMMQpsu9EKBfQXyLrLVb0k9chZnvch
117
- WeKhDpD+haWdizx5d6FMQ5lxUQCInXA4TAb3yGUB+0tS6PvNp+8KJlJBow57mX4D
118
- 0Igv4vBBgx+SWHWfW2FxDRzKuZ4eUcB8Qshl9d/RV5iT5plUHQFr4PYuw0WnXRXv
119
- oXRS08s/vCKm08xsEiCdcnvQt1Ib8a5OjcE/0y2r5fj11lDJyy8X08tNlgUCM6cn
120
- jfQuX/TZAgMBAAECggEAMckKZv0f2d7R2FmRdr3WaghzO9WJJTu9l6E6Z3vEasYX
121
- +IFvQC+Wf0dQxFrtGjtR9bkhRoFvKAEryjYCxNB48t5/B9yakMmfeavLM3JuwxTQ
122
- A2utPd8JfgS63IGmGSHmhBxSGDH7juVXO6hKqtUB9JY9KvW74HqRCKUfIVKU6Kzy
123
- lvpPG4RphRSpj9LOcDJqGU8tRYlpioCX+yp9IY9GsYE20XLxtHfPt9ocaaGRsuhl
124
- q3GH+1Gm9xC+UjopU3aZwsbvTtzc2DH+oFpAsWF0GB8ECzxuFxn2gqSrEOOcmq7d
125
- XqeoJMX2QZ/xuRoVi38dA+yIH3Wb14SyVOkkBBTQAQKBgQDMuaJ3nrXGWdkXac62
126
- y6NGVCVwwt7ZzOI4sa1ArrS5eMfFFo8IXyGmKVA7rpq6gbX4SCSGb5JLV0A2okH8
127
- Zg4GoNSNx9Ju9cin4SEXUKAI5G2xlG0o8bZrhEuEaph3wl5MH4Va5qvfRCpAhAHM
128
- 5XHSZfma5k9Gf/UxwMwW8ZlfeQKBgQDEmx+Ea5U448Os2SjloxGPGr/csy/J2jYn
129
- kanKBUVnIdlzH32YMB7WILukd+01Euk++mUTBnSGwBDNeoTj0XCE16wPtSZhlfYM
130
- U0bpyxtqAqUjYCmIl0YGdchAwVNi9Pfyf4BSdQHdm8PFjrL6QBKYdoVddIdYTVcC
131
- aJbsRb8IYQKBgQCbT0D3qomQHl1ZK8XMWxRUqEV3E/7oEEyWYgRji6ZDBmPXGtQL
132
- r8/hNHpPrJhpYTnhTymWa1H6oghu6g1RI0MEuEJIBQ2ZbBB7e4kVHO8rj8+/5jAh
133
- 3a1cR5Las9tTDztmWItceJ5u1FGRfBO5k18UFJSVdJ8zhqNGyVKLHWITUQKBgQCn
134
- iimJhsRa/n05RrV7O0MzV/A3+tq2gKW1goPWDDfgcxAC8srsbdVZU/uTZD9YAw2R
135
- BYAsfku+qN2ovMeR/GCOU9vkZtKWRlyulCjSAqsR478mLkQ2ifK6fpRv2k9c/LRu
136
- igioO92jI6HpMHmEmCVAl39+7FaKAR4sh0RVg/oPAQKBgQCJZWJ+IHXKTv0cl7jP
137
- iuV4b7dnVlQpRycMndrzwBY5frZT+i2E0tk723fCpp4B8n10bl/OwtS+Ab07di6f
138
- m53FWXUh/LcRil2EAP9hIbR70lBkWCG50EIl2w6SDEwjwAjECwyO8+As44v7ej42
139
- B2d4N6psHg9haJVNwiSlRfXsdQ==
209
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC40aC4pyy0+++D
210
+ kD1cPRsMWO4ANZ8L4LaaHcg/e/1NbiExd/QlZESNJnnIyD29qY1h9WGEVDHtInsl
211
+ OcAm4yU0BU0oew15/Tz/qi9t7t8e7pwq+ilw/EXAydmAqhlwtXWfqBiN7BjC6AqI
212
+ XM5cRd4hh4iyNrHZp9NZ1JAn3FhqT6/+CW5qXhldgjsEg4KS/uaRob6w/sf8z/+Z
213
+ lyN/EUQGlIWmmGwMB2PrzLL2q7SSP0hF4kmHei70nSpfQ5VnbJo23b6miD99cTha
214
+ ulUipEWzUkYJPi9kFJf58Wj8b0lRHS/gc2I+vkPwU5vNmHSN0CP5qqNrhNsKq7tT
215
+ Zzj/UXj5AgMBAAECggEAECRfAUG4qeYHOVpzwYakwiNSRjpotcTerf9D6ieOLCEe
216
+ TQ/JBysGwb1Gjb7Pha01aATii4g/BBMq5klw+vSD31NHNe3pc2om1b2rftKKMk1s
217
+ 3mQTEoc2IGyAzrgMmMeAin1IB71DPGK/6MESVQTVLeCEk+wrBHOgBgyGurSIFGDT
218
+ FYnrSmfYJvkQHHjyRrhWfozVmlWR8GukakVQqCuMz87DpeYyu94DIZjyjhgKlbtE
219
+ QpiWYxeNRM+MrNuMTY6PL93M33hEtuZOYP2RwhLrw/T4bGmexHvoDV+ln94i+W1U
220
+ FoIb5yGlSxigdC9Cnln41PHKmfRTtFtKePjSDh+hsQKBgQD2ydKnUc8fwlmODmsZ
221
+ hoqUd6oGW7hElGxix/JmBXoJI87Je1xfuClw18bDPKWGn+a2gkILsjB7QRiNV76t
222
+ jnd6/XR7XZ0+VzqZ7YMKiX//WPMKDWYTVE1xPugHM5LVXBVeEQ9a1o1Kvtq6fcu6
223
+ LFAa3bx5raP7qjzG8zObJxaYNwKBgQC/t6hW6efFmaxiSwYKP646iXMmv8FnDZ5A
224
+ x+ffwa0wt61t9jLlajITTAOanXastF19SWbzbUM+3bNq65n2pXyDTCauNTA6nK+s
225
+ l0JCkFhuHjrmxHlU2z3qBxSyfQUdNlBiL7ek9XMlWOwb9An2xozGElTenedq4okg
226
+ MYqafiuATwKBgQC94sh9CYtvCmFR1nI9r7HNTs26GrSLwBAtaV9vdGNTyQOBL7QB
227
+ ynfIZZ5/9pf+H+arI0qiKTb4fzve9Va3v9ja/02y5nLo1sE2UvPzFZ0w4kYOxAR4
228
+ dvMnYZmygNJH7JRcTpAb+t24V2WA/O3Wj+YK5fXxQdPc/j3JbrOUe9z8vQKBgHnz
229
+ gYmH0H7JefYscvMh/toNhMopQAUljHz4rG6Q7HII5LEF4uo72w6bU8+OSmchdDa1
230
+ 8l72Kchbjj19ELrsGYALeK9n9f3SnYzTyro8x4OEh0Mzx1pK+99aEbhX/mDOo+NR
231
+ JygvWcdwAQDnA0+OjQ2Rq5rQJty+rStlWB1eFJ3RAoGAFEW6PQcd7O2WBLnh+il9
232
+ QJGYtfRdtqtNqVZb0jiSmfHbmXxQ2a7per/lPgujoZ0jP02UK2pjeutLNOL1aPcq
233
+ 38qt9q2rOGrgEiHOhAsGU+Yp4Rgp5rNRD0OwbP1QPMdUyP5WeW3/V3fqzd3Nu2+B
234
+ IwZjXoo/VY1ZyQ3dAQTV0TU=
140
235
  -----END PRIVATE KEY-----
141
236
  kind: Secret
142
237
  metadata:
143
238
  name: mqtt-secret
144
239
  namespace: <feature_stack_namespace>
145
- type: Opaque
240
+ type: Opaque
@@ -1,8 +1,8 @@
1
+ ---
1
2
  apiVersion: v1
2
3
  kind: Service
3
4
  metadata:
4
- finalizers:
5
- - service.kubernetes.io/load-balancer-cleanup
5
+ finalizers: [service.kubernetes.io/load-balancer-cleanup]
6
6
  labels:
7
7
  app: mqtt-server-external
8
8
  name: mqtt-server-external
@@ -11,8 +11,7 @@ spec:
11
11
  allocateLoadBalancerNodePorts: true
12
12
  externalTrafficPolicy: Cluster
13
13
  internalTrafficPolicy: Cluster
14
- ipFamilies:
15
- - IPv4
14
+ ipFamilies: [IPv4]
16
15
  ipFamilyPolicy: SingleStack
17
16
  ports:
18
17
  - name: mqtts
@@ -26,4 +25,4 @@ spec:
26
25
  selector:
27
26
  app: mqtt-server
28
27
  sessionAffinity: None
29
- type: LoadBalancer
28
+ type: LoadBalancer
@@ -1,3 +1,4 @@
1
+ ---
1
2
  apiVersion: apps/v1
2
3
  kind: StatefulSet
3
4
  metadata:
@@ -6,6 +7,5 @@ spec:
6
7
  template:
7
8
  spec:
8
9
  hostAliases:
9
- - ip: "127.0.0.1"
10
- hostnames:
11
- - "mqtt-server-0.{{FS_NAME}}.svc.cluster.local"
10
+ - ip: 127.0.0.1
11
+ hostnames: ["mqtt-server-0.{{FS_NAME}}.svc.cluster.local"]
@@ -20,4 +20,4 @@
20
20
  }
21
21
  }
22
22
  }
23
- }
23
+ }
@@ -13,14 +13,11 @@ See the License for the specific language governing permissions and
13
13
  limitations under the License.
14
14
  """
15
15
 
16
- import subprocess
17
-
18
16
  import click
19
17
  import questionary
20
18
 
21
19
  from hcs_cli.cmds.dev.fs.helper.k8s_util import kubectl
22
20
  from hcs_cli.cmds.dev.fs.helper.util import validate_fs_kubeconfig, validate_fs_profile
23
- from hcs_cli.cmds.dev.util.log import fail, warn
24
21
 
25
22
  _service_dependency = {
26
23
  "inventory": [],
@@ -39,15 +36,10 @@ _scenario_dependency_map = {
39
36
  "lcm-core": [
40
37
  "lcm",
41
38
  "inv-status-sync",
42
- "smart-capacity-management",
43
- "scheduler-control-service",
44
39
  ],
45
40
  "ring0": [
46
41
  "admin",
47
42
  "lcm",
48
- "inv-status-sync",
49
- "smart-capacity-management",
50
- "scheduler-control-service",
51
43
  "inventory",
52
44
  "org-service",
53
45
  "credentials",
@@ -58,8 +50,12 @@ _scenario_dependency_map = {
58
50
  "connection-service",
59
51
  "license-features",
60
52
  "portal",
61
- "deployer",
53
+ ],
54
+ "lcm-ext": [
55
+ "smart-capacity-management",
56
+ "scheduler-control-service",
62
57
  "images",
58
+ "deployer",
63
59
  "ad-twin",
64
60
  "graphql",
65
61
  "aims",
@@ -124,10 +120,9 @@ def tailor(for_scenario: str, **kwargs):
124
120
  continue
125
121
  missing_dependencies.add(d)
126
122
 
127
- targets_to_remove = sorted(all_names - final_dependencies)
128
- final_dependencies = sorted(final_dependencies)
123
+ targets_to_remove = sorted(list(all_names - final_dependencies))
129
124
 
130
- for t in final_dependencies:
125
+ for t in sorted(list(final_dependencies)):
131
126
  click.echo(click.style(" KEEP " + t, fg="white"))
132
127
  for t in missing_dependencies:
133
128
  click.echo(click.style(" MISSING " + t, fg="bright_yellow"))
hcs_cli/cmds/dev/mqtt.py CHANGED
@@ -40,7 +40,6 @@ def _is_feature_stack():
40
40
  @mqtt.command()
41
41
  @cli.org_id
42
42
  def test(org: str, **kwargs):
43
-
44
43
  org_id = cli.get_org_id(org)
45
44
  print(f"Testing MQTT connection for organization: {org_id}")
46
45
 
@@ -104,7 +103,7 @@ def test_vmhub_otp(org_id: str):
104
103
  exec(cmd, raise_on_error=False)
105
104
 
106
105
  print("---- Testing pub/sub (via mqtt client) -----")
107
- port = 8883 if _is_feature_stack() else ret.mqttServerPort
106
+ port = 8883 if _is_feature_stack() else int(ret.mqttServerPort)
108
107
  mqtt_helper.test_mqtt_pubsub(
109
108
  host=ret.mqttServerHost, port=port, ca_certs=ca_file, cert_file=cert_file, key_file=key_file, resource_id=resource_name
110
109
  )
@@ -1,3 +1,4 @@
1
+ import os
1
2
  from time import sleep, time
2
3
 
3
4
  import click
@@ -8,7 +9,6 @@ from InquirerPy import inquirer
8
9
  from InquirerPy.base import Choice
9
10
 
10
11
  import hcs_cli.cmds.dev.util.github_helper as github_helper
11
- from hcs_cli.cmds.dev.fs.init import _retrieve_config_from_nightly_repo
12
12
  from hcs_cli.cmds.dev.util.log import fail
13
13
  from hcs_cli.support.exec_util import run_cli
14
14
 
@@ -125,6 +125,40 @@ def delete(all: bool, org: str):
125
125
  click.echo("Reset complete.")
126
126
 
127
127
 
128
+ @onboard.command()
129
+ @cli.org_id
130
+ def init_org(org):
131
+ """[Global admin] Init HCS org (org, location, and license)."""
132
+ org_id = cli.get_org_id(org)
133
+ proceed = click.confirm("This only works with non-prod stack. Continue?")
134
+ if not proceed:
135
+ return "", 1
136
+ proceed = click.confirm("This operation requires that the current profile has global admin privileges. Continue?")
137
+ if not proceed:
138
+ return "", 1
139
+ proceed = click.confirm(f"Target org: {org_id}")
140
+ if not proceed:
141
+ return "", 1
142
+ _ensure_org_initialized(org_id, critical=True)
143
+
144
+
145
+ def _ensure_org_initialized(org_id, critical=False):
146
+ os.environ["ORG_ID"] = org_id
147
+ try:
148
+ from hcs_cli.cmds.dev.fs.init import _create_license_info, _create_org_details, _create_org_location_mapping
149
+
150
+ _create_org_details()
151
+ _create_org_location_mapping()
152
+ _create_license_info()
153
+ except Exception as e:
154
+ if critical:
155
+ click.secho(f"Error initializing org: {e}", fg="bright_red")
156
+ else:
157
+ click.secho(
158
+ f"Error initializing org: {e}. If you have already initialized the org, you can ignore this warning.", fg="bright_yellow"
159
+ )
160
+
161
+
128
162
  def _delete_express_onboarding_deployment(org_id: str):
129
163
  deployment = run_cli(f"hcs api /deployment-orchestrator/v1/deployments?org_id={org_id}", output_json=True)
130
164
  if not deployment:
@@ -6,7 +6,6 @@ import time
6
6
 
7
7
 
8
8
  def test_mqtt_pubsub(host, port, ca_certs, cert_file, key_file, resource_id):
9
-
10
9
  import paho.mqtt.client as mqtt
11
10
  from paho.mqtt.client import CallbackAPIVersion, MQTTMessage
12
11
 
@@ -5,6 +5,7 @@ from datetime import timezone
5
5
 
6
6
  import click
7
7
  import yumako
8
+ from hcs_core.ctxp import CtxpException, util
8
9
  from hcs_core.sglib import cli_options as cli
9
10
 
10
11
  from hcs_cli.service import hoc
@@ -109,8 +110,15 @@ def search(org: str, from_param: str, to: str, service: str, type: str, query: s
109
110
  )
110
111
  @click.option("--raw", "-r", is_flag=True, default=False, help="Specify whether the payload is raw jsonp.")
111
112
  @click.option("--predefined", "-p", type=str, required=False, help="Predefined query name. E.g. 'no_spare'")
112
- def es(org: str, from_param: str, to: str, file, raw: bool, predefined: str):
113
+ @click.option("--arg", type=str, multiple=True, help="Arguments for the predefined query, e.g. tid=12345")
114
+ def es(org: str, from_param: str, to: str, file, raw: bool, predefined: str, arg: list[str]):
113
115
  """Perform a raw ES query."""
116
+
117
+ if raw and arg:
118
+ raise CtxpException("Cannot use --arg with --raw")
119
+ if raw and predefined:
120
+ raise CtxpException("Cannot use --predefined with --raw")
121
+
114
122
  if predefined:
115
123
  text = predefined_payload.load(f"hoc/{predefined}.json.template")
116
124
  else:
@@ -126,14 +134,25 @@ def es(org: str, from_param: str, to: str, file, raw: bool, predefined: str):
126
134
  "ignore_unavailable": True,
127
135
  "index": "hoc-ingested-events*-prod-*",
128
136
  }
129
- text = yumako.template.replace(
130
- text,
131
- {
132
- "from": int(yumako.time.of(from_param, tz=timezone.utc).timestamp() * 1000),
133
- "to": int(yumako.time.of(to, tz=timezone.utc).timestamp() * 1000),
134
- "org_id": org_id.replace("-", "\\\\-"),
135
- },
136
- )
137
+
138
+ replacements = {
139
+ "from": int(yumako.time.of(from_param, tz=timezone.utc).timestamp() * 1000),
140
+ "to": int(yumako.time.of(to, tz=timezone.utc).timestamp() * 1000),
141
+ "oid": org_id.replace("-", "\\\\-"),
142
+ }
143
+ if arg:
144
+ arg_dict = _parse_kv_args(arg)
145
+ replacements.update(arg_dict)
146
+
147
+ try:
148
+ text = yumako.template.replace(
149
+ text=text,
150
+ mapping=replacements,
151
+ raise_on_unresolved_vars=True,
152
+ raise_on_unused_vars=True,
153
+ )
154
+ except ValueError as e:
155
+ return util.error_details(e), 1
137
156
  try:
138
157
  payload_query = json.loads(text)
139
158
  except Exception as e:
@@ -143,3 +162,14 @@ def es(org: str, from_param: str, to: str, file, raw: bool, predefined: str):
143
162
  payload_jsonp = json.dumps(payload_type) + "\n" + json.dumps(payload_query) + "\n"
144
163
 
145
164
  return hoc.es.raw_query(payload_jsonp)
165
+
166
+
167
+ def _parse_kv_args(arg_list: list[str]) -> dict[str, str]:
168
+ result = {}
169
+ for arg in arg_list:
170
+ if "=" not in arg:
171
+ raise ValueError(f"Invalid argument: {arg}. Expected format: key=value")
172
+ key, value = arg.split("=", 1)
173
+ key = key.strip()
174
+ result[key] = value.strip()
175
+ return result
hcs_cli/cmds/hst/clean.py CHANGED
@@ -2,6 +2,7 @@ import logging
2
2
  from pathlib import Path
3
3
 
4
4
  import click
5
+ from pyparsing import Callable
5
6
  from hcs_core.ctxp import context
6
7
  from hcs_core.sglib.client_util import hdc_service_client
7
8
  from hcs_ext_hst.base import cfg_mgr_delegate
@@ -64,7 +65,7 @@ def _delete_local_logs():
64
65
  p.unlink()
65
66
 
66
67
 
67
- def _delete_impl(type: str, fn_filter: callable = None):
68
+ def _delete_impl(type: str, fn_filter: Callable = None):
68
69
  deleted = 0
69
70
  while True:
70
71
  page = _client.get(f"/v1/{type}?size=200")