puppetlabs-onceover 5.0.3

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 (324) hide show
  1. checksums.yaml +7 -0
  2. data/.devcontainer/devcontainer.json +31 -0
  3. data/.gitattributes +2 -0
  4. data/.github/workflows/ci.yml +81 -0
  5. data/.github/workflows/mend.yml +14 -0
  6. data/.github/workflows/nightly.yml +66 -0
  7. data/.github/workflows/release.yaml +16 -0
  8. data/.github/workflows/release_prep.yml +20 -0
  9. data/.gitignore +19 -0
  10. data/.rubocop.yml +19 -0
  11. data/.rubocop_todo.yml +804 -0
  12. data/.vscode/extensions.json +4 -0
  13. data/ARCHIVE.md +395 -0
  14. data/CHANGELOG.md +25 -0
  15. data/CODEOWNERS +2 -0
  16. data/Gemfile +65 -0
  17. data/LICENSE +202 -0
  18. data/README.md +965 -0
  19. data/Rakefile +86 -0
  20. data/bin/puppetlabs-onceover +17 -0
  21. data/cucumber.yml +1 -0
  22. data/factsets/AIX-6.1-powerpc.json +210 -0
  23. data/factsets/AIX-7.1-powerpc.json +215 -0
  24. data/factsets/Amazon-2018.03.json +420 -0
  25. data/factsets/CentOS-5.11-32.json +263 -0
  26. data/factsets/CentOS-5.11-64.json +263 -0
  27. data/factsets/CentOS-6.6-32.json +306 -0
  28. data/factsets/CentOS-6.6-64.json +342 -0
  29. data/factsets/CentOS-7.0-64.json +352 -0
  30. data/factsets/CentOS-8.3.2011-64.json +485 -0
  31. data/factsets/Debian-10.4-64.json +476 -0
  32. data/factsets/Debian-6.0.10-32.json +322 -0
  33. data/factsets/Debian-6.0.10-64.json +322 -0
  34. data/factsets/Debian-7.8-32.json +338 -0
  35. data/factsets/Debian-7.8-64.json +338 -0
  36. data/factsets/Debian-8.11-64.json +480 -0
  37. data/factsets/Debian-9.12-64.json +476 -0
  38. data/factsets/RHEL-6.7.json +415 -0
  39. data/factsets/RHEL-7.4.json +489 -0
  40. data/factsets/SLES-11.3-64.json +317 -0
  41. data/factsets/SLES-12.1-64.json +353 -0
  42. data/factsets/Ubuntu-12.04-32.json +328 -0
  43. data/factsets/Ubuntu-12.04-64.json +328 -0
  44. data/factsets/Ubuntu-14.04-32.json +337 -0
  45. data/factsets/Ubuntu-14.04-64.json +373 -0
  46. data/factsets/Ubuntu-18.04-64.json +556 -0
  47. data/factsets/Ubuntu-20.04-64.json +504 -0
  48. data/factsets/Windows_Server-2008r2-64.json +184 -0
  49. data/factsets/Windows_Server-2012r2-64.json +165 -0
  50. data/factsets/solaris-10_u9-sparc-64.json +769 -0
  51. data/factsets/solaris-11.2-sparc-64.json +774 -0
  52. data/factsets/windows-10-64.json +104 -0
  53. data/features/auto_vendored.feature +27 -0
  54. data/features/cache.feature +38 -0
  55. data/features/factsets.feature +48 -0
  56. data/features/formatting.feature +36 -0
  57. data/features/help.feature +14 -0
  58. data/features/init.feature +18 -0
  59. data/features/show.feature +28 -0
  60. data/features/step_definitions/cache.rb +38 -0
  61. data/features/step_definitions/common.rb +123 -0
  62. data/features/step_definitions/formatter.rb +41 -0
  63. data/features/step_definitions/init.rb +17 -0
  64. data/features/step_definitions/run.rb +17 -0
  65. data/features/support/cache_helper.rb +54 -0
  66. data/features/support/command_helper.rb +32 -0
  67. data/features/support/controlrepo_helper.rb +36 -0
  68. data/features/support/env.rb +2 -0
  69. data/features/windows.feature +35 -0
  70. data/features/zzz_run.feature +93 -0
  71. data/lib/puppetlabs-onceover/beaker/spec_helper.rb +71 -0
  72. data/lib/puppetlabs-onceover/beaker.rb +241 -0
  73. data/lib/puppetlabs-onceover/class.rb +56 -0
  74. data/lib/puppetlabs-onceover/cli/init.rb +34 -0
  75. data/lib/puppetlabs-onceover/cli/plugins.rb +10 -0
  76. data/lib/puppetlabs-onceover/cli/run.rb +85 -0
  77. data/lib/puppetlabs-onceover/cli/show.rb +79 -0
  78. data/lib/puppetlabs-onceover/cli/update.rb +48 -0
  79. data/lib/puppetlabs-onceover/cli.rb +47 -0
  80. data/lib/puppetlabs-onceover/controlrepo.rb +688 -0
  81. data/lib/puppetlabs-onceover/deploy.rb +171 -0
  82. data/lib/puppetlabs-onceover/group.rb +78 -0
  83. data/lib/puppetlabs-onceover/logger.rb +32 -0
  84. data/lib/puppetlabs-onceover/node.rb +72 -0
  85. data/lib/puppetlabs-onceover/rake_tasks.rb +95 -0
  86. data/lib/puppetlabs-onceover/rspec/formatters.rb +315 -0
  87. data/lib/puppetlabs-onceover/runner.rb +139 -0
  88. data/lib/puppetlabs-onceover/test.rb +135 -0
  89. data/lib/puppetlabs-onceover/testconfig.rb +315 -0
  90. data/lib/puppetlabs-onceover/vendored_modules.rb +202 -0
  91. data/lib/puppetlabs-onceover/version.rb +5 -0
  92. data/puppetlabs-onceover.gemspec +40 -0
  93. data/spec/fixtures/controlrepos/basic/Puppetfile +17 -0
  94. data/spec/fixtures/controlrepos/basic/environment.conf +7 -0
  95. data/spec/fixtures/controlrepos/basic/hieradata/common.yaml +2 -0
  96. data/spec/fixtures/controlrepos/basic/hieradata/nodes/example-node.yaml +1 -0
  97. data/spec/fixtures/controlrepos/basic/manifests/site.pp +32 -0
  98. data/spec/fixtures/controlrepos/basic/manifests_alternate/site.pp +2 -0
  99. data/spec/fixtures/controlrepos/basic/site/profile/manifests/base.pp +5 -0
  100. data/spec/fixtures/controlrepos/basic/site/profile/manifests/example.pp +3 -0
  101. data/spec/fixtures/controlrepos/basic/site/role/manifests/database_server.pp +7 -0
  102. data/spec/fixtures/controlrepos/basic/site/role/manifests/example.pp +3 -0
  103. data/spec/fixtures/controlrepos/basic/site/role/manifests/webserver.pp +7 -0
  104. data/spec/fixtures/controlrepos/caching/.gitignore +1 -0
  105. data/spec/fixtures/controlrepos/caching/.travis.yml +2 -0
  106. data/spec/fixtures/controlrepos/caching/Gemfile +5 -0
  107. data/spec/fixtures/controlrepos/caching/Puppetfile +17 -0
  108. data/spec/fixtures/controlrepos/caching/Rakefile +1 -0
  109. data/spec/fixtures/controlrepos/caching/deleteme.txt +0 -0
  110. data/spec/fixtures/controlrepos/caching/environment.conf +2 -0
  111. data/spec/fixtures/controlrepos/caching/hieradata/common.yaml +2 -0
  112. data/spec/fixtures/controlrepos/caching/hieradata/nodes/example-node.yaml +1 -0
  113. data/spec/fixtures/controlrepos/caching/manifests/site.pp +33 -0
  114. data/spec/fixtures/controlrepos/caching/site/profile/manifests/base.pp +5 -0
  115. data/spec/fixtures/controlrepos/caching/site/profile/manifests/example.pp +3 -0
  116. data/spec/fixtures/controlrepos/caching/site/role/manifests/database_server.pp +7 -0
  117. data/spec/fixtures/controlrepos/caching/site/role/manifests/example.pp +3 -0
  118. data/spec/fixtures/controlrepos/caching/site/role/manifests/webserver.pp +7 -0
  119. data/spec/fixtures/controlrepos/caching/spec/factsets/Debian-10-facter-4.json +1091 -0
  120. data/spec/fixtures/controlrepos/caching/spec/factsets/README.md +7 -0
  121. data/spec/fixtures/controlrepos/caching/spec/onceover.yaml +55 -0
  122. data/spec/fixtures/controlrepos/caching/spec/pre_conditions/README.md +24 -0
  123. data/spec/fixtures/controlrepos/caching/spec/pre_conditions/escaping.pp +7 -0
  124. data/spec/fixtures/controlrepos/caching/spec/r10k.yaml +3 -0
  125. data/spec/fixtures/controlrepos/control_branch/Puppetfile +18 -0
  126. data/spec/fixtures/controlrepos/control_branch/environment.conf +2 -0
  127. data/spec/fixtures/controlrepos/custom_puppetfile/Puppetfile.custom +3 -0
  128. data/spec/fixtures/controlrepos/custom_puppetfile/environment.conf +7 -0
  129. data/spec/fixtures/controlrepos/factsets/environment.conf +1 -0
  130. data/spec/fixtures/controlrepos/factsets/site/profile/manifests/base.pp +6 -0
  131. data/spec/fixtures/controlrepos/factsets/site/role/manifests/example.pp +4 -0
  132. data/spec/fixtures/controlrepos/factsets/site/role/manifests/trusted_extensions.pp +6 -0
  133. data/spec/fixtures/controlrepos/factsets/site/role/manifests/trusted_external.pp +6 -0
  134. data/spec/fixtures/controlrepos/factsets/spec/factsets/README.md +7 -0
  135. data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_notrusted.json +530 -0
  136. data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_extensions_nested.json +535 -0
  137. data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_extensions_top.json +533 -0
  138. data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_external_nested.json +537 -0
  139. data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_external_top.json +535 -0
  140. data/spec/fixtures/controlrepos/factsets/spec/factsets/centos_7_facter_4.json +706 -0
  141. data/spec/fixtures/controlrepos/factsets/spec/factsets/centos_with_env.json +353 -0
  142. data/spec/fixtures/controlrepos/function_mocking/.gitignore +1 -0
  143. data/spec/fixtures/controlrepos/function_mocking/Puppetfile +4 -0
  144. data/spec/fixtures/controlrepos/function_mocking/Rakefile +1 -0
  145. data/spec/fixtures/controlrepos/function_mocking/environment.conf +2 -0
  146. data/spec/fixtures/controlrepos/function_mocking/site/profile/functions/fail_puppet.pp +5 -0
  147. data/spec/fixtures/controlrepos/function_mocking/site/profile/lib/puppet/functions/profile/fail_ruby.rb +9 -0
  148. data/spec/fixtures/controlrepos/function_mocking/site/profile/manifests/base.pp +10 -0
  149. data/spec/fixtures/controlrepos/function_mocking/site/role/manifests/fail.pp +7 -0
  150. data/spec/fixtures/controlrepos/function_mocking/site/role/manifests/test_data_return.pp +19 -0
  151. data/spec/fixtures/controlrepos/function_mocking/site/role/manifests/test_new_functions.pp +12 -0
  152. data/spec/fixtures/controlrepos/function_mocking/spec/onceover.yaml +50 -0
  153. data/spec/fixtures/controlrepos/minimal/environment.conf +2 -0
  154. data/spec/fixtures/controlrepos/puppet_controlrepo/.atom-build.json +9 -0
  155. data/spec/fixtures/controlrepos/puppet_controlrepo/.gitignore +5 -0
  156. data/spec/fixtures/controlrepos/puppet_controlrepo/.ruby-version +1 -0
  157. data/spec/fixtures/controlrepos/puppet_controlrepo/.travis.yml +13 -0
  158. data/spec/fixtures/controlrepos/puppet_controlrepo/Gemfile +22 -0
  159. data/spec/fixtures/controlrepos/puppet_controlrepo/Jenkinsfile +50 -0
  160. data/spec/fixtures/controlrepos/puppet_controlrepo/Puppetfile +102 -0
  161. data/spec/fixtures/controlrepos/puppet_controlrepo/README.md +4 -0
  162. data/spec/fixtures/controlrepos/puppet_controlrepo/Rakefile +33 -0
  163. data/spec/fixtures/controlrepos/puppet_controlrepo/data/common.yaml +558 -0
  164. data/spec/fixtures/controlrepos/puppet_controlrepo/data/datacenter/melbourne.yaml +12 -0
  165. data/spec/fixtures/controlrepos/puppet_controlrepo/data/datacenter/singapore.yaml +12 -0
  166. data/spec/fixtures/controlrepos/puppet_controlrepo/data/environments/development.yaml +3 -0
  167. data/spec/fixtures/controlrepos/puppet_controlrepo/data/environments/production.yaml +3 -0
  168. data/spec/fixtures/controlrepos/puppet_controlrepo/data/size/vol.large.yaml +27 -0
  169. data/spec/fixtures/controlrepos/puppet_controlrepo/environment.conf +3 -0
  170. data/spec/fixtures/controlrepos/puppet_controlrepo/hiera.yaml +25 -0
  171. data/spec/fixtures/controlrepos/puppet_controlrepo/manifests/site.pp +11 -0
  172. data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/code_manager_config_version.rb +19 -0
  173. data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/config_version.rb +25 -0
  174. data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/config_version.sh +12 -0
  175. data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/count_changed_classes.rb +26 -0
  176. data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/get_changed_classes.rb +26 -0
  177. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/console/functions/user/token.pp +10 -0
  178. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/console/manifests/init.pp +14 -0
  179. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/console/manifests/user.pp +35 -0
  180. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/deployments/lib/puppet/functions/deployments/generate.rb +15 -0
  181. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/deployments/plans/signed_deployment.pp +126 -0
  182. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/facts.d/test.sh +2 -0
  183. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/artifactory/config_descriptor.xml +265 -0
  184. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/autosign.sh +23 -0
  185. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/hudson.tasks.Shell.xml +4 -0
  186. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/motd +4 -0
  187. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/polar_clock/index.html +198 -0
  188. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/apt.pp +9 -0
  189. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/aws_nodes.pp +54 -0
  190. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/aws.pp +9 -0
  191. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/rhel.pp +50 -0
  192. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/windows/hardening.pp +57 -0
  193. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/windows.pp +52 -0
  194. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base.pp +79 -0
  195. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/artifactory.pp +64 -0
  196. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/connection.pp +95 -0
  197. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/haproxy.pp +65 -0
  198. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/replicated.pp +53 -0
  199. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/compile/balancer.pp +28 -0
  200. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/compile/master.pp +19 -0
  201. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/dns/host_record.pp +16 -0
  202. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/dns/server.pp +66 -0
  203. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/docker.pp +5 -0
  204. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/base.pp +43 -0
  205. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/core/database_connection.pp +42 -0
  206. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/core.pp +72 -0
  207. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/ctrl.pp +57 -0
  208. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/database.pp +32 -0
  209. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/exec.pp +11 -0
  210. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/file_sync/client.pp +165 -0
  211. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/file_sync/master_patch.pp +37 -0
  212. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/grafana/dashboard.pp +17 -0
  213. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/haproxy.pp +43 -0
  214. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/init.pp +3 -0
  215. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jenkins/plugins.pp +87 -0
  216. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jenkins.pp +65 -0
  217. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jira/aio.pp +39 -0
  218. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jira/app.pp +27 -0
  219. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jira/db.pp +25 -0
  220. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/metrics/collectd/compile.pp +82 -0
  221. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/metrics/collectd.pp +28 -0
  222. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/metrics/dashboard.pp +28 -0
  223. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/mysql_server.pp +7 -0
  224. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/nginx.pp +24 -0
  225. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/polar_clock.pp +55 -0
  226. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/api_auth.pp +82 -0
  227. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/autosign.pp +33 -0
  228. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/aws.pp +58 -0
  229. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/tuning.pp +139 -0
  230. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster.pp +139 -0
  231. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/rvm.pp +13 -0
  232. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/sumologic.pp +11 -0
  233. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/sunburst/windows.pp +104 -0
  234. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/vagrant.pp +25 -0
  235. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/windows/webserver.pp +27 -0
  236. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/cd4pe/connection_script.sh.epp +110 -0
  237. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/controlrepo_deploy_jenkins_job.xml.epp +51 -0
  238. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/dashboard.json.epp +403 -0
  239. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/jenkins_secret_text.json.epp +1 -0
  240. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/onceover_jenkins_job.xml.epp +51 -0
  241. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/userdata.epp +17 -0
  242. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/cd4pe.pp +29 -0
  243. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/clock.pp +16 -0
  244. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/compile/balancer.pp +5 -0
  245. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/compile/master.pp +5 -0
  246. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/aio.pp +10 -0
  247. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/controller.pp +10 -0
  248. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/database.pp +7 -0
  249. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/exec.pp +6 -0
  250. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/init.pp +3 -0
  251. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/lb.pp +14 -0
  252. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/metrics.pp +5 -0
  253. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/mysql.pp +13 -0
  254. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/windows/base.pp +5 -0
  255. data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/windows/webserver.pp +6 -0
  256. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/.gitignore +5 -0
  257. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/acceptance/nodesets/onceover-nodes.yml +94 -0
  258. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/classes/test_spec.rb +8 -0
  259. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/CentOS-7.0-64-master-2017.3.2.json +531 -0
  260. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/CentOS-7.0-64-master.json +429 -0
  261. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/CentOS-7.0-64.json +353 -0
  262. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/Windows_Server-2008r2-64.json +184 -0
  263. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/Windows_Server-2012r2-64.json +165 -0
  264. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/hiera.yaml +18 -0
  265. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/matchers/file_matchers.rb +16 -0
  266. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/onceover.yaml +54 -0
  267. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/pre_conditions/site.pp +150 -0
  268. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/r10k.yaml +2 -0
  269. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/shared_examples/helper.rb +91 -0
  270. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/unit/00_parse_spec.rb +76 -0
  271. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/unit/01_linting_spec_example.rb +69 -0
  272. data/spec/fixtures/controlrepos/puppet_controlrepo/spec/unit/03_puppetfile_spec_example.rb +35 -0
  273. data/spec/fixtures/controlrepos/vendored/Puppetfile +3 -0
  274. data/spec/fixtures/controlrepos/vendored/Puppetfile.cron +5 -0
  275. data/spec/fixtures/controlrepos/vendored/environment.conf +1 -0
  276. data/spec/fixtures/controlrepos/vendored/site-modules/role/manifests/cron.pp +9 -0
  277. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/augeas_core-puppet_agent-7.30.0.json +1 -0
  278. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/augeas_core-puppet_agent-8.6.0.json +1 -0
  279. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/cron_core-puppet_agent-7.30.0.json +1 -0
  280. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/cron_core-puppet_agent-8.6.0.json +1 -0
  281. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/host_core-puppet_agent-7.30.0.json +1 -0
  282. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/host_core-puppet_agent-8.6.0.json +1 -0
  283. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/mount_core-puppet_agent-7.30.0.json +1 -0
  284. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/mount_core-puppet_agent-8.6.0.json +1 -0
  285. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/repo_tree-puppet_agent-7.30.0.json +1 -0
  286. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/repo_tree-puppet_agent-8.6.0.json +1 -0
  287. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/scheduled_task-puppet_agent-7.30.0.json +1 -0
  288. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/scheduled_task-puppet_agent-8.6.0.json +1 -0
  289. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/selinux_core-puppet_agent-7.30.0.json +1 -0
  290. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/selinux_core-puppet_agent-8.6.0.json +1 -0
  291. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/sshkeys_core-puppet_agent-7.30.0.json +1 -0
  292. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/sshkeys_core-puppet_agent-8.6.0.json +1 -0
  293. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/yumrepo_core-puppet_agent-7.30.0.json +1 -0
  294. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/yumrepo_core-puppet_agent-8.6.0.json +1 -0
  295. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zfs_core-puppet_agent-7.30.0.json +1 -0
  296. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zfs_core-puppet_agent-8.6.0.json +1 -0
  297. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zone_core-puppet_agent-7.30.0.json +1 -0
  298. data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zone_core-puppet_agent-8.6.0.json +1 -0
  299. data/spec/fixtures/controlrepos/windows/Gemfile +3 -0
  300. data/spec/fixtures/controlrepos/windows/Puppetfile +8 -0
  301. data/spec/fixtures/controlrepos/windows/environment.conf +1 -0
  302. data/spec/fixtures/controlrepos/windows/site/role/manifests/groups.pp +8 -0
  303. data/spec/fixtures/controlrepos/windows/site/role/manifests/users.pp +9 -0
  304. data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/acl.pp +12 -0
  305. data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/choco.pp +9 -0
  306. data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/groups.pp +8 -0
  307. data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/users.pp +9 -0
  308. data/spec/fixtures/controlrepos/windows/spec/onceover.yaml +24 -0
  309. data/spec/puppetlabs-onceover/controlrepo_spec.rb +18 -0
  310. data/spec/spec_helper.rb +8 -0
  311. data/templates/.fixtures.yml.erb +24 -0
  312. data/templates/Gemfile.erb +3 -0
  313. data/templates/Rakefile.erb +1 -0
  314. data/templates/acceptance_test_spec.rb.erb +66 -0
  315. data/templates/controlrepo.yaml.erb +38 -0
  316. data/templates/error_summary.yaml.erb +17 -0
  317. data/templates/factsets_README.md.erb +10 -0
  318. data/templates/nodeset.yaml.erb +12 -0
  319. data/templates/pre_conditions_README.md.erb +24 -0
  320. data/templates/spec_helper.rb.erb +35 -0
  321. data/templates/spec_helper_acceptance.rb.erb +1 -0
  322. data/templates/test_spec.rb.erb +150 -0
  323. data/templates/testconfig_Rakefile.erb +47 -0
  324. metadata +602 -0
