swa 0.6.0 → 0.7.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.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +11 -0
  3. data/lib/swa/cli/cloud_formation_command.rb +1 -1
  4. data/lib/swa/cli/collection_behaviour.rb +8 -0
  5. data/lib/swa/cli/ec2_command.rb +50 -1
  6. data/lib/swa/cli/elb_command.rb +53 -0
  7. data/lib/swa/cli/glue_command.rb +192 -0
  8. data/lib/swa/cli/iam_command.rb +92 -4
  9. data/lib/swa/cli/kms_command.rb +1 -1
  10. data/lib/swa/cli/main_command.rb +4 -0
  11. data/lib/swa/cli/s3_command.rb +70 -1
  12. data/lib/swa/cli/selector.rb +4 -0
  13. data/lib/swa/cloud_formation/stack.rb +4 -0
  14. data/lib/swa/ec2/image.rb +4 -0
  15. data/lib/swa/ec2/instance.rb +10 -1
  16. data/lib/swa/ec2/key_pair.rb +4 -0
  17. data/lib/swa/ec2/security_group.rb +6 -0
  18. data/lib/swa/ec2/snapshot.rb +13 -4
  19. data/lib/swa/ec2/subnet.rb +4 -0
  20. data/lib/swa/ec2/volume.rb +4 -0
  21. data/lib/swa/ec2/vpc.rb +4 -0
  22. data/lib/swa/elb/load_balancer.rb +24 -0
  23. data/lib/swa/glue/crawler.rb +28 -0
  24. data/lib/swa/glue/database.rb +17 -0
  25. data/lib/swa/glue/job.rb +21 -0
  26. data/lib/swa/glue/job_bookmark_entry.rb +17 -0
  27. data/lib/swa/glue/job_run.rb +26 -0
  28. data/lib/swa/glue/partition.rb +26 -0
  29. data/lib/swa/glue/table.rb +17 -0
  30. data/lib/swa/iam/credentials.rb +31 -0
  31. data/lib/swa/iam/group.rb +11 -1
  32. data/lib/swa/iam/instance_profile.rb +26 -0
  33. data/lib/swa/iam/policy.rb +4 -0
  34. data/lib/swa/iam/role.rb +9 -0
  35. data/lib/swa/iam/user.rb +4 -0
  36. data/lib/swa/kms/alias.rb +4 -0
  37. data/lib/swa/record.rb +6 -0
  38. data/lib/swa/s3/bucket.rb +13 -1
  39. data/lib/swa/s3/object.rb +5 -0
  40. data/lib/swa/s3/object_version.rb +48 -0
  41. data/lib/swa/version.rb +1 -1
  42. data/swa.gemspec +12 -3
  43. metadata +139 -15
@@ -9,6 +9,10 @@ module Swa
9
9
 
10
10
  include TaggedResource
11
11
 
12
+ def id
13
+ i.instance_id
14
+ end
15
+
12
16
  def summary
13
17
  [
14
18
  field(i, :instance_id),
@@ -17,7 +21,8 @@ module Swa
17
21
  pad(i.state.name, 10),
18
22
  field(i, :private_ip_address),
19
23
  field(i, :public_ip_address),
20
- quoted(name)
24
+ quoted(name),
25
+ decorated_key_name
21
26
  ].join(" ")
22
27
  end
23
28
 
@@ -37,6 +42,10 @@ module Swa
37
42
 
38
43
  alias_method :i, :aws_resource
39
44
 
45
+ def decorated_key_name
46
+ "🔑 #{i.key_name}" if i.key_name
47
+ end
48
+
40
49
  end
41
50
 
42
51
  end
@@ -5,6 +5,10 @@ module Swa
5
5
 
6
6
  class KeyPair < Resource
7
7
 
8
+ def id
9
+ name
10
+ end
11
+
8
12
  def summary
