ocular 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|