@@ -0,0 +1,171 @@
1
+ # handle local deployments (run r10k in .onceover dir)
2
+ class PuppetlabsOnceover
3
+ class Deploy
4
+ def deploy_local(repo = PuppetlabsOnceover::Controlrepo.new, opts = {})
5
+ require 'puppetlabs-onceover/controlrepo'
6
+ require 'pathname'
7
+ require 'fileutils'
8
+ require 'multi_json'
9
+
10
+ logger.debug 'Deploying locally (R10K)...'
11
+
12
+ # Only default to running r10k if there is a Puppetfile
13
+ skip_r10k_default = !(File.file?(repo.puppetfile))
14
+ skip_r10k = opts[:skip_r10k] || skip_r10k_default
15
+ force = opts[:force] || false
16
+ # Only attempt to resolve vendored modules if configured to do so
17
+ auto_vendored = opts[:auto_vendored] || false
18
+
19
+ require 'puppetlabs-onceover/vendored_modules' if auto_vendored
20
+
21
+ if repo.tempdir == nil
22
+ repo.tempdir = Dir.mktmpdir('r10k')
23
+ else
24
+ logger.debug "Creating #{repo.tempdir}"
25
+ FileUtils.mkdir_p(repo.tempdir)
26
+ end
27
+
28
+ # Overall plan: Copy everything in control repo to a tempdir then move the tempdir to the
29
+ # destination, just in case we get a recursive copy
30
+
31
+ # We need to exclude some files:
32
+ # * our own cache
33
+ # * stuff from git
34
+ # * stale puppet modules
35
+ # * random ruby gems (bundler/rvm?)
36
+ # * ...etc
37
+ excluded_dirs = [
38
+ File.join(repo.root, ".onceover"),
39
+ File.join(repo.root, ".git"),
40
+ File.join(repo.root, ".modules"),
41
+ File.join(repo.root, "vendor"),
42
+ ]
43
+ excluded_dirs << ENV['GEM_HOME'] if ENV['GEM_HOME']
44
+
45
+ # A Local modules directory likely means that the user installed r10k folders into their local control repo
46
+ # This conflicts with the step where onceover installs r10k after copying the control repo to the temporary
47
+ # .onceover directory. The following skips copying the modules folder, to not later cause an error.
48
+ if File.directory?("modules")
49
+ logger.warn "Found modules directory in your controlrepo, skipping the copy of this directory. If you installed modules locally using r10k, this warning is normal, if you have created modules in a local modules directory, onceover does not support testing these files, please rename this directory to conform with Puppet best practices, as this folder will conflict with Puppet's native installation of modules."
50
+ end
51
+
52
+ logger.debug "Creating temp dir as a staging directory for copying the controlrepo to #{repo.tempdir}"
53
+ temp_controlrepo = Dir.mktmpdir('controlrepo')
54
+
55
+ # onceover stores a big list of all the relative paths it places within its cache directory
56
+ onceover_manifest = []
57
+
58
+ Find.find repo.root do |source|
59
+ # work out a relative path to this source, eg:
60
+ # /home/geoff/control-repo/foo/bar -> foo/bar
61
+ relative_source = Pathname.new(source).relative_path_from(Pathname.new(repo.root)).to_s
62
+
63
+ target = File.join(temp_controlrepo, relative_source)
64
+
65
+ # ignore the path "." which represents the root of our control repo
66
+ if relative_source != "."
67
+ # add to list of files copied to cache by onceover
68
+ onceover_manifest << relative_source
69
+
70
+ if File.symlink?(source)
71
+ # Handle symlinks
72
+ link_target = File.readlink(source) # Get the target of the symlink
73
+ FileUtils.ln_s link_target, target, force: true # Create symlink at target
74
+ elsif File.directory? source
75
+ Find.prune if excluded_dirs.include? source
76
+ FileUtils.mkdir target
77
+ else
78
+ FileUtils.copy source, target
79
+ end
80
+ end
81
+ end
82
+ logger.debug "Writing manifest of copied controlrepo files"
83
+ File.write("#{temp_controlrepo}/.onceover_manifest.json", onceover_manifest.to_json)
84
+
85
+ # When using puppetfile vs deploy with r10k, we want to respect the :control_branch
86
+ # located in the Puppetfile. To accomplish that, we use git and find the current
87
+ # branch name, then replace strings within the staged puppetfile, prior to copying.
88
+ logger.debug "Checking current working branch"
89
+ git_branch = `git rev-parse --abbrev-ref HEAD`.chomp
90
+
91
+ logger.debug "found #{git_branch} as current working branch"
92
+ # Only try to modify Puppetfile if it exists
93
+ unless skip_r10k
94
+ FileUtils.copy repo.puppetfile, "#{temp_controlrepo}/Puppetfile"
95
+ puppetfile_contents = File.read("#{temp_controlrepo}/Puppetfile")
96
+
97
+ # Avoid touching thing if we don't need to
98
+ if /:control_branch/.match(puppetfile_contents)
99
+ logger.debug "replacing :control_branch mentions in the Puppetfile with #{git_branch}"
100
+ new_puppetfile_contents = puppetfile_contents.gsub(":control_branch", "'#{git_branch}'")
101
+ File.write("#{temp_controlrepo}/Puppetfile", new_puppetfile_contents)
102
+ end
103
+
104
+ if auto_vendored
105
+ tmp_puppetfile = File.join(temp_controlrepo, 'Puppetfile')
106
+ tmp_puppetfile_contents = File.read(tmp_puppetfile)
107
+ vm = PuppetlabsOnceover::VendoredModules.new({ repo: repo })
108
+ puppetfile = R10K::ModuleLoader::Puppetfile.new(basedir: temp_controlrepo)
109
+ vm.puppetfile_missing_vendored(puppetfile)
110
+ unless vm.missing_vendored.empty?
111
+ missing_slugs = vm.missing_vendored.map do |missing_mod|
112
+ missing_mod.keys[0]
113
+ end
114
+ logger.debug "Adding #{missing_slugs} to #{tmp_puppetfile}"
115
+ modlines = vm.missing_vendored.map do |missing_mod|
116
+ mod_slug = missing_mod.keys[0]
117
+ "mod '#{mod_slug}',\n git: '#{missing_mod[mod_slug][:git]}',\n ref: '#{missing_mod[mod_slug][:ref]}'"
118
+ end.join("\n")
119
+ File.write(tmp_puppetfile, "#{tmp_puppetfile_contents}\n# PuppetlabsOnceover Managed Vendored Modules\n#{modlines}")
120
+ end
121
+ end
122
+ end
123
+
124
+ # Remove all files written by the last onceover run, but not the ones
125
+ # added by r10k, because that's what we are trying to cache but we don't
126
+ # know what they are
127
+ old_manifest_path = "#{repo.tempdir}/#{repo.environmentpath}/production/.onceover_manifest.json"
128
+ if File.exist? old_manifest_path
129
+ logger.debug "Found manifest from previous run, parsing..."
130
+ old_manifest = MultiJson.load(File.read(old_manifest_path))
131
+ logger.debug "Removing #{old_manifest.count} files"
132
+ old_manifest.reverse.each do |file|
133
+ FileUtils.rm_f(File.join("#{repo.tempdir}/#{repo.environmentpath}/production/",file))
134
+ end
135
+ end
136
+ FileUtils.mkdir_p("#{repo.tempdir}/#{repo.environmentpath}")
137
+
138
+ logger.debug "Copying #{temp_controlrepo} to #{repo.tempdir}/#{repo.environmentpath}/production"
139
+ FileUtils.cp_r("#{temp_controlrepo}/.", "#{repo.tempdir}/#{repo.environmentpath}/production")
140
+ FileUtils.rm_rf(temp_controlrepo)
141
+
142
+ # Pull the trigger! If it's not already been pulled
143
+ if repo.tempdir and not skip_r10k
144
+ if File.directory?(repo.tempdir)
145
+ # TODO: Change this to call out to r10k directly to do this
146
+ # Probably something like:
147
+ # R10K::Settings.global_settings.evaluate(with_overrides)
148
+ # R10K::Action::Deploy::Environment
149
+ prod_dir = "#{repo.tempdir}/#{repo.environmentpath}/production"
150
+ Dir.chdir(prod_dir) do
151
+ install_cmd = []
152
+ install_cmd << 'r10k puppetfile install --color'
153
+ install_cmd << "--force" if force
154
+ install_cmd << "--config #{repo.r10k_config_file}" if repo.r10k_config_file
155
+ install_cmd << (logger.level > 0 ? "--verbose" : "--verbose debug") # Enable debugging if we're debugging
156
+ install_cmd << "--trace" if opts[:trace]
157
+ install_cmd = install_cmd.join(' ')
158
+ logger.debug "Running #{install_cmd} from #{prod_dir}"
159
+ system(install_cmd)
160
+ raise 'r10k could not install all required modules' unless $?.success?
161
+ end
162
+ else
163
+ raise "#{repo.tempdir} is not a directory"
164
+ end
165
+ end
166
+
167
+ # Return repo.tempdir for use
168
+ repo.tempdir
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,78 @@
1
+ require 'puppetlabs-onceover/class'
2
+ require 'puppetlabs-onceover/node'
3
+
4
+ class PuppetlabsOnceover
5
+ class Group
6
+ @@all = []
7
+
8
+ # Work out how to do class variables so that I can keep track of all the groups easily
9
+ attr_accessor :name
10
+ attr_accessor :members
11
+
12
+ # You need to pass in an array of strings for members, not objects, it will find the objects
13
+ # by itself, and yes it will reference them, not just create additional ones, woo!
14
+
15
+ def initialize(name = nil, members = [])
16
+ @name = name
17
+ @members = []
18
+
19
+ case
20
+ when PuppetlabsOnceover::Group.valid_members?(members)
21
+ # If it's already a valid list just chuck it in there
22
+ @members = members
23
+ when members.is_a?(Hash)
24
+ # if it's a hash then do subtractive stuff
25
+ @members = PuppetlabsOnceover::TestConfig.subtractive_to_list(members)
26
+ when members.nil?
27
+ # Support empty groups yo
28
+ @members = []
29
+ else
30
+ # Turn it into a full list
31
+ # This should also handle lists that include groups
32
+ member_objects = members.map { |member| PuppetlabsOnceover::TestConfig.find_list(member) }
33
+ member_objects.flatten!
34
+
35
+ # Check that they are all the same type
36
+ unless PuppetlabsOnceover::Group.valid_members?(member_objects)
37
+ raise 'Groups must contain either all nodes or all classes. Either there was a mix, or something was spelled wrong'
38
+ end
39
+
40
+ # Smash it into the instance variable
41
+ @members = member_objects
42
+ end
43
+
44
+ # Finally add it to the list of all grops
45
+ @@all << self
46
+ end
47
+
48
+ def self.find(group_name)
49
+ @@all.each do |group|
50
+ if group.name == group_name
51
+ return group
52
+ end
53
+ end
54
+ nil
55
+ end
56
+
57
+ def self.all
58
+ @@all
59
+ end
60
+
61
+ # rubocop:disable-next Lint/DuplicateBranch
62
+ def self.valid_members?(members)
63
+ # Check that they are all the same type
64
+ # Also catch any errors to assume it's invalid
65
+ begin
66
+ if members.all? { |item| item.is_a?(PuppetlabsOnceover::Class) }
67
+ return true
68
+ elsif members.all? { |item| item.is_a?(PuppetlabsOnceover::Node) }
69
+ return true
70
+ else
71
+ return false
72
+ end
73
+ rescue StandardError
74
+ return false
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,32 @@
1
+ require 'logging'
2
+
3
+ module PuppetlabsOnceover::Logger
4
+ def logger
5
+ unless $logger
6
+ # here we setup a color scheme called 'bright'
7
+ Logging.color_scheme(
8
+ 'bright',
9
+ :levels => {
10
+ :debug => :cyan,
11
+ :info => :green,
12
+ :warn => :yellow,
13
+ :error => :red,
14
+ :fatal => [:white, :on_red]
15
+ }
16
+ )
17
+
18
+ Logging.appenders.stdout(
19
+ 'stdout',
20
+ :layout => Logging.layouts.pattern(
21
+ :pattern => '%l\t -> %m\n',
22
+ :color_scheme => 'bright'
23
+ )
24
+ )
25
+
26
+ $logger = Logging.logger['Colors']
27
+ $logger.add_appenders 'stdout'
28
+ $logger.level = :info
29
+ end
30
+ $logger
31
+ end
32
+ end
@@ -0,0 +1,72 @@
1
+ require 'puppetlabs-onceover/controlrepo'
2
+
3
+ class PuppetlabsOnceover
4
+ class Node
5
+ @@all = []
6
+
7
+ attr_accessor :name
8
+ attr_accessor :beaker_node
9
+ attr_accessor :fact_set
10
+ attr_accessor :trusted_set
11
+ attr_accessor :trusted_external_set
12
+
13
+ def initialize(name)
14
+ @name = name
15
+ @beaker_node = nil
16
+
17
+ # If we can't find the factset it will fail, so just catch that error and ignore it
18
+ begin
19
+ facts_file_index = PuppetlabsOnceover::Controlrepo.facts_files.index {|facts_file|
20
+ File.basename(facts_file, '.json') == name
21
+ }
22
+ @fact_set = PuppetlabsOnceover::Node.clean_facts(PuppetlabsOnceover::Controlrepo.facts[facts_file_index])
23
+
24
+ # First see if we can find a 'trusted' hash at the top level of our factset
25
+ @trusted_set = PuppetlabsOnceover::Controlrepo.trusted_facts[facts_file_index]
26
+ # If we don't find it, attempt to find a 'trusted.extensions' hash nested in our fact_set
27
+ @trusted_set = @fact_set.dig('trusted', 'extensions') if @trusted_set.nil?
28
+ # If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
29
+ # let(:trusted_facts) { trusted_facts }
30
+ @trusted_set = {} if @trusted_set.nil?
31
+
32
+ # First see if we can find a 'trusted_external' hash at the top level of our factset
33
+ @trusted_external_set = PuppetlabsOnceover::Controlrepo.trusted_external_facts[facts_file_index]
34
+ # If we don't find it, attempt to find a 'trusted.external' hash nested in our fact_set
35
+ @trusted_external_set = @fact_set.dig('trusted', 'external') if @trusted_external_set.nil?
36
+ # If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
37
+ # let(:trusted_external_data) { trusted_external_data }
38
+ @trusted_external_set = {} if @trusted_external_set.nil?
39
+ rescue TypeError
40
+ @fact_set = {}
41
+ @trusted_set = {}
42
+ @trusted_external_set = {}
43
+ end
44
+
45
+ @@all << self
46
+ end
47
+
48
+ def self.find(node_name)
49
+ @@all.each do |node|
50
+ if node_name.is_a?(PuppetlabsOnceover::Node)
51
+ if node = node_name
52
+ return node
53
+ end
54
+ elsif node.name == node_name
55
+ return node
56
+ end
57
+ end
58
+ logger.warn "Node #{node_name} not found"
59
+ nil
60
+ end
61
+
62
+ def self.all
63
+ @@all
64
+ end
65
+
66
+ # This method ensures that all facts are valid and clean anoything that we can't handle
67
+ def self.clean_facts(factset)
68
+ factset.delete('environment')
69
+ factset
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,95 @@
1
+ require 'puppetlabs-onceover/controlrepo'
2
+ require 'pathname'
3
+
4
+ @repo = nil
5
+ @config = nil
6
+
7
+ desc 'Writes a `fixtures.yml` file based on the Puppetfile'
8
+ task :generate_fixtures do
9
+ repo = PuppetlabsOnceover::Controlrepo.new
10
+ if File.exist?(File.expand_path('./.fixtures.yml', repo.root))
11
+ raise ".fixtures.yml already exits, we won't overwrite because we are scared"
12
+ end
13
+
14
+ File.write(File.expand_path('./.fixtures.yml', repo.root), repo.fixtures)
15
+ end
16
+
17
+ desc "Modifies your `hiera.yaml` to point at the hieradata relative to its position."
18
+ task :hiera_setup do
19
+ repo = PuppetlabsOnceover::Controlrepo.new
20
+ current_config = repo.hiera_config
21
+ current_config.each do |key, value|
22
+ if value.is_a?(Hash)
23
+ if value.has_key?(:datadir)
24
+ hiera_config_path = Pathname.new(File.expand_path('..', repo.hiera_config_file))
25
+ current_config[key][:datadir] = Pathname.new(repo.hiera_data).relative_path_from(hiera_config_path).to_s
26
+ end
27
+ end
28
+ end
29
+ puts "Changing hiera config from \n#{repo.hiera_config}\nto\n#{current_config}"
30
+ repo.hiera_config = current_config
31
+ end
32
+
33
+ task :controlrepo_details do
34
+ require 'puppetlabs-onceover/controlrepo'
35
+ puts PuppetlabsOnceover::Controlrepo.new.to_s
36
+ end
37
+
38
+ task :generate_onceover_yaml do
39
+ require 'puppetlabs-onceover/controlrepo'
40
+ repo = PuppetlabsOnceover::Controlrepo.new
41
+ template_dir = File.expand_path('../../templates', File.dirname(__FILE__))
42
+ onceover_yaml_template = File.read(File.expand_path('./controlrepo.yaml.erb', template_dir))
43
+ puts ERB.new(onceover_yaml_template, nil, '-').result(binding)
44
+ end
45
+
46
+ task :generate_nodesets do
47
+ warn "[DEPRECATION] #{__method__} is deprecated due to the removal of Beaker"
48
+
49
+ require 'puppetlabs-onceover/beaker'
50
+ require 'net/http'
51
+ require 'multi_json'
52
+
53
+ repo = PuppetlabsOnceover::Controlrepo.new
54
+
55
+ puts "HOSTS:"
56
+
57
+ repo.facts.each do |fact_set|
58
+ node_name = File.basename(repo.facts_files[repo.facts.index(fact_set)], '.json')
59
+ boxname = PuppetlabsOnceover::Beaker.facts_to_vagrant_box(fact_set)
60
+ platform = PuppetlabsOnceover::Beaker.facts_to_platform(fact_set)
61
+
62
+ uri = URI("https://atlas.hashicorp.com:443/api/v1/box/#{boxname}")
63
+ request = Net::HTTP.new(uri.host, uri.port)
64
+ request.use_ssl = true
65
+ response = request.get(uri)
66
+
67
+ url = 'URL goes here'
68
+
69
+ if response.code == "404"
70
+ comment_out = true
71
+ else
72
+ comment_out = false
73
+ box_info = MultiJson.load(response.body)
74
+ box_info['current_version']['providers'].each do |provider|
75
+ if provider['name'] == 'virtualbox'
76
+ url = provider['original_url']
77
+ end
78
+ end
79
+ end
80
+
81
+ # Use an ERB template
82
+ template_dir = File.expand_path('../../templates', File.dirname(__FILE__))
83
+ fixtures_template = File.read(File.expand_path('./nodeset.yaml.erb', template_dir))
84
+ puts ERB.new(fixtures_template, nil, '-').result(binding)
85
+ end
86
+ end
87
+
88
+ desc 'Create cache for vendored modules'
89
+ task :generate_vendor_cache do
90
+ require 'puppetlabs-onceover/controlrepo'
91
+ require 'puppetlabs-onceover/vendored_modules'
92
+
93
+ repo = PuppetlabsOnceover::Controlrepo.new(debug: true)
94
+ PuppetlabsOnceover::VendoredModules.new({ repo: repo, cachedir: File.join(repo.spec_dir, 'vendored_modules'), force_update: true })
95
+ end