elasticsearch-watcher 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,27 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Force the execution of the watch actions (eg. for testing)
7
+ #
8
+ # @option arguments [String] :id Watch ID (*Required*)
9
+ # @option arguments [Hash] :body Execution control
10
+ #
11
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-execute-watch.html
12
+ #
13
+ def execute_watch(arguments={})
14
+ raise ArgumentError, "Required argument 'id' missing" unless arguments[:id]
15
+ valid_params = [
16
+ ]
17
+ method = 'PUT'
18
+ path = "_watcher/watch/#{arguments[:id]}/_execute"
19
+ params = {}
20
+ body = arguments[:body]
21
+
22
+ perform_request(method, path, params, body).body
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,31 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Get a specific watch
7
+ #
8
+ # @option arguments [String] :id Watch ID (*Required*)
9
+ #
10
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-get-watch.html
11
+ #
12
+ def get_watch(arguments={})
13
+ raise ArgumentError, "Required argument 'id' missing" unless arguments[:id]
14
+ valid_params = [
15
+ ]
16
+ method = 'GET'
17
+ path = "_watcher/watch/#{arguments[:id]}"
18
+ params = {}
19
+ body = nil
20
+
21
+ perform_request(method, path, params, body).body
22
+ rescue Exception => e
23
+ # NOTE: Use exception name, not full class in Elasticsearch::Client to allow client plugability
24
+ if Array(arguments[:ignore]).include?(404) && e.class.to_s =~ /NotFound/; false
25
+ else raise(e)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,23 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Return information about the installed Watcher plugin
7
+ #
8
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-info.html
9
+ #
10
+ def info(arguments={})
11
+ valid_params = [
12
+ ]
13
+ method = 'GET'
14
+ path = "/_watcher/"
15
+ params = {}
16
+ body = nil
17
+
18
+ perform_request(method, path, params, body).body
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Create a new watch or update an existing one
7
+ #
8
+ # @option arguments [String] :id Watch ID (*Required*)
9
+ # @option arguments [Hash] :body The watch (*Required*)
10
+ # @option arguments [Boolean] :pretty Pretty the output
11
+ #
12
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-put-watch.html
13
+ #
14
+ def put_watch(arguments={})
15
+ raise ArgumentError, "Required argument 'id' missing" unless arguments[:id]
16
+ raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
17
+ valid_params = [
18
+ :master_timeout ]
19
+ method = 'PUT'
20
+ path = "_watcher/watch/#{arguments[:id]}"
21
+ params = Utils.__validate_and_extract_params arguments, valid_params
22
+ body = arguments[:body]
23
+
24
+ perform_request(method, path, params, body).body
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,24 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Restart the watcher service
7
+ #
8
+ #
9
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-service.html
10
+ #
11
+ def restart(arguments={})
12
+ valid_params = [
13
+ ]
14
+ method = 'PUT'
15
+ path = "/_watcher/_restart"
16
+ params = {}
17
+ body = nil
18
+
19
+ perform_request(method, path, params, body).body
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Start the watcher service
7
+ #
8
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-service.html
9
+ #
10
+ def start(arguments={})
11
+ valid_params = [
12
+ ]
13
+ method = 'PUT'
14
+ path = "/_watcher/_start"
15
+ params = {}
16
+ body = nil
17
+
18
+ perform_request(method, path, params, body).body
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Return statistical information about the watcher service
7
+ #
8
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-stats.html
9
+ #
10
+ def stats(arguments={})
11
+ valid_params = [
12
+ ]
13
+ method = 'GET'
14
+ path = "/_watcher/stats"
15
+ params = {}
16
+ body = nil
17
+
18
+ perform_request(method, path, params, body).body
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Watcher
4
+ module Actions
5
+
6
+ # Stop the watcher service
7
+ #
8
+ # @see http://www.elastic.co/guide/en/watcher/current/appendix-api-service.html
9
+ #
10
+ def stop(arguments={})
11
+ valid_params = [
12
+ ]
13
+ method = 'PUT'
14
+ path = "/_watcher/_stop"
15
+ params = {}
16
+ body = nil
17
+
18
+ perform_request(method, path, params, body).body
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ module Elasticsearch
2
+ module Watcher
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,87 @@
1
+ JRUBY = defined?(JRUBY_VERSION)
2
+
3
+ if ENV['COVERAGE'] || ENV['CI']
4
+ require 'simplecov'
5
+ SimpleCov.start { add_filter "/test|test_" }
6
+ end
7
+
8
+ at_exit { Elasticsearch::Test::IntegrationTestCase.__run_at_exit_hooks }
9
+
10
+ require 'test/unit'
11
+ require 'shoulda-context'
12
+ require 'mocha/setup'
13
+
14
+ require 'minitest/reporters'
15
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
16
+
17
+ require 'elasticsearch'
18
+ require 'elasticsearch/extensions/test/cluster'
19
+ require 'elasticsearch/extensions/test/startup_shutdown'
20
+
21
+ require 'elasticsearch/watcher'
22
+
23
+ module Elasticsearch
24
+ module Test
25
+ class IntegrationTestCase < ::Test::Unit::TestCase
26
+ include Elasticsearch::Extensions::Test
27
+ extend StartupShutdown
28
+
29
+ startup do
30
+ Cluster.start(nodes: 1) if ENV['SERVER'] \
31
+ && ! Elasticsearch::Extensions::Test::Cluster.running?
32
+ end
33
+
34
+ shutdown do
35
+ Cluster.stop if ENV['SERVER'] \
36
+ && started? \
37
+ && Elasticsearch::Extensions::Test::Cluster.running?
38
+ end
39
+
40
+ def setup
41
+ @port = (ENV['TEST_CLUSTER_PORT'] || 9250).to_i
42
+
43
+ @logger = Logger.new(STDERR)
44
+ @logger.formatter = proc do |severity, datetime, progname, msg|
45
+ color = case severity
46
+ when /INFO/ then :green
47
+ when /ERROR|WARN|FATAL/ then :red
48
+ when /DEBUG/ then :cyan
49
+ else :white
50
+ end
51
+ ANSI.ansi(severity[0] + ' ', color, :faint) + ANSI.ansi(msg, :white, :faint) + "\n"
52
+ end
53
+
54
+ @client = Elasticsearch::Client.new host: "localhost:#{@port}", logger: @logger
55
+ end
56
+
57
+ def teardown
58
+ @client.indices.delete index: '_all'
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ module Elasticsearch
65
+ module Test
66
+ class FakeClient
67
+ include Elasticsearch::API::Watcher
68
+
69
+ def perform_request(method, path, params, body)
70
+ puts "PERFORMING REQUEST:", "--> #{method.to_s.upcase} #{path} #{params} #{body}"
71
+ FakeResponse.new(200, 'FAKE', {})
72
+ end
73
+ end
74
+
75
+ FakeResponse = Struct.new(:status, :body, :headers) do
76
+ def status
77
+ values[0] || 200
78
+ end
79
+ def body
80
+ values[1] || '{}'
81
+ end
82
+ def headers
83
+ values[2] || {}
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module Elasticsearch
4
+ module Test
5
+ class WatcherAckWatchTest < ::Test::Unit::TestCase
6
+
7
+ context "Watcher: Ack watch" do
8
+ subject { FakeClient.new }
9
+
10
+ should "perform correct request" do
11
+ subject.expects(:perform_request).with do |method, url, params, body|
12
+ assert_equal 'PUT', method
13
+ assert_equal '_watcher/watch/foo/_ack', url
14
+ assert_equal Hash.new, params
15
+ assert_nil body
16
+ true
17
+ end.returns(FakeResponse.new)
18
+
19
+ subject.watcher.ack_watch id: 'foo'
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module Elasticsearch
4
+ module Test
5
+ class WatcherDeleteWatchTest < ::Test::Unit::TestCase
6
+
7
+ context "Watcher: Delete watch" do
8
+ subject { FakeClient.new }
9
+
10
+ should "perform correct request" do
11
+ subject.expects(:perform_request).with do |method, url, params, body|
12
+ assert_equal 'DELETE', method
13
+ assert_equal "_watcher/watch/foo", url
14
+ assert_equal Hash.new, params
15
+ assert_nil body
16
+ true
17
+ end.returns(FakeResponse.new)
18
+
19
+ subject.watcher.delete_watch id: 'foo'
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module Elasticsearch
4
+ module Test
5
+ class WatcherExecuteWatchTest < ::Test::Unit::TestCase
6
+
7
+ context "Watcher: Execute watch" do
8
+ subject { FakeClient.new }
9
+
10
+ should "perform correct request" do
11
+ subject.expects(:perform_request).with do |method, url, params, body|
12
+ assert_equal 'PUT', method
13
+ assert_equal "_watcher/watch/foo/_execute", url
14
+ assert_equal Hash.new, params
15
+ assert_equal Hash.new, body
16
+ true
17
+ end.returns(FakeResponse.new)
18
+
19
+ subject.watcher.execute_watch id: 'foo', body: {}
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module Elasticsearch
4
+ module Test
5
+ class WatcherGetWatchTest < ::Test::Unit::TestCase
6
+
7
+ context "Watcher: Get watch" do
8
+ subject { FakeClient.new }
9
+
10
+ should "perform correct request" do
11
+ subject.expects(:perform_request).with do |method, url, params, body|
12
+ assert_equal 'GET', method
13
+ assert_equal "_watcher/watch/foo", url
14
+ assert_equal Hash.new, params
15
+ assert_nil body
16
+ true
17
+ end.returns(FakeResponse.new)
18
+
19
+ subject.watcher.get_watch id: 'foo'
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module Elasticsearch
4
+ module Test
5
+ class WatcherInfoTest < ::Test::Unit::TestCase
6
+
7
+ context "Watcher: Info" do
8
+ subject { FakeClient.new }
9
+
10
+ should "perform correct request" do
11
+ subject.expects(:perform_request).with do |method, url, params, body|
12
+ assert_equal 'GET', method
13
+ assert_equal '/_watcher/', url
14
+ assert_equal Hash.new, params
15
+ assert_nil body
16
+ true
17
+ end.returns(FakeResponse.new)
18
+
19
+ subject.watcher.info
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end