ocular 0.1.4 → 0.1.5

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: 80d3eab4870432f28e3a67ed391012aa4cbd0d3d
4
- data.tar.gz: d899c2f9ec2020c3d18bf82dc61543bbb8e1163c
3
+ metadata.gz: ba3d7f05bc363f6bde68a3499ac349554297e908
4
+ data.tar.gz: 4b9e52b2e61dbf40f3af58357086bb9bafe6c1db
5
5
  SHA512:
6
- metadata.gz: b51e2835fb8aa855eeb85a342782d6e0d7c2e7a5b8293f0fe4aaae6c135727a82952a8b4fd85296eec3f5f3802175d6db511274097f6eaebc1a063e9d82282a1
7
- data.tar.gz: c8a79305a5259ea4d6f782a81c91ea41c918910603105d885db97cc2b39d14f1a74a326d2a8584b1e26254e0fdb58475cdf7088535b6aef10b5a71d95efd22ae
6
+ metadata.gz: f73554edcfac13aee2be802f97d04357b795940ec552fefcae627a5fb8488148b608df5c187e6b06aaee8d8895a153f99c6f0a8023622711aca5458454689b5c
7
+ data.tar.gz: 4c2eb3ca28d08d38057963cf0b0da384f4f020f7feeafade71c0edd7fe0bae85df6d113cdf89fd618eec0f7e5313a9615beb578dc38213dc4076926ad22b91cb
@@ -0,0 +1,4 @@
1
+ require 'ocular/dsl/etcd.rb'
2
+ require 'ocular/dsl/fog.rb'
3
+ require 'ocular/dsl/logging.rb'
4
+ require 'ocular/dsl/ssh.rb'
@@ -0,0 +1,28 @@
1
+ require 'logger'
2
+ require 'etcd'
3
+
4
+ class Ocular
5
+ module DSL
6
+ module Etcd
7
+ @@__etcd_instance = nil
8
+
9
+ def etcd()
10
+ if @@__etcd_instance
11
+ return @@__etcd_instance
12
+ end
13
+
14
+ settings = ::Ocular::Settings::get(:inputs)[:etcd] || {}
15
+ @@__etcd_instance = ::Etcd.client(
16
+ host: (settings[:host] || "localhost"),
17
+ port: (settings[:port] || 2379),
18
+ usern_name: (settings[:port] || nil),
19
+ password: (settings[:port] || nil),
20
+ )
21
+
22
+ return @@__etcd_instance
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -11,6 +11,8 @@ class Ocular
11
11
 
12
12
  include Ocular::DSL::Logging
13
13
  include Ocular::DSL::SSH
14
+ include Ocular::DSL::Fog
15
+ include Ocular::DSL::Etcd
14
16
 
15
17
  def initialize
16
18
  @run_id = SecureRandom.uuid()
@@ -35,13 +35,8 @@ class Ocular
35
35
  r = Results.new
36
36
 
37
37
  begin
38
- retval = context.instance_eval(&@callback)
39
-
40
- # This check is to make sure that whatever we return that it can be serialised
41
- if String === retval or Array === retval
42
- r.response = retval
43
- end
44
-
38
+ r.response = __call(context, @callback)
39
+ #r.response = context.instance_eval(&@callback)
45
40
  rescue Exception => error
46
41
  r.error = error
47
42
  end
@@ -49,12 +44,15 @@ class Ocular
49
44
  response_data = Marshal.dump(r)
50
45
  writer.puts(response_data)
51
46
  writer.close
47
+
52
48
  end
53
49
  writer.close
54
50
 
55
- Process.wait(child_pid)
56
- r = Marshal.load(reader.read)
51
+ data = reader.read
52
+ r = Marshal.load(data)
57
53
  reader.close
54
+ Process.wait(child_pid)
55
+
58
56
 
59
57
  if r.error
60
58
  raise r.error
@@ -63,7 +61,21 @@ class Ocular
63
61
  end
64
62
 
65
63
  def exec_nofork(context)
66
- return context.instance_eval(&@callback)
64
+ return __call(context, @callback)
65
+ #context.instance_eval(&@callback)
66
+ end
67
+
68
+ def __call(context, callback)
69
+ # we use this trickery to workaround the LocalJumpError so that we can use return
70
+ context.define_singleton_method(:_, &callback)
71
+ p = context.method(:_).to_proc
72
+
73
+ reply = p.call()
74
+ if context.respond_to?(:exec_wrapper)
75
+ return context.exec_wrapper(reply)
76
+ else
77
+ return reply
78
+ end
67
79
  end
68
80
 
69
81
  end
@@ -21,6 +21,8 @@ class Ocular
21
21
  include Ocular::DSL::Logging
