cloud66_agent 1.0.12 → 1.1.0.beta1

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmQ4MzE4MDFmYTE3ZjNiMDIwNmU3ODhjMzRlZmM0OTJmNDVkOTQxNg==
4
+ ZmZlNTc5MGIwYTliYmRkOTgwNmJiNmJiNjk4N2UzYjVjNmM0Mzk0Mg==
5
5
  data.tar.gz: !binary |-
6
- ODBjNzA4NjMyMmRiY2IyMzE1ZmMzZWJmYWU5MTg4NGUyNDRmODY4Nw==
7
- !binary "U0hBNTEy":
6
+ OTE0OGQxMDRiOGIxOGUzYjE0OWJmODBkZTVlMmRiNzM4YjlhZTBhOQ==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- YTViOTE2MjJkMTRjMDFjYjY3ZTlhM2VkNzRhYTY3MjY4ZmRkODFkZGIwMzc3
10
- MzQ3NjkyMzExZjljMDZiMjk5YTAyNTAwNGI4NTFhYjZhMzRiZGE5YjlhODY4
11
- NWNjODI3OTk5YjI0Nzc5YTgwMmM2ZTdjN2YyZjRkNTRlNmFjZmM=
9
+ NWEyYTk1N2JjM2Y0YWE1MWUyYmIzMDNlYmFhMTNhMTAzNGZlYmNkMDExNmYw
10
+ ZmNiZjM1ODk5MDdjNzAyNDYyYzMxZDc2NWFiODdlMTBlYjM2NWUxNWU2ODJk
11
+ YzVjODI0MDkyMzE1YjBhMDEyMWZiNGU0ZjM0NTIxZjdiNGU4ZTE=
12
12
  data.tar.gz: !binary |-
13
- NjMzNjgzYWZhZjNmZDRlMmFlOGZhY2RiN2JhMTM3YjIwMzllNjZjMGFhZWY1
14
- NTBjN2ZhNWE1YjZjZjUzN2RiMGNhNzE3NjIzOGQwODVlYjE4OWFhNTNjMTQx
15
- YTg2YTFmMzdmNTI1Yjg5ZjFmMDZmMTJiMjlmYTkwYjhhYTAzNjM=
13
+ NzVkYzE4MDA5OGIwOTI3YjI0ODcyYjQ4Nzc3NjNhODdlNjdmNzE0ZTNlMjYz
14
+ YTg2ZmIwYzEyMDBiNWMyMTNkMGY2NWNmN2Q0ZmQzZTgwZWYyZWQ3MzhkN2U5
15
+ NGRlNThhMzQwMTI3Yjc0MDQ3YjhiOTUzNjJlNDc4NDY1OTJlNGY=
data/bin/cloud66_agent CHANGED
@@ -74,6 +74,9 @@ elsif command == 'fail2ban'
74
74
  opts.on('--port PORT', 'Attack port') { |v| @port = v }
75
75
  end.order!
76
76
  Cloud66Agent.fail2ban(@is_banned, @ip_address, @attack, @port)
77
+ elsif command == 'vitals'
78
+ # disable vital signs
79
+ exit 0
77
80
  else
78
81
  begin
79
82
  Cloud66Agent.send command
@@ -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 = '2013-09-10'
10
+ gem.date = '2014-02-04'
11
11
  gem.authors = ["Cloud 66"]
12
12
  gem.email = ['hello@cloud66.com']
13
13
  gem.description = "See https://www.cloud66.com for more info"
@@ -19,14 +19,13 @@ Gem::Specification.new do |gem|
19
19
  gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
20
  gem.require_paths = ["lib"]
21
21
  # dependencies
22
- gem.add_dependency('httparty', '>= 0.8.1')
23
- gem.add_dependency('sys-filesystem', '~>1.1.0')
22
+ gem.add_dependency('httparty', '~> 0.12.0')
24
23
  # backups
25
24
  gem.add_dependency('backup', '~>3.2.0')
26
- gem.add_dependency('net-ssh', '<= 2.5.2')
27
- gem.add_dependency('excon', '~> 0.17.0')
28
- gem.add_dependency('fog', '~> 1.9.0')
29
- gem.add_dependency('json', '~> 1.8.0')
25
+ #gem.add_dependency('net-ssh', '<= 2.5.2')
26
+ #gem.add_dependency('excon', '~> 0.17.0')
27
+ #gem.add_dependency('fog', '~> 1.9.0')
28
+ #gem.add_dependency('json', '~> 1.8.0')
30
29
  end
