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 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: