marty 2.4.2 → 2.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4069f0be0ac4faa38738a0aa5f1a76fa56fcbed5
4
- data.tar.gz: 832fed4b13056de3a94fbcaebb9fa463fd475f0b
2
+ SHA256:
3
+ metadata.gz: 12916fbcdae9c35d9e8005866bf47f499e87d52c3ce6a11baf6c1c27cccfa30d
4
+ data.tar.gz: 7adf195afe0428efc1d50f1c30571a609e052d7c1a163aeb46832b77a9d8b81b
5
5
  SHA512:
6
- metadata.gz: 57cd24df5c095785c4a22d8c801db32a1e504e773bf0d0edce681d53edd71c1b22e55925bcd1fe931dc71457d88b720ad1ad04f1010d50d07df0dfe93caf52e1
7
- data.tar.gz: bbcb53ecee094328f5271f5f60b90daa4f606729b196389d0e2316cb14cb53318ef57b603626fca446521aea19a9f734b9b61f1014ec5a7c45e8f4b4bb05bcba
6
+ metadata.gz: 0db85cccbd634db5c5edb59d44184778de62b75c8854f8f5b00fa2a7f35555f757a94f0d76b335566d91a9dc0b8044c722e831e0242cbb29893c1c62b8f764c5
7
+ data.tar.gz: a749f278a997cffa3374070fb9d562c3d703213666cb97b7595d8958a56a158eb41a241631c5d26573b07375ade09b07fd9eb541681d550047d6abf54bc73dd0
@@ -1,4 +1,6 @@
1
1
  class Marty::Aws::Base
2
+ # this base class is used for instance information/credential acquisition
3
+
2
4
  # aws reserved host used to get instance meta-data
3
5
  META_DATA_HOST = '169.254.169.254'
4
6
 
@@ -46,53 +48,15 @@ class Marty::Aws::Base
46
48
  query_meta_data('iam/security-credentials').to_s
47
49
  end
48
50
 
49
- def get_credentials
50
- res = JSON.parse(query_meta_data("iam/security-credentials/#{@role}"))
51
- res.symbolize_keys
51
+ def sym obj
52
+ obj.each_with_object({}){|(k,v),h| h[k.underscore.to_sym] = v}
52
53
  end
53
54
 
54
- def get_document
55
- res = JSON.parse(query_dynamic('instance-identity/document'))
56
- res.symbolize_keys
57
- end
58
-
59
- def request info, params = {}
60
- action = info[:action]
61
- endpoint = info[:endpoint]
62
- method = info[:method] || :get
63
-
64
- default = action ? {'Action' => action, 'Version' => @version} : {}
65
-
66
- host = "#{@service}.#{@doc[:region]}.amazonaws.com"
67
-
68
- url = "https://#{host}/"
69
- url += endpoint if endpoint
70
- url += '?' + (default + params).map{|a, v| "#{a}=#{v}"}.join('&') unless
71
- params.empty?
72
-
73
- sig = Aws::Sigv4::Signer.new(service: @service,
74
- region: @doc[:region],
75
- access_key_id: @creds[:access_key_id],
76
- secret_access_key: @creds[:secret_access_key],
77
- session_token: @creds[:token])
78
- signed_url = sig.presign_url(http_method:'GET', url: url)
79
-
80
- http = Net::HTTP.new(host, 443)
81
- http.use_ssl = true
82
- Net::HTTP.send(method, signed_url)
55
+ def get_credentials
56
+ sym(JSON.parse(query_meta_data("iam/security-credentials/#{@role}")))
83
57
  end
84
58
 
85
- def ensure_resp path, obj
86
- if path == []
87
- obj.is_a?(Array) ? obj : [obj]
88
- elsif obj.is_a?(Hash)
89
- key = path.shift
90
- raise "Unexpected AWS Response: #{key} missing" unless
91
- (obj.is_a?(Hash) && obj[key])
92
-
93
- ensure_resp(path, obj[key])
94
- else
95
- obj.map{|s| ensure_resp(path.clone, s)}.flatten(1)
96
- end
59
+ def get_document
60
+ sym(JSON.parse(query_dynamic('instance-identity/document')))
97
61
  end
98
62
  end
@@ -0,0 +1,44 @@
1
+ class Marty::Aws::Request < Marty::Aws::Base
2
+ # this class is used to make aws api requests for specific services
3
+ # currently only used for diagnostics
4
+
5
+ def request info, params = {}
6
+ action = info[:action]
7
+ endpoint = info[:endpoint]
8
+ method = info[:method] || :get
9
+
10
+ default = action ? {'Action' => action, 'Version' => @version} : {}
11
+
12
+ host = "#{@service}.#{@doc[:region]}.amazonaws.com"
13
+
14
+ url = "https://#{host}/"
15
+ url += endpoint if endpoint
16
+ url += '?' + (default + params).map{|a, v| "#{a}=#{v}"}.join('&') unless
17
+ params.empty?
18
+
19
+ sig = Aws::Sigv4::Signer.new(service: @service,
20
+ region: @doc[:region],
21
+ access_key_id: @creds[:access_key_id],
22
+ secret_access_key: @creds[:secret_access_key],
23
+ session_token: @creds[:token])
24
+ signed_url = sig.presign_url(http_method:'GET', url: url)
25
+
26
+ http = Net::HTTP.new(host, 443)
27
+ http.use_ssl = true
28
+ Net::HTTP.send(method, signed_url)
29
+ end
30
+
31
+ def ensure_resp path, obj
32
+ if path == []
33
+ obj.is_a?(Array) ? obj : [obj]
34
+ elsif obj.is_a?(Hash)
35
+ key = path.shift
36
+ raise "Unexpected AWS Response: #{key} missing" unless
37
+ (obj.is_a?(Hash) && obj[key])
38
+
39
+ ensure_resp(path, obj[key])
40
+ else
41
+ obj.map{|s| ensure_resp(path.clone, s)}.flatten(1)
42
+ end
43
+ end
44
+ end
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = "2.4.2"
2
+ VERSION = "2.4.3"
3
3
  end
@@ -1,9 +1,5 @@
1
- class Marty::Diagnostic::Aws::Ec2Instance < Marty::Aws::Base
2
- # aws reserved host used to get instance meta-data
3
- META_DATA_HOST = '169.254.169.254'
4
-
5
- attr_reader :host,
6
- :tag,
1
+ class Marty::Diagnostic::Aws::Ec2Instance < Marty::Aws::Request
2
+ attr_reader :tag,
7
3
  :nodes,
8
4
  :instances
9
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marty
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2018-11-13 00:00:00.000000000 Z
17
+ date: 2018-11-19 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: pg
@@ -491,6 +491,7 @@ files:
491
491
  - gemini_deprecations.md
492
492
  - lib/marty.rb
493
493
  - lib/marty/aws/base.rb
494
+ - lib/marty/aws/request.rb
494
495
  - lib/marty/content_handler.rb
495
496
  - lib/marty/data_change.rb
496
497
  - lib/marty/data_conversion.rb
@@ -1722,7 +1723,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1722
1723
  version: '0'
1723
1724
  requirements: []
1724
1725
  rubyforge_project:
1725
- rubygems_version: 2.6.14
1726
+ rubygems_version: 2.7.7
1726
1727
  signing_key:
1727
1728
  specification_version: 4
1728
1729
  summary: A framework for working with versioned data