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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de167ed33e75bba8f6482de164f5b1f7c1fea60a
4
- data.tar.gz: f9ce4d9717736477221e9a456bfafcd1d6a4d0f9
3
+ metadata.gz: 981e6e95004d5057487b4fc0d616bdd9640b6c29
4
+ data.tar.gz: db69ab3985347e0b4f06db7a568827fa8d33fe41
5
5
  SHA512:
6
- metadata.gz: 260602dd6cef56943d98f5a6271dfd5cded3753a222c1e14d3ba6eb437e45e048f1074b63a09e6e18684c415aeb1856a0dc8837680c1f0b512cf0f078e2b637f
7
- data.tar.gz: 84e6e806f943dff204d98a39dcf125dbf9a8cf61f7db2f1a0c5b53c2bcb5a7afe6f1fa28e1c68cd9c739a5d9732b7e51b73b12c796d6ad095a8c305ed38215e2
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
+
@@ -1,11 +1,12 @@
1
1
  require 'pp'
2
2
 
3
3
  onEvent nil do
4
- asdf("localhost")
4
+ ssh_example(ARGV[0])
5
5
  end
6
6
 
7
- def asdf(host)
7
+ def ssh_example(host)
8
+ debug("Connecting to #{host}")
8
9
  r = ssh_to(host)
9
- pp r.execute("ls")
10
+ pp r.execute("ls /")
10
11
  end
11
12
 
@@ -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
@@ -10,19 +10,19 @@ class Ocular
10
10
  alias log debug
11
11
 
12
12
  def info(message = nil, &block)
13
- add(Severity::INFO, nil, message, &block)
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::INFO, nil, message, &block)
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::INFO, nil, message, &block)
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::INFO, nil, message, &block)
25
+ @logger.add(Logger::Severity::FATAL, message, @run_id, &block)
26
26
  end
27
27
 
28
28
 
@@ -6,7 +6,11 @@ class Ocular
6
6
  module SSH
7
7
 
8
8
  def ssh_to(hostname)
9
- rbox = ::Rye::Box.new(hostname, :safe => false, :password_prompt => false)
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
@@ -14,6 +14,8 @@ class Ocular
14
14
 
15
15
  include Ocular::Mixin::FromFile
16
16
  include Ocular::DSL::Logging
17
+ include Ocular::DSL::SSH
18
+ include Ocular::DSL::Fog
17
19
 
18
20
  def onEvent(factory_class, &block)
19
21
  eventbase = Ocular::DSL::EventBase.new(&block)
data/lib/ocular/ocular.rb CHANGED
@@ -1,7 +1,9 @@
1
1
 
2
2
  require 'ocular/version'
3
+ require 'ocular/settings'
3
4
  require 'ocular/event/eventbase'
4
5
  require 'ocular/event/eventfactory'
5
6
  require 'ocular/dsl/logging'
7
+ require 'ocular/dsl/fog'
6
8
  require 'ocular/dsl/ssh'
7
9
  require 'ocular/dsl/runcontext'
@@ -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
@@ -1,3 +1,3 @@
1
1
  class Ocular
2
- Version = "0.1.1"
2
+ Version = "0.1.2"
3
3
  end
@@ -0,0 +1,11 @@
1
+ require 'ocular'
2
+
3
+ RSpec.describe Ocular::Settings do
4
+
5
+ it "get receiver settings" do
6
+ ::Ocular::Settings.load_from_file('spec/data/settings.yaml')
7
+ a = ::Ocular::Settings.get("test_setting")
8
+ expect(a).to eq("Hello, World!")
9
+ end
10
+ end
11
+
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.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-19 00:00:00.000000000 Z
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: