lono 4.1.0 → 4.2.0

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +3 -1
  4. data/exe/lono +1 -1
  5. data/lib/lono.rb +17 -15
  6. data/lib/lono/cfn.rb +54 -24
  7. data/lib/lono/cfn/base.rb +95 -17
  8. data/lib/lono/cfn/create.rb +5 -29
  9. data/lib/lono/cfn/current.rb +95 -0
  10. data/lib/lono/cfn/delete.rb +15 -1
  11. data/lib/lono/cfn/preview.rb +5 -3
  12. data/lib/lono/cfn/status.rb +212 -0
  13. data/lib/lono/cfn/update.rb +6 -12
  14. data/lib/lono/cfn/util.rb +2 -2
  15. data/lib/lono/cli.rb +4 -6
  16. data/lib/lono/core.rb +23 -5
  17. data/lib/lono/default/settings.yml +1 -1
  18. data/lib/lono/file_uploader.rb +119 -0
  19. data/lib/lono/help/cfn/current.md +18 -0
  20. data/lib/lono/help/cfn/status.md +19 -0
  21. data/lib/lono/script/build.rb +2 -1
  22. data/lib/lono/script/upload.rb +1 -1
  23. data/lib/lono/template/helper.rb +8 -0
  24. data/lib/lono/template/upload.rb +13 -1
  25. data/lib/lono/upgrade.rb +16 -0
  26. data/lib/lono/{upgrade4.rb → upgrade/upgrade4.rb} +1 -1
  27. data/lib/lono/upgrade/upgrade42.rb +36 -0
  28. data/lib/lono/version.rb +1 -1
  29. data/lib/starter_projects/autoscaling/.gitignore +1 -0
  30. data/lib/starter_projects/autoscaling/README.md +1 -1
  31. data/lib/starter_projects/autoscaling/config/settings.yml +1 -1
  32. data/lib/starter_projects/ec2/.gitignore +1 -0
  33. data/lib/starter_projects/ec2/config/settings.yml +1 -1
  34. data/lib/starter_projects/skeleton/.gitignore +1 -0
  35. data/lib/starter_projects/skeleton/config/settings.yml +1 -1
  36. data/lono.gemspec +1 -0
  37. data/spec/fixtures/cfn/stack-events-complete.json +1080 -0
  38. data/spec/fixtures/cfn/stack-events-in-progress.json +1080 -0
  39. data/spec/fixtures/cfn/stack-events-update-rollback-complete.json +1086 -0
  40. data/spec/fixtures/lono_project/config/settings.yml +1 -1
  41. data/spec/lib/lono/cfn/status_spec.rb +77 -0
  42. metadata +33 -4
@@ -13,7 +13,7 @@ base:
13
13
  # default: mybucket/folder
14
14
  # aws_profile1: mybucket/folder
15
15
  # aws_profile2: another-bucket/storage/folder
16
- # randomize_stack_name: true # tack on a 3 char random string at the end of the stack name
16
+ # stack_name_suffix: random # tack on a 3 char random string at the end of the stack name
17
17
  # for lono cfn create
18
18
 
19
19
  development:
@@ -0,0 +1,77 @@
1
+ describe Lono::Cfn::Status do
2
+ let(:status) do
3
+ status = Lono::Cfn::Status.new("test-stack")
4
+ allow(status).to receive(:cfn).and_return(cfn)
5
+ status
6
+ end
7
+ let(:cfn) do
8
+ service = double("service").as_null_object
9
+ allow(service).to receive(:describe_stacks).and_return(stack_status)
10
+ allow(service).to receive(:describe_stack_events).and_return(stack_events)
11
+ service
12
+ end
13
+
14
+ context "in progress" do
15
+ let(:stack_status) { "UPDATE_IN_PROGRESS" }
16
+ let(:stack_events) { JSON.load(IO.read("spec/fixtures/cfn/stack-events-in-progress.json")) }
17
+ it "lists events since user initiated event" do
18
+ status.refresh_events
19
+ i = status.find_index(:start)
20
+ expect(i).to eq 15
21
+ # uncomment to view and debug
22
+ # status.show_events
23
+ # puts "****"
24
+ # status.show_events # show not show anything
25
+ end
26
+
27
+ it "lists events since last shown event" do
28
+ # first display
29
+ status.refresh_events
30
+ i = status.find_index(:start)
31
+ expect(i).to eq 15
32
+
33
+ # move the last event back in time 4 events, so should print 3 events
34
+ status.instance_variable_set(:@last_shown_event_id, "TargetGroup-ec634c43-b887-4bde-a525-7c69782865a6")
35
+
36
+ captured_events = []
37
+ allow(status).to receive(:print_event) do |e|
38
+ captured_events << "#{e["resource_type"]} #{e["resource_status"]}"
39
+ end
40
+ status.show_events
41
+ expect(captured_events).to eq([
42
+ "AWS::ElasticLoadBalancingV2::LoadBalancer DELETE_IN_PROGRESS",
43
+ "AWS::ElasticLoadBalancingV2::LoadBalancer DELETE_COMPLETE",
44
+ "AWS::EC2::SecurityGroup DELETE_IN_PROGRESS",
45
+ ])
46
+ end
47
+ end
48
+
49
+ context "complete" do
50
+ let(:stack_status) { "UPDATE_COMPLETE" }
51
+ let(:stack_events) { JSON.load(IO.read("spec/fixtures/cfn/stack-events-complete.json")) }
52
+ it "lists events all the way to completion" do
53
+ status.refresh_events
54
+ i = status.find_index(:start)
55
+ expect(i).to eq 17
56
+ # uncomment to view and debug
57
+ # status.show_events
58
+ end
59
+ end
60
+
61
+ context "update_rollback" do
62
+ let(:stack_status) { "UPDATE_ROLLBACK_COMPLETE" }
63
+ let(:stack_events) { JSON.load(IO.read("spec/fixtures/cfn/stack-events-update-rollback-complete.json")) }
64
+ it "lists events all the way to update rollback complete" do
65
+ status.refresh_events
66
+ expect(status.success?).to be false
67
+ expect(status.update_rollback?).to be true
68
+ expect(status.rollback_error_message).to include("STATIC_NAME")
69
+
70
+ # i = status.find_index(:start)
71
+ # expect(i).to eq 17
72
+ # uncomment to view and debug
73
+ # status.show_events
74
+ end
75
+ end
76
+ end
77
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lono
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-01 00:00:00.000000000 Z
11
+ date: 2018-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -206,6 +206,20 @@ dependencies:
206
206
  - - ">="
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: memoist
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: byebug
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -316,10 +330,12 @@ files:
316
330
  - lib/lono/cfn/aws_service.rb
317
331
  - lib/lono/cfn/base.rb
318
332
  - lib/lono/cfn/create.rb
333
+ - lib/lono/cfn/current.rb
319
334
  - lib/lono/cfn/delete.rb
320
335
  - lib/lono/cfn/diff.rb
321
336
  - lib/lono/cfn/download.rb
322
337
  - lib/lono/cfn/preview.rb
338
+ - lib/lono/cfn/status.rb
323
339
  - lib/lono/cfn/update.rb
324
340
  - lib/lono/cfn/util.rb
325
341
  - lib/lono/clean.rb
@@ -332,13 +348,16 @@ files:
332
348
  - lib/lono/core.rb
333
349
  - lib/lono/core/config.rb
334
350
  - lib/lono/default/settings.yml
351
+ - lib/lono/file_uploader.rb
335
352
  - lib/lono/help.rb
336
353
  - lib/lono/help/cfn.md
337
354
  - lib/lono/help/cfn/create.md
355
+ - lib/lono/help/cfn/current.md
338
356
  - lib/lono/help/cfn/delete.md
339
357
  - lib/lono/help/cfn/diff.md
340
358
  - lib/lono/help/cfn/download.md
341
359
  - lib/lono/help/cfn/preview.md
360
+ - lib/lono/help/cfn/status.md
342
361
  - lib/lono/help/cfn/update.md
343
362
  - lib/lono/help/completion.md
344
363
  - lib/lono/help/completion_script.md
@@ -381,7 +400,9 @@ files:
381
400
  - lib/lono/template/helper.rb
382
401
  - lib/lono/template/template.rb
383
402
  - lib/lono/template/upload.rb
384
- - lib/lono/upgrade4.rb
403
+ - lib/lono/upgrade.rb
404
+ - lib/lono/upgrade/upgrade4.rb
405
+ - lib/lono/upgrade/upgrade42.rb
385
406
  - lib/lono/user_data.rb
386
407
  - lib/lono/version.rb
387
408
  - lib/starter_projects/autoscaling/.gitignore
@@ -419,6 +440,9 @@ files:
419
440
  - lib/starter_projects/skeleton/welcome.txt
420
441
  - lono.gemspec
421
442
  - spec/fixtures/cfn.json
443
+ - spec/fixtures/cfn/stack-events-complete.json
444
+ - spec/fixtures/cfn/stack-events-in-progress.json
445
+ - spec/fixtures/cfn/stack-events-update-rollback-complete.json
422
446
  - spec/fixtures/lono_project/.gitignore
423
447
  - spec/fixtures/lono_project/Gemfile
424
448
  - spec/fixtures/lono_project/Guardfile
@@ -442,6 +466,7 @@ files:
442
466
  - spec/fixtures/params/overlay/params/base/network.txt
443
467
  - spec/fixtures/params/overlay/params/development/network.txt
444
468
  - spec/fixtures/raw_templates/aws-waf-security-automations.template
469
+ - spec/lib/lono/cfn/status_spec.rb
445
470
  - spec/lib/lono/cfn_spec.rb
446
471
  - spec/lib/lono/cli_spec.rb
447
472
  - spec/lib/lono/completion_spec.rb
@@ -485,13 +510,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
485
510
  version: '0'
486
511
  requirements: []
487
512
  rubyforge_project:
488
- rubygems_version: 2.7.3
513
+ rubygems_version: 2.7.6
489
514
  signing_key:
490
515
  specification_version: 4
491
516
  summary: Lono is a CloudFormation Template ruby generator. Lono generates CloudFormation
492
517
  templates based on ERB templates.
493
518
  test_files:
494
519
  - spec/fixtures/cfn.json
520
+ - spec/fixtures/cfn/stack-events-complete.json
521
+ - spec/fixtures/cfn/stack-events-in-progress.json
522
+ - spec/fixtures/cfn/stack-events-update-rollback-complete.json
495
523
  - spec/fixtures/lono_project/.gitignore
496
524
  - spec/fixtures/lono_project/Gemfile
497
525
  - spec/fixtures/lono_project/Guardfile
@@ -515,6 +543,7 @@ test_files:
515
543
  - spec/fixtures/params/overlay/params/base/network.txt
516
544
  - spec/fixtures/params/overlay/params/development/network.txt
517
545
  - spec/fixtures/raw_templates/aws-waf-security-automations.template
546
+ - spec/lib/lono/cfn/status_spec.rb
518
547
  - spec/lib/lono/cfn_spec.rb
519
548
  - spec/lib/lono/cli_spec.rb
520
549
  - spec/lib/lono/completion_spec.rb