stax 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|