stax 0.1.8 → 0.1.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a329f6a9e49e506570e4b869de676c6811be3cb0fc3725107ecd61dbd87574b0
4
- data.tar.gz: a96ea2c978ceab09a1e9f4686be93d5b96929ef84ac7e2972d437c0283c811fb
3
+ metadata.gz: 62a62442fc3683b993fbaecb2ea165f78da8b057314f745c582c62a9ca5cbe37
4
+ data.tar.gz: 8c5bf0945d8bd817c083a2defcdda7fdc40809d165391e31550c2e5597cb02a0
5
5
  SHA512:
6
- metadata.gz: 71d82f945a2bcd9c9964550ad456714a1f655e6a1df5cbfe19e355b807125306f4e70689ac231344ce55b09dc04d3f248d1c0330939b7f4649817f0a14e879ad
7
- data.tar.gz: 46a21736e16236d4f415830e4c07f931ff651a0dfc08e1c289e8d6419c5b0af465eef6df9b9d7a79052e4aae40acb447ef3230a2bab17c41bf655d8071ab3a08
6
+ metadata.gz: e7fc989c78022f0252acbe5ef75a0b4f6806e19cc6a7a40df3088b00820d7285acd8721334491602b94e7aea2f3dfa1ffb66ca1ad2c5d4b8bde56f9700d363fb
7
+ data.tar.gz: 3af7fee718d39db56438b1184d75e93dc62241c6885ee0af843c14aa6344a9d669a41ce88fff5c851bad3675c2ded2a560f797ffc97b221e0422edeb30332f5a
data/bin/stax CHANGED
@@ -5,6 +5,8 @@ require 'stax'
5
5
  Stax.load_staxfile
6
6
  begin
7
7
  Stax::Cli.start(ARGV)
8
- rescue Aws::CloudFormation::Errors::ExpiredToken => e
8
+ rescue Aws::CloudFormation::Errors::ExpiredToken,
9
+ Aws::CloudFormation::Errors::ValidationError,
10
+ Aws::Errors::MissingCredentialsError => e
9
11
  abort(e.message)
10
12
  end
data/lib/stax/aws/cfn.rb CHANGED
@@ -7,6 +7,7 @@ module Stax
7
7
  CREATE_IN_PROGRESS CREATE_FAILED CREATE_COMPLETE
8
8
  ROLLBACK_IN_PROGRESS ROLLBACK_FAILED ROLLBACK_COMPLETE
9
9
  DELETE_IN_PROGRESS DELETE_FAILED
10
+ IMPORT_IN_PROGRESS IMPORT_COMPLETE IMPORT_ROLLBACK_IN_PROGRESS IMPORT_ROLLBACK_FAILED IMPORT_ROLLBACK_COMPLETE
10
11
  UPDATE_IN_PROGRESS UPDATE_COMPLETE_CLEANUP_IN_PROGRESS UPDATE_COMPLETE
11
12
  UPDATE_ROLLBACK_IN_PROGRESS UPDATE_ROLLBACK_FAILED UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS UPDATE_ROLLBACK_COMPLETE
12
13
  REVIEW_IN_PROGRESS
data/lib/stax/base.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'thor'
2
2
  require 'stax/aws/sts'
3
+ require 'aws-sdk-ssm'
3
4
 
4
5
  ## clean exit on ctrl-c for all methods
5
6
  trap('SIGINT', 'EXIT')
@@ -28,6 +29,13 @@ module Stax
28
29
  @_aws_region ||= ENV['AWS_REGION']
29
30
  end
30
31
 
32
+ ## we commonly want to lookup SSM parameters to use as stack parameters
33
+ def aws_ssm_get(name, region: nil)
34
+ ::Aws::SSM::Client.new({region: region}.compact).get_parameter(name: name)&.parameter&.value
35
+ rescue ::Aws::SSM::Errors::ParameterNotFound
36
+ fail_task("#{name} not found in #{region||aws_region}")
37
+ end
38
+
31
39
  ## find or create a stack object
