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,54 +0,0 @@
1
- module Lono
2
- class SetInstances < Lono::Command
3
- opts = Opts.new(self)
4
-
5
- desc "create STACK_SET", "Create CloudFormation stack set instances."
6
- long_desc Lono::Help.text("set_instances/create")
7
- opts.create
8
- def create(stack)
9
- Create.new(options.merge(stack: stack)).run
10
- end
11
-
12
- desc "update STACK_SET", "Update CloudFormation stack set instances."
13
- long_desc Lono::Help.text("set_instances/update")
14
- opts.update
15
- def update(stack)
16
- Update.new(options.merge(stack: stack)).run
17
- end
18
-
19
- desc "deploy STACK_SET", "Deploy CloudFormation stack set instances"
20
- long_desc Lono::Help.text("set_instances/deploy")
21
- opts.deploy
22
- def deploy(stack)
23
- Deploy.new(options.merge(stack: stack)).run
24
- end
25
-
26
- desc "delete STACK_SET", "Delete CloudFormation stack set instances."
27
- long_desc Lono::Help.text("set_instances/delete")
28
- opts.delete
29
- def delete(stack)
30
- Delete.new(options.merge(stack: stack)).run
31
- end
32
-
33
- desc "sync STACK_SET", "Sync CloudFormation stack set instances."
34
- long_desc Lono::Help.text("set_instances/sync")
35
- opts.sync
36
- def sync(stack)
37
- Sync.new(options.merge(stack: stack)).run
38
- end
39
-
40
- desc "list STACK_SET", "List CloudFormation stack set instances."
41
- long_desc Lono::Help.text("set_instances/list")
42
- def list(stack)
43
- List.new(options.merge(stack: stack)).run
44
- end
45
-
46
- desc "status STACK_SET", "Show current status of stack instances."
47
- long_desc Lono::Help.text("set_instances/status")
48
- def status(stack)
49
- instances_status = Status.new(options.merge(stack: stack))
50
- success = instances_status.run
51
- exit 3 unless success
52
- end
53
- end
54
- end
@@ -1,50 +0,0 @@
1
- class Lono::Sets
2
- class Base < Lono::Cfn::Base
3
- def initialize(options={})
4
- options[:iam] = true # easy to forget the --iam option. Default to turning it on for StackSets
5
- super
6
- end
7
-
8
- def run
9
- generate_all
10
- save
11
- end
12
-
13
- def exit_unless_updatable!
14
- return true if ENV['LONO_ENV']
15
- return false if @options[:noop]
16
-
17
- status = Status.new(@options) # using status for completed?
18
- return if status.stack_instances.empty?
19
- completed = status.completed?(status.stack_set_status)
20
- unless completed
21
- puts "Cannot update stack set because #{@stack} is not in an updatable state. Stack set status: #{status.stack_set_status}".color(:red)
22
- quit(1)
23
- end
24
- end
25
-
26
- def build_options
27
- parameters = generate_all
28
- options = {
29
- stack_set_name: @stack,
30
- parameters: parameters,
31
- capabilities: capabilities, # ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
32
- }
33
- options[:tags] = tags unless tags.empty?
34
- options[:operation_preferences] = operation_preferences unless operation_preferences.empty?
35
- options.reject! {|k, v| v.nil? }
36
- set_template_url!(options)
37
- options
38
- end
39
-
40
- def operation_preferences
41
- o = {}
42
- o[:failure_tolerance_count] = @options[:failure_tolerance_count]
43
- o[:failure_tolerance_percentage] = @options[:failure_tolerance_percentage]
44
- o[:max_concurrent_count] = @options[:max_concurrent_count]
45
- o[:max_concurrent_percentage] = @options[:max_concurrent_percentage]
46
- o.reject! {|k, v| v.nil? }
47
- o
48
- end
49
- end
50
- end
@@ -1,27 +0,0 @@
1
- class Lono::Sets
2
- class Create < Base
3
- def save
4
- message = "Creating #{@stack.color(:green)} stack set."
5
- if @options[:noop]
6
- puts "NOOP #{message}"
7
- return
8
- end
9
-
10
- if stack_set_exists?(@stack)
11
- puts "Cannot create #{@stack.color(:green)} stack set because it already exists.".color(:red)
12
- return
13
- end
14
-
15
- unless File.exist?(template_path)
16
- puts "Cannot create #{@stack.color(:green)} template not found: #{template_path}."
17
- return
18
- end
19
-
20
- options = build_options
21
- show_options(options, "cfn.create_stack_set")
22
- cfn.create_stack_set(options) # resp.stack_set_id => String. There is no resp.operation_id
23
- puts message unless @options[:mute]
24
- true # There is no resp.operation_id
25
- end
26
- end
27
- end
@@ -1,43 +0,0 @@
1
- class Lono::Sets
2
- class Delete
3
- include Lono::AwsServices
4
- include Lono::Sets::Summarize
5
- include Lono::Utils::Sure
6
-
7
- def initialize(options={})
8
- @options = options
9
- @stack = options[:stack]
10
- end
11
-
12
- def run
13
- message = "Deleting #{@stack} stack set."
14
- if @options[:noop]
15
- puts "NOOP #{message}"
16
- else
17
- desc =<<~EOL
18
- Be sure that the emptied StackSet instances is emptied first.
19
- You can empty it with a separate command: lono set_instances delete #{@stack} --all
20
- This command will only delete the StackSet itself after its been emptied.
21
- EOL
22
- sure?("Are you sure you want to delete the #{@stack} stack set?", desc)
23
-
24
- if stack_set_exists?(@stack)
25
- cfn.delete_stack_set(stack_set_name: @stack) # resp is an Empty structure, so must get operation_id from status
26
- puts message
27
- else
28
- puts "#{@stack.inspect} stack set does not exist".color(:red)
29
- return
30
- end
31
- end
32
- rescue Aws::CloudFormation::Errors::StackSetNotEmptyException => e
33
- puts "ERROR: #{e.class}: #{e.message}".color(:red)
34
- puts <<~EOL
35
- The stack set must be empty before deleting. Cannot delete stack set until all stack instances are first
36
- deleted. If you want to delete all stack instances you can use:
37
-
38
- lono set_instances delete #{@stack} --all
39
-
40
- EOL
41
- end
42
- end
43
- end
@@ -1,11 +0,0 @@
1
- class Lono::Sets
2
- class Deploy < Base
3
- def run
4
- if stack_set_exists?(@stack)
5
- Update.new(@options).run
6
- else
7
- Create.new(@options).run
8
- end
9
- end
10
- end
11
- end
@@ -1,35 +0,0 @@
1
- require "text-table"
2
-
3
- class Lono::Sets
4
- class List
5
- include Lono::AwsServices
6
-
7
- def initialize(options={})
8
- @options = options
9
- end
10
-
11
- def run
12
- table = Text::Table.new
13
- table.head = ["Stack Set Name", "Status"]
14
- summaries = stack_sets_summaries
15
- summaries.each do |s|
16
- table.rows << [s.stack_set_name, s.status]
17
- end
18
- puts table
19
- end
20
-
21
- private
22
- def stack_sets_summaries
23
- next_token, summaries = :start, []
24
- while next_token
25
- o = {}
26
- o[:next_token] = next_token unless next_token == :start or next_token.nil?
27
- o[:status] = @options[:status].upcase if @options[:status] && @options[:status] != "all"
28
- resp = cfn.list_stack_sets(o)
29
- next_token = resp.next_token
30
- summaries += resp.summaries
31
- end
32
- summaries
33
- end
34
- end
35
- end
@@ -1,18 +0,0 @@
1
- class Lono::Sets
2
- class Opts < Lono::Cfn::Opts
3
- def deploy
4
- super
5
- operation_preferences_options
6
- end
7
-
8
- def operation_preferences_options
9
- with_cli_scope do
10
- option :region_order, type: :array, desc: "region_order"
11
- option :failure_tolerance_count, type: :numeric, desc: "failure_tolerance_count"
12
- option :failure_tolerance_percentage, type: :numeric, desc: "failure_tolerance_percentage"
13
- option :max_concurrent_count, type: :numeric, desc: "max_concurrent_count"
14
- option :max_concurrent_percentage, type: :numeric, desc: "max_concurrent_percentage"
15
- end
16
- end
17
- end
18
- end
@@ -1,35 +0,0 @@
1
- module Lono::Sets::Preview
2
- class Codediff < Lono::Sets::Base
3
- include Lono::Cfn::Preview::DiffViewer
4
-
5
- def run
6
- unless stack_set_exists?(@stack)
7
- puts "WARN: Cannot create a diff for the stack set because the #{@stack} does not exists.".color(:yellow)
8
- return
9
- end
10
-
11
- if @options[:noop]
12
- puts "NOOP Generating CloudFormation source code diff..."
13
- else
14
- generate_all # from Base superclass. Generates the output lono teplates
15
- puts "Generating CloudFormation source code diff..."
16
- download_existing_cfn_template
17
- show_diff(existing_template_path, new_cfn_template)
18
- end
19
- end
20
-
21
- def download_existing_cfn_template
22
- resp = cfn.describe_stack_set(stack_set_name: @stack)
23
- IO.write(existing_template_path, resp.stack_set.template_body)
24
- end
25
-
26
- # for clarity
27
- def new_cfn_template
28
- template_path
29
- end
30
-
31
- def existing_template_path
32
- "/tmp/existing_stack_set.yml"
33
- end
34
- end
35
- end
@@ -1,32 +0,0 @@
1
- module Lono::Sets::Preview
2
- # Inherits from Lono::Cfn::Preview::Param and override what's needed:
3
- #
4
- # stack_parameters
5
- #
6
- class Param < Lono::Cfn::Preview::Param
7
- def run
8
- return unless stack_set_exists?(@stack)
9
-
10
- generated_parameters # eager call generated_parameters so its output is above Parameter Diff Preview
11
- puts "Parameter Diff Preview:".color(:green)
12
- if @options[:noop]
13
- puts "NOOP CloudFormation parameters preview for #{@stack} update"
14
- return
15
- end
16
-
17
- write_to_tmp(existing_path, existing_params)
18
- write_to_tmp(new_path, new_params)
19
-
20
- show_diff(existing_path, new_path)
21
- end
22
-
23
- def stack_parameters
24
- stack_set_parameters
25
- end
26
-
27
- def stack_set_parameters
28
- resp = cfn.describe_stack_set(stack_set_name: @stack)
29
- resp.stack_set.parameters
30
- end
31
- end
32
- end
@@ -1,120 +0,0 @@
1
- # The Completed and Deleted classes inherit from Base.
2
- # They implement `tail` and should not override `show`.
3
- #
4
- # They guarantee at least one status line is shown.
5
- # After which they start a thread that tails until a "terminal" status is detected. However, describe_stack_instance
6
- # resp.stack_instance.status returns:
7
- #
8
- # CURRENT, OUTDATED, INOPERABLE
9
- #
10
- # There is no well-defined terminal status. For example, sometimes the terminal status is `CURRENT`, when the stack
11
- # instance updates successfully:
12
- #
13
- # CURRENT -> OUTDATED -> CURRENT (terminal)
14
- #
15
- # But sometimes the terminal state is `OUTDATED`, when the stack instance fails to update:
16
- #
17
- # CURRENT -> OUTDATED (terminal)
18
- #
19
- # Essentially, the `describe_stack_instance` resp does not provide enough information to determine the completion of
20
- # the `tail` logic.
21
- #
22
- # Hence the Completed and Deleted classes cannot be used to control the end of the polling loop. Instead, the calling
23
- # logic is responsible for and should control when to end the polling loop.
24
- #
25
- # Example in Lono::Sets::Status::Instances:
26
- #
27
- # with_instances do |instance|
28
- # Thread.new { instance.tail(to) }
29
- # end.map(&:join)
30
- # wait_until_stack_set_operation_complete
31
- #
32
- # The Instances logic waits on the operation results instead because its more accurate. We know from
33
- # `describe_stack_set_operation` when the status is actually complete. The describe_stack_set_operation
34
- # stack_set_operation.status is one of RUNNING, SUCCEEDED, FAILED, STOPPING, STOPPED.
35
- #
36
- # In this case, there are threads within threads. The first thread at the Instances level starts polling status
37
- # in parallel. The instance.tail delegates to the Completed and Deleted classes.
38
- #
39
- # Finally, the Completed and Deleted classes are designed to block with the first poll request. So it can show at
40
- # least one status line. Then it starts it's own thread to poll for more statuses. Those latter statuses are not
41
- # guaranteed to be shown. This is the responsibility of the Instances class since it has the information required to
42
- # determine when to finish the polling loop.
43
- #
44
- class Lono::Sets::Status::Instance
45
- class Base
46
- include Lono::AwsServices
47
-
48
- class_attribute :show_time_progress
49
- class_attribute :delay_factor
50
-
51
- def initialize(stack_instance)
52
- @stack_instance = stack_instance
53
- @shown = []
54
- @output = "" # for say method and specs
55
- end
56
-
57
- def show_instance(stack_instance)
58
- already_shown = @shown.detect do |o|
59
- o[:account] == stack_instance[:account] &&
60
- o[:region] == stack_instance[:region] &&
61
- o[:status] == stack_instance[:status] &&
62
- o[:status_reason] == stack_instance[:status_reason]
63
- end
64
- return if already_shown
65
-
66
- s = stack_instance
67
- say status_line(s.account, s.region, s.status, s.status_reason)
68
- end
69
-
70
- def show_time_progress
71
- self.class.show_time_progress
72
- end
73
-
74
- def status_line(account, region, status, reason=nil)
75
- time = Time.now.strftime("%F %I:%M:%S%p") if show_time_progress
76
- items = [
77
- time,
78
- "Stack Instance:",
79
- "account".color(:purple), account,
80
- "region".color(:purple), region,
81
- "status".color(:purple), status,
82
- ]
83
- items += ["reason".color(:purple), reason] if reason
84
- items.compact.join(" ")
85
- end
86
-
87
- def say(text)
88
- ENV["LONO_TEST"] ? @output << "#{text}\n" : puts(text)
89
- end
90
-
91
- def describe_stack_instance
92
- retries = 0
93
- begin
94
- cfn.describe_stack_instance(
95
- stack_instance_account: @stack_instance.account,
96
- stack_instance_region: @stack_instance.region,
97
- stack_set_name: @stack_instance.stack_set_id)
98
- rescue Aws::CloudFormation::Errors::Throttling => e
99
- retries += 1
100
- delay = 2 ** retries
101
- if ENV['LONO_DEBUG_THROTTLE']
102
- puts "#{e.class}: #{e.message}"
103
- puts "Backing off for #{delay}s and will retry"
104
- end
105
- sleep delay
106
- retry
107
- end
108
- end
109
-
110
- def delay
111
- # delay factor based on number of stack instances
112
- factor = self.class.delay_factor || 1
113
- base = 4.5
114
- delay = factor * base
115
- delay = [delay, 30].min # limit the delay to a max
116
- puts "Sleeping for #{delay}s..." if ENV['LONO_DEBUG_THROTTLE']
117
- sleep delay
118
- end
119
- end
120
- end
@@ -1,35 +0,0 @@
1
- # Refer to Lono::Sets::Status::Instance::Base for more detailed docs.
2
- class Lono::Sets::Status::Instance
3
- class Completed < Base
4
- def tail
5
- display_one
6
- Thread.new do
7
- loop!
8
- end
9
- end
10
-
11
- def loop!
12
- # resp.stack_instance.status : one of CURRENT, OUTDATED, INOPERABLE
13
- status = nil
14
- until completed?(status)
15
- resp = display_one
16
- status = resp.stack_instance.status
17
- delay unless completed?(status)
18
- end
19
- end
20
-
21
- def display_one
22
- resp = describe_stack_instance
23
- stack_instance = resp.stack_instance
24
- show_instance(stack_instance)
25
- @shown << stack_instance
26
- resp
27
- end
28
-
29
- # status: one of CURRENT, OUTDATED, INOPERABLE
30
- def completed?(status)
31
- completed_statuses = %w[CURRENT INOPERABLE]
32
- completed_statuses.include?(status)
33
- end
34
- end
35
- end
@@ -1,32 +0,0 @@
1
- # Refer to Lono::Sets::Status::Instance::Base for more detailed docs.
2
- class Lono::Sets::Status::Instance
3
- class Deleted < Base
4
- def tail
5
- display_one
6
- Thread.new do
7
- loop!
8
- end
9
- end
10
-
11
- def loop!
12
- # resp.stack_instance.status : one of CURRENT, OUTDATED, INOPERABLE
13
- while true
14
- begin
15
- display_one
16
- rescue Aws::CloudFormation::Errors::StackInstanceNotFoundException
17
- say status_line(@stack_instance.account, @stack_instance.region, "DELETED")
18
- break
19
- end
20
- delay
21
- end
22
- end
23
-
24
- def display_one
25
- resp = describe_stack_instance
26
- stack_instance = resp.stack_instance
27
- show_instance(stack_instance)
28
- @shown << stack_instance
29
- resp
30
- end
31
- end
32
- end
@@ -1,7 +0,0 @@
1
- class Lono::Sets::Status::Instance
2
- class Show < Base
3
- def run
4
- show_instance(@stack_instance)
5
- end
6
- end
7
- end
@@ -1,20 +0,0 @@
1
- class Lono::Sets::Status
2
- class Instance
3
- def initialize(stack_instance)
4
- @stack_instance = stack_instance
5
- end
6
-
7
- def tail(to="completed")
8
- case to
9
- when "completed"
10
- Completed.new(@stack_instance).tail
11
- when "deleted"
12
- Deleted.new(@stack_instance).tail
13
- end
14
- end
15
-
16
- def show
17
- Show.new(@stack_instance).run
18
- end
19
- end
20
- end
@@ -1,136 +0,0 @@
1
- class Lono::Sets::Status
2
- class Instances
3
- include Lono::AwsServices
4
- include Lono::Sets::TimeSpent
5
-
6
- def initialize(options={})
7
- @options = options
8
- @stack, @operation_id = options[:stack], options[:operation_id]
9
- @show_time_spent = options[:show_time_spent].nil? ? true : options[:show_time_spent]
10
- end
11
-
12
- def wait(to="completed")
13
- puts "Stack Instance statuses... (takes a while)"
14
- puts "You can also check with StackSets console at the Operations Tab."
15
- wait_until_outdated if @options[:start_on_outdated]
16
-
17
- threads = start_wait_for_instances_threads
18
- wait_until_stack_set_operation_complete # start the the tailer here so the show_aws_cli_command shows up
19
- threads.map(&:join)
20
- end
21
-
22
- def show
23
- if stack_instances.empty?
24
- # Note: no access to @blueprint here
25
- puts <<~EOL
26
- There are 0 stack instances associated with the #{@stack} stack set.
27
- Use `lono set_instances deploy` to add stack instances. Example:
28
-
29
- lono set_instances deploy #{@stack} --accounts 111 --regions us-west-2 us-east-2
30
-
31
- EOL
32
- return
33
- end
34
-
35
- threads = start_wait_for_instances_threads
36
- wait_until_stack_set_operation_complete
37
- threads.map(&:join)
38
- end
39
-
40
- def start_wait_for_instances_threads
41
- # Tricky: extra sleep so that the show_aws_cli_command in wait_until_stack_set_operation_complete
42
- # shows up first. Quickest way to implement.
43
- with_instances do |instance|
44
- Thread.new { sleep 5; instance.show }
45
- end
46
- end
47
-
48
- def with_instances
49
- stack_instances.map do |stack_instance|
50
- instance = Instance.new(stack_instance)
51
- yield(instance)
52
- end
53
- end
54
-
55
- def wait_until_stack_set_operation_complete
56
- status, stack_set_operation = nil, nil
57
- until completed?(status)
58
- resp = cfn.describe_stack_set_operation(
59
- stack_set_name: @stack,
60
- operation_id: operation_id,
61
- )
62
- stack_set_operation = resp.stack_set_operation
63
- status = stack_set_operation.status
64
- show_aws_cli_command(stack_set_operation.operation_id)
65
- # puts "DEBUG: wait_until_stack_set_operation_complete"
66
- unless completed?(status)
67
- sleep 5
68
- end
69
- end
70
- if @show_time_spent # or else it double shows from `lono sets deploy`. Do want it to show for `lono set_instances sync` though
71
- show_time_spent(stack_set_operation)
72
- puts "Stack set operation completed."
73
- end
74
- end
75
-
76
- @@aws_cli_command_shown = false
77
- def show_aws_cli_command(operation_id)
78
- return if @@aws_cli_command_shown
79
-
80
- command = "aws cloudformation describe-stack-set-operation --stack-set-name #{@stack} --operation-id #{operation_id}"
81
- puts <<~EOL
82
- Here is also the cli command to check:
83
-
84
- #{command}
85
-
86
- EOL
87
- @@aws_cli_command_shown = true
88
- end
89
-
90
- # describe_stack_set_operation stack_set_operation.status is
91
- # one of RUNNING, SUCCEEDED, FAILED, STOPPING, STOPPED
92
- def completed?(status)
93
- completed_statuses = %w[SUCCEEDED FAILED STOPPED]
94
- completed_statuses.include?(status)
95
- end
96
-
97
- # If we dont wait until OUTDATED, during a `lono sets deploy` it'll immediately think that the instance statuses are done
98
- def wait_until_outdated
99
- outdated = false
100
- until outdated
101
- outdated = stack_instances.detect { |stack_instance| stack_instance.status == "OUTDATED" }
102
- sleep 5
103
- end
104
- end
105
-
106
- def instances
107
- stack_instances.map { |stack_instance| Instance.new(stack_instance) }
108
- end
109
-
110
- def stack_instances
111
- resp = cfn.list_stack_instances(stack_set_name: @stack)
112
- summaries = resp.summaries
113
- # filter is really only used internally. So it's fine to keep it as complex data structure since that's what we
114
- # build it up as in Lono::SetInstances::Deploy
115
- filter = @options[:filter] # [["112233445566", "us-west-1"],["112233445566", "us-west-2"]]
116
- return summaries unless filter
117
-
118
- summaries.reject do |s|
119
- intersect = [[s.account, s.region]] & filter
120
- intersect.empty?
121
- end
122
- end
123
-
124
- def operation_id
125
- @operation_id ||= latest_operation_id
126
- end
127
-
128
- def latest_operation_id
129
- resp = cfn.list_stack_set_operations(
130
- stack_set_name: @stack,
131
- max_results: 1,
132
- )
133
- resp.summaries.first.operation_id
134
- end
135
- end
136
- end