31
30
 
32
31
 
@@ -76,9 +76,9 @@ module Cloud66
76
76
  time = Time.now.utc.to_i
77
77
  hash = Digest::SHA1.hexdigest("#{$config.api_key}#{$config.secret_key}#{time}").downcase
78
78
  if data.nil?
79
- content = { :headers => { 'api_key' => $config.api_key, 'hash' => hash, 'time' => time.to_s } }
79
+ content = { :headers => { 'api-key' => $config.api_key, 'hash' => hash, 'time' => time.to_s } }
80
80
  else
81
- content = { :headers => { 'api_key' => $config.api_key, 'hash' => hash, 'time' => time.to_s, 'Content-Type' => 'application/json' }, :body => { data: data }.to_json }
81
+ content = { :headers => { 'api-key' => $config.api_key, 'hash' => hash, 'time' => time.to_s, 'Content-Type' => 'application/json' }, :body => { data: data }.to_json }
82
82
  end
83
83
  content
84
84
  end
@@ -13,10 +13,10 @@ module Cloud66
13
13
  # Defines the minor version
14
14
  # PATCH:
15
15
  # Defines the patch version
16
- MAJOR, MINOR, PATCH = 1, 0, 12
16
+ MAJOR, MINOR, PATCH = 1, 1, 0
17
17
 
18
18
  #ie. PRERELEASE_MODIFIER = 'beta1'
19
- PRERELEASE_MODIFIER = nil
19
+ PRERELEASE_MODIFIER = 'beta1'
20
20
 
21
21
  ##
22
22
  # Returns the major version ( big release based off of multiple minor releases )
@@ -1,6 +1,3 @@
1
- require 'sys/filesystem'
2
- require 'socket'
3
-
4
1
  module Cloud66
5
2
  module Utils
6
3
  class VitalSigns
@@ -34,14 +31,6 @@ module Cloud66
34
31
  return result
35
32
  end
36
33
 
37
- def self.vitals_info
38
- return {
39
- disk: Utils::VitalSigns.disk_usage_info,
40
- cpu: Utils::VitalSigns.cpu_usage_info,
41
- memory: Utils::VitalSigns.memory_usage_info
42
- }
43
- end
44
-
45
34
  def self.is_aws?
46
35
  # 6 seconds to find out if this is a AWS image or not!
47
36
  instance = `/usr/bin/curl --connect-timeout 6 -s http://169.254.169.254/latest/meta-data/instance-id` rescue nil
@@ -50,99 +39,6 @@ module Cloud66
50
39
 
51
40
  private
52
41
 