9
13
  [
10
14
  pad(name, 44),
@@ -6,6 +6,10 @@ module Swa
6
6
 
7
7
  class SecurityGroup < Resource
8
8
 
9
+ def id
10
+ sg.group_id
11
+ end
12
+
9
13
  def summary
10
14
  [
11
15
  field(sg, :group_id),
@@ -18,6 +22,8 @@ module Swa
18
22
  aws_resource.name
19
23
  end
20
24
 
25
+ delegate :delete
26
+
21
27
  private
22
28
 
23
29
  alias_method :sg, :aws_resource
@@ -8,17 +8,26 @@ module Swa
8
8
 
9
9
  include TaggedResource
10
10
 
11
+ def id
12
+ s.snapshot_id
13
+ end
14
+
11
15
  def summary
12
16
  [
13
17
  field(s, :snapshot_id),
14
18
  field(s, :volume_id),
15
- sprintf("%5d", s.volume_size),
16
- s.start_time.iso8601,
17
- rpad(s.progress, 4),
18
- quoted(s.description)
19
+ sprintf("%5d", volume_size),
20
+ start_time.iso8601,
21
+ rpad(progress, 4),
22
+ quoted(description)
19
23
  ].join(" ")
20
24
  end
21
25
 
26
+ delegate :description
27
+ delegate :progress
28
+ delegate :start_time
29
+ delegate :volume_size
30
+
22
31
  delegate :delete
23
32
 
24
33
  private
@@ -8,6 +8,10 @@ module Swa
8
8
 
9
9
  include TaggedResource
10
10
 
11
+ def id
12
+ subnet.subnet_id
13
+ end
14
+
11
15
  def summary
12
16
  [
13
17
  field(subnet, :subnet_id),
@@ -8,6 +8,10 @@ module Swa
8
8
 
9
9
  include TaggedResource
10
10
 
11
+ def id
12
+ v.volume_id
13
+ end
14
+
11
15
  def summary
12
16
  [
13
17
  field(v, :volume_id),
data/lib/swa/ec2/vpc.rb CHANGED
@@ -8,6 +8,10 @@ module Swa
8
8
 
9
9
  include TaggedResource
10
10
 
11
+ def id
12
+ vpc.vpc_id
13
+ end
14
+
11
15
  def summary
12
16
  [
13
17
  field(vpc, :vpc_id),
@@ -0,0 +1,24 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module ELB
5
+
6
+ class LoadBalancer < Record
7
+
8
+ def summary
9
+ [
10
+ pad(name, 36),
11
+ scheme
12
+ ].join(" ")
13
+ end
14
+
15
+ def name
16
+ aws_record.load_balancer_name
17
+ end
18
+
19
+ delegate :scheme
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module Glue
5
+
6
+ class Crawler < Record
7
+
8
+ def summary
9
+ [
10
+ pad(name, 48),
11
+ pad(state, 10),
12
+ pad(last_crawl_status, 12),
13
+ role
14
+ ].join(" ")
15
+ end
16
+
17
+ delegate :name
18
+ delegate :state
19
+ delegate :role
20
+
21
+ def last_crawl_status
22
+ aws_record.last_crawl.status
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module Glue
5
+
6
+ class Database < Record
7
+
8
+ def summary
9
+ name
10
+ end
11
+
12
+ delegate :name
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module Glue
5
+
6
+ class Job < Record
7
+
8
+ def summary
9
+ [
10
+ pad(name, 48),
11
+ role
12
+ ].join(" ")
13
+ end
14
+
15
+ delegate :name
16
+ delegate :role
17
+
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module Glue
5
+
6
+ class JobBookmarkEntry < Record
7
+
8
+ def summary
9
+ job_bookmark
10
+ end
11
+
12
+ delegate :job_bookmark
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module Glue
5
+
6
+ class JobRun < Record
7
+
8
+ def summary
9
+ [
10
+ pad(id, 68),
11
+ pad(job_run_state, 8),
12
+ pad(started_on, 28)
13
+ ].join(" ")
14
+ end
15
+
16
+ delegate :id
17
+ delegate :job_run_state
18
+
19
+ def started_on
20
+ aws_record.started_on.iso8601
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module Glue
5
+
6
+ class Partition < Record
7
+
8
+ def summary
9
+ [
10
+ creation_time,
11
+ location
12
+ ].join(" ")
13
+ end
14
+
15
+ def location
16
+ aws_record.storage_descriptor.location
17
+ end
18
+
19
+ def creation_time
20
+ aws_record.creation_time.iso8601
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module Glue
5
+
6
+ class Table < Record
7
+
8
+ def summary
9
+ name
10
+ end
11
+
12
+ delegate :name
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,31 @@
1
+ module Swa
2
+ module IAM
3
+
4
+ class Credentials
5
+
6
+ def initialize(attributes = {})
7
+ attributes.to_h.each do |k,v|
8
+ send("#{k}=", v)
9
+ end
10
+ end
11
+
12
+ attr_accessor :access_key_id
13
+ attr_accessor :secret_access_key
14
+ attr_accessor :session_token
15
+
16
+ attr_accessor :expires_at
17
+ alias :expiration= :expires_at=
18
+
19
+ def to_env
20
+ {
21
+ "AWS_ACCESS_KEY_ID" => access_key_id,
22
+ "AWS_SECRET_ACCESS_KEY" => secret_access_key,
23
+ "AWS_SESSION_TOKEN" => session_token,
24
+ "AWS_SESSION_EXPIRES" => expires_at.iso8601
25
+ }
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
data/lib/swa/iam/group.rb CHANGED
@@ -5,8 +5,18 @@ module Swa
5
5
 
6
6
  class Group < Resource
7
7
 
8
+ def id
9
+ group.group_id
10
+ end
11
+
12
+ def name
13
+ group.group_name
14
+ end
15
+
16
+ delegate :arn
17
+
8
18
  def summary
9
- group.arn
19
+ arn
10
20
  end
11
21
 
12
22
  private
@@ -0,0 +1,26 @@
1
+ require "swa/resource"
2
+
3
+ module Swa
4
+ module IAM
5
+
6
+ class InstanceProfile < Resource
7
+
8
+ def id
9
+ profile.instance_profile_id
10
+ end
11
+
12
+ def summary
13
+ arn
14
+ end
15
+
16
+ delegate :name
17
+ delegate :arn
18
+
19
+ private
20
+
21
+ alias_method :profile, :aws_resource
22
+
23
+ end
24
+
25
+ end
26
+ end
@@ -6,6 +6,10 @@ module Swa
6
6
 
7
7
  class Policy < Resource
8
8
 
9
+ def id
10
+ policy.policy_id
11
+ end
12
+
9
13
  def summary
10
14
  [
11
15
  pad(policy.arn, 60),
data/lib/swa/iam/role.rb CHANGED
@@ -1,10 +1,19 @@
1
1
  require "swa/resource"
2
+ require "swa/iam/credentials"
2
3
 
3
4
  module Swa
4
5
  module IAM
5
6
 
6
7
  class Role < Resource
7
8
 
9
+ def id
10
+ role.role_id
11
+ end
12
+
13
+ def arn
14
+ role.arn
15
+ end
16
+
8
17
  def summary
9
18
  role.name
10
19
  end
data/lib/swa/iam/user.rb CHANGED
@@ -5,6 +5,10 @@ module Swa
5
5
 
6
6
  class User < Resource
7
7
 
8
+ def id
9
+ user.user_id
10
+ end
11
+
8
12
  def summary
9
13
  user.name
10
14
  end
data/lib/swa/kms/alias.rb CHANGED
@@ -5,6 +5,10 @@ module Swa
5
5
 
6
6
  class Alias < Record
7
7
 
8
+ def id
9
+ name
10
+ end
11
+
8
12
  def summary
9
13
  [
10
14
  pad(name, 36),
data/lib/swa/record.rb CHANGED
@@ -19,6 +19,12 @@ module Swa
19
19
  camelize_keys(aws_record.to_h)
20
20
  end
21
21
 
22
+ extend Forwardable
23
+
24
+ def self.delegate(*methods)
25
+ def_delegators :aws_record, *methods
26
+ end
27
+
22
28
  private
23
29
 
24
30
  attr_reader :aws_record
data/lib/swa/s3/bucket.rb CHANGED
@@ -1,15 +1,23 @@
1
1
  require "multi_json"
2
2
  require "swa/resource"
3
+ require "swa/s3/object"
4
+ require "swa/s3/object_version"
3
5
 
4
6
  module Swa
5
7
  module S3
6
8
 
7
9
  class Bucket < Resource
8
10
 
11
+ def id
12
+ name
13
+ end
14
+
9
15
  def summary
10
- bucket.name
16
+ name
11
17
  end
12
18
 
19
+ delegate :name
20
+
13
21
  def uri
14
22
  "s3://#{bucket.name}"
15
23
  end
@@ -26,6 +34,10 @@ module Swa
26
34
  Swa::S3::Object.list(aws_resource.objects(options))
27
35
  end
28
36
 
37
+ def object_versions(options = {})
38
+ Swa::S3::ObjectVersion.list(aws_resource.object_versions(options))
39
+ end
40
+
29
41
  def delete
30
42
  bucket.delete
31
43
  end
data/lib/swa/s3/object.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "swa/resource"
2
+ require "swa/s3/object_version"
2
3
 
3
4
  module Swa
4
5
  module S3
@@ -41,6 +42,10 @@ module Swa
41
42
  object.delete
42
43
  end
43
44
 
45
+ def version(version_id)
46
+ Swa::S3::ObjectVersion.new(object.version(version_id))
47
+ end
48
+
44
49
  private
45
50
 
46
51
  alias_method :object, :aws_resource
@@ -0,0 +1,48 @@
1
+ require "swa/resource"
2
+
3
+ module Swa
4
+ module S3
5
+
6
+ class ObjectVersion < Resource
7
+
8
+ def summary
9
+ [
10
+ version.last_modified.iso8601,
11
+ rpad(version.size, 10),
12
+ pad(version.id, 32),
13
+ uri
14
+ ].join(" ")
15
+ end
16
+
17
+ def key
18
+ version.key
19
+ end
20
+
21
+ def id
22
+ version.id
23
+ end
24
+
25
+ def uri
26
+ "s3://#{version.bucket_name}/#{version.key}"
27
+ end
28
+
29
+ def to_s
30
+ uri
31
+ end
32
+
33
+ def get_body
34
+ version.get.body
35
+ end
36
+
37
+ def delete
38
+ version.delete
39
+ end
40
+
41
+ private
42
+
43
+ alias_method :version, :aws_resource
44
+
45
+ end
46
+
47
+ end
48
+ end
data/lib/swa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Swa
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
data/swa.gemspec CHANGED
@@ -20,14 +20,23 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.12"
24
- spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "bundler", "~> 2.1"
24
+ spec.add_development_dependency "rake", "~> 12.0"
25
+
26
+ spec.add_runtime_dependency "aws-sdk-cloudformation", "~> 1"
27
+ spec.add_runtime_dependency "aws-sdk-ec2", "~> 1"
28
+ spec.add_runtime_dependency "aws-sdk-elasticloadbalancing", "~> 1"
29
+ spec.add_runtime_dependency "aws-sdk-glue", "~> 1"
30
+ spec.add_runtime_dependency "aws-sdk-iam", "~> 1"
31
+ spec.add_runtime_dependency "aws-sdk-kms", "~> 1"
32
+ spec.add_runtime_dependency "aws-sdk-s3", "~> 1"
33
+ spec.add_runtime_dependency "pry"
25
34
 
26
- spec.add_runtime_dependency "aws-sdk-resources", ">= 2.6.14"
27
35
  spec.add_runtime_dependency "chronic"
28
36
  spec.add_runtime_dependency "clamp", ">= 1.1.0"
29
37
  spec.add_runtime_dependency "console_logger"
30
38
  spec.add_runtime_dependency "multi_json"
39
+ spec.add_runtime_dependency "ox"
31
40
  spec.add_runtime_dependency "stackup", ">= 1.0.0"
32
41
 
33
42
  end