marty 2.4.2 → 2.4.3

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
- 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