22
22
  include Ocular::DSL::SSH
23
23
  include Ocular::DSL::Fog
24
+ include Ocular::DSL::Etcd
25
+
24
26
  include Ocular::Inputs::HTTP::DSL
25
27
 
26
28
  def fork(value)
@@ -5,6 +5,7 @@ require 'rack/protection'
5
5
  require 'uri'
6
6
 
7
7
  require 'ocular/inputs/base.rb'
8
+ require 'ocular/dsl/dsl.rb'
8
9
  require 'ocular/dsl/runcontext.rb'
9
10
 
10
11
  # Some of this code is copied from the excellent Sinatra Ruby web library by
@@ -40,6 +41,27 @@ class Ocular
40
41
 
41
42
  class WebRunContext < ::Ocular::DSL::RunContext
42
43
  attr_accessor :request, :response, :params, :env
44
+
45
+ def initialize()
46
+ super()
47
+ @headers = {}
48
+ end
49
+
50
+ def content_type(type)
51
+ @headers["Content-Type"] = type
52
+ end
53
+
54
+ def exec_wrapper(res)
55
+ if Fixnum === res
56
+ res = [res, @headers, nil]
57
+ end
58
+
59
+ if String === res
60
+ res = [200, @headers, res]
61
+ end
62
+
63
+ return res
64
+ end
43
65
  end
44
66
 
45
67
 
@@ -258,7 +280,6 @@ class Ocular
258
280
  end
259
281
  end
260
282
 
261
-
262
283
  def safe_ignore(ignore)
263
284
  unsafe_ignore = []
264
285
  ignore = ignore.gsub(/%[\da-fA-F]{2}/) do |hex|
@@ -388,6 +409,20 @@ class Ocular
388
409
  end
389
410
  ensure
390
411
 
412
+ end
413
+
414
+ def invoke(context)
415
+ res = catch(:halt) { yield(context) }
416
+
417
+ if Array === res and Fixnum === res.first
418
+ res = res.dup
419
+ status(context, res.shift)
420
+ body(context, res.pop)
421
+ headers(context, *res)
422
+ elsif res.respond_to? :each
423
+ body(context, res)
424
+ end
425
+ nil # avoid double setting the same response tuple twice
391
426
  end
392
427
 
393
428
  def handle_exception!(context, error)
@@ -400,7 +435,6 @@ class Ocular
400
435
  puts "Internal Server Error: #{error}"
401
436
  puts error.backtrace
402
437
  end
403
-
404
438
  end
405
439
 
406
440
  def call_block(context)
@@ -443,21 +477,6 @@ class Ocular
443
477
  @params = original if original
444
478
  end
445
479
 
446
- def invoke(context)
447
- res = catch(:halt) { yield(context) }
448
-
449
- res = [res] if Fixnum === res or String === res
450
- if Array === res and Fixnum === res.first
451
- res = res.dup
452
- status(context, res.shift)
453
- body(context, res.pop)
454
- headers(context, *res)
455
- elsif res.respond_to? :each
456
- body(context, res)
457
- end
458
- nil # avoid double setting the same response tuple twice
459
- end
460
-
461
480
  # Creates a Hash with indifferent access.
462
481
  def indifferent_hash
463
482
  Hash.new {|hash,key| hash[key.to_s] if Symbol === key }
data/lib/ocular/ocular.rb CHANGED
@@ -3,9 +3,7 @@ require 'ocular/version'
3
3
  require 'ocular/settings'
4
4
  require 'ocular/event/eventbase'
5
5
  require 'ocular/event/eventfactory'
6
- require 'ocular/dsl/logging'
7
- require 'ocular/dsl/fog'
8
- require 'ocular/dsl/ssh'
6
+ require 'ocular/dsl/dsl'
9
7
  require 'ocular/dsl/runcontext'
10
8
  require 'ocular/inputs/handlers'
11
9
  require 'ocular/inputs/base'
@@ -1,3 +1,3 @@
1
1
  class Ocular
2
- Version = "0.1.4"
2
+ Version = "0.1.5"
3
3
  end
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
4
+ version: 0.1.5
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-26 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rye
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.9.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: etcd
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.3.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.3.0
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +142,8 @@ files:
128
142
  - lib/blocktest.rb
129
143
  - lib/ocular.rb
130
144
  - lib/ocular/daemon.rb
145
+ - lib/ocular/dsl/dsl.rb
146
+ - lib/ocular/dsl/etcd.rb
131
147
  - lib/ocular/dsl/fog.rb
132
148
  - lib/ocular/dsl/logging.rb
133
149
  - lib/ocular/dsl/runcontext.rb