32
40
  def stack(id)
33
41
  c = id.to_s.split(/[_-]/).map(&:capitalize).join # convert symbol to class string
data/lib/stax/cli/ls.rb CHANGED
@@ -2,37 +2,43 @@ module Stax
2
2
  class Cli < Base
3
3
 
4
4
  no_commands do
5
+ ## fields to show in output
6
+ def ls_stack_fields(s)
7
+ [ s.stack_name, s.creation_time, color(s.stack_status, Aws::Cfn::COLORS) ]
8
+ end
9
+
10
+ ## list stacks from Staxfile in given order
5
11
  def ls_staxfile_stacks
6
- stacks = Aws::Cfn.stacks.each_with_object({}) { |s, h| h[s.stack_name] = s }
7
12
  print_table Stax.stack_list.map { |id|
8
13
  name = stack(id).stack_name
9
- if (s = stacks[name])
10
- [s.stack_name, s.creation_time, color(s.stack_status, Aws::Cfn::COLORS), s.template_description]
14
+ if (s = Aws::Cfn.describe(name))
15
+ ls_stack_fields(s)
11
16
  else
12
- options[:existing] ? nil : [name, '-']
17
+ [ name, '-' ]
13
18
  end
14
- }.compact
19
+ }
15
20
  end
16
21
 
22
+ ## list all extant stacks we think match our prefix
17
23
  def ls_stacks_with_prefix(prefix)
18
24
  print_table Aws::Cfn.stacks.select { |s|
19
25
  s.stack_name.start_with?(prefix || stack_prefix)
20
26
  }.map { |s|
21
- [s.stack_name, s.creation_time, color(s.stack_status, Aws::Cfn::COLORS), s.template_description]
27
+ ls_stack_fields(s)
22
28
  }.sort
23
29
  end
24
30
 
31
+ ## list all stacks in account
25
32
  def ls_account_stacks
26
33
  print_table Aws::Cfn.stacks.map { |s|
27
- [s.stack_name, s.creation_time, color(s.stack_status, Aws::Cfn::COLORS), s.template_description]
34
+ ls_stack_fields(s)
28
35
  }.sort
29
36
  end
30
37
  end
31
38
 
32
39
  desc 'ls [PREFIX]', 'list stacks'
33
- method_option :existing, aliases: '-e', type: :boolean, default: false, desc: 'list just existing stacks'
34
- method_option :all, aliases: '-a', type: :boolean, default: false, desc: 'list all running stacks with our prefix'
35
- method_option :account, aliases: '-A', type: :boolean, default: false, desc: 'list all running stacks in account'
40
+ method_option :all, aliases: '-a', type: :boolean, default: false, desc: 'list all running stacks with our prefix'
41
+ method_option :account, aliases: '-A', type: :boolean, default: false, desc: 'list all running stacks in account'
36
42
  def ls(prefix = nil)
37
43
  if options[:account]
38
44
  ls_account_stacks
@@ -44,4 +50,4 @@ module Stax
44
50
  end
45
51
 
46
52
  end
47
- end
53
+ end
data/lib/stax/cli.rb CHANGED
@@ -9,6 +9,7 @@ module Stax
9
9
  class Cli < Base
10
10
  class_option :branch, type: :string, default: Git.branch, desc: 'git branch to use'
11
11
  class_option :app, type: :string, default: File.basename(Git.toplevel), desc: 'application name'
12
+
12
13
  ## silence deprecation warning
13
14
  ## https://github.com/erikhuda/thor/blob/fb625b223465692a9d8a88cc2a483e126f1a8978/CHANGELOG.md#100
14
15
  def self.exit_on_failure?
@@ -158,6 +158,25 @@ module Stax
158
158
  end
159
159
  end
160
160
 
161
+ desc 'write-forwarding', 'control write-forwarding'
162
+ method_option :disable, aliases: '-d', type: :boolean, desc: 'disable write-forwarding'
163
+ method_option :enable, aliases: '-e', type: :boolean, desc: 'enable write-forwarding'
164
+ def write_forwarding
165
+ stack_db_clusters.map(&:physical_resource_id).each do |cluster|
166
+ if options[:enable]
167
+ puts "#{cluster} enabling write-forwarding"
168
+ Aws::Rds.client.modify_db_cluster(db_cluster_identifier: cluster, enable_global_write_forwarding: true)
169
+ elsif options[:disable]
170
+ puts "#{cluster} disabling write-forwarding"
171
+ Aws::Rds.client.modify_db_cluster(db_cluster_identifier: cluster, enable_global_write_forwarding: false)
172
+ else
173
+ print_table Aws::Rds.client.describe_db_clusters(db_cluster_identifier: cluster).db_clusters.map { |c|
174
+ [ c.db_cluster_identifier, c.global_write_forwarding_status || '-' ]
175
+ }
176
+ end
177
+ end
178
+ end
179
+
161
180
  end
162
181
  end
163
182
  end
@@ -21,4 +21,4 @@ module Stax
21
21
  end
22
22
 
23
23
  end
24
- end
24
+ end
data/lib/stax/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Stax
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.11'
3
3
  end
data/lib/stax.rb CHANGED
@@ -20,26 +20,26 @@ require 'stax/stack/exports'
20
20
  require 'stax/stack/resources'
21
21
  require 'stax/stack/drift'
22
22
 
23
- require 'stax/mixin/ec2'
24
- require 'stax/mixin/alb'
25
- require 'stax/mixin/elb'
26
- require 'stax/mixin/sg'
23
+ # require 'stax/mixin/ec2'
24
+ # require 'stax/mixin/alb'
25
+ # require 'stax/mixin/elb'
26
+ # require 'stax/mixin/sg'
27
27
  require 'stax/mixin/s3'
28
- require 'stax/mixin/asg'
29
- require 'stax/mixin/ecs'
30
- require 'stax/mixin/ecr'
31
- require 'stax/mixin/sqs'
32
- require 'stax/mixin/kms'
33
- require 'stax/mixin/ssm'
34
- require 'stax/mixin/keypair'
35
- require 'stax/mixin/emr'
36
- require 'stax/mixin/ssh'
28
+ # require 'stax/mixin/asg'
29
+ # require 'stax/mixin/ecs'
30
+ # require 'stax/mixin/ecr'
31
+ # require 'stax/mixin/sqs'
32
+ # require 'stax/mixin/kms'
33
+ # require 'stax/mixin/ssm'
34
+ # require 'stax/mixin/keypair'
35
+ # require 'stax/mixin/emr'
36
+ # require 'stax/mixin/ssh'
37
37
  require 'stax/mixin/lambda'
38
38
  require 'stax/mixin/dynamodb'
39
39
  require 'stax/mixin/logs'
40
- require 'stax/mixin/apigw'
41
- require 'stax/mixin/firehose'
40
+ # require 'stax/mixin/apigw'
41
+ # require 'stax/mixin/firehose'
42
42
  require 'stax/mixin/codebuild'
43
43
  require 'stax/mixin/codepipeline'
44
- require 'stax/mixin/rds'
45
- require 'stax/mixin/cloudfront'
44
+ # require 'stax/mixin/rds'
45
+ # require 'stax/mixin/cloudfront'
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.1.8
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lister
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-26 00:00:00.000000000 Z
11
+ date: 2022-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -610,7 +610,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
610
610
  - !ruby/object:Gem::Version
611
611
  version: '0'
612
612
  requirements: []
613
- rubygems_version: 3.1.4
613
+ rubygems_version: 3.1.6
614
614
  signing_key:
615
615
  specification_version: 4
616
616
  summary: Control Cloudformation stack and other stuff.