53
- def self.disk_usage_info
54
- space_info = {}
55
- Sys::Filesystem.mounts do |mount|
56
- stat = Sys::Filesystem.stat(mount.mount_point)
57
-
58
- #skip if this mount is not active
59
- #next if stat.blocks_available == 0 && stat.blocks == 0
60
-
61
- mb_free = Float(stat.block_size) * Float(stat.blocks_available) / 1000 / 1000
62
- mb_total = Float(stat.block_size) * Float(stat.blocks) / 1000 / 1000
63
- mb_used = mb_total - mb_free
64
- percent_used = mb_total > 0.0 ? mb_used / mb_total * 100 : 0.0
65
-
66
- space_info[mount.mount_point] = { mb_free: mb_free, mb_used: mb_used, mb_total: mb_total, percent_used: percent_used }
67
- mount.mount_point
68
- end
69
- return space_info
70
- end
71
-
72
- def self.cpu_usage_info
73
-
74
- #NOTE: we can get core-level info with mpstat -P ALL 1 1
75
- #parse mpstat result
76
- mpstat_result = `mpstat 1 5`
77
-
78
- # mpstat_result = <<-SAMPLE
79
- #Linux 3.2.0-23-generic (precise64) 12/07/2012 _x86_64_ (2 CPU)
80
- #
81
- #10:42:50 AM CPU %usr %nice %sys %ddle %irq %soft %steal %guest %idle
82
- #10:42:51 AM all 0.00 0.00 0.50 5.00 0.00 0.00 0.00 0.00 99.50
83
- #Average: all 0.00 0.00 0.50 50.00 0.00 0.00 0.00 0.00 99.50
84
- #SAMPLE
85
-
86
- #split output into lines
87
- lines = mpstat_result.split(/\r?\n/)
88
-
89
- #get rid of time (first 13 chars)
90
- lines = lines.map { |line| line[13..-1] }
91
-
92
- #get the header line and split into columns
93
- header_line = lines.detect { |line| line =~ /%idle/ }
94
- columns = header_line.split(/\s+/)
95
-
96
- #detect position of %idle column
97
- idle_index = columns.index('%idle')
98
-
99
- #get average line
100
- average_line = lines[-1]
101
- columns = average_line.split(/\s+/)
102
-
103
- #get idle value
104
- idle_string = columns[idle_index]
105
- idle_value = idle_string.to_f
106
-
107
- percent_used = 100.0 - idle_value
108
-
109
- #get average utilization value
110
- return { percent_used: percent_used, percent_free: idle_value }
111
- end
112
-
113
- def self.memory_usage_info
114
- free_m_result = `free -m`
115
- # free_m_result = <<-SAMPLE
116
- # total used free shared buffers cached
117
- #Mem: 590 480 109 0 37 227
118
- #-/+ buffers/cache: 216 373
119
- #Swap: 0 0 0
120
- #SAMPLE
121
-
122
- free_m_result.each_line do |line|
123
- if line =~ /^Mem:/
124
- parts = line.scan(/.*?(\d+)/)
125
- parts.flatten!
126
-
127
- mb_total = parts[0].to_f
128
- # mb_used is not a true representation due to OS gobbling up mem
129
- # mb_used = parts[1].to_i
130
- mb_free = parts[2].to_f
131
- mb_shared = parts[3].to_f
132
- mb_buffers = parts[4].to_f
133
- mb_cached = parts[5].to_f
134
-
135
- #The total free memory available to proceses is calculated by adding up Mem:cached + Mem:buffers + Mem:free (99 + 63 + 296)
136
- #This then needs to be divided by Mem:total to get the total available free memory (1692)
137
- mb_available = mb_cached + mb_buffers + mb_free
138
- mb_used = mb_total - mb_available
139
- mb_free = mb_total - mb_used
140
- percent_used = mb_used / mb_total * 100
141
- return { mb_free: mb_free, mb_used: mb_used, mb_total: mb_total, percent_used: percent_used }
142
- end
143
- end
144
- end
145
-
146
42
  # parse the data, not using YAML due to YAML parsing issues and JSON output not always working
147
43
  def self.parse_data(data)
148
44
  hash = {}
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud66_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.12
4
+ version: 1.1.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cloud 66
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-10 00:00:00.000000000 Z
11
+ date: 2014-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ! '>='
18
- - !ruby/object:Gem::Version
19
- version: 0.8.1
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ! '>='
25
- - !ruby/object:Gem::Version
26
- version: 0.8.1
27
- - !ruby/object:Gem::Dependency
28
- name: sys-filesystem
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - ~>
32
18
  - !ruby/object:Gem::Version
33
- version: 1.1.0
19
+ version: 0.12.0
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - ~>
39
25
  - !ruby/object:Gem::Version
40
- version: 1.1.0
26
+ version: 0.12.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: backup
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,62 +38,6 @@ dependencies:
52
38
  - - ~>
53
39
  - !ruby/object:Gem::Version
54
40
  version: 3.2.0
55
- - !ruby/object:Gem::Dependency
56
- name: net-ssh
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - <=
60
- - !ruby/object:Gem::Version
61
- version: 2.5.2
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - <=
67
- - !ruby/object:Gem::Version
68
- version: 2.5.2
69
- - !ruby/object:Gem::Dependency
70
- name: excon
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- version: 0.17.0
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ~>
81
- - !ruby/object:Gem::Version
82
- version: 0.17.0
83
- - !ruby/object:Gem::Dependency
84
- name: fog
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: 1.9.0
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- version: 1.9.0
97
- - !ruby/object:Gem::Dependency
98
- name: json
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ~>
102
- - !ruby/object:Gem::Version
103
- version: 1.8.0
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ~>
109
- - !ruby/object:Gem::Version
110
- version: 1.8.0
111
41
  description: See https://www.cloud66.com for more info
112
42
  email:
113
43
  - hello@cloud66.com
@@ -151,12 +81,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
81
  version: '0'
152
82
  required_rubygems_version: !ruby/object:Gem::Requirement
153
83
  requirements:
154
- - - ! '>='
84
+ - - ! '>'
155
85
  - !ruby/object:Gem::Version
156
- version: '0'
86
+ version: 1.3.1
157
87
  requirements: []
158
88
  rubyforge_project:
159
- rubygems_version: 2.0.6
89
+ rubygems_version: 2.2.1
160
90
  signing_key:
161
91
  specification_version: 4
162
92
  summary: Cloud 66 server component