cloud66_agent 1.3.0 → 1.3.1
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 +4 -4
- data/.ruby-version +1 -1
- data/cloud66_agent.gemspec +1 -1
- data/lib/cloud66_agent/utils/version.rb +1 -1
- data/lib/cloud66_agent/utils/vital_signs.rb +23 -19
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51ef1d2f57617cdc1d773ba203a52f105f47437e
|
4
|
+
data.tar.gz: 76ef024511f59e0182a94eb39e4466cb38a0070e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc9c0e1e78b71b067235a022b776d68122e03f6d412e4c1b7b9c2d9c3e0a559c6044a7544b7281993921b7811ad94a3da70121247a8a4a597d77c7de351793f9
|
7
|
+
data.tar.gz: cb8c05474defa7dc3901c8dcb6dbeed028d1f7ee6f8ea52f59149ef602064bf22eaa74006adaf45b097228e2d7c85233b0880013744e5aa0972c9a18f6ac32aa
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.4.4
|
data/cloud66_agent.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.name = "cloud66_agent"
|
8
8
|
gem.version = Cloud66::Utils::Version.current
|
9
9
|
gem.platform = Gem::Platform::RUBY
|
10
|
-
gem.date = '
|
10
|
+
gem.date = '2018-04-10'
|
11
11
|
gem.authors = ["Cloud 66"]
|
12
12
|
gem.email = ['hello@cloud66.com']
|
13
13
|
gem.licenses = ['MIT']
|
@@ -2,40 +2,46 @@ module Cloud66
|
|
2
2
|
module Utils
|
3
3
|
class VitalSigns
|
4
4
|
|
5
|
+
IP_BLOCK_REGEX = /\d{,2}|1\d{2}|2[0-4]\d|25[0-5]/
|
6
|
+
IP_REGEX = /\A#{IP_BLOCK_REGEX}\.#{IP_BLOCK_REGEX}\.#{IP_BLOCK_REGEX}\.#{IP_BLOCK_REGEX}\z/
|
7
|
+
|
5
8
|
def self.system_info
|
6
9
|
# system info
|
7
10
|
return parse_data(`facter`)
|
8
11
|
end
|
9
12
|
|
10
13
|
def self.address_info
|
14
|
+
result = {}
|
11
15
|
# AWS special case
|
12
16
|
if $config.is_aws
|
13
|
-
result = {}
|
14
17
|
reported_ip = `/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4`
|
15
18
|
result[:ext_ipv4] = reported_ip if reported_ip =~ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
|
16
19
|
reported_ip = `/usr/bin/curl -s http://169.254.169.254/latest/meta-data/local-ipv4`
|
17
20
|
result[:int_ipv4] = reported_ip if reported_ip =~ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
|
18
|
-
return result
|
19
21
|
# GC special case
|
20
22
|
elsif $config.is_gc
|
21
|
-
result = {}
|
22
23
|
external_ip = `/usr/bin/curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip`
|
23
24
|
result[:ext_ipv4] = external_ip if external_ip =~ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
|
24
25
|
internal_ip = `/usr/bin/curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/ip`
|
25
26
|
result[:int_ipv4] = internal_ip if internal_ip =~ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
|
26
|
-
return result
|
27
27
|
else
|
28
|
-
interfaces_raw = `facter interfaces
|
29
|
-
interfaces = interfaces_raw.split(',').select { |interface| interface
|
30
|
-
|
28
|
+
interfaces_raw = `facter interfaces`.strip
|
29
|
+
interfaces = interfaces_raw.split(',').select { |interface| interface !~ /^lo/ }
|
31
30
|
# don't have any ip address info
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
unless interfaces.empty?
|
32
|
+
# return all interface information
|
33
|
+
facter_command = "facter #{interfaces.map { |interface| "ipaddress_#{interface} ipaddress6_#{interface}" }.join(' ')}"
|
34
|
+
raw_data = `#{facter_command}`.strip
|
35
|
+
result = parse_data(raw_data) rescue {}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
normalised_hash = {}
|
39
|
+
result.each do |key, value|
|
40
|
+
if value =~ IP_REGEX && value != '127.0.0.1' && value != '127.0.1.1'
|
41
|
+
normalised_hash[key] = value
|
42
|
+
end
|
38
43
|
end
|
44
|
+
return normalised_hash
|
39
45
|
end
|
40
46
|
|
41
47
|
def self.is_aws?
|
@@ -74,13 +80,11 @@ module Cloud66
|
|
74
80
|
data.lines.each do |line|
|
75
81
|
split = line.split('=>')
|
76
82
|
if split.size == 2
|
77
|
-
key = split[0]
|
78
|
-
value = split[1]
|
79
|
-
|
80
|
-
value = value.strip
|
83
|
+
key = split[0].strip rescue ''
|
84
|
+
value = split[1].strip rescue ''
|
85
|
+
if !value.nil? && value != 'nil'
|
81
86
|
# exclude empty or long results (like ssh keys)
|
82
|
-
if !value.empty? && value.size < 100
|
83
|
-
key = key.strip
|
87
|
+
if !value.empty? && value.size < 100
|
84
88
|
hash[key] = value
|
85
89
|
end
|
86
90
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloud66_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cloud 66
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mime-types
|
@@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
160
|
version: '0'
|
161
161
|
requirements: []
|
162
162
|
rubyforge_project:
|
163
|
-
rubygems_version: 2.
|
163
|
+
rubygems_version: 2.6.14.1
|
164
164
|
signing_key:
|
165
165
|
specification_version: 4
|
166
166
|
summary: Cloud 66 server component
|