lono 7.5.2 → 8.0.0.pre.rc3

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 (517) hide show
  1. checksums.yaml +4 -4
  2. data/.cody/README.md +5 -15
  3. data/.cody/acceptance/bin/build.sh +52 -0
  4. data/.cody/acceptance/buildspec.yml +10 -0
  5. data/.cody/acceptance/project.rb +6 -0
  6. data/.cody/{role.rb → acceptance/role.rb} +0 -0
  7. data/.cody/shared/script/install/lono.sh +40 -0
  8. data/.cody/shared/script/install.sh +5 -0
  9. data/CHANGELOG.md +46 -5
  10. data/CONTRIBUTING.md +2 -2
  11. data/Gemfile +3 -1
  12. data/LICENSE.txt +201 -1
  13. data/README.md +6 -11
  14. data/lib/lono/api/client.rb +3 -2
  15. data/lib/lono/app/callable_option/concern.rb +12 -0
  16. data/lib/lono/app/callable_option.rb +56 -0
  17. data/lib/lono/app/inits.rb +13 -0
  18. data/lib/lono/app.rb +73 -0
  19. data/lib/lono/autoloader.rb +3 -2
  20. data/lib/lono/aws_services/helper.rb +41 -6
  21. data/lib/lono/aws_services.rb +37 -6
  22. data/lib/lono/blueprint.rb +3 -11
  23. data/lib/lono/booter.rb +28 -0
  24. data/lib/lono/builder/allow/base.rb +54 -0
  25. data/lib/lono/builder/allow/env.rb +17 -0
  26. data/lib/lono/builder/allow/region.rb +20 -0
  27. data/lib/lono/builder/allow.rb +8 -0
  28. data/lib/lono/builder/configset/combiner.rb +145 -0
  29. data/lib/lono/builder/configset/definition/base.rb +47 -0
  30. data/lib/lono/builder/configset/definition/context.rb +29 -0
  31. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/auth.rb +1 -1
  32. data/lib/lono/{configset/strategy/helpers/dsl/core.rb → builder/configset/definition/dsl/syntax/content.rb} +11 -3
  33. data/lib/lono/{configset/strategy/helpers/dsl/syntax.rb → builder/configset/definition/dsl/syntax/core.rb} +15 -9
  34. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/package.rb +1 -1
  35. data/lib/lono/builder/configset/definition/dsl/syntax.rb +5 -0
  36. data/lib/lono/{configset/strategy → builder/configset/definition}/dsl.rb +10 -14
  37. data/lib/lono/{configset/strategy → builder/configset/definition}/erb.rb +13 -16
  38. data/lib/lono/builder/configset/definition.rb +18 -0
  39. data/lib/lono/builder/configset/evaluator.rb +10 -0
  40. data/lib/lono/builder/configset/registration.rb +35 -0
  41. data/lib/lono/builder/context.rb +40 -0
  42. data/lib/lono/builder/dsl/evaluator.rb +45 -0
  43. data/lib/lono/builder/dsl/finalizer/base.rb +8 -0
  44. data/lib/lono/builder/dsl/finalizer/configsets.rb +20 -0
  45. data/lib/lono/builder/dsl/finalizer/files/base.rb +4 -0
  46. data/lib/lono/builder/dsl/finalizer/files/build.rb +58 -0
  47. data/lib/lono/builder/dsl/finalizer/files/replace.rb +31 -0
  48. data/lib/lono/builder/dsl/finalizer/files.rb +9 -0
  49. data/lib/lono/{template/strategy → builder}/dsl/finalizer/parameter_groups.rb +6 -5
  50. data/lib/lono/builder/dsl/finalizer.rb +15 -0
  51. data/lib/lono/{template/strategy/dsl/builder/helpers/ec2_helper.rb → builder/dsl/helpers/ec2.rb} +3 -3
  52. data/lib/lono/builder/dsl/helpers/files.rb +7 -0
  53. data/lib/lono/builder/dsl/helpers/partials.rb +140 -0
  54. data/lib/lono/{template/strategy/dsl/builder/helpers/s3_helper.rb → builder/dsl/helpers/s3.rb} +3 -3
  55. data/lib/lono/{template/context/ssm_fetcher.rb → builder/dsl/helpers/ssm/fetcher.rb} +5 -3
  56. data/lib/lono/{template/context/helpers.rb → builder/dsl/helpers/ssm.rb} +3 -3
  57. data/lib/lono/{template/strategy/dsl/builder/helpers/stack_helper.rb → builder/dsl/helpers/stack.rb} +14 -9
  58. data/lib/lono/{template/strategy/dsl/builder/helpers/tags_helper.rb → builder/dsl/helpers/tags.rb} +2 -2
  59. data/lib/lono/builder/dsl/helpers/template_file.rb +66 -0
  60. data/lib/lono/builder/dsl/helpers.rb +5 -0
  61. data/lib/lono/builder/dsl/syntax/core/base.rb +22 -0
  62. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/condition.rb +1 -1
  63. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/mapping.rb +1 -1
  64. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/output.rb +1 -1
  65. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/parameter.rb +1 -1
  66. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/resource/property_mover.rb +12 -2
  67. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/resource.rb +1 -1
  68. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/section.rb +1 -1
  69. data/lib/lono/builder/dsl/syntax/core/squeezer.rb +38 -0
  70. data/lib/lono/{template/strategy/dsl/builder/section/methods.rb → builder/dsl/syntax/core.rb} +8 -8
  71. data/lib/lono/{template/strategy/dsl/builder → builder/dsl/syntax}/fn.rb +2 -2
  72. data/lib/lono/{template/strategy/dsl/builder → builder/dsl}/syntax/parameter_group.rb +1 -1
  73. data/lib/lono/builder/dsl/syntax.rb +9 -0
  74. data/lib/lono/builder/dsl.rb +14 -0
  75. data/lib/lono/{param/generator.rb → builder/param.rb} +24 -22
  76. data/lib/lono/builder/template/aws_service.rb +15 -0
  77. data/lib/lono/builder/template/bashify.rb +43 -0
  78. data/lib/lono/{output/template.rb → builder/template/output.rb} +14 -7
  79. data/lib/lono/{template → builder/template}/post_processor.rb +4 -4
  80. data/lib/lono/builder/template/upload.rb +8 -0
  81. data/lib/lono/builder/template.rb +55 -0
  82. data/lib/lono/{template/strategy/dsl/builder → builder/util}/stringify.rb +1 -1
  83. data/lib/lono/bundler/cli/base.rb +10 -0
  84. data/lib/lono/bundler/cli/bundle.rb +44 -0
  85. data/lib/lono/bundler/cli/clean.rb +27 -0
  86. data/lib/lono/bundler/cli/help/bundle.md +3 -0
  87. data/lib/lono/bundler/cli/help.rb +11 -0
  88. data/lib/lono/bundler/cli.rb +7 -0
  89. data/lib/lono/bundler/component/concerns/local_concern.rb +10 -0
  90. data/lib/lono/bundler/component/concerns/notation_concern.rb +59 -0
  91. data/lib/lono/bundler/component/concerns/path_concern.rb +68 -0
  92. data/lib/lono/bundler/component/concerns/stack_concern.rb +60 -0
  93. data/lib/lono/bundler/component/fetcher/base.rb +27 -0
  94. data/lib/lono/bundler/component/fetcher/gcs.rb +69 -0
  95. data/lib/lono/bundler/component/fetcher/git.rb +69 -0
  96. data/lib/lono/bundler/component/fetcher/local.rb +15 -0
  97. data/lib/lono/bundler/component/fetcher/s3.rb +66 -0
  98. data/lib/lono/bundler/component/fetcher.rb +18 -0
  99. data/lib/lono/bundler/component/http/concern.rb +45 -0
  100. data/lib/lono/bundler/component/http/source.rb +19 -0
  101. data/lib/lono/bundler/component/org_repo.rb +65 -0
  102. data/lib/lono/bundler/component/props/extension.rb +18 -0
  103. data/lib/lono/bundler/component/props/typer.rb +41 -0
  104. data/lib/lono/bundler/component/props.rb +122 -0
  105. data/lib/lono/bundler/component/registry.rb +136 -0
  106. data/lib/lono/bundler/component.rb +52 -0
  107. data/lib/lono/bundler/config.rb +18 -0
  108. data/lib/lono/bundler/dsl/syntax.rb +46 -0
  109. data/lib/lono/bundler/dsl.rb +21 -0
  110. data/lib/lono/bundler/exporter/base.rb +6 -0
  111. data/lib/lono/bundler/exporter/copy.rb +22 -0
  112. data/lib/lono/bundler/exporter.rb +50 -0
  113. data/lib/lono/bundler/extract/tar.rb +33 -0
  114. data/lib/lono/bundler/extract/zip.rb +16 -0
  115. data/lib/lono/bundler/info.rb +39 -0
  116. data/lib/lono/bundler/list.rb +26 -0
  117. data/lib/lono/bundler/lockfile/version_comparer.rb +56 -0
  118. data/lib/lono/bundler/lockfile/yamler.rb +36 -0
  119. data/lib/lono/bundler/lockfile.rb +66 -0
  120. data/lib/lono/bundler/lonofile.rb +32 -0
  121. data/lib/lono/bundler/runner.rb +27 -0
  122. data/lib/lono/bundler/syncer.rb +70 -0
  123. data/lib/lono/bundler/util/git.rb +37 -0
  124. data/lib/lono/bundler/util/logging.rb +7 -0
  125. data/lib/lono/bundler/util/sure.rb +5 -0
  126. data/lib/lono/{bundle.rb → bundler.rb} +38 -4
  127. data/lib/lono/cfn/base.rb +9 -195
  128. data/lib/lono/cfn/cancel.rb +12 -29
  129. data/lib/lono/cfn/concerns/build.rb +10 -0
  130. data/lib/lono/cfn/concerns/template_output.rb +10 -0
  131. data/lib/lono/cfn/concerns.rb +43 -0
  132. data/lib/lono/cfn/delete.rb +8 -32
  133. data/lib/lono/cfn/deploy/base.rb +4 -0
  134. data/lib/lono/cfn/deploy/iam.rb +48 -0
  135. data/lib/lono/cfn/deploy/notification.rb +8 -0
  136. data/lib/lono/cfn/deploy/operable.rb +18 -0
  137. data/lib/lono/cfn/deploy/opts.rb +49 -0
  138. data/lib/lono/cfn/deploy/rollback.rb +46 -0
  139. data/lib/lono/cfn/deploy/tags.rb +18 -0
  140. data/lib/lono/cfn/deploy.rb +100 -5
  141. data/lib/lono/cfn/download.rb +4 -7
  142. data/lib/lono/cfn/output.rb +49 -0
  143. data/lib/lono/cfn/plan/base.rb +19 -0
  144. data/lib/lono/cfn/plan/changeset/base.rb +19 -0
  145. data/lib/lono/cfn/plan/changeset/notifications.rb +24 -0
  146. data/lib/lono/cfn/plan/changeset/outputs.rb +25 -0
  147. data/lib/lono/cfn/plan/changeset/resources.rb +48 -0
  148. data/lib/lono/cfn/plan/changeset/tags.rb +16 -0
  149. data/lib/lono/cfn/plan/changeset.rb +136 -0
  150. data/lib/lono/cfn/plan/concerns.rb +10 -0
  151. data/lib/lono/cfn/plan/delete.rb +16 -0
  152. data/lib/lono/cfn/plan/diff/base.rb +10 -0
  153. data/lib/lono/cfn/plan/diff/data.rb +62 -0
  154. data/lib/lono/cfn/plan/diff/file.rb +57 -0
  155. data/lib/lono/cfn/plan/new.rb +26 -0
  156. data/lib/lono/cfn/{preview → plan}/param.rb +26 -34
  157. data/lib/lono/cfn/plan/summary.rb +16 -0
  158. data/lib/lono/cfn/plan/template.rb +28 -0
  159. data/lib/lono/cfn/plan.rb +34 -0
  160. data/lib/lono/cfn/show.rb +30 -0
  161. data/lib/lono/cfn/status.rb +1 -1
  162. data/lib/lono/cli/abstract.rb +11 -0
  163. data/lib/lono/cli/base.rb +11 -0
  164. data/lib/lono/cli/build.rb +47 -0
  165. data/lib/lono/cli/bundle.rb +21 -0
  166. data/lib/lono/cli/cfn/opts.rb +59 -0
  167. data/lib/lono/cli/cfn.rb +19 -0
  168. data/lib/lono/cli/clean.rb +23 -0
  169. data/lib/lono/cli/code.rb +22 -0
  170. data/lib/lono/{completion.rb → cli/completion.rb} +2 -2
  171. data/lib/lono/{help → cli/help}/blueprint/new.md +4 -4
  172. data/lib/lono/{help/generate.md → cli/help/build.md} +6 -6
  173. data/lib/lono/{help → cli/help}/cfn/cancel.md +0 -0
  174. data/lib/lono/cli/help/cfn/download.md +3 -0
  175. data/lib/lono/{help → cli/help}/cfn/preview.md +9 -8
  176. data/lib/lono/{help → cli/help}/cfn/status.md +0 -1
  177. data/lib/lono/cli/help/cfn.md +4 -0
  178. data/lib/lono/{help → cli/help}/code/convert.md +0 -0
  179. data/lib/lono/{help → cli/help}/code/import.md +2 -2
  180. data/lib/lono/{help → cli/help}/completion.md +3 -3
  181. data/lib/lono/{help → cli/help}/completion_script.md +0 -0
  182. data/lib/lono/{help → cli/help}/configsets.md +0 -0
  183. data/lib/lono/cli/help/down.md +13 -0
  184. data/lib/lono/cli/help/new/helper/blueprint.md +17 -0
  185. data/lib/lono/cli/help/new/helper/project.md +16 -0
  186. data/lib/lono/cli/help/new/project.md +34 -0
  187. data/lib/lono/{help → cli/help}/param/generate.md +0 -0
  188. data/lib/lono/cli/help/param.md +6 -0
  189. data/lib/lono/{help → cli/help}/pro/blueprints.md +0 -0
  190. data/lib/lono/{help → cli/help}/pro/configsets.md +0 -0
  191. data/lib/lono/{help → cli/help}/script/build.md +0 -0
  192. data/lib/lono/{help → cli/help}/script/upload.md +0 -0
  193. data/lib/lono/cli/help/seed.md +24 -0
  194. data/lib/lono/cli/help/summary.md +33 -0
  195. data/lib/lono/{help → cli/help}/template/bashify.md +0 -0
  196. data/lib/lono/cli/help/template/generate.md +7 -0
  197. data/lib/lono/{help → cli/help}/template.md +0 -0
  198. data/lib/lono/cli/help/up.md +30 -0
  199. data/lib/lono/{help → cli/help}/user_data.md +3 -3
  200. data/lib/lono/cli/help.rb +56 -0
  201. data/lib/lono/cli/list.rb +25 -0
  202. data/lib/lono/cli/new/blueprint.rb +29 -0
  203. data/lib/lono/cli/new/concerns.rb +16 -0
  204. data/lib/lono/cli/new/configset.rb +37 -0
  205. data/lib/lono/{extension/new.rb → cli/new/extension.rb} +2 -10
  206. data/lib/lono/cli/new/helper/blueprint.rb +26 -0
  207. data/lib/lono/cli/new/helper/project.rb +24 -0
  208. data/lib/lono/cli/new/helper.rb +13 -0
  209. data/lib/lono/cli/new/project.rb +77 -0
  210. data/lib/lono/cli/new/sequence.rb +56 -0
  211. data/lib/lono/cli/new/shim.rb +59 -0
  212. data/lib/lono/cli/new/test/blueprint.rb +23 -0
  213. data/lib/lono/cli/new/test/sequence.rb +10 -0
  214. data/lib/lono/cli/new/test.rb +8 -0
  215. data/lib/lono/cli/new.rb +27 -0
  216. data/lib/lono/{opts.rb → cli/opts.rb} +9 -12
  217. data/lib/lono/{s3.rb → cli/s3.rb} +9 -7
  218. data/lib/lono/cli/script/base.rb +5 -0
  219. data/lib/lono/cli/script/build.rb +72 -0
  220. data/lib/lono/cli/script/upload.rb +49 -0
  221. data/lib/lono/{script.rb → cli/script.rb} +2 -2
  222. data/lib/lono/cli/seed.rb +9 -0
  223. data/lib/lono/cli/status.rb +18 -0
  224. data/lib/lono/cli/test.rb +35 -0
  225. data/lib/lono/cli.rb +78 -109
  226. data/lib/lono/command.rb +27 -1
  227. data/lib/lono/component.rb +29 -0
  228. data/lib/lono/concerns/aws_info.rb +14 -0
  229. data/lib/lono/concerns/names.rb +9 -0
  230. data/lib/lono/configset.rb +11 -10
  231. data/lib/lono/core.rb +25 -54
  232. data/lib/lono/ext/core/module.rb +31 -0
  233. data/lib/lono/ext/core/object.rb +32 -0
  234. data/lib/lono/ext/core/string.rb +9 -0
  235. data/lib/lono/ext.rb +4 -0
  236. data/lib/lono/files/base.rb +12 -0
  237. data/lib/lono/files/builder.rb +37 -0
  238. data/lib/lono/files/compressor.rb +53 -0
  239. data/lib/lono/files/concerns/post_processing.rb +35 -0
  240. data/lib/lono/files/concerns/registration.rb +13 -0
  241. data/lib/lono/files/registry.rb +6 -0
  242. data/lib/lono/files.rb +37 -0
  243. data/lib/lono/importer/base.rb +6 -6
  244. data/lib/lono/importer/download.rb +7 -7
  245. data/lib/lono/importer/dsl.rb +3 -3
  246. data/lib/lono/importer/service/coder.rb +67 -63
  247. data/lib/lono/importer.rb +1 -10
  248. data/lib/lono/inspector/base.rb +7 -7
  249. data/lib/lono/inspector/summary.rb +18 -19
  250. data/lib/lono/layering/layer.rb +112 -0
  251. data/lib/lono/layering.rb +13 -55
  252. data/lib/lono/logger/formatter.rb +13 -0
  253. data/lib/lono/logger.rb +32 -0
  254. data/lib/lono/names.rb +50 -0
  255. data/lib/lono/plugin/meta.rb +30 -0
  256. data/lib/lono/plugin/tester.rb +13 -0
  257. data/lib/lono/plugin.rb +10 -0
  258. data/lib/lono/s3/aws_setup.rb +4 -3
  259. data/lib/lono/s3/bucket.rb +42 -42
  260. data/lib/lono/s3/rollback.rb +8 -0
  261. data/lib/lono/s3/uploader.rb +33 -34
  262. data/lib/lono/script/base.rb +3 -3
  263. data/lib/lono/script/build.rb +11 -12
  264. data/lib/lono/script/upload.rb +7 -7
  265. data/lib/lono/seeder.rb +110 -0
  266. data/lib/lono/user_data.rb +10 -13
  267. data/lib/lono/utils/logging.rb +7 -0
  268. data/lib/lono/utils/{pretty_time.rb → pretty.rb} +6 -2
  269. data/lib/lono/utils/quit.rb +7 -0
  270. data/lib/lono/utils/rsync.rb +4 -2
  271. data/lib/lono/utils/sure.rb +4 -4
  272. data/lib/lono/version.rb +1 -1
  273. data/lib/lono/yamler/validator.rb +7 -22
  274. data/lib/lono.rb +15 -12
  275. data/lib/templates/blueprint/template.rb +2 -0
  276. data/lib/templates/configset/configset.rb +2 -0
  277. data/lib/templates/examples/blueprint/template.rb +9 -0
  278. data/lib/templates/{configset/lib → examples/configset}/configset.rb +0 -0
  279. data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
  280. data/lib/templates/{skeleton → project}/.gitignore +1 -2
  281. data/lib/templates/project/Gemfile.tt +11 -0
  282. data/lib/templates/project/README.md +9 -0
  283. data/lib/templates/project/config/app.rb +3 -0
  284. data/lib/templates/shim/lono +7 -0
  285. data/lono.gemspec +51 -44
  286. metadata +282 -296
  287. data/.circleci/README.md +0 -3
  288. data/.circleci/config.yml +0 -58
  289. data/.cody/acceptance.sh +0 -49
  290. data/.cody/buildspec.yml +0 -9
  291. data/.cody/demo.rb +0 -38
  292. data/.cody/project.rb +0 -6
  293. data/.gitmodules +0 -3
  294. data/lib/lono/abstract_base.rb +0 -25
  295. data/lib/lono/app_file/base.rb +0 -28
  296. data/lib/lono/app_file/build/lambda_layer/ruby_packager.rb +0 -153
  297. data/lib/lono/app_file/build/lambda_layer.rb +0 -20
  298. data/lib/lono/app_file/build.rb +0 -84
  299. data/lib/lono/app_file/registry/item.rb +0 -24
  300. data/lib/lono/app_file/registry.rb +0 -16
  301. data/lib/lono/app_file/upload.rb +0 -12
  302. data/lib/lono/aws_services/stack.rb +0 -41
  303. data/lib/lono/aws_services/stack_set.rb +0 -41
  304. data/lib/lono/blueprint/configset/loader.rb +0 -7
  305. data/lib/lono/blueprint/helper.rb +0 -24
  306. data/lib/lono/blueprint/meta.rb +0 -30
  307. data/lib/lono/blueprint/new.rb +0 -127
  308. data/lib/lono/blueprint/root.rb +0 -25
  309. data/lib/lono/cfn/create.rb +0 -41
  310. data/lib/lono/cfn/opts.rb +0 -88
  311. data/lib/lono/cfn/preview/changeset.rb +0 -168
  312. data/lib/lono/cfn/preview/codediff.rb +0 -41
  313. data/lib/lono/cfn/preview/diff_viewer.rb +0 -23
  314. data/lib/lono/cfn/rollback.rb +0 -26
  315. data/lib/lono/cfn/update.rb +0 -71
  316. data/lib/lono/cfn.rb +0 -75
  317. data/lib/lono/clean.rb +0 -14
  318. data/lib/lono/code.rb +0 -22
  319. data/lib/lono/configset/combiner.rb +0 -162
  320. data/lib/lono/configset/evaluate_file.rb +0 -8
  321. data/lib/lono/configset/generator.rb +0 -57
  322. data/lib/lono/configset/list.rb +0 -67
  323. data/lib/lono/configset/meta/dsl.rb +0 -12
  324. data/lib/lono/configset/meta.rb +0 -19
  325. data/lib/lono/configset/new.rb +0 -77
  326. data/lib/lono/configset/preparer.rb +0 -44
  327. data/lib/lono/configset/register/base.rb +0 -122
  328. data/lib/lono/configset/register/blueprint.rb +0 -16
  329. data/lib/lono/configset/register/dsl.rb +0 -14
  330. data/lib/lono/configset/register/project.rb +0 -13
  331. data/lib/lono/configset/resolver.rb +0 -47
  332. data/lib/lono/configset/s3_file/build.rb +0 -33
  333. data/lib/lono/configset/s3_file/item.rb +0 -38
  334. data/lib/lono/configset/s3_file/registry.rb +0 -12
  335. data/lib/lono/configset/s3_file/upload.rb +0 -12
  336. data/lib/lono/configset/strategy/base.rb +0 -83
  337. data/lib/lono/configset/strategy/helpers/dsl.rb +0 -8
  338. data/lib/lono/configset/strategy/helpers/erb.rb +0 -9
  339. data/lib/lono/conventions.rb +0 -23
  340. data/lib/lono/core/config.rb +0 -22
  341. data/lib/lono/default/settings.yml +0 -21
  342. data/lib/lono/extension/helper.rb +0 -13
  343. data/lib/lono/extension/list.rb +0 -40
  344. data/lib/lono/extension.rb +0 -9
  345. data/lib/lono/extensions/dsl.rb +0 -11
  346. data/lib/lono/extensions/loader.rb +0 -30
  347. data/lib/lono/extensions/preparer.rb +0 -26
  348. data/lib/lono/extensions/register.rb +0 -15
  349. data/lib/lono/extensions.rb +0 -18
  350. data/lib/lono/file_uploader.rb +0 -21
  351. data/lib/lono/finder/base.rb +0 -152
  352. data/lib/lono/finder/blueprint/configset.rb +0 -17
  353. data/lib/lono/finder/blueprint.rb +0 -11
  354. data/lib/lono/finder/configset.rb +0 -11
  355. data/lib/lono/finder/extension.rb +0 -11
  356. data/lib/lono/generate.rb +0 -111
  357. data/lib/lono/help/cfn/create.md +0 -26
  358. data/lib/lono/help/cfn/delete.md +0 -13
  359. data/lib/lono/help/cfn/deploy.md +0 -21
  360. data/lib/lono/help/cfn/download.md +0 -3
  361. data/lib/lono/help/cfn/update.md +0 -49
  362. data/lib/lono/help/cfn.md +0 -7
  363. data/lib/lono/help/new.md +0 -57
  364. data/lib/lono/help/param.md +0 -6
  365. data/lib/lono/help/seed.md +0 -23
  366. data/lib/lono/help/set_instances/delete.md +0 -21
  367. data/lib/lono/help/set_instances/deploy.md +0 -31
  368. data/lib/lono/help/set_instances/list.md +0 -14
  369. data/lib/lono/help/set_instances/status.md +0 -15
  370. data/lib/lono/help/set_instances/sync.md +0 -92
  371. data/lib/lono/help/sets/delete.md +0 -8
  372. data/lib/lono/help/sets/deploy.md +0 -76
  373. data/lib/lono/help/sets/status.md +0 -23
  374. data/lib/lono/help/summary.md +0 -33
  375. data/lib/lono/help/template/generate.md +0 -7
  376. data/lib/lono/help/upgrade.md +0 -1
  377. data/lib/lono/help/xgraph.md +0 -16
  378. data/lib/lono/help.rb +0 -15
  379. data/lib/lono/importer/erb.rb +0 -31
  380. data/lib/lono/inspector/graph.rb +0 -125
  381. data/lib/lono/jade/circular.rb +0 -26
  382. data/lib/lono/jade/materializer/final.rb +0 -10
  383. data/lib/lono/jade/materializer/gems_builder.rb +0 -81
  384. data/lib/lono/jade/materializer/source.rb +0 -54
  385. data/lib/lono/jade/materializer.rb +0 -15
  386. data/lib/lono/jade/registry.rb +0 -64
  387. data/lib/lono/jade.rb +0 -110
  388. data/lib/lono/jadespec.rb +0 -68
  389. data/lib/lono/new/helper.rb +0 -15
  390. data/lib/lono/new.rb +0 -95
  391. data/lib/lono/param.rb +0 -14
  392. data/lib/lono/pro/base.rb +0 -16
  393. data/lib/lono/pro/repo.rb +0 -28
  394. data/lib/lono/pro.rb +0 -15
  395. data/lib/lono/project_checker.rb +0 -35
  396. data/lib/lono/registration/base.rb +0 -37
  397. data/lib/lono/registration/check.rb +0 -15
  398. data/lib/lono/registration/temp.rb +0 -53
  399. data/lib/lono/registration/user.rb +0 -60
  400. data/lib/lono/seed/base.rb +0 -116
  401. data/lib/lono/seed/service_role.rb +0 -11
  402. data/lib/lono/seed.rb +0 -39
  403. data/lib/lono/sequence.rb +0 -35
  404. data/lib/lono/set_instances/base.rb +0 -30
  405. data/lib/lono/set_instances/changeable.rb +0 -53
  406. data/lib/lono/set_instances/create.rb +0 -7
  407. data/lib/lono/set_instances/delete.rb +0 -47
  408. data/lib/lono/set_instances/deploy.rb +0 -52
  409. data/lib/lono/set_instances/list.rb +0 -13
  410. data/lib/lono/set_instances/opts.rb +0 -37
  411. data/lib/lono/set_instances/status.rb +0 -12
  412. data/lib/lono/set_instances/sync.rb +0 -181
  413. data/lib/lono/set_instances/update.rb +0 -15
  414. data/lib/lono/set_instances.rb +0 -54
  415. data/lib/lono/sets/base.rb +0 -50
  416. data/lib/lono/sets/create.rb +0 -27
  417. data/lib/lono/sets/delete.rb +0 -43
  418. data/lib/lono/sets/deploy.rb +0 -11
  419. data/lib/lono/sets/list.rb +0 -35
  420. data/lib/lono/sets/opts.rb +0 -18
  421. data/lib/lono/sets/preview/codediff.rb +0 -35
  422. data/lib/lono/sets/preview/param.rb +0 -32
  423. data/lib/lono/sets/status/instance/base.rb +0 -120
  424. data/lib/lono/sets/status/instance/completed.rb +0 -35
  425. data/lib/lono/sets/status/instance/deleted.rb +0 -32
  426. data/lib/lono/sets/status/instance/show.rb +0 -7
  427. data/lib/lono/sets/status/instance.rb +0 -20
  428. data/lib/lono/sets/status/instances.rb +0 -136
  429. data/lib/lono/sets/status.rb +0 -128
  430. data/lib/lono/sets/summarize.rb +0 -22
  431. data/lib/lono/sets/time_spent.rb +0 -11
  432. data/lib/lono/sets/update.rb +0 -74
  433. data/lib/lono/sets/waiter.rb +0 -23
  434. data/lib/lono/sets.rb +0 -34
  435. data/lib/lono/setting.rb +0 -75
  436. data/lib/lono/template/aws_service.rb +0 -20
  437. data/lib/lono/template/bashify.rb +0 -39
  438. data/lib/lono/template/configset_injector.rb +0 -52
  439. data/lib/lono/template/context/loader/load_files.rb +0 -24
  440. data/lib/lono/template/context/loader.rb +0 -52
  441. data/lib/lono/template/context.rb +0 -29
  442. data/lib/lono/template/evaluate.rb +0 -40
  443. data/lib/lono/template/generator.rb +0 -23
  444. data/lib/lono/template/helper.rb +0 -152
  445. data/lib/lono/template/strategy/base.rb +0 -4
  446. data/lib/lono/template/strategy/common/helpers.rb +0 -44
  447. data/lib/lono/template/strategy/dsl/builder/helpers/core_helper.rb +0 -14
  448. data/lib/lono/template/strategy/dsl/builder/helpers/file_helper.rb +0 -48
  449. data/lib/lono/template/strategy/dsl/builder/helpers.rb +0 -16
  450. data/lib/lono/template/strategy/dsl/builder/section/base.rb +0 -30
  451. data/lib/lono/template/strategy/dsl/builder/squeezer.rb +0 -24
  452. data/lib/lono/template/strategy/dsl/builder/syntax/extend_with.rb +0 -9
  453. data/lib/lono/template/strategy/dsl/builder/syntax.rb +0 -11
  454. data/lib/lono/template/strategy/dsl/builder.rb +0 -59
  455. data/lib/lono/template/strategy/dsl/finalizer.rb +0 -12
  456. data/lib/lono/template/strategy/dsl.rb +0 -14
  457. data/lib/lono/template/strategy/erb.rb +0 -82
  458. data/lib/lono/template/strategy/source.rb +0 -8
  459. data/lib/lono/template/template.rb +0 -54
  460. data/lib/lono/template/upload.rb +0 -23
  461. data/lib/lono/template/util.rb +0 -8
  462. data/lib/lono/template.rb +0 -24
  463. data/lib/lono/upgrade.rb +0 -20
  464. data/lib/lono/utils/generators/tree.rb +0 -18
  465. data/lib/lono/utils/item/file_methods.rb +0 -29
  466. data/lib/lono/utils/item/zip.rb +0 -42
  467. data/lib/templates/blueprint/%blueprint_name%.gemspec.tt +0 -45
  468. data/lib/templates/blueprint/.gitignore +0 -11
  469. data/lib/templates/blueprint/CHANGELOG.md +0 -7
  470. data/lib/templates/blueprint/Gemfile +0 -4
  471. data/lib/templates/blueprint/README.md.tt +0 -33
  472. data/lib/templates/blueprint/Rakefile.tt +0 -9
  473. data/lib/templates/blueprint/seed/configs.rb +0 -28
  474. data/lib/templates/blueprint_types/dsl/app/templates/%blueprint_name%.rb +0 -36
  475. data/lib/templates/blueprint_types/dsl/app/user_data/bootstrap.sh +0 -2
  476. data/lib/templates/blueprint_types/erb/app/definitions/base.rb.tt +0 -1
  477. data/lib/templates/blueprint_types/erb/app/templates/%blueprint_name%.yml +0 -67
  478. data/lib/templates/configset/%configset_name%.gemspec.tt +0 -42
  479. data/lib/templates/configset/.gitignore +0 -10
  480. data/lib/templates/configset/CHANGELOG.md +0 -7
  481. data/lib/templates/configset/Gemfile +0 -4
  482. data/lib/templates/configset/README.md.tt +0 -3
  483. data/lib/templates/configset/Rakefile.tt +0 -9
  484. data/lib/templates/extension/%extension_name%.gemspec.tt +0 -46
  485. data/lib/templates/extension/.gitignore +0 -11
  486. data/lib/templates/extension/.rspec +0 -3
  487. data/lib/templates/extension/CHANGELOG.md +0 -7
  488. data/lib/templates/extension/Gemfile.tt +0 -4
  489. data/lib/templates/extension/Rakefile.tt +0 -9
  490. data/lib/templates/extension/spec/spec_helper.rb.tt +0 -29
  491. data/lib/templates/skeleton/Gemfile +0 -3
  492. data/lib/templates/skeleton/README.md +0 -58
  493. data/lib/templates/skeleton/configs/settings.yml +0 -13
  494. data/vendor/cfn-status/CHANGELOG.md +0 -14
  495. data/vendor/cfn-status/Gemfile +0 -4
  496. data/vendor/cfn-status/Gemfile.lock +0 -49
  497. data/vendor/cfn-status/LICENSE.txt +0 -21
  498. data/vendor/cfn-status/README.md +0 -58
  499. data/vendor/cfn-status/Rakefile +0 -6
  500. data/vendor/cfn-status/bin/console +0 -14
  501. data/vendor/cfn-status/bin/setup +0 -8
  502. data/vendor/cfn-status/cfn-status.gemspec +0 -30
  503. data/vendor/cfn-status/lib/cfn-status.rb +0 -1
  504. data/vendor/cfn-status/lib/cfn_status/aws_service.rb +0 -51
  505. data/vendor/cfn-status/lib/cfn_status/version.rb +0 -3
  506. data/vendor/cfn-status/lib/cfn_status.rb +0 -245
  507. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json +0 -1103
  508. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json +0 -1104
  509. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json +0 -1103
  510. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json +0 -1103
  511. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json +0 -1104
  512. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json +0 -1103
  513. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
  514. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
  515. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
  516. data/vendor/cfn-status/spec/lib/cfn_status_spec.rb +0 -153
  517. data/vendor/cfn-status/spec/spec_helper.rb +0 -14
@@ -1,116 +0,0 @@
1
- require "fileutils"
2
- require "memoist"
3
- require "thor"
4
- require "yaml"
5
-
6
- # Subclasses should implement:
7
- #
8
- # variables - Returns String with content of varibles files.
9
- # setup - Hook to do extra things like create IAM service roles.
10
- # finish - Finish hook after config files have been created.
11
- #
12
- # Note there is no params method to hook. The Base class handles params well.
13
- #
14
- class Lono::Seed
15
- class Base < Lono::AbstractBase
16
- include Lono::AwsServices
17
- include ServiceRole
18
-
19
- # What's needed for a Thor::Group or "Sequence"
20
- # Gives us Thor::Actions commands like create_file
21
- include Thor::Actions
22
- include Thor::Base
23
- # Override Thor::Base initialize
24
- def initialize(options={})
25
- reinitialize(options)
26
- end
27
-
28
- extend Memoist
29
-
30
- def run
31
- generate_template
32
- setup
33
- self.destination_root = Dir.pwd # Thor::Actions require destination_root to be set
34
- create_params
35
- create_variables
36
- finish
37
- end
38
-
39
- def generate_template
40
- Lono::Template::Generator.new(@options).run
41
- end
42
-
43
- def create_params
44
- return unless params
45
- create_param_file
46
- end
47
-
48
- def create_param_file
49
- @output_template = Lono::Output::Template.new(@blueprint, @template)
50
- if @output_template.parameters.empty?
51
- puts "Template has no parameters."
52
- return
53
- end
54
-
55
- # Generate by parameter group first
56
- lines, shown = [], []
57
- @output_template.parameter_groups.each do |label, parameters|
58
- lines << "# Parameter Group: #{label}"
59
- parameters.each do |name|
60
- parameter_line = parameter_line(name)
61
- lines << parameter_line unless lines.include?(parameter_line)
62
- shown << name
63
- end
64
- lines << ""
65
- end if @output_template.parameter_groups
66
-
67
- # Then generate the rest
68
- @output_template.parameters.each do |name, data|
69
- lines << parameter_line(name) unless shown.include?(name)
70
- end
71
-
72
- content = lines.join("\n")
73
- dest_path = "configs/#{@blueprint}/params/#{Lono.env}.txt" # only support environment level parameters for now
74
- create_file(dest_path, content) # Thor::Action
75
- end
76
-
77
- def parameter_line(name)
78
- data = @output_template.parameters[name]
79
- example = description_example(data["Description"])
80
- if data["Default"].nil?
81
- line = "#{name}=#{example} # (required)"
82
- else
83
- default = data["Default"]
84
- line = "# #{name}=#{default}"
85
- line = "#{line} # #{example}" if example
86
- end
87
- line
88
- end
89
-
90
- def description_example(description)
91
- return unless description
92
- md = description.match(/(Example|IE): (.*)/)
93
- return unless md
94
- md[2]
95
- end
96
-
97
- def params
98
- true
99
- end
100
-
101
- def create_variables
102
- return unless variables
103
- dest_path = "configs/#{@blueprint}/variables/#{Lono.env}.rb"
104
- create_file(dest_path, variables) # Thor::Action
105
- end
106
-
107
- def setup; end
108
- def finish; end
109
-
110
- # Meant to be overriden by subclass
111
- # Return String with contents of variables file.
112
- def variables
113
- false
114
- end
115
- end
116
- end
@@ -1,11 +0,0 @@
1
- class Lono::Seed
2
- module ServiceRole
3
- def create_service_linked_role(aws_service_name)
4
- iam.create_service_linked_role(
5
- aws_service_name: aws_service_name
6
- )
7
- rescue Aws::IAM::Errors::InvalidInput # already exist
8
- raise if ENV['LONO_DEBUG_SEED']
9
- end
10
- end
11
- end
data/lib/lono/seed.rb DELETED
@@ -1,39 +0,0 @@
1
- module Lono
2
- class Seed < AbstractBase
3
- def create
4
- puts "Creating starter config files for #{@blueprint}"
5
- configs_class = load_configs_class # ::Configs or Lono::Seed::Base
6
- configs = configs_class.new(@options)
7
- # The Configs class implements: variables
8
- configs.run # setup the instance variables
9
- end
10
-
11
- private
12
- def load_configs_class
13
- blueprint_root = find_blueprint_root(@blueprint)
14
- configs_path = "#{blueprint_root}/seed/configs.rb"
15
-
16
- begin
17
- loaded = load configs_path
18
- rescue LoadError
19
- loaded = false
20
- end
21
-
22
- if loaded
23
- if defined?(Lono::Seed::Configs)
24
- configs_class = Lono::Seed::Configs # blueprint specific Configs
25
- else
26
- puts <<~EOL
27
- Lono::Seed::Configs class not found.
28
- Are you sure #{configs_path} contains a Lono::Seed::Configs class?
29
- EOL
30
- exit 1
31
- end
32
- else
33
- configs_class = Lono::Seed::Base # Generic handling
34
- end
35
-
36
- configs_class
37
- end
38
- end
39
- end
data/lib/lono/sequence.rb DELETED
@@ -1,35 +0,0 @@
1
- require 'fileutils'
2
- require 'active_support/core_ext/string'
3
- require 'thor'
4
- require 'bundler'
5
-
6
- class Lono::Sequence < Thor::Group
7
- include Thor::Actions
8
-
9
- def self.source_root
10
- File.expand_path("../templates/skeleton", File.dirname(__FILE__))
11
- end
12
-
13
- private
14
- def git_installed?
15
- system("type git > /dev/null 2>&1")
16
- end
17
-
18
- def run_git?
19
- options[:git] && git_installed?
20
- end
21
-
22
- def run_git_init
23
- return unless run_git?
24
- puts "=> Initialize git repo"
25
- run("git init")
26
- end
27
-
28
- def run_git_commit
29
- return unless run_git?
30
-
31
- puts "=> Commit git repo"
32
- run("git add .")
33
- run("git commit -m 'first commit'")
34
- end
35
- end
@@ -1,30 +0,0 @@
1
- class Lono::SetInstances
2
- class Base < Lono::Sets::Base
3
- # Simple structure to help with subtracting logic
4
- # [["112233445566", "us-west-1"], ["112233445566", "us-west-1"]]
5
- def requested
6
- requested = []
7
- accounts.each do |a|
8
- regions.each do |r|
9
- item = [a,r]
10
- requested << item
11
- end
12
- end
13
- requested.sort.uniq
14
- end
15
- memoize :requested
16
-
17
- def accounts
18
- @options[:accounts]
19
- end
20
-
21
- def regions
22
- @options[:regions]
23
- end
24
-
25
- def stack_instances
26
- resp = cfn.list_stack_instances(stack_set_name: @stack)
27
- resp.summaries
28
- end
29
- end
30
- end
@@ -1,53 +0,0 @@
1
- class Lono::SetInstances
2
- class Changeable < Base
3
- include Lono::AwsServices
4
- include Lono::Utils::Sure
5
-
6
- def initialize(options={})
7
- super # need conventions so config lookup will work
8
- @regions, @accounts = [], []
9
- end
10
-
11
- def run
12
- validate!
13
-
14
- unless stack_set_exists?(@stack)
15
- puts "ERROR: Cannot update a stack set because #{@stack} does not exists.".color(:red)
16
- return
17
- end
18
- exit_unless_updatable!
19
-
20
- options = {
21
- stack_set_name: @stack,
22
- accounts: accounts,
23
- regions: regions,
24
- }
25
- begin
26
- resp = perform(options)
27
- rescue Aws::CloudFormation::Errors::ValidationError => e
28
- # IE: Aws::CloudFormation::Errors::ValidationError: Region eu-north-1 is not supported
29
- puts "#{e.class}: #{e.message}".color(:red)
30
- exit 1
31
- end
32
-
33
- return true if @options[:noop]
34
- Lono::Sets::Waiter.new(@options).run(resp[:operation_id])
35
- end
36
-
37
- def validate!
38
- invalid = (regions.blank? || accounts.blank?) && !@options[:all]
39
- if invalid
40
- puts "ERROR: You must provide --accounts and --regions or --all.".color(:red)
41
- exit 1
42
- end
43
- end
44
-
45
- def accounts
46
- @options[:all] ? stack_instances.map(&:account).uniq : @options[:accounts]
47
- end
48
-
49
- def regions
50
- @options[:all] ? stack_instances.map(&:region).uniq : @options[:regions]
51
- end
52
- end
53
- end
@@ -1,7 +0,0 @@
1
- class Lono::SetInstances
2
- class Create < Changeable
3
- def perform(options)
4
- cfn.create_stack_instances(options)
5
- end
6
- end
7
- end
@@ -1,47 +0,0 @@
1
- class Lono::SetInstances
2
- class Delete < Changeable
3
- def initialize(options={})
4
- super
5
- @stack = options[:stack]
6
- end
7
-
8
- def run
9
- validate!
10
-
11
- sure?("Are you sure you want to delete the #{@stack} stack instances?", long_desc)
12
-
13
- # delete_stack_instances resp has operation_id
14
- # Could also use that to poll for status with the list_stack_set_operation_results
15
- # api. Currently, Instance::Status class not using this info. If we need will add the logic.
16
- retain_stacks = @options[:retain_stacks] ? @options[:retain_stacks] : false
17
- resp = cfn.delete_stack_instances(
18
- stack_set_name: @stack,
19
- accounts: accounts,
20
- regions: regions,
21
- retain_stacks: retain_stacks,
22
- )
23
- operation_id = resp.operation_id
24
-
25
- # Status tailing handled by caller
26
- o = @options.merge(
27
- filter: requested,
28
- start_on_outdated: false,
29
- operation_id: operation_id,
30
- )
31
- instances_status = Status.new(o)
32
- instances_status.run(to: "deleted") unless @options[:noop] # returns success: true or false
33
- end
34
-
35
- def long_desc
36
- total = accounts.size * regions.size
37
- <<~EOL
38
- These stack instances will be deleted:
39
-
40
- accounts: #{accounts.join(',')}
41
- regions: #{regions.join(',')}
42
-
43
- Number of stack instances to be deleted: #{total}
44
- EOL
45
- end
46
- end
47
- end
@@ -1,52 +0,0 @@
1
- class Lono::SetInstances
2
- class Deploy < Changeable
3
- def run
4
- # computes whether create or update should be ran for stack instances within each account
5
- updates, creates = Hash.new([]), Hash.new([])
6
- accounts.each do |account|
7
- regions.each do |region|
8
- if stack_instance_exists?(account, region)
9
- updates[account] += [region] # += [item] works, << item doesnt seem to work
10
- else
11
- creates[account] += [region] # += [item] works, << item doesnt seem to work
12
- end
13
- end
14
- end
15
-
16
- deploy(:create, creates)
17
- deploy(:update, updates)
18
- end
19
-
20
- def deploy(type, changes)
21
- changes.each do |account, regions|
22
- run_action(type, account, regions)
23
- end
24
- end
25
-
26
- def run_action(type, account, regions)
27
- klass = "Lono::SetInstances::#{type.to_s.camelize}"
28
- klass = klass.constantize
29
- command = lono_command(klass)
30
- puts "Running #{command.color(:green)} on account: #{account} regions: #{regions.join(',')}"
31
-
32
- options = @options.dup
33
- options[:accounts] = [account]
34
- options[:regions] = regions
35
- klass.new(options).run
36
- end
37
-
38
- def lono_command(klass)
39
- klass = klass.to_s
40
- klass.split('::').map(&:underscore).join(' ')
41
- end
42
-
43
- def stack_instance_exists?(account, region)
44
- existing = stack_instances.map do |summary|
45
- [summary.account, summary.region]
46
- end
47
- intersect = existing & [[account, region]]
48
- !intersect.empty?
49
- end
50
-
51
- end
52
- end
@@ -1,13 +0,0 @@
1
- class Lono::SetInstances
2
- class List
3
- include Lono::AwsServices
4
-
5
- def initialize(options={})
6
- @options = options
7
- end
8
-
9
- def run
10
- Lono::Sets::Status::Instances.new(@options).show
11
- end
12
- end
13
- end
@@ -1,37 +0,0 @@
1
- class Lono::SetInstances
2
- class Opts < Lono::Sets::Opts
3
- def update
4
- delete
5
- end
6
-
7
- def create
8
- delete
9
- end
10
-
11
- def delete
12
- operation_preferences_options
13
- accounts_options
14
- with_cli_scope do
15
- option :all, type: :boolean, desc: "Delete stack all instances. Overrides --accounts and --regions options"
16
- end
17
- end
18
-
19
- def sync
20
- operation_preferences_options
21
- accounts_options
22
- with_cli_scope do
23
- option :delete, type: :boolean, default: true, desc: "Delete stack instances that are not provided"
24
- option :blueprint, desc: "override convention and specify the template file to use"
25
- option :source, desc: "url or path to file with template"
26
- end
27
- end
28
-
29
- def accounts_options
30
- with_cli_scope do
31
- option :accounts, type: :array, desc: "List of accounts to apply stack set to. IE: 112233445566 223344556677"
32
- option :regions, type: :array, desc: "List of regions to apply stack set to. IE: us-west-2 us-east-1"
33
- option :sure, type: :boolean, desc: "Skip are you sure prompt"
34
- end
35
- end
36
- end
37
- end
@@ -1,12 +0,0 @@
1
- class Lono::SetInstances
2
- class Status
3
- def initialize(options={})
4
- @options = options
5
- end
6
-
7
- def run(to: "completed")
8
- instances = Lono::Sets::Status::Instances.new(@options)
9
- instances.wait(to)
10
- end
11
- end
12
- end
@@ -1,181 +0,0 @@
1
- class Lono::SetInstances
2
- class Sync < Base
3
- include Lono::Sets::Summarize
4
- include Lono::Utils::Sure
5
-
6
- def initialize(options={})
7
- super # need conventions so config lookup will work
8
- @regions, @accounts = [], []
9
- end
10
-
11
- def run
12
- puts "DEPRECATED: The sync command is deprecated, in favor of the deploy command.".color(:yellow)
13
- puts "Found more success with an explicit approach. sync may be removed in future versions of lono."
14
-
15
- unless stack_set_exists?(@stack)
16
- puts "ERROR: Cannot update a stack set because #{@stack} does not exists.".color(:red)
17
- return
18
- end
19
- exit_unless_updatable!
20
-
21
- validate!
22
-
23
- existing = stack_instances.map do |summary|
24
- [summary.account, summary.region]
25
- end
26
-
27
- creates = requested - existing
28
- deletes = existing - requested
29
-
30
- if creates.empty? and deletes.empty?
31
- puts <<~EOL
32
- Nothing to be synced. IE: No stack instances need to be added or removed. If you want to update the
33
- stack set and update all stack instances instead, use the `lono sets deploy` command.
34
- EOL
35
- return
36
- end
37
- sure?("Are you sure you want to sync stack instances?", long_desc(creates: creates, deletes: deletes))
38
-
39
- # Note: Not calling update_stack_instances because after deleting stacks it instances in in a weird state
40
- # where an update_stack_instances fails. Can reproduce this by deleting stacks and then trying an update_stack_instances
41
- # with the AWS CLI. In theory, we never really should have to call update_stack_instances anyway because
42
- # updating the stack set at the parent level kicks off an update_stack_instances automatically.
43
- operation_id = execute(:create_stack_instances, creates)
44
- summarize(operation_id) if operation_id
45
- if @options[:delete]
46
- operation_id = execute(:delete_stack_instances, deletes)
47
- summarize(operation_id) if operation_id
48
- end
49
- end
50
-
51
- private
52
-
53
- # data:
54
- # {creates: creates, deletes: deletes}
55
- # where creates and deletes are instances_data structures:
56
- # [["112233445566", "us-west-1"], ["112233445566", "us-west-1"]]
57
- def long_desc(data={})
58
- desc = "lono will run:\n"
59
- verbs = [:creates, :deletes]
60
- verbs.each do |verb|
61
- accounts = accounts_list(data[verb])
62
- regions = regions_list(data[verb])
63
- unless data[verb].empty?
64
- info = {
65
- accounts: accounts.join(','),
66
- regions: regions.join(','),
67
- }
68
- change_total = accounts.size * regions.size
69
- singular_verb = verb.to_s.singularize
70
- past_verb = verb.to_s.sub(/s$/,'d')
71
- message = <<~EOL
72
- #{singular_verb}_stack_instances for:
73
- accounts: #{info[:accounts]}
74
- regions: #{info[:regions]}
75
-
76
- Number of stack instances to be #{past_verb}: #{change_total}
77
- EOL
78
- desc << message
79
- end
80
- end
81
- desc
82
- end
83
-
84
- # meth:
85
- # create_stack_set
86
- # update_stack_set
87
- # delete_stack_set
88
- #
89
- # instances_data:
90
- # [["112233445566", "us-west-1"], ["112233445566", "us-west-1"]]
91
- #
92
- def execute(meth, instances_data)
93
- accounts = accounts_list(instances_data)
94
- regions = regions_list(instances_data)
95
- if accounts.empty? or regions.empty?
96
- # puts "Cannot have one empty. accounts: #{accounts.size} regions: #{regions.size}. No executing #{meth}." # uncomment to debug
97
- return # no operation_id
98
- end
99
-
100
- options = {
101
- stack_set_name: @stack,
102
- accounts: accounts,
103
- regions: regions,
104
- }
105
- options[:retain_stacks] = false if meth == :delete_stack_instances
106
- puts <<~EOL
107
- => Running #{meth} on:
108
- accounts: #{accounts.join(',')}
109
- regions: #{regions.join(',')}
110
- EOL
111
- resp = cfn.send(meth, options) # resp has resp[:operation_id]
112
- operation_id = resp.operation_id
113
-
114
- # Status tailing
115
- o = @options.merge(
116
- filter: instances_data,
117
- operation_id: operation_id,
118
- start_on_outdated: meth != :delete_stack_instances,
119
- )
120
- instances_status = Status.new(o)
121
- final_status = meth == :delete_stack_instances ? "deleted" : "completed"
122
- instances_status.run(to: final_status) unless @options[:noop] # returns success: true or false
123
- operation_id
124
- end
125
-
126
- def accounts_list(instances_data)
127
- instances_data.map { |a| a[0] }.sort.uniq
128
- end
129
-
130
- def regions_list(instances_data)
131
- instances_data.map { |a| a[1] }.sort.uniq
132
- end
133
-
134
- # Override accounts and regions
135
- def accounts
136
- @options[:accounts] || lookup(:accounts)
137
- end
138
-
139
- def regions
140
- @options[:regions] || lookup(:regions)
141
- end
142
-
143
- def lookup(config_type)
144
- config_type = config_type.to_s
145
-
146
- items = []
147
- layering = Lono::Layering.new(config_type, @options, Lono.env)
148
- layering.locations.each do |path|
149
- items += load_config(path)
150
- end
151
- items = items.sort.uniq
152
-
153
- if config_type == "accounts"
154
- @accounts = items
155
- else
156
- @regions = items
157
- end
158
- end
159
-
160
- def load_config(path)
161
- return [] unless path
162
-
163
- items = []
164
- lines = IO.readlines(path)
165
- lines.map do |l|
166
- l = l.strip
167
- l = l.sub(/ #.*/, '') # trailing comment
168
- items << l unless l.empty? || l.match(/^\s*#/) # dont include empty linnks or commented lines
169
- end
170
- items
171
- end
172
-
173
- def validate!
174
- invalid = regions.blank? || accounts.blank?
175
- if invalid
176
- puts "ERROR: You must provide accounts and regions.".color(:red)
177
- exit 1
178
- end
179
- end
180
- end
181
- end
@@ -1,15 +0,0 @@
1
- class Lono::SetInstances
2
- class Update < Changeable
3
- def perform(options)
4
- cfn.update_stack_instances(options)
5
- rescue Aws::CloudFormation::Errors::StackInstanceNotFoundException => e
6
- puts "#{e.class}: #{e.message}".color(:red)
7
- puts <<~EOL
8
- One of the provided stack instance was not found. Unable to update the stack instances unless all stack instances
9
- already exist. It may be helpful to check the StackSet console Instances Tab. You can also use the
10
- `lono set_instances deploy` command instead.
11
- EOL
12
- exit 1
13
- end
14
- end
15
- end