ocular 0.1.1 → 0.1.2
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/examples/converge-broken-array.rb +24 -0
- data/examples/ssh-example.rb +4 -3
- data/lib/ocular/dsl/fog.rb +33 -0
- data/lib/ocular/dsl/logging.rb +4 -4
- data/lib/ocular/dsl/ssh.rb +5 -1
- data/lib/ocular/event/eventbase.rb +2 -1
- data/lib/ocular/event/eventfactory.rb +2 -0
- data/lib/ocular/ocular.rb +2 -0
- data/lib/ocular/settings.rb +24 -0
- data/lib/ocular/version.rb +1 -1
- data/spec/settings_spec.rb +11 -0
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 981e6e95004d5057487b4fc0d616bdd9640b6c29
|
4
|
+
data.tar.gz: db69ab3985347e0b4f06db7a568827fa8d33fe41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b9bcc9b27e6126d2c5600100163175cfb49d61c3eec68059fa7922b8998cff0f45a65f1caec2ab00b2b488268216a70d39bdcede89dc3aa44965a258b6ea91d
|
7
|
+
data.tar.gz: 6f76ad19c003a5c2477cd950db9ed3e354425c0aca5e15b0f7fd6ab90226c028b91a2ce613ae73712f352a2f0c8e9d2f7ce1a669262ea3629fd5ed38fe167cd6
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
onEvent nil do
|
3
|
+
debug("Converging array #{ARGV[0]}")
|
4
|
+
for i in autoscaling.groups.get(ARGV[0]).instances
|
5
|
+
server = aws.servers.get(i.id)
|
6
|
+
hostname = server.private_ip_address
|
7
|
+
debug("Connecting to #{hostname}")
|
8
|
+
c = ssh_to(hostname)
|
9
|
+
|
10
|
+
uptime = c.execute("cat /proc/uptime")[0].to_i
|
11
|
+
if uptime < 2700
|
12
|
+
debug("Uptime of #{hostname} is less than 2700: #{uptime}")
|
13
|
+
else
|
14
|
+
running_containers = c.sudo("docker ps | tail -n +2").length
|
15
|
+
if running_containers == 0
|
16
|
+
info("No running containers in host #{hostname}, running converge")
|
17
|
+
log(c.execute("sudo converge.sh | sudo tee -a /var/log/init.err"))
|
18
|
+
else
|
19
|
+
info("Host #{hostname} ok with #{running_containers} running containers")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
data/examples/ssh-example.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'logger'
|
2
|
+
require 'fog'
|
3
|
+
|
4
|
+
class Ocular
|
5
|
+
module DSL
|
6
|
+
module Fog
|
7
|
+
@@__aws_instance = nil
|
8
|
+
|
9
|
+
def aws()
|
10
|
+
if @@__aws_instance
|
11
|
+
return @@__aws_instance
|
12
|
+
end
|
13
|
+
|
14
|
+
@@__aws_instance = ::Fog::Compute.new({
|
15
|
+
:provider => 'AWS',
|
16
|
+
:aws_access_key_id => ::Ocular::Settings::get('aws')['aws_access_key_id'],
|
17
|
+
:aws_secret_access_key => ::Ocular::Settings::get('aws')['aws_secret_access_key']
|
18
|
+
})
|
19
|
+
|
20
|
+
return @@__aws_instance
|
21
|
+
end
|
22
|
+
|
23
|
+
def autoscaling()
|
24
|
+
return ::Fog::AWS::AutoScaling.new({
|
25
|
+
:aws_access_key_id => ::Ocular::Settings::get('aws')['aws_access_key_id'],
|
26
|
+
:aws_secret_access_key => ::Ocular::Settings::get('aws')['aws_secret_access_key']
|
27
|
+
})
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/lib/ocular/dsl/logging.rb
CHANGED
@@ -10,19 +10,19 @@ class Ocular
|
|
10
10
|
alias log debug
|
11
11
|
|
12
12
|
def info(message = nil, &block)
|
13
|
-
add(Severity::INFO,
|
13
|
+
@logger.add(Logger::Severity::INFO, message, @run_id, &block)
|
14
14
|
end
|
15
15
|
|
16
16
|
def warn(message = nil, &block)
|
17
|
-
add(Severity::
|
17
|
+
@logger.add(Logger::Severity::WARN, message, @run_id, &block)
|
18
18
|
end
|
19
19
|
|
20
20
|
def error(message = nil, &block)
|
21
|
-
add(Severity::
|
21
|
+
@logger.add(Logger::Severity::ERROR, message, @run_id, &block)
|
22
22
|
end
|
23
23
|
|
24
24
|
def fatal(message = nil, &block)
|
25
|
-
add(Severity::
|
25
|
+
@logger.add(Logger::Severity::FATAL, message, @run_id, &block)
|
26
26
|
end
|
27
27
|
|
28
28
|
|
data/lib/ocular/dsl/ssh.rb
CHANGED
@@ -6,7 +6,11 @@ class Ocular
|
|
6
6
|
module SSH
|
7
7
|
|
8
8
|
def ssh_to(hostname)
|
9
|
-
|
9
|
+
settings = ::Ocular::Settings::get('ssh').inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
10
|
+
settings[:password_prompt] = false
|
11
|
+
settings[:safe] = false
|
12
|
+
|
13
|
+
rbox = ::Rye::Box.new(hostname, settings)
|
10
14
|
return rbox
|
11
15
|
end
|
12
16
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'ocular/mixin/from_file'
|
2
|
+
require 'ocular/dsl/fog'
|
2
3
|
require 'ocular/dsl/ssh'
|
3
4
|
require 'ocular/dsl/logging'
|
4
5
|
|
@@ -7,6 +8,7 @@ class Ocular
|
|
7
8
|
|
8
9
|
class EventBase
|
9
10
|
include Ocular::DSL::SSH
|
11
|
+
include Ocular::DSL::Fog
|
10
12
|
include Ocular::DSL::Logging
|
11
13
|
|
12
14
|
attr_accessor :proxy
|
@@ -17,7 +19,6 @@ class Ocular
|
|
17
19
|
end
|
18
20
|
|
19
21
|
def exec(run_context)
|
20
|
-
puts "Running #{run_context}"
|
21
22
|
run_context.proxy = self.proxy
|
22
23
|
run_context.instance_eval(&@callback)
|
23
24
|
end
|
data/lib/ocular/ocular.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
class Ocular
|
5
|
+
class Settings
|
6
|
+
attr_accessor :settings
|
7
|
+
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
def initialize()
|
11
|
+
filename = ENV['OCULAR_SETTINGS']
|
12
|
+
self.settings = YAML::load_file(filename)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.load_from_file(filename)
|
16
|
+
@settings = YAML::load_file(filename)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.get(key)
|
20
|
+
return @settings[key]
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
data/lib/ocular/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ocular
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juho Mäkinen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rye
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.9.13
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: fog
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -51,9 +65,11 @@ extensions: []
|
|
51
65
|
extra_rdoc_files: []
|
52
66
|
files:
|
53
67
|
- README.md
|
68
|
+
- examples/converge-broken-array.rb
|
54
69
|
- examples/ssh-example.rb
|
55
70
|
- lib/blocktest.rb
|
56
71
|
- lib/ocular.rb
|
72
|
+
- lib/ocular/dsl/fog.rb
|
57
73
|
- lib/ocular/dsl/logging.rb
|
58
74
|
- lib/ocular/dsl/runcontext.rb
|
59
75
|
- lib/ocular/dsl/ssh.rb
|
@@ -61,8 +77,10 @@ files:
|
|
61
77
|
- lib/ocular/event/eventfactory.rb
|
62
78
|
- lib/ocular/mixin/from_file.rb
|
63
79
|
- lib/ocular/ocular.rb
|
80
|
+
- lib/ocular/settings.rb
|
64
81
|
- lib/ocular/version.rb
|
65
82
|
- spec/blocktest_spec.rb
|
83
|
+
- spec/settings_spec.rb
|
66
84
|
- spec/spec_helper.rb
|
67
85
|
homepage: http://github.com/garo/ocular
|
68
86
|
licenses:
|