swa 0.6.0 → 0.7.0

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