iotedgedev 3.3.4__zip

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 (356) hide show
  1. s/.devcontainer/Dockerfile +75 -0
  2. s/.devcontainer/devcontainer.json +40 -0
  3. s/.devcontainer/library-scripts/docker-in-docker-debian.sh +236 -0
  4. s/.env.tmp +108 -0
  5. s/.git/FETCH_HEAD +61 -0
  6. s/.git/HEAD +1 -0
  7. s/.git/config +12 -0
  8. s/.git/description +1 -0
  9. s/.git/hooks/applypatch-msg.sample +15 -0
  10. s/.git/hooks/commit-msg.sample +24 -0
  11. s/.git/hooks/fsmonitor-watchman.sample +173 -0
  12. s/.git/hooks/post-update.sample +8 -0
  13. s/.git/hooks/pre-applypatch.sample +14 -0
  14. s/.git/hooks/pre-commit.sample +49 -0
  15. s/.git/hooks/pre-merge-commit.sample +13 -0
  16. s/.git/hooks/pre-push.sample +53 -0
  17. s/.git/hooks/pre-rebase.sample +169 -0
  18. s/.git/hooks/pre-receive.sample +24 -0
  19. s/.git/hooks/prepare-commit-msg.sample +42 -0
  20. s/.git/hooks/push-to-checkout.sample +78 -0
  21. s/.git/hooks/update.sample +128 -0
  22. s/.git/index +0 -0
  23. s/.git/info/exclude +6 -0
  24. s/.git/logs/HEAD +1 -0
  25. s/.git/logs/refs/remotes/origin/EO +1 -0
  26. s/.git/logs/refs/remotes/origin/avagraw/security_fix +1 -0
  27. s/.git/logs/refs/remotes/origin/cherry-pick-rename +1 -0
  28. s/.git/logs/refs/remotes/origin/chyuan/fix-validation-not-fail-test +1 -0
  29. s/.git/logs/refs/remotes/origin/chyuan/update-linux-agent +1 -0
  30. s/.git/logs/refs/remotes/origin/dependabot/pip/pyyaml-5.4 +1 -0
  31. s/.git/logs/refs/remotes/origin/eliises/add-device-tagging-docs +1 -0
  32. s/.git/logs/refs/remotes/origin/main +1 -0
  33. s/.git/logs/refs/remotes/origin/ray-deps +1 -0
  34. s/.git/logs/refs/remotes/origin/ray-dev-setup +1 -0
  35. s/.git/logs/refs/remotes/origin/ray-tox +1 -0
  36. s/.git/logs/refs/remotes/origin/release-pipeline-automation +1 -0
  37. s/.git/logs/refs/remotes/origin/spmcdono/fix-pipeline-test-install +1 -0
  38. s/.git/logs/refs/remotes/origin/spmcdono/layered-deployments +1 -0
  39. s/.git/logs/refs/remotes/origin/spmcdono/pypi-package-test-pipeline +1 -0
  40. s/.git/logs/refs/remotes/origin/spmcdono/remove-py2 +1 -0
  41. s/.git/logs/refs/remotes/origin/spmcdono/remove-py2-dev +1 -0
  42. s/.git/logs/refs/remotes/origin/spmcdono/test-native-runtime-install +1 -0
  43. s/.git/logs/refs/remotes/origin/spmcdono/update-pipeline +1 -0
  44. s/.git/logs/refs/remotes/origin/user/marine/EliiseS/devcontainer +1 -0
  45. s/.git/logs/refs/remotes/origin/user/marine/fixsimver +1 -0
  46. s/.git/logs/refs/remotes/origin/user/marine/layereddeploymentsbuildtest +1 -0
  47. s/.git/logs/refs/remotes/origin/user/marine/master-to-main +1 -0
  48. s/.git/logs/refs/remotes/origin/user/marine/pipeline +1 -0
  49. s/.git/logs/refs/remotes/origin/user/vikas +1 -0
  50. s/.git/logs/refs/remotes/origin/user/vikas0212/verify-tests +1 -0
  51. s/.git/logs/refs/remotes/origin/user/vikas2 +1 -0
  52. s/.git/logs/refs/remotes/origin/user/vikas_pypi +1 -0
  53. s/.git/logs/refs/remotes/origin/user/vikas_pypi-1 +1 -0
  54. s/.git/logs/refs/remotes/origin/user/vikas_testing +1 -0
  55. s/.git/logs/refs/remotes/origin/user/xinzed/dps_conn_str +1 -0
  56. s/.git/logs/refs/remotes/origin/user/xinzed/update-python-docker +1 -0
  57. s/.git/logs/refs/remotes/origin/vikas/azure +1 -0
  58. s/.git/logs/refs/remotes/origin/vikas/dependebot +1 -0
  59. s/.git/logs/refs/remotes/origin/xinzed/3_1_0rc1 +1 -0
  60. s/.git/logs/refs/remotes/origin/xinzed/update-runtime +1 -0
  61. s/.git/objects/pack/pack-a8179feb7da51d11a42c37c5b3c8593cffe17075.idx +0 -0
  62. s/.git/objects/pack/pack-a8179feb7da51d11a42c37c5b3c8593cffe17075.pack +0 -0
  63. s/.git/refs/remotes/origin/EO +1 -0
  64. s/.git/refs/remotes/origin/avagraw/security_fix +1 -0
  65. s/.git/refs/remotes/origin/cherry-pick-rename +1 -0
  66. s/.git/refs/remotes/origin/chyuan/fix-validation-not-fail-test +1 -0
  67. s/.git/refs/remotes/origin/chyuan/update-linux-agent +1 -0
  68. s/.git/refs/remotes/origin/dependabot/pip/pyyaml-5.4 +1 -0
  69. s/.git/refs/remotes/origin/eliises/add-device-tagging-docs +1 -0
  70. s/.git/refs/remotes/origin/main +1 -0
  71. s/.git/refs/remotes/origin/ray-deps +1 -0
  72. s/.git/refs/remotes/origin/ray-dev-setup +1 -0
  73. s/.git/refs/remotes/origin/ray-tox +1 -0
  74. s/.git/refs/remotes/origin/release-pipeline-automation +1 -0
  75. s/.git/refs/remotes/origin/spmcdono/fix-pipeline-test-install +1 -0
  76. s/.git/refs/remotes/origin/spmcdono/layered-deployments +1 -0
  77. s/.git/refs/remotes/origin/spmcdono/pypi-package-test-pipeline +1 -0
  78. s/.git/refs/remotes/origin/spmcdono/remove-py2 +1 -0
  79. s/.git/refs/remotes/origin/spmcdono/remove-py2-dev +1 -0
  80. s/.git/refs/remotes/origin/spmcdono/test-native-runtime-install +1 -0
  81. s/.git/refs/remotes/origin/spmcdono/update-pipeline +1 -0
  82. s/.git/refs/remotes/origin/user/marine/EliiseS/devcontainer +1 -0
  83. s/.git/refs/remotes/origin/user/marine/fixsimver +1 -0
  84. s/.git/refs/remotes/origin/user/marine/layereddeploymentsbuildtest +1 -0
  85. s/.git/refs/remotes/origin/user/marine/master-to-main +1 -0
  86. s/.git/refs/remotes/origin/user/marine/pipeline +1 -0
  87. s/.git/refs/remotes/origin/user/vikas +1 -0
  88. s/.git/refs/remotes/origin/user/vikas0212/verify-tests +1 -0
  89. s/.git/refs/remotes/origin/user/vikas2 +1 -0
  90. s/.git/refs/remotes/origin/user/vikas_pypi +1 -0
  91. s/.git/refs/remotes/origin/user/vikas_pypi-1 +1 -0
  92. s/.git/refs/remotes/origin/user/vikas_testing +1 -0
  93. s/.git/refs/remotes/origin/user/xinzed/dps_conn_str +1 -0
  94. s/.git/refs/remotes/origin/user/xinzed/update-python-docker +1 -0
  95. s/.git/refs/remotes/origin/vikas/azure +1 -0
  96. s/.git/refs/remotes/origin/vikas/dependebot +1 -0
  97. s/.git/refs/remotes/origin/xinzed/3_1_0rc1 +1 -0
  98. s/.git/refs/remotes/origin/xinzed/update-runtime +1 -0
  99. s/.git/refs/tags/v0.49.0 +1 -0
  100. s/.git/refs/tags/v0.50.0 +1 -0
  101. s/.git/refs/tags/v0.51.0 +1 -0
  102. s/.git/refs/tags/v0.52.0 +1 -0
  103. s/.git/refs/tags/v0.53.0 +1 -0
  104. s/.git/refs/tags/v0.54.0 +1 -0
  105. s/.git/refs/tags/v0.55.0 +1 -0
  106. s/.git/refs/tags/v0.56.0 +1 -0
  107. s/.git/refs/tags/v0.57.0 +1 -0
  108. s/.git/refs/tags/v0.58.0 +1 -0
  109. s/.git/refs/tags/v0.59.0 +1 -0
  110. s/.git/refs/tags/v0.60.0 +1 -0
  111. s/.git/refs/tags/v0.61.0 +1 -0
  112. s/.git/refs/tags/v0.62.0 +1 -0
  113. s/.git/refs/tags/v0.63.0 +1 -0
  114. s/.git/refs/tags/v0.64.0 +1 -0
  115. s/.git/refs/tags/v0.65.0 +1 -0
  116. s/.git/refs/tags/v0.66.0 +1 -0
  117. s/.git/refs/tags/v0.67.0 +1 -0
  118. s/.git/refs/tags/v0.68.0 +1 -0
  119. s/.git/refs/tags/v0.69.0 +1 -0
  120. s/.git/refs/tags/v0.70.0 +1 -0
  121. s/.git/refs/tags/v0.71.0 +1 -0
  122. s/.git/refs/tags/v0.72.0 +1 -0
  123. s/.git/refs/tags/v0.73.0 +1 -0
  124. s/.git/refs/tags/v0.74.0 +1 -0
  125. s/.git/refs/tags/v0.75.0 +1 -0
  126. s/.git/refs/tags/v0.76.0 +1 -0
  127. s/.git/refs/tags/v0.77.0 +1 -0
  128. s/.git/refs/tags/v0.78.0 +1 -0
  129. s/.git/refs/tags/v0.79.0 +1 -0
  130. s/.git/refs/tags/v0.82.0 +1 -0
  131. s/.git/refs/tags/v0.82.0-container +1 -0
  132. s/.git/refs/tags/v1.0.0 +1 -0
  133. s/.git/refs/tags/v1.1.0 +1 -0
  134. s/.git/refs/tags/v1.2.0 +1 -0
  135. s/.git/refs/tags/v1.3.0 +1 -0
  136. s/.git/refs/tags/v2.0.0 +1 -0
  137. s/.git/refs/tags/v2.0.1 +1 -0
  138. s/.git/refs/tags/v2.0.2 +1 -0
  139. s/.git/refs/tags/v2.1.0 +1 -0
  140. s/.git/refs/tags/v2.1.1 +1 -0
  141. s/.git/refs/tags/v2.1.2 +1 -0
  142. s/.git/refs/tags/v2.1.3 +1 -0
  143. s/.git/refs/tags/v2.1.4 +1 -0
  144. s/.git/refs/tags/v2.1.6 +1 -0
  145. s/.git/refs/tags/v2.2.0 +1 -0
  146. s/.git/refs/tags/v3.0.0 +1 -0
  147. s/.git/refs/tags/v3.0.0-rc +1 -0
  148. s/.git/refs/tags/v3.1.0 +1 -0
  149. s/.git/refs/tags/v3.1.1 +1 -0
  150. s/.git/refs/tags/v3.1.2 +1 -0
  151. s/.git/refs/tags/v3.2.0 +1 -0
  152. s/.git/refs/tags/v3.2.0rc0 +1 -0
  153. s/.git/refs/tags/v3.3.0 +1 -0
  154. s/.git/refs/tags/v3.3.1 +1 -0
  155. s/.git/refs/tags/v3.3.2 +1 -0
  156. s/.git/refs/tags/v3.3.3 +1 -0
  157. s/.git/refs/tags/v3.3.3-rc0 +1 -0
  158. s/.git/refs/tags/v3.3.4 +1 -0
  159. s/.github/ISSUE_TEMPLATE/bug_report.md +16 -0
  160. s/.github/ISSUE_TEMPLATE/feature_request.md +7 -0
  161. s/.github/workflows/wiki.yml +54 -0
  162. s/.gitignore +103 -0
  163. s/.vscode/launch.json +26 -0
  164. s/.vscode/settings.json +30 -0
  165. s/CHANGELOG.md +156 -0
  166. s/CODE_OF_CONDUCT.md +1 -0
  167. s/CONTRIBUTING.md +122 -0
  168. s/LICENSE +14 -0
  169. s/MANIFEST.in +7 -0
  170. s/Makefile +87 -0
  171. s/README.md +204 -0
  172. s/assets/armdeployment.png +0 -0
  173. s/assets/armoutputs.png +0 -0
  174. s/assets/deploy/ARMDeployment/ARMDeployment.deployproj +36 -0
  175. s/assets/deploy/ARMDeployment/Deploy-AzureResourceGroup.ps1 +118 -0
  176. s/assets/deploy/ARMDeployment/azuredeploy.json +145 -0
  177. s/assets/deploy/ARMDeployment/azuredeploy.parameters.json +6 -0
  178. s/assets/deploy/ARMDeployment.sln +25 -0
  179. s/assets/edgedevtool2mins.png +0 -0
  180. s/assets/edgedevtoolintro.png +0 -0
  181. s/assets/edgedevtoolquickstartlarge.png +0 -0
  182. s/assets/edgedevtoolquickstartsmall.png +0 -0
  183. s/assets/edgedevtoolwsl.png +0 -0
  184. s/azure-pipelines.yml +144 -0
  185. s/build/lib/iotedgedev/__init__.py +6 -0
  186. s/build/lib/iotedgedev/args.py +18 -0
  187. s/build/lib/iotedgedev/azurecli.py +542 -0
  188. s/build/lib/iotedgedev/buildoptionsparser.py +151 -0
  189. s/build/lib/iotedgedev/buildprofile.py +5 -0
  190. s/build/lib/iotedgedev/cli.py +830 -0
  191. s/build/lib/iotedgedev/connectionstring.py +58 -0
  192. s/build/lib/iotedgedev/constants.py +12 -0
  193. s/build/lib/iotedgedev/containerregistry.py +5 -0
  194. s/build/lib/iotedgedev/decorators.py +116 -0
  195. s/build/lib/iotedgedev/deploymentmanifest.py +313 -0
  196. s/build/lib/iotedgedev/dockercls.py +255 -0
  197. s/build/lib/iotedgedev/dotnet.py +31 -0
  198. s/build/lib/iotedgedev/edge.py +33 -0
  199. s/build/lib/iotedgedev/envvars.py +240 -0
  200. s/build/lib/iotedgedev/iothub.py +65 -0
  201. s/build/lib/iotedgedev/module.py +62 -0
  202. s/build/lib/iotedgedev/modules.py +332 -0
  203. s/build/lib/iotedgedev/organizedgroup.py +48 -0
  204. s/build/lib/iotedgedev/output.py +57 -0
  205. s/build/lib/iotedgedev/simulator.py +58 -0
  206. s/build/lib/iotedgedev/solution.py +48 -0
  207. s/build/lib/iotedgedev/telemetry.py +155 -0
  208. s/build/lib/iotedgedev/telemetryconfig.py +85 -0
  209. s/build/lib/iotedgedev/telemetryuploader.py +53 -0
  210. s/build/lib/iotedgedev/template/.env.tmp +87 -0
  211. s/build/lib/iotedgedev/template/.gitignore +10 -0
  212. s/build/lib/iotedgedev/template/deployment.template.json +79 -0
  213. s/build/lib/iotedgedev/template/launch_c.json +50 -0
  214. s/build/lib/iotedgedev/template/launch_csharp.json +43 -0
  215. s/build/lib/iotedgedev/template/launch_java.json +27 -0
  216. s/build/lib/iotedgedev/template/launch_node.json +36 -0
  217. s/build/lib/iotedgedev/template/launch_python.json +22 -0
  218. s/build/lib/iotedgedev/utility.py +179 -0
  219. s/build/lib/iotedgedev/version.py +4 -0
  220. s/build.sh +150 -0
  221. s/cleanup.sh +7 -0
  222. s/dist/iotedgedev-3.3.4-py3-none-any.whl +0 -0
  223. s/docker/tool/build-docker.sh +168 -0
  224. s/docker/tool/deps.txt +7 -0
  225. s/docker/tool/linux/Dockerfile +7 -0
  226. s/docker/tool/linux/Dockerfile.base +61 -0
  227. s/docker/tool/linux/install-dev.sh +8 -0
  228. s/docker/tool/linux/run.ps1 +5 -0
  229. s/docker/tool/linux/run.sh +5 -0
  230. s/docker/tool/push-docker.sh +35 -0
  231. s/docker/tool/windows/Dockerfile +4 -0
  232. s/docker/tool/windows/Dockerfile.base +63 -0
  233. s/docker/tool/windows/install-dev.bat +4 -0
  234. s/docker/tool/windows/run.ps1 +30 -0
  235. s/docs/Azure-Setup.md +102 -0
  236. s/docs/Command-List.md +564 -0
  237. s/docs/Command-Tips.md +51 -0
  238. s/docs/Edge-Device-Setup.md +23 -0
  239. s/docs/Home.md +10 -0
  240. s/docs/Manual-Dev-Machine-Setup.md +77 -0
  241. s/docs/Migration-Guides.md +131 -0
  242. s/docs/Overview.md +66 -0
  243. s/docs/Python-Virtual-Environment-Setup.md +35 -0
  244. s/docs/Quickstart-with-IoT-Edge-Dev-Container.md +145 -0
  245. s/docs/Test-Coverage.md +7 -0
  246. s/docs/Troubleshooting.md +21 -0
  247. s/docs/Usage.md +123 -0
  248. s/docs/_Sidebar.md +13 -0
  249. s/iotedgedev/__init__.py +6 -0
  250. s/iotedgedev/args.py +18 -0
  251. s/iotedgedev/azurecli.py +542 -0
  252. s/iotedgedev/buildoptionsparser.py +151 -0
  253. s/iotedgedev/buildprofile.py +5 -0
  254. s/iotedgedev/cli.py +830 -0
  255. s/iotedgedev/connectionstring.py +58 -0
  256. s/iotedgedev/constants.py +12 -0
  257. s/iotedgedev/containerregistry.py +5 -0
  258. s/iotedgedev/decorators.py +116 -0
  259. s/iotedgedev/deploymentmanifest.py +313 -0
  260. s/iotedgedev/dockercls.py +255 -0
  261. s/iotedgedev/dotnet.py +31 -0
  262. s/iotedgedev/edge.py +33 -0
  263. s/iotedgedev/envvars.py +240 -0
  264. s/iotedgedev/iothub.py +65 -0
  265. s/iotedgedev/module.py +62 -0
  266. s/iotedgedev/modules.py +332 -0
  267. s/iotedgedev/organizedgroup.py +48 -0
  268. s/iotedgedev/output.py +57 -0
  269. s/iotedgedev/simulator.py +58 -0
  270. s/iotedgedev/solution.py +48 -0
  271. s/iotedgedev/telemetry.py +155 -0
  272. s/iotedgedev/telemetryconfig.py +85 -0
  273. s/iotedgedev/telemetryuploader.py +53 -0
  274. s/iotedgedev/template/.env.tmp +87 -0
  275. s/iotedgedev/template/.gitignore +10 -0
  276. s/iotedgedev/template/deployment.template.json +79 -0
  277. s/iotedgedev/template/launch_c.json +50 -0
  278. s/iotedgedev/template/launch_csharp.json +43 -0
  279. s/iotedgedev/template/launch_java.json +27 -0
  280. s/iotedgedev/template/launch_node.json +36 -0
  281. s/iotedgedev/template/launch_python.json +22 -0
  282. s/iotedgedev/utility.py +179 -0
  283. s/iotedgedev/version.py +4 -0
  284. s/iotedgedev.egg-info/PKG-INFO +21 -0
  285. s/iotedgedev.egg-info/SOURCES.txt +100 -0
  286. s/iotedgedev.egg-info/dependency_links.txt +1 -0
  287. s/iotedgedev.egg-info/entry_points.txt +3 -0
  288. s/iotedgedev.egg-info/not-zip-safe +1 -0
  289. s/iotedgedev.egg-info/requires.txt +18 -0
  290. s/iotedgedev.egg-info/top_level.txt +1 -0
  291. s/pull_request_template.md +9 -0
  292. s/pytest.ini +4 -0
  293. s/requirements.txt +12 -0
  294. s/requirements_dev.txt +17 -0
  295. s/scripts/gen-help-markdown.bat +177 -0
  296. s/scripts/install-pip.sh +1 -0
  297. s/scripts/setup-wsl.sh +7 -0
  298. s/setup.cfg +18 -0
  299. s/setup.py +66 -0
  300. s/tests/__init__.py +5 -0
  301. s/tests/assets/deployment.manifest_invalid.json +106 -0
  302. s/tests/assets/deployment.manifest_invalid_createoptions.json +102 -0
  303. s/tests/assets/deployment.manifest_invalid_schema.json +69 -0
  304. s/tests/assets/deployment.template.non_str_placeholder.json +79 -0
  305. s/tests/assets/deployment.template_1.json +163 -0
  306. s/tests/assets/deployment.template_2.json +163 -0
  307. s/tests/assets/deployment.template_3.json +174 -0
  308. s/tests/assets/deployment.template_4.json +79 -0
  309. s/tests/assets/deployment.template_invalidresult.json +183 -0
  310. s/tests/assets/deployment.template_without_schema_template.json +99 -0
  311. s/tests/assets/launch.json +225 -0
  312. s/tests/assets/launch_without_nodejs.json +194 -0
  313. s/tests/assets/test_solution_shared_lib/.gitignore +2 -0
  314. s/tests/assets/test_solution_shared_lib/.vscode/launch.json +43 -0
  315. s/tests/assets/test_solution_shared_lib/deployment.debug.template.json +100 -0
  316. s/tests/assets/test_solution_shared_lib/deployment.escapedpath.template.json +90 -0
  317. s/tests/assets/test_solution_shared_lib/deployment.template.json +106 -0
  318. s/tests/assets/test_solution_shared_lib/layered_deployment.flattened_props.template.json +21 -0
  319. s/tests/assets/test_solution_shared_lib/layered_deployment.no_modules.template.json +12 -0
  320. s/tests/assets/test_solution_shared_lib/libs/sharedlib/Class1.cs +12 -0
  321. s/tests/assets/test_solution_shared_lib/libs/sharedlib/sharedlib.csproj +7 -0
  322. s/tests/assets/test_solution_shared_lib/modules/non_module_project/placeholder.txt +0 -0
  323. s/tests/assets/test_solution_shared_lib/modules/sample_module/.gitignore +34 -0
  324. s/tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.amd64 +18 -0
  325. s/tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.amd64.debug +25 -0
  326. s/tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.windows-amd64 +15 -0
  327. s/tests/assets/test_solution_shared_lib/modules/sample_module/Program.cs +91 -0
  328. s/tests/assets/test_solution_shared_lib/modules/sample_module/module.json +18 -0
  329. s/tests/assets/test_solution_shared_lib/modules/sample_module/sample_module.csproj +26 -0
  330. s/tests/assets/test_solution_shared_lib/sample_module_2/.gitignore +34 -0
  331. s/tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.amd64 +18 -0
  332. s/tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.amd64.debug +25 -0
  333. s/tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.windows-amd64 +15 -0
  334. s/tests/assets/test_solution_shared_lib/sample_module_2/Program.cs +91 -0
  335. s/tests/assets/test_solution_shared_lib/sample_module_2/module.json +18 -0
  336. s/tests/assets/test_solution_shared_lib/sample_module_2/sample_module_2.csproj +26 -0
  337. s/tests/test_azurecli.py +33 -0
  338. s/tests/test_buildoptionsparser.py +155 -0
  339. s/tests/test_cli.py +55 -0
  340. s/tests/test_config.py +28 -0
  341. s/tests/test_connectionstring.py +87 -0
  342. s/tests/test_decorators.py +44 -0
  343. s/tests/test_deploymentmanifest.py +106 -0
  344. s/tests/test_envvars.py +169 -0
  345. s/tests/test_iotedgedev_iothub_deploy.py +199 -0
  346. s/tests/test_iotedgedev_simulator.py +133 -0
  347. s/tests/test_iotedgedev_solution.py +457 -0
  348. s/tests/test_iotedgedev_solution_build.py +246 -0
  349. s/tests/test_iotedgedev_solution_tag.py +99 -0
  350. s/tests/test_utility.py +132 -0
  351. s/tests/utility.py +132 -0
  352. s/tox.ini +29 -0
  353. s/vsts_ci/.vsts-ci.yml +93 -0
  354. s/vsts_ci/darwin/continuous-build-darwin.yml +54 -0
  355. s/vsts_ci/linux/continuous-build-linux.yml +28 -0
  356. s/vsts_ci/win32/continuous-build-win32.yml +26 -0
@@ -0,0 +1,75 @@
1
+ # Dependencies versions
2
+ ARG PYTHON_VERSION="3.9"
3
+
4
+ FROM mcr.microsoft.com/vscode/devcontainers/python:0-${PYTHON_VERSION}
5
+
6
+ # Dependencies versions
7
+ ARG AZURE_CLI_VERSION="2.34.1-1~bullseye"
8
+ ARG NODE_VERSION="17.x"
9
+ ARG DOTNET_VERSION="5.0"
10
+ ARG JDK_VERSION="2:1.11-72"
11
+ ARG MAVEN_VERSION="3.6.3-5"
12
+
13
+ # Bring in utility scripts
14
+ COPY .devcontainer/library-scripts/*.sh /tmp/library-scripts/
15
+
16
+ RUN \
17
+ # Install some basics
18
+ apt-get update && \
19
+ apt-get upgrade -y && \
20
+ apt-get install -y --no-install-recommends build-essential apt-utils && \
21
+ apt-get install -y libffi-dev libssl-dev vim sudo && \
22
+ apt-get upgrade -y
23
+
24
+ RUN \
25
+ # Upgrade to latest pip
26
+ python -m pip install --upgrade pip && \
27
+ # Install node, npm
28
+ curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash - && \
29
+ apt-get install -y nodejs && \
30
+ npm install npm@latest -g && \
31
+ # Install azure-cli
32
+ apt-get install -y ca-certificates curl apt-transport-https lsb-release gnupg && \
33
+ curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null && \
34
+ echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/azure-cli.list && \
35
+ apt-get update && apt-get install -y azure-cli=${AZURE_CLI_VERSION} && \
36
+ az extension add --name azure-iot --system && \
37
+ az extension update --name azure-iot && \
38
+ # Use Docker script from script library to set things up - enable non-root docker, user vscode, using moby
39
+ /bin/bash /tmp/library-scripts/docker-in-docker-debian.sh "true" "vscode" "true" \
40
+ # Install Yoeman, node.js modules
41
+ npm install -g yo && \
42
+ npm i -g yo generator-azure-iot-edge-module && \
43
+ # Install dotnet SDK
44
+ cd ~ && \
45
+ wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
46
+ dpkg -i packages-microsoft-prod.deb && \
47
+ rm packages-microsoft-prod.deb && \
48
+ apt-get update && apt-get install -y apt-transport-https && \
49
+ apt-get update && apt-get install -y dotnet-sdk-${DOTNET_VERSION} && \
50
+ # Install Java JDK, Maven
51
+ apt-get install -y default-jdk=${JDK_VERSION} && \
52
+ apt-get install -y maven=${MAVEN_VERSION} && \
53
+ # Install bash completion
54
+ apt-get update && apt-get -y install bash-completion && \
55
+ # Clean up
56
+ apt-get autoremove -y && \
57
+ apt-get clean -y && \
58
+ rm -rf /tmp/* && \
59
+ rm -rf /var/lib/apt/lists/*
60
+
61
+ # customize vscode environmnet
62
+ USER vscode
63
+ RUN \
64
+ git clone https://github.com/magicmonty/bash-git-prompt.git $HOME/.bash-git-prompt --depth=1 && \
65
+ echo "\n# setup GIT prompt and completion\nif [ -f \"$HOME/.bash-git-prompt/gitprompt.sh\" ]; then\n GIT_PROMPT_ONLY_IN_REPO=1 && source $HOME/.bash-git-prompt/gitprompt.sh;\nfi" >> $HOME/.bashrc && \
66
+ echo "source /usr/share/bash-completion/bash_completion" >> $HOME/.bashrc && \
67
+ echo "\n# add local python programs to PATH\nexport PATH=$PATH:$HOME/.local/bin\n" >> $HOME/.bashrc && \
68
+ # enable some useful aliases
69
+ sed -i -e "s/#alias/alias/" $HOME/.bashrc && \
70
+ # add the cookiecutter
71
+ pip install cookiecutter
72
+
73
+ # launch docker-ce
74
+ ENTRYPOINT [ "/usr/local/share/docker-init.sh" ]
75
+ CMD [ "sleep", "infinity" ]
@@ -0,0 +1,40 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2
+ // https://github.com/microsoft/vscode-dev-containers/tree/v0.140.1/containers/dotnetcore
3
+ {
4
+ "name": "iotedgedev",
5
+ "build": {
6
+ "dockerfile": "Dockerfile",
7
+ "context": ".."
8
+ },
9
+
10
+ "runArgs": ["--init", "--privileged"],
11
+ "mounts": [
12
+ // Keep command history
13
+ "source=ostf-bashhistory,target=/commandhistory,type=volume",
14
+ // Use docker-in-docker socket
15
+ "source=dind-var-lib-docker,target=/var/lib/docker,type=volume"
16
+ ],
17
+
18
+ "overrideCommand": false,
19
+ "postCreateCommand": "docker image prune -a -f && sudo chown vscode:users -R /home/vscode/Dev && pip install -r requirements_dev.txt && pip install -e .",
20
+
21
+ // Set *default* container specific settings.json values on container create.
22
+ "settings": {
23
+ "#terminal.integrated.defaultProfile.linux#": "/bin/bash"
24
+ },
25
+
26
+ // Add the IDs of extensions you want installed when the container is created.
27
+ "extensions": [
28
+ "ms-python.python",
29
+ "ms-azuretools.vscode-docker",
30
+ "redhat.vscode-yaml",
31
+ "mikestead.dotenv",
32
+ "streetsidesoftware.code-spell-checker",
33
+ "yzhang.markdown-all-in-one",
34
+ "davidanson.vscode-markdownlint"
35
+ ],
36
+
37
+ "workspaceMount": "source=${localWorkspaceFolder},target=/home/vscode/Dev,type=bind,consistency=cached",
38
+ "workspaceFolder": "/home/vscode/Dev",
39
+ "remoteUser": "vscode"
40
+ }
@@ -0,0 +1,236 @@
1
+ #!/usr/bin/env bash
2
+ #-------------------------------------------------------------------------------------------------------------
3
+ # Copyright (c) Microsoft Corporation. All rights reserved.
4
+ # Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
5
+ #-------------------------------------------------------------------------------------------------------------
6
+ #
7
+ # Docs: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/docs/docker-in-docker.md
8
+ # Maintainer: The VS Code and Codespaces Teams
9
+ #
10
+ # Syntax: ./docker-in-docker-debian.sh [enable non-root docker access flag] [non-root user] [use moby]
11
+
12
+ ENABLE_NONROOT_DOCKER=${1:-"true"}
13
+ USERNAME=${2:-"automatic"}
14
+ USE_MOBY=${3:-"true"}
15
+ MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
16
+
17
+ set -e
18
+
19
+ if [ "$(id -u)" -ne 0 ]; then
20
+ echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
21
+ exit 1
22
+ fi
23
+
24
+ # Determine the appropriate non-root user
25
+ if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
26
+ USERNAME=""
27
+ POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)")
28
+ for CURRENT_USER in ${POSSIBLE_USERS[@]}; do
29
+ if id -u ${CURRENT_USER} > /dev/null 2>&1; then
30
+ USERNAME=${CURRENT_USER}
31
+ break
32
+ fi
33
+ done
34
+ if [ "${USERNAME}" = "" ]; then
35
+ USERNAME=root
36
+ fi
37
+ elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then
38
+ USERNAME=root
39
+ fi
40
+
41
+ # Get central common setting
42
+ get_common_setting() {
43
+ if [ "${common_settings_file_loaded}" != "true" ]; then
44
+ curl -sfL "https://aka.ms/vscode-dev-containers/script-library/settings.env" 2>/dev/null -o /tmp/vsdc-settings.env || echo "Could not download settings file. Skipping."
45
+ common_settings_file_loaded=true
46
+ fi
47
+ if [ -f "/tmp/vsdc-settings.env" ]; then
48
+ local multi_line=""
49
+ if [ "$2" = "true" ]; then multi_line="-z"; fi
50
+ local result="$(grep ${multi_line} -oP "$1=\"?\K[^\"]+" /tmp/vsdc-settings.env | tr -d '\0')"
51
+ if [ ! -z "${result}" ]; then declare -g $1="${result}"; fi
52
+ fi
53
+ echo "$1=${!1}"
54
+ }
55
+
56
+ # Function to run apt-get if needed
57
+ apt_get_update_if_needed()
58
+ {
59
+ if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then
60
+ echo "Running apt-get update..."
61
+ apt-get update
62
+ else
63
+ echo "Skipping apt-get update."
64
+ fi
65
+ }
66
+
67
+ # Checks if packages are installed and installs them if not
68
+ check_packages() {
69
+ if ! dpkg -s "$@" > /dev/null 2>&1; then
70
+ apt_get_update_if_needed
71
+ apt-get -y install --no-install-recommends "$@"
72
+ fi
73
+ }
74
+
75
+ # Ensure apt is in non-interactive to avoid prompts
76
+ export DEBIAN_FRONTEND=noninteractive
77
+
78
+ # Install dependencies
79
+ check_packages apt-transport-https curl ca-certificates lxc pigz iptables gnupg2 dirmngr
80
+
81
+ # Swap to legacy iptables for compatibility
82
+ if type iptables-legacy > /dev/null 2>&1; then
83
+ update-alternatives --set iptables /usr/sbin/iptables-legacy
84
+ update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
85
+ fi
86
+
87
+ # Install Docker / Moby CLI if not already installed
88
+ architecture="$(dpkg --print-architecture)"
89
+ if type docker > /dev/null 2>&1 && type dockerd > /dev/null 2>&1; then
90
+ echo "Docker / Moby CLI and Engine already installed."
91
+ else
92
+ # Source /etc/os-release to get OS info
93
+ . /etc/os-release
94
+ if [ "${USE_MOBY}" = "true" ]; then
95
+ # Import key safely (new 'signed-by' method rather than deprecated apt-key approach) and install
96
+ get_common_setting MICROSOFT_GPG_KEYS_URI
97
+ curl -sSL ${MICROSOFT_GPG_KEYS_URI} | gpg --dearmor > /usr/share/keyrings/microsoft-archive-keyring.gpg
98
+ echo "deb [arch=${architecture} signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/microsoft-${ID}-${VERSION_CODENAME}-prod ${VERSION_CODENAME} main" > /etc/apt/sources.list.d/microsoft.list
99
+ apt-get update
100
+ apt-get -y install --no-install-recommends moby-cli moby-buildx moby-engine
101
+ apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for ${VERSION_CODENAME} ${architecture}. Skipping."
102
+ else
103
+ # Import key safely (new 'signed-by' method rather than deprecated apt-key approach) and install
104
+ curl -fsSL https://download.docker.com/linux/${ID}/gpg | gpg --dearmor > /usr/share/keyrings/docker-archive-keyring.gpg
105
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" > /etc/apt/sources.list.d/docker.list
106
+ apt-get update
107
+ apt-get -y install --no-install-recommends docker-ce-cli docker-ce
108
+ fi
109
+ fi
110
+
111
+ echo "Finished installing docker / moby"
112
+
113
+ # Install Docker Compose if not already installed and is on a supported architecture
114
+ if type docker-compose > /dev/null 2>&1; then
115
+ echo "Docker Compose already installed."
116
+ else
117
+ target_compose_arch="${architecture}"
118
+ if [ "${target_compose_arch}" != "x86_64" ]; then
119
+ # Use pip to get a version that runns on this architecture
120
+ if ! dpkg -s python3-minimal python3-pip libffi-dev python3-venv > /dev/null 2>&1; then
121
+ apt_get_update_if_needed
122
+ apt-get -y install python3-minimal python3-pip libffi-dev python3-venv
123
+ fi
124
+ export PIPX_HOME=/usr/local/pipx
125
+ mkdir -p ${PIPX_HOME}
126
+ export PIPX_BIN_DIR=/usr/local/bin
127
+ export PYTHONUSERBASE=/tmp/pip-tmp
128
+ export PIP_CACHE_DIR=/tmp/pip-tmp/cache
129
+ pipx_bin=pipx
130
+ if ! type pipx > /dev/null 2>&1; then
131
+ pip3 install --disable-pip-version-check --no-warn-script-location --no-cache-dir --user pipx
132
+ pipx_bin=/tmp/pip-tmp/bin/pipx
133
+ fi
134
+ ${pipx_bin} install --system-site-packages --pip-args '--no-cache-dir --force-reinstall' docker-compose
135
+ rm -rf /tmp/pip-tmp
136
+ else
137
+ latest_compose_version=$(basename "$(curl -fsSL -o /dev/null -w "%{url_effective}" https://github.com/docker/compose/releases/latest)")
138
+ curl -fsSL "https://github.com/docker/compose/releases/download/${latest_compose_version}/docker-compose-$(uname -s)-${target_compose_arch}" -o /usr/local/bin/docker-compose
139
+ chmod +x /usr/local/bin/docker-compose
140
+ fi
141
+ fi
142
+
143
+ # If init file already exists, exit
144
+ if [ -f "/usr/local/share/docker-init.sh" ]; then
145
+ echo "/usr/local/share/docker-init.sh already exists, so exiting."
146
+ exit 0
147
+ fi
148
+ echo "docker-init doesnt exist..."
149
+
150
+ # Add user to the docker group
151
+ if [ "${ENABLE_NONROOT_DOCKER}" = "true" ]; then
152
+ if ! getent group docker > /dev/null 2>&1; then
153
+ groupadd docker
154
+ fi
155
+
156
+ usermod -aG docker ${USERNAME}
157
+ fi
158
+
159
+ tee /usr/local/share/docker-init.sh > /dev/null \
160
+ << 'EOF'
161
+ #!/usr/bin/env bash
162
+ #-------------------------------------------------------------------------------------------------------------
163
+ # Copyright (c) Microsoft Corporation. All rights reserved.
164
+ # Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
165
+ #-------------------------------------------------------------------------------------------------------------
166
+
167
+ sudoIf()
168
+ {
169
+ if [ "$(id -u)" -ne 0 ]; then
170
+ sudo "$@"
171
+ else
172
+ "$@"
173
+ fi
174
+ }
175
+
176
+ # explicitly remove dockerd and containerd PID file to ensure that it can start properly if it was stopped uncleanly
177
+ # ie: docker kill <ID>
178
+ sudoIf find /run /var/run -iname 'docker*.pid' -delete || :
179
+ sudoIf find /run /var/run -iname 'container*.pid' -delete || :
180
+
181
+ set -e
182
+
183
+ ## Dind wrapper script from docker team
184
+ # Maintained: https://github.com/moby/moby/blob/master/hack/dind
185
+
186
+ export container=docker
187
+
188
+ if [ -d /sys/kernel/security ] && ! sudoIf mountpoint -q /sys/kernel/security; then
189
+ sudoIf mount -t securityfs none /sys/kernel/security || {
190
+ echo >&2 'Could not mount /sys/kernel/security.'
191
+ echo >&2 'AppArmor detection and --privileged mode might break.'
192
+ }
193
+ fi
194
+
195
+ # Mount /tmp (conditionally)
196
+ if ! sudoIf mountpoint -q /tmp; then
197
+ sudoIf mount -t tmpfs none /tmp
198
+ fi
199
+
200
+ # cgroup v2: enable nesting
201
+ if [ -f /sys/fs/cgroup/cgroup.controllers ]; then
202
+ # move the init process (PID 1) from the root group to the /init group,
203
+ # otherwise writing subtree_control fails with EBUSY.
204
+ sudoIf mkdir -p /sys/fs/cgroup/init
205
+ sudoIf echo 1 > /sys/fs/cgroup/init/cgroup.procs
206
+ # enable controllers
207
+ sudoIf sed -e 's/ / +/g' -e 's/^/+/' < /sys/fs/cgroup/cgroup.controllers \
208
+ > /sys/fs/cgroup/cgroup.subtree_control
209
+ fi
210
+ ## Dind wrapper over.
211
+
212
+ # Handle DNS
213
+ set +e
214
+ cat /etc/resolv.conf | grep -i 'internal.cloudapp.net'
215
+ if [ $? -eq 0 ]
216
+ then
217
+ echo "Setting dockerd Azure DNS."
218
+ CUSTOMDNS="--dns 168.63.129.16"
219
+ else
220
+ echo "Not setting dockerd DNS manually."
221
+ CUSTOMDNS=""
222
+ fi
223
+ set -e
224
+
225
+ # Start docker/moby engine
226
+ ( sudoIf dockerd $CUSTOMDNS > /tmp/dockerd.log 2>&1 ) &
227
+
228
+ set +e
229
+
230
+ # Execute whatever commands were passed in (if any). This allows us
231
+ # to set this script to ENTRYPOINT while still executing the default CMD.
232
+ exec "$@"
233
+ EOF
234
+
235
+ chmod +x /usr/local/share/docker-init.sh
236
+ chown ${USERNAME}:root /usr/local/share/docker-init.sh
s/.env.tmp ADDED
@@ -0,0 +1,108 @@
1
+ #
2
+ # CONNECTION STRINGS
3
+ #
4
+
5
+ IOTHUB_CONNECTION_STRING=""
6
+
7
+ DEVICE_CONNECTION_STRING=""
8
+
9
+ #
10
+ # CONTAINER REGISTRY
11
+ #
12
+ # Settings for your default container registry.
13
+ # - Local Registry: Set CONTAINER_REGISTRY_SERVER to "localhost:5000" - USERNAME/PASSWORD are not required.
14
+ # - Azure Container Registry: Set CONTAINER_REGISTRY_SERVER to "myregistry.azurecr.io". USERNAME/PASSWORD are required.
15
+ # - Docker Hub: Set CONTAINER_REGISTRY_SERVER and CONTAINER_REGISTRY_USERNAME to your Docker Hub username. Set CONTAINER_REGISTRY_PASSWORD to your Docker Hub password.
16
+
17
+ CONTAINER_REGISTRY_SERVER="localhost:5000"
18
+ CONTAINER_REGISTRY_USERNAME=""
19
+ CONTAINER_REGISTRY_PASSWORD=""
20
+
21
+ # To specify additional container registries ensure the prefix is CONTAINER_REGISTRY_SERVER_, CONTAINER_REGISTRY_USERNAME_, CONTAINER_REGISTRY_PASSWORD_
22
+ # And the token following the prefix uniquely associates the SERVER/USERNAME/PASSWORD
23
+ # Token can be any string of alphanumeric characters
24
+
25
+ # CONTAINER_REGISTRY_SERVER_2=""
26
+ # CONTAINER_REGISTRY_USERNAME_2=""
27
+ # CONTAINER_REGISTRY_PASSWORD_2=""
28
+
29
+ #
30
+ # HOST
31
+ #
32
+
33
+ EDGE_RUNTIME_VERSION="1.2"
34
+ EDGEAGENT_SCHEMA_VERSION="1.1"
35
+ EDGEHUB_SCHEMA_VERSION="1.2"
36
+
37
+ #
38
+ # MODULES
39
+ #
40
+
41
+ BYPASS_MODULES=""
42
+ # "" - to build all modules
43
+ # "*" - to bypass all modules
44
+ # "filtermodule, module1" - Comma delimited list of modules to bypass when building
45
+
46
+ ACTIVE_DOCKER_PLATFORMS=""
47
+ # "" - to only build platforms specified in DEPLOYMENT_CONFIG_TEMPLATE_FILE
48
+ # "*" - to build all platforms
49
+ # "amd64,amd64.debug" - Comma delimited list of platforms to build
50
+
51
+ CONTAINER_TAG=""
52
+
53
+ #
54
+ # IOTHUB DEPLOYMENT
55
+ #
56
+
57
+ IOTHUB_DEPLOYMENT_TARGET_CONDITION=""
58
+ # To specifiy the target condition of a IoT Hub deployment
59
+ # Required when creating a deployment on IoT Hub
60
+ # Examples:
61
+ # IOTHUB_DEPLOYMENT_TARGET_CONDITION="tags.environment='dev'"
62
+ # IOTHUB_DEPLOYMENT_TARGET_CONDITION="tags.building=9 and tags.environment='test'"
63
+
64
+ #
65
+ # SOLUTION SETTINGS
66
+ #
67
+
68
+ CONFIG_OUTPUT_DIR="config"
69
+ DEPLOYMENT_CONFIG_TEMPLATE_FILE="deployment.template.json"
70
+ DEPLOYMENT_CONFIG_DEBUG_TEMPLATE_FILE="deployment.debug.template.json"
71
+ DEFAULT_PLATFORM="amd64"
72
+ MODULES_PATH="modules"
73
+ LOGS_PATH="logs"
74
+ DEVICE_TAGS=""
75
+ # To specifiy the tags for an edge device
76
+ # Examples:
77
+ # DEVICE_TAGS="{"environment":"dev"}"
78
+ # DEVICE_TAGS="{"environment":"dev", "building":"9"}"
79
+
80
+
81
+ #
82
+ # DOCKER LOGS COMMAND
83
+ #
84
+ # Command used when calling iotedgedev docker --logs or --show-logs
85
+
86
+ LOGS_CMD="start /B start cmd.exe @cmd /k docker logs {0} -f"
87
+ # "start /B start cmd.exe @cmd /k docker logs {0} -f" - for CMD
88
+ # "docker logs {0} -f -new_console:sV" - for ConEmu
89
+
90
+ #
91
+ # AZURE SETTINGS
92
+ #
93
+ # These settings will override parameters to the `iotedgedev azure --setup` command.
94
+ # CREDENTIALS="username password"
95
+ # SERVICE_PRINCIPAL="username password tenant"
96
+ # RESOURCE_GROUP_LOCATION="australiaeast|australiasoutheast|brazilsouth|canadacentral|canadaeast|centralindia|centralus|eastasia|eastus|eastus2|japanwest|japaneast|northeurope|northcentralus|southindia|uksouth|ukwest|westus|westeurope|southcentralus|westcentralus|westus2"
97
+ # IOTHUB_SKU="F1|S1|S2|S3"
98
+ # UPDATE_DOTENV="True|False"
99
+
100
+ SUBSCRIPTION_ID=""
101
+ RESOURCE_GROUP_NAME=""
102
+ RESOURCE_GROUP_LOCATION=""
103
+ IOTHUB_NAME=""
104
+ IOTHUB_SKU=""
105
+ EDGE_DEVICE_ID=""
106
+ CREDENTIALS=""
107
+ SERVICE_PRINCIPAL=""
108
+ UPDATE_DOTENV=""
s/.git/FETCH_HEAD ADDED
@@ -0,0 +1,61 @@
1
+ f28b9ff2015dc3362461ede5d3633d6ba6ea5750 'f28b9ff2015dc3362461ede5d3633d6ba6ea5750' of https://github.com/Azure/iotedgedev
2
+ ecbf26c295b01842d2669a8b1369217b94652210 not-for-merge tag 'v0.49.0' of https://github.com/Azure/iotedgedev
3
+ 8057fa1912603f8de1d3ea5dce945276a188a7a3 not-for-merge tag 'v0.50.0' of https://github.com/Azure/iotedgedev
4
+ 687bb8eae441816dfa427fab86844e24f63eb615 not-for-merge tag 'v0.51.0' of https://github.com/Azure/iotedgedev
5
+ 772aa5d68dd67870e5e860dc018c8ddd25bbbf22 not-for-merge tag 'v0.52.0' of https://github.com/Azure/iotedgedev
6
+ afda12086e264875f567aa6c805f43528097facc not-for-merge tag 'v0.53.0' of https://github.com/Azure/iotedgedev
7
+ bb6c64a4b26ceb0c04fed58c7484857f7950a902 not-for-merge tag 'v0.54.0' of https://github.com/Azure/iotedgedev
8
+ cc3bcf2c305f0136a08a76c83bf2743a0c42d6cc not-for-merge tag 'v0.55.0' of https://github.com/Azure/iotedgedev
9
+ 0c7e0c43d71e00e0618740cce29f147467672182 not-for-merge tag 'v0.56.0' of https://github.com/Azure/iotedgedev
10
+ 4bbeaba06c4fdeed44622675101353122d7cb20a not-for-merge tag 'v0.57.0' of https://github.com/Azure/iotedgedev
11
+ 32a4145909d30baf07840458c83f3bb8b044a960 not-for-merge tag 'v0.58.0' of https://github.com/Azure/iotedgedev
12
+ b9dbaa1ea302f229235fba99238433f42175c3d9 not-for-merge tag 'v0.59.0' of https://github.com/Azure/iotedgedev
13
+ 5aece65fefb191a5b27a7586cc583cd7a4470ce0 not-for-merge tag 'v0.60.0' of https://github.com/Azure/iotedgedev
14
+ 3bd4fc00430b6d837b9874c6b119f80595bb8956 not-for-merge tag 'v0.61.0' of https://github.com/Azure/iotedgedev
15
+ 734455c9ca9c2d46d9f20da944f1c490a9d79c60 not-for-merge tag 'v0.62.0' of https://github.com/Azure/iotedgedev
16
+ 14e472951ffacc2c771878847e95d2c73939c6cb not-for-merge tag 'v0.63.0' of https://github.com/Azure/iotedgedev
17
+ aab5f3ee6561bf4222767e372ba84f00b8eee37d not-for-merge tag 'v0.64.0' of https://github.com/Azure/iotedgedev
18
+ 75fc2fd1ecb20fafc4867f259541c9c5129c9287 not-for-merge tag 'v0.65.0' of https://github.com/Azure/iotedgedev
19
+ c494b427bd59e01ab858396c18f47674fab68dea not-for-merge tag 'v0.66.0' of https://github.com/Azure/iotedgedev
20
+ f7b2e36106cc14d37218a878e358ba7a2a816c9d not-for-merge tag 'v0.67.0' of https://github.com/Azure/iotedgedev
21
+ d3ce0f1a05954cf83a105d64d4659d6887098c31 not-for-merge tag 'v0.68.0' of https://github.com/Azure/iotedgedev
22
+ f3eb3c761575aea1dba1e52059f18d8f7217e08c not-for-merge tag 'v0.69.0' of https://github.com/Azure/iotedgedev
23
+ 9af2fbbf9414f73a5467c42c06a9aec4e98f004e not-for-merge tag 'v0.70.0' of https://github.com/Azure/iotedgedev
24
+ 8665b15397ec9b4d9e7b1aead506d31c62e64191 not-for-merge tag 'v0.71.0' of https://github.com/Azure/iotedgedev
25
+ 2d1e2170dda541f2257e821a39c1afccfe332aa3 not-for-merge tag 'v0.72.0' of https://github.com/Azure/iotedgedev
26
+ 7917f1ed4b80e4291f23407968e2806977338037 not-for-merge tag 'v0.73.0' of https://github.com/Azure/iotedgedev
27
+ 899893e7e27340eade089b41990ae55358b04754 not-for-merge tag 'v0.74.0' of https://github.com/Azure/iotedgedev
28
+ 6744006cb5c730d59087f2cffb0df00b7c91e1fc not-for-merge tag 'v0.75.0' of https://github.com/Azure/iotedgedev
29
+ e53f0e2cf92450b3e4edae5f1f55937aaea14534 not-for-merge tag 'v0.76.0' of https://github.com/Azure/iotedgedev
30
+ 3b7ee5213563bdef7ae01ec3a2aff1d542e7f71a not-for-merge tag 'v0.77.0' of https://github.com/Azure/iotedgedev
31
+ d1d0ed4ca3b1516678429e830f9e41d338e4c5a8 not-for-merge tag 'v0.78.0' of https://github.com/Azure/iotedgedev
32
+ b8c74e0ae3af92ddb44c2b704c8185120ae0d9a1 not-for-merge tag 'v0.79.0' of https://github.com/Azure/iotedgedev
33
+ 70747a730d4cd21d77768b55735467e0d13540db not-for-merge tag 'v0.82.0' of https://github.com/Azure/iotedgedev
34
+ 635865540fb0e29a2dee828ab63264511f81ac77 not-for-merge tag 'v0.82.0-container' of https://github.com/Azure/iotedgedev
35
+ b058cd704c2648b9624d6f43ccb0e77fe40db0fa not-for-merge tag 'v1.0.0' of https://github.com/Azure/iotedgedev
36
+ f2348ae31e1820a423b969d1fcc47be49e64b47c not-for-merge tag 'v1.1.0' of https://github.com/Azure/iotedgedev
37
+ 4bace0e6ae3b80c7de34cb37a6bc7ba87a94353e not-for-merge tag 'v1.2.0' of https://github.com/Azure/iotedgedev
38
+ 3da6608638420e72ae55f2f1e9a8224542d48b9e not-for-merge tag 'v1.3.0' of https://github.com/Azure/iotedgedev
39
+ 0a6dcaba871e518fd7eba7af2e943b5c2bf5e694 not-for-merge tag 'v2.0.0' of https://github.com/Azure/iotedgedev
40
+ 01bf83cdb2c26ba6331b459faab8ab3852ce2127 not-for-merge tag 'v2.0.1' of https://github.com/Azure/iotedgedev
41
+ 36312130134984ef27afd8bceb0ea4eb66b13884 not-for-merge tag 'v2.0.2' of https://github.com/Azure/iotedgedev
42
+ 66b1055d0dc4f45999e0dd7a94b462f5ae42ee1e not-for-merge tag 'v2.1.0' of https://github.com/Azure/iotedgedev
43
+ 93e18b0b6dfd92031727e19514f786569b56e1ca not-for-merge tag 'v2.1.1' of https://github.com/Azure/iotedgedev
44
+ 2517a2bd6ded4db2990f4b23faa5ceaf36cfdde2 not-for-merge tag 'v2.1.2' of https://github.com/Azure/iotedgedev
45
+ abebb959c3935d69205dc2f2fc77b9daf08a74e8 not-for-merge tag 'v2.1.3' of https://github.com/Azure/iotedgedev
46
+ 3bab87fb18e6a272f83fb7f0eab6b1a577d24833 not-for-merge tag 'v2.1.4' of https://github.com/Azure/iotedgedev
47
+ addfd992a67912f145998c4eaabe955904e76bb0 not-for-merge tag 'v2.1.6' of https://github.com/Azure/iotedgedev
48
+ e6f07473e518036cb0ba1c6fb8f44443056d99b5 not-for-merge tag 'v2.2.0' of https://github.com/Azure/iotedgedev
49
+ eaae2fe4f468e03aed197608afda9c3afa2ba519 not-for-merge tag 'v3.0.0' of https://github.com/Azure/iotedgedev
50
+ 3c77e922272d641f3175ead6c7515467838beecf not-for-merge tag 'v3.0.0-rc' of https://github.com/Azure/iotedgedev
51
+ 1c06b83c8b8b85f46eefd754f3243736693d5826 not-for-merge tag 'v3.1.0' of https://github.com/Azure/iotedgedev
52
+ 20f851c9961493644e1bd360c050228ca2d9378a not-for-merge tag 'v3.1.1' of https://github.com/Azure/iotedgedev
53
+ 29b55a2ee6fbb74ac8f069f6049b7eb29ee86018 not-for-merge tag 'v3.1.2' of https://github.com/Azure/iotedgedev
54
+ d46c13e978018dc27e9140546a4a1bb3349c85a1 not-for-merge tag 'v3.2.0' of https://github.com/Azure/iotedgedev
55
+ 7b5c872264ba360d71e93c48f1714f0e2588b5f5 not-for-merge tag 'v3.2.0rc0' of https://github.com/Azure/iotedgedev
56
+ 33aa231e90673514290e4e44c94a8d643f1dc293 not-for-merge tag 'v3.3.0' of https://github.com/Azure/iotedgedev
57
+ 7ef7125fcd10b835b540f6f66666b464662a7f7d not-for-merge tag 'v3.3.1' of https://github.com/Azure/iotedgedev
58
+ cfebd97a86e3d9c10a199c58feea5f00a4201127 not-for-merge tag 'v3.3.2' of https://github.com/Azure/iotedgedev
59
+ db420607db777f90eb178635bd8c33ad2c21f242 not-for-merge tag 'v3.3.3' of https://github.com/Azure/iotedgedev
60
+ 50459b5a8ec73e5629bf5b88136fce95b9083e90 not-for-merge tag 'v3.3.3-rc0' of https://github.com/Azure/iotedgedev
61
+ f28b9ff2015dc3362461ede5d3633d6ba6ea5750 not-for-merge tag 'v3.3.4' of https://github.com/Azure/iotedgedev
s/.git/HEAD ADDED
@@ -0,0 +1 @@
1
+ f28b9ff2015dc3362461ede5d3633d6ba6ea5750
s/.git/config ADDED
@@ -0,0 +1,12 @@
1
+ [core]
2
+ repositoryformatversion = 0
3
+ filemode = true
4
+ bare = false
5
+ logallrefupdates = true
6
+ [remote "origin"]
7
+ url = https://github.com/Azure/iotedgedev
8
+ fetch = +refs/heads/*:refs/remotes/origin/*
9
+ [gc]
10
+ auto = 0
11
+ [http]
12
+ version = HTTP/1.1
s/.git/description ADDED
@@ -0,0 +1 @@
1
+ Unnamed repository; edit this file 'description' to name the repository.
@@ -0,0 +1,15 @@
1
+ #!/bin/sh
2
+ #
3
+ # An example hook script to check the commit log message taken by
4
+ # applypatch from an e-mail message.
5
+ #
6
+ # The hook should exit with non-zero status after issuing an
7
+ # appropriate message if it wants to stop the commit. The hook is
8
+ # allowed to edit the commit message file.
9
+ #
10
+ # To enable this hook, rename this file to "applypatch-msg".
11
+
12
+ . git-sh-setup
13
+ commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
14
+ test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
15
+ :
@@ -0,0 +1,24 @@
1
+ #!/bin/sh
2
+ #
3
+ # An example hook script to check the commit log message.
4
+ # Called by "git commit" with one argument, the name of the file
5
+ # that has the commit message. The hook should exit with non-zero
6
+ # status after issuing an appropriate message if it wants to stop the
7
+ # commit. The hook is allowed to edit the commit message file.
8
+ #
9
+ # To enable this hook, rename this file to "commit-msg".
10
+
11
+ # Uncomment the below to add a Signed-off-by line to the message.
12
+ # Doing this in a hook is a bad idea in general, but the prepare-commit-msg
13
+ # hook is more suited to it.
14
+ #
15
+ # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
16
+ # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
17
+
18
+ # This example catches duplicate Signed-off-by lines.
19
+
20
+ test "" = "$(grep '^Signed-off-by: ' "$1" |
21
+ sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
22
+ echo >&2 Duplicate Signed-off-by lines.
23
+ exit 1
24
+ }