bora 1.2.0 → 1.3.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.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/bora/cfn/parameter.rb +22 -0
- data/lib/bora/cfn/stack.rb +6 -5
- data/lib/bora/cli.rb +8 -2
- data/lib/bora/stack.rb +35 -2
- data/lib/bora/stack_tasks.rb +10 -0
- data/lib/bora/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cd2cfc5042845d206c5fdd8916b6a0212fc943c
|
4
|
+
data.tar.gz: 3a0f73e893cb10e2d871bfe2e8e364fa9500aaf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90dd31bc2e7058cf9e65d9c17d30936c5891943c8d390528e721012b64aef849aa9917192589a316915026af429df1e9ecdec107cfbffdb45f7b364eee0cf4c2
|
7
|
+
data.tar.gz: 5669c210393f07cf5c337c911f6a885e29d8dd1d3bd139162e5d02d87eeeff40a6d7bf271cbcd9018ce056e020635fd70ec8625c5a9a80d2f714729bf4efb11c
|
data/README.md
CHANGED
@@ -156,6 +156,7 @@ The following commands are available through the command line and rake tasks.
|
|
156
156
|
* **events** - Outputs the latest events from the stack
|
157
157
|
* **list** - Outputs a list of all stacks defined in the config file
|
158
158
|
* **outputs** - Shows the outputs from the stack
|
159
|
+
* **parameters** - Shows the parameters from the stack
|
159
160
|
* **recreate** - Recreates (deletes then creates) the stack
|
160
161
|
* **show** - Shows the local template in JSON, generating it if necessary
|
161
162
|
* **show_current** - Shows the currently applied template in AWS
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Bora
|
2
|
+
module Cfn
|
3
|
+
class Parameter
|
4
|
+
def initialize(parameter)
|
5
|
+
@parameter = parameter
|
6
|
+
end
|
7
|
+
|
8
|
+
def key
|
9
|
+
@parameter.parameter_key
|
10
|
+
end
|
11
|
+
|
12
|
+
def value
|
13
|
+
@parameter.parameter_value
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
"#{key} - #{value}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
data/lib/bora/cfn/stack.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'set'
|
2
2
|
require 'open-uri'
|
3
3
|
require 'aws-sdk'
|
4
|
-
require 'diffy'
|
5
4
|
require 'bora/cfn/stack_status'
|
6
5
|
require 'bora/cfn/event'
|
7
6
|
require 'bora/cfn/output'
|
7
|
+
require 'bora/cfn/parameter'
|
8
8
|
|
9
9
|
class Bora
|
10
10
|
module Cfn
|
@@ -50,6 +50,11 @@ class Bora
|
|
50
50
|
underlying_stack.outputs.map { |output| Output.new(output) }
|
51
51
|
end
|
52
52
|
|
53
|
+
def parameters
|
54
|
+
return if !exists?
|
55
|
+
underlying_stack.parameters.map { |parameter| Parameter.new(parameter) }
|
56
|
+
end
|
57
|
+
|
53
58
|
def template(pretty = true)
|
54
59
|
return if !exists?
|
55
60
|
template = cloudformation.get_template({stack_name: @stack_name}).template_body
|
@@ -68,10 +73,6 @@ class Bora
|
|
68
73
|
end
|
69
74
|
end
|
70
75
|
|
71
|
-
def diff(options)
|
72
|
-
Diffy::Diff.new(template, new_template(options))
|
73
|
-
end
|
74
|
-
|
75
76
|
def validate(options)
|
76
77
|
cloudformation.validate_template(resolve_options(options).select { |k| [:template_body, :template_url].include?(k) })
|
77
78
|
end
|
data/lib/bora/cli.rb
CHANGED
@@ -17,7 +17,7 @@ class Bora
|
|
17
17
|
|
18
18
|
class_option "cfn-stack-name",
|
19
19
|
type: :string,
|
20
|
-
aliases: :
|
20
|
+
aliases: :n,
|
21
21
|
default: nil,
|
22
22
|
desc: "The name to give the stack in CloudFormation. Overrides any CFN stack name setting in the Bora config file."
|
23
23
|
|
@@ -43,8 +43,9 @@ class Bora
|
|
43
43
|
|
44
44
|
desc "diff STACK_NAME", "Diffs the new template with the stack's current template"
|
45
45
|
option :params, type: :array, aliases: :p, desc: "Parameters to be passed to the template, eg: --params 'instance_type=t2.micro'"
|
46
|
+
option :context, type: :numeric, aliases: :c, default: 3, desc: "Number of lines of context to show around the differences"
|
46
47
|
def diff(stack_name)
|
47
|
-
stack(options.file, stack_name).diff(params)
|
48
|
+
stack(options.file, stack_name).diff(params, options.context)
|
48
49
|
end
|
49
50
|
|
50
51
|
desc "events STACK_NAME", "Outputs the latest events from the stack"
|
@@ -57,6 +58,11 @@ class Bora
|
|
57
58
|
stack(options.file, stack_name).outputs
|
58
59
|
end
|
59
60
|
|
61
|
+
desc "parameters STACK_NAME", "Shows the parameters from the stack"
|
62
|
+
def parameters(stack_name)
|
63
|
+
stack(options.file, stack_name).parameters
|
64
|
+
end
|
65
|
+
|
60
66
|
desc "recreate STACK_NAME", "Recreates (deletes then creates) the stack"
|
61
67
|
option :params, type: :array, aliases: :p, desc: "Parameters to be passed to the template, eg: --params 'instance_type=t2.micro'"
|
62
68
|
def recreate(stack_name)
|
data/lib/bora/stack.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'tempfile'
|
2
2
|
require 'colorize'
|
3
3
|
require 'cfndsl'
|
4
|
+
require 'diffy'
|
4
5
|
require 'bora/cfn/stack'
|
5
6
|
require 'bora/stack_tasks'
|
6
7
|
require 'bora/parameter_resolver'
|
@@ -14,6 +15,7 @@ class Bora
|
|
14
15
|
STACK_EVENTS_DO_NOT_EXIST_MESSAGE = "Stack '%s' has no events"
|
15
16
|
STACK_EVENTS_MESSAGE = "Events for stack '%s'"
|
16
17
|
STACK_OUTPUTS_DO_NOT_EXIST_MESSAGE = "Stack '%s' has no outputs"
|
18
|
+
STACK_PARAMETERS_DO_NOT_EXIST_MESSAGE = "Stack '%s' has no parameters"
|
17
19
|
STACK_VALIDATE_SUCCESS_MESSAGE = "Template for stack '%s' is valid"
|
18
20
|
|
19
21
|
def initialize(stack_name, template_file, stack_config)
|
@@ -53,9 +55,25 @@ class Bora
|
|
53
55
|
invoke_action("delete")
|
54
56
|
end
|
55
57
|
|
56
|
-
def diff(override_params = {})
|
58
|
+
def diff(override_params = {}, context_lines = 3)
|
57
59
|
generate(override_params)
|
58
|
-
|
60
|
+
diff = Diffy::Diff.new(@cfn_stack.template, @cfn_stack.new_template(@cfn_options),
|
61
|
+
context: context_lines,
|
62
|
+
include_diff_info: true)
|
63
|
+
diff = diff.reject { |line| line =~ /^(---|\+\+\+|\\\\)/ }
|
64
|
+
diff = diff.map do |line|
|
65
|
+
case line
|
66
|
+
when /^\+/
|
67
|
+
line.chomp.colorize(:green)
|
68
|
+
when /^-/
|
69
|
+
line.chomp.colorize(:red)
|
70
|
+
when /^@@/
|
71
|
+
line.chomp.colorize(:cyan)
|
72
|
+
else
|
73
|
+
line.chomp
|
74
|
+
end
|
75
|
+
end
|
76
|
+
puts diff.join("\n")
|
59
77
|
end
|
60
78
|
|
61
79
|
def events
|
@@ -88,6 +106,21 @@ class Bora
|
|
88
106
|
outputs
|
89
107
|
end
|
90
108
|
|
109
|
+
def parameters
|
110
|
+
parameters = @cfn_stack.parameters
|
111
|
+
if parameters
|
112
|
+
if parameters.length > 0
|
113
|
+
puts "Parameters for stack '#{@cfn_stack_name}'"
|
114
|
+
parameters.each { |parameter| puts parameter }
|
115
|
+
else
|
116
|
+
puts STACK_PARAMETERS_DO_NOT_EXIST_MESSAGE % @cfn_stack_name
|
117
|
+
end
|
118
|
+
else
|
119
|
+
puts STACK_DOES_NOT_EXIST_MESSAGE % @cfn_stack_name
|
120
|
+
end
|
121
|
+
parameters
|
122
|
+
end
|
123
|
+
|
91
124
|
def recreate(override_params = {})
|
92
125
|
generate(override_params)
|
93
126
|
invoke_action("recreate", @cfn_options)
|
data/lib/bora/stack_tasks.rb
CHANGED
@@ -16,6 +16,7 @@ class Bora
|
|
16
16
|
define_diff_task
|
17
17
|
define_events_task
|
18
18
|
define_outputs_task
|
19
|
+
define_parameters_task
|
19
20
|
define_recreate_task
|
20
21
|
define_show_task
|
21
22
|
define_show_current_task
|
@@ -68,6 +69,15 @@ class Bora
|
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
72
|
+
def define_parameters_task
|
73
|
+
within_namespace do
|
74
|
+
desc "Shows the parameters from the '#{@stack.stack_name}' stack"
|
75
|
+
task :parameters do
|
76
|
+
@stack.parameters
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
71
81
|
def define_recreate_task
|
72
82
|
within_namespace do
|
73
83
|
desc "Recreates (deletes then creates) the '#{@stack.stack_name}' stack"
|
data/lib/bora/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charles Blaxland
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- lib/bora.rb
|
159
159
|
- lib/bora/cfn/event.rb
|
160
160
|
- lib/bora/cfn/output.rb
|
161
|
+
- lib/bora/cfn/parameter.rb
|
161
162
|
- lib/bora/cfn/stack.rb
|
162
163
|
- lib/bora/cfn/stack_status.rb
|
163
164
|
- lib/bora/cfn/status.rb
|