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 +5 -5
- data/lib/marty/aws/base.rb +8 -44
- data/lib/marty/aws/request.rb +44 -0
- data/lib/marty/version.rb +1 -1
- data/other/marty/diagnostic/aws/ec2_instance.rb +2 -6
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 12916fbcdae9c35d9e8005866bf47f499e87d52c3ce6a11baf6c1c27cccfa30d
|
4
|
+
data.tar.gz: 7adf195afe0428efc1d50f1c30571a609e052d7c1a163aeb46832b77a9d8b81b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0db85cccbd634db5c5edb59d44184778de62b75c8854f8f5b00fa2a7f35555f757a94f0d76b335566d91a9dc0b8044c722e831e0242cbb29893c1c62b8f764c5
|
7
|
+
data.tar.gz: a749f278a997cffa3374070fb9d562c3d703213666cb97b7595d8958a56a158eb41a241631c5d26573b07375ade09b07fd9eb541681d550047d6abf54bc73dd0
|
data/lib/marty/aws/base.rb
CHANGED
@@ -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
|
50
|
-
|
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
|
55
|
-
|
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
|
86
|
-
|
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
|
data/lib/marty/version.rb
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
class Marty::Diagnostic::Aws::Ec2Instance < Marty::Aws::
|
2
|
-
|
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.
|
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-
|
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.
|
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
|