stax 0.0.7 → 0.0.8
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/lib/stax/cli/crud.rb +4 -2
- data/lib/stax/generators/generator/templates/generator.rb.erb +10 -0
- data/lib/stax/mixin/dynamodb.rb +1 -0
- data/lib/stax/mixin/dynamodb/local.rb +69 -0
- data/lib/stax/version.rb +1 -1
- data/stax.gemspec +2 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee309ab8e6e330d1d4a048112e92ef4baa447a476d424aa603ef6ab8ba5d8373
|
4
|
+
data.tar.gz: b961c4bd5be7fc88e23b07a36fd69ab9f3d308c490e32ddac51d4ff1aace36f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6190e8b3ebbac9249c4e4a506f940250dac24c9601453d7d956ef177ac71c62c885a7f784f971bdf611378719bd98c0b074f2470172c77963e9f7227941a2f0
|
7
|
+
data.tar.gz: 1cf0747c5ed623d09612a3e19a55e6324afd7dc7bce69eb7f976464ec027cfa80d029baaa330dad80abe0d1ff8c2f4b900efed9b1b7034fe7b1ef6c9eb1206f0
|
data/lib/stax/cli/crud.rb
CHANGED
@@ -27,8 +27,10 @@ module Stax
|
|
27
27
|
desc 'update', 'meta update task'
|
28
28
|
def update
|
29
29
|
stack_objects.each do |s|
|
30
|
-
if s.exists?
|
31
|
-
s.update
|
30
|
+
if s.exists?
|
31
|
+
y_or_n?("Update #{s.stack_name}?", :yellow) && s.update
|
32
|
+
else
|
33
|
+
say("#{s.stack_name} does not exist")
|
32
34
|
end
|
33
35
|
end
|
34
36
|
end
|
@@ -7,6 +7,10 @@ module Stax
|
|
7
7
|
|
8
8
|
# see https://www.rubydoc.info/github/wycats/thor/Thor/Actions for methods
|
9
9
|
|
10
|
+
# def check_args
|
11
|
+
# usage! if args.size != 1
|
12
|
+
# end
|
13
|
+
|
10
14
|
# def create_file
|
11
15
|
# create_file(filename) do
|
12
16
|
# content
|
@@ -21,6 +25,12 @@ module Stax
|
|
21
25
|
# empty_directory(path)
|
22
26
|
# end
|
23
27
|
|
28
|
+
# private
|
29
|
+
|
30
|
+
# def self.banner(*args)
|
31
|
+
# "#{basename} generate #{command_name} ARG"
|
32
|
+
# end
|
33
|
+
|
24
34
|
end
|
25
35
|
end
|
26
36
|
end
|
data/lib/stax/mixin/dynamodb.rb
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Stax
|
4
|
+
module Cmd
|
5
|
+
class DynamoDB < SubCommand
|
6
|
+
|
7
|
+
no_commands do
|
8
|
+
|
9
|
+
## client for dynamodb-local endpoint
|
10
|
+
def client
|
11
|
+
@_client ||= ::Aws::DynamoDB::Client.new(endpoint: 'http://localhost:8000')
|
12
|
+
end
|
13
|
+
|
14
|
+
## get CFN template and return hash of table configs
|
15
|
+
def dynamo_local_tables
|
16
|
+
JSON.parse(my.cfn_template).fetch('Resources', {}).select do |_, v|
|
17
|
+
v['Type'] == 'AWS::DynamoDB::Table'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
## convert some CFN properties to their SDK equivalents
|
22
|
+
def dynamo_payload_from_template(id, template)
|
23
|
+
template['Properties'].tap do |p|
|
24
|
+
p['TableName'] ||= id # use logical id if no name in template
|
25
|
+
p['StreamSpecification']&.merge!( 'StreamEnabled' => true )
|
26
|
+
p['SSESpecification'] &&= { 'Enabled' => p.dig('SSESpecification', 'SSEEnabled') }
|
27
|
+
p.delete('TimeToLiveSpecification')
|
28
|
+
p.delete('Tags')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
## convert property names to ruby SDK form
|
33
|
+
def dynamo_ruby_payload(payload)
|
34
|
+
payload&.deep_transform_keys do |key|
|
35
|
+
key.to_s.underscore.to_sym
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
## create table
|
40
|
+
def dynamo_local_create(payload)
|
41
|
+
client.create_table(dynamo_ruby_payload(payload))
|
42
|
+
rescue ::Aws::DynamoDB::Errors::ResourceInUseException => e
|
43
|
+
warn(e.message) # table exists
|
44
|
+
rescue Seahorse::Client::NetworkingError => e
|
45
|
+
warn(e.message) # dynamodb-local probably not running
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
desc 'local', 'create local tables from template'
|
50
|
+
method_option :tables, aliases: '-t', type: :array, default: nil, desc: 'filter table ids'
|
51
|
+
method_option :payload, aliases: '-p', type: :boolean, default: false, desc: 'just output payload'
|
52
|
+
def local
|
53
|
+
tables = dynamo_local_tables
|
54
|
+
tables.slice!(*options[:tables]) if options[:tables]
|
55
|
+
|
56
|
+
tables.each do |id, value|
|
57
|
+
payload = dynamo_payload_from_template(id, value)
|
58
|
+
if options[:payload]
|
59
|
+
puts JSON.pretty_generate(payload)
|
60
|
+
else
|
61
|
+
puts "create table #{id}"
|
62
|
+
dynamo_local_create(payload)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/stax/version.rb
CHANGED
data/stax.gemspec
CHANGED
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.14"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "docile", "1.2.0"
|
27
|
+
spec.add_development_dependency "stax-examples"
|
26
28
|
|
27
29
|
spec.add_dependency('aws-sdk', '~> 2')
|
28
30
|
spec.add_dependency('thor')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Lister
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: docile
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.2.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.2.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: stax-examples
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: aws-sdk
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,6 +213,7 @@ files:
|
|
185
213
|
- lib/stax/mixin/codepipeline.rb
|
186
214
|
- lib/stax/mixin/dynamodb.rb
|
187
215
|
- lib/stax/mixin/dynamodb/backup.rb
|
216
|
+
- lib/stax/mixin/dynamodb/local.rb
|
188
217
|
- lib/stax/mixin/dynamodb/throughput.rb
|
189
218
|
- lib/stax/mixin/ec2.rb
|
190
219
|
- lib/stax/mixin/ecr.rb
|