kumogata 0.4.6 → 0.4.7
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 +6 -3
- data/lib/kumogata/client.rb +10 -1
- data/lib/kumogata/version.rb +1 -1
- data/spec/kumogata_export_spec.rb +63 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f4c18be7f8c6709036ac84848b986f07c265e32
|
4
|
+
data.tar.gz: 5e47465957e49072b5ba4d3a7b47d3c9c6ebab86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c62012998716bbbd4b90a377ffcb06861a246a7d338da5064564a34fc72371d0c0d6ee083182bac71801f695a78fc68f443f9c62a19419d04c312e7e5e22abcf
|
7
|
+
data.tar.gz: 8544c375e53b762c98000896c6ef4e0b098cb4a6b48113806dfa7206215e54d98b836fe4d112c377a6e0c16e09cd8ca4aab593f752f2e37bee04d28e2e17048c
|
data/README.md
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
|
6
6
|
Kumogata is a tool for [AWS CloudFormation](https://aws.amazon.com/cloudformation/).
|
7
7
|
|
8
|
-
[](http://badge.fury.io/rb/kumogata)
|
9
|
+
[](https://drone.io/github.com/winebarrel/kumogata/latest)
|
10
10
|
|
11
11
|
It can define a template in Ruby DSL, such as:
|
12
12
|
|
@@ -54,6 +54,8 @@ end
|
|
54
54
|
|
55
55
|
Ruby template structure is almost the same as [JSON template](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-structure.html).
|
56
56
|
|
57
|
+
(**You can also use JSON templates**)
|
58
|
+
|
57
59
|
## Installation
|
58
60
|
|
59
61
|
$ gem install kumogata
|
@@ -74,7 +76,7 @@ Commands:
|
|
74
76
|
show-events STACK_NAME Show events for a specified stack
|
75
77
|
show-outputs STACK_NAME Show outputs for a specified stack
|
76
78
|
show-resources STACK_NAME Show resources for a specified stack
|
77
|
-
diff PATH_OR_URL1 PATH_OR_URL2 Compare templates logically
|
79
|
+
diff PATH_OR_URL1 PATH_OR_URL2 Compare templates logically (file, http://..., stack://...)
|
78
80
|
|
79
81
|
Options:
|
80
82
|
-k, --access-key ACCESS_KEY
|
@@ -95,6 +97,7 @@ Options:
|
|
95
97
|
--command-result-log PATH
|
96
98
|
--force
|
97
99
|
-w, --ignore-all-space
|
100
|
+
--color
|
98
101
|
--no-color
|
99
102
|
--debug
|
100
103
|
```
|
data/lib/kumogata/client.rb
CHANGED
@@ -72,7 +72,16 @@ class Kumogata::Client
|
|
72
72
|
validate_stack_name(stack_name)
|
73
73
|
|
74
74
|
template = export_template(stack_name)
|
75
|
-
|
75
|
+
format = @options.format || :ruby
|
76
|
+
|
77
|
+
case format
|
78
|
+
when :ruby
|
79
|
+
devaluate_template(template).chomp.colorize_as(:ruby)
|
80
|
+
when :json
|
81
|
+
JSON.pretty_generate(template).colorize_as(:json)
|
82
|
+
else
|
83
|
+
raise "Unknown format: #{format}"
|
84
|
+
end
|
76
85
|
end
|
77
86
|
|
78
87
|
def show_events(stack_name)
|
data/lib/kumogata/version.rb
CHANGED
@@ -56,4 +56,67 @@ Outputs do
|
|
56
56
|
end
|
57
57
|
EOS
|
58
58
|
end
|
59
|
+
|
60
|
+
it 'export a JSON template' do
|
61
|
+
json = <<-EOS
|
62
|
+
{
|
63
|
+
"Resources": {
|
64
|
+
"myEC2Instance": {
|
65
|
+
"Type": "AWS::EC2::Instance",
|
66
|
+
"Properties": {
|
67
|
+
"ImageId": "ami-XXXXXXXX",
|
68
|
+
"InstanceType": "t1.micro"
|
69
|
+
}
|
70
|
+
}
|
71
|
+
},
|
72
|
+
"Outputs": {
|
73
|
+
"AZ": {
|
74
|
+
"Value": {
|
75
|
+
"Fn::GetAtt": [
|
76
|
+
"myEC2Instance",
|
77
|
+
"AvailabilityZone"
|
78
|
+
]
|
79
|
+
}
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
EOS
|
84
|
+
|
85
|
+
template = run_client(:export, :arguments => ['MyStack'], :options => {:format => :json}) do |client, cf|
|
86
|
+
stack = make_double('stack') do |obj|
|
87
|
+
obj.should_receive(:status) { 'CREATE_COMPLETE' }
|
88
|
+
obj.should_receive(:template) { json }
|
89
|
+
end
|
90
|
+
|
91
|
+
stacks = make_double('stacks') do |obj|
|
92
|
+
obj.should_receive(:[]).with('MyStack') { stack }
|
93
|
+
end
|
94
|
+
|
95
|
+
cf.should_receive(:stacks) { stacks }
|
96
|
+
end
|
97
|
+
|
98
|
+
expect(template).to eq((<<-EOS).chomp)
|
99
|
+
{
|
100
|
+
"Resources": {
|
101
|
+
"myEC2Instance": {
|
102
|
+
"Type": "AWS::EC2::Instance",
|
103
|
+
"Properties": {
|
104
|
+
"ImageId": "ami-XXXXXXXX",
|
105
|
+
"InstanceType": "t1.micro"
|
106
|
+
}
|
107
|
+
}
|
108
|
+
},
|
109
|
+
"Outputs": {
|
110
|
+
"AZ": {
|
111
|
+
"Value": {
|
112
|
+
"Fn::GetAtt": [
|
113
|
+
"myEC2Instance",
|
114
|
+
"AvailabilityZone"
|
115
|
+
]
|
116
|
+
}
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
EOS
|
121
|
+
end
|
59
122
|
end
|