mortar-api-ruby 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,6 +24,15 @@ module Mortar
24
24
  :method => :get,
25
25
  :path => versioned_path("/clusters")
26
26
  )
27
- end
27
+ end
28
+
29
+ # DELETE /v2/clusters/:cluster_id
30
+ def stop_cluster(cluster_id)
31
+ request(
32
+ :expects => 200,
33
+ :method => :delete,
34
+ :path => versioned_path("/clusters/#{cluster_id}")
35
+ )
36
+ end
28
37
  end
29
38
  end
@@ -52,6 +52,7 @@ module Mortar
52
52
  # POST /vX/jobs
53
53
  def post_job_existing_cluster(project_name, pigscript, git_ref, cluster_id, options={})
54
54
  parameters = options[:parameters] || {}
55
+ notify_on_job_finish = options[:notify_on_job_finish].nil? ? true : options[:notify_on_job_finish]
55
56
  request(
56
57
  :expects => 200,
57
58
  :method => :post,
@@ -60,13 +61,15 @@ module Mortar
60
61
  "pigscript_name" => pigscript,
61
62
  "git_ref" => git_ref,
62
63
  "cluster_id" => cluster_id,
63
- "parameters" => parameters
64
+ "parameters" => parameters,
65
+ "notify_on_job_finish" => notify_on_job_finish
64
66
  }))
65
67
  end
66
68
 
67
69
  # POST /vX/jobs
68
70
  def post_job_new_cluster(project_name, pigscript, git_ref, cluster_size, options={})
69
71
  keep_alive = options[:keepalive].nil? ? true : options[:keepalive]
72
+ notify_on_job_finish = options[:notify_on_job_finish].nil? ? true : options[:notify_on_job_finish]
70
73
  parameters = options[:parameters] || {}
71
74
  request(
72
75
  :expects => 200,
@@ -77,7 +80,8 @@ module Mortar
77
80
  "git_ref" => git_ref,
78
81
  "cluster_size" => cluster_size,
79
82
  "keep_alive" => keep_alive,
80
- "parameters" => parameters
83
+ "parameters" => parameters,
84
+ "notify_on_job_finish" => notify_on_job_finish
81
85
  }))
82
86
  end
83
87
 
@@ -18,7 +18,7 @@ module Mortar
18
18
  class API
19
19
  # client version
20
20
  # see http://semver.org/
21
- VERSION = "0.4.1"
21
+ VERSION = "0.5.0"
22
22
 
23
23
  SERVER_API_VERSION = "2"
24
24
  end
@@ -39,6 +39,15 @@ describe Mortar::API do
39
39
  clusters.nil?.should be_false
40
40
  clusters.length.should == 2
41
41
  end
42
+
43
+ it "stops a running cluster" do
44
+ cluster_id = "1234abc342221abc"
45
+ Excon.stub({:method => :delete, :path => "/v2/clusters/#{cluster_id}"}) do |params|
46
+ {:body => Mortar::API::OkJson.encode({"success" => true}), :status => 200}
47
+ end
48
+ response = @api.stop_cluster(cluster_id)
49
+ response.body["success"].should be_true
50
+ end
42
51
 
43
52
  end
44
53
  end
@@ -41,7 +41,9 @@ describe Mortar::API do
41
41
  "pigscript_name" => pigscript_name,
42
42
  "git_ref" => git_ref,
43
43
  "cluster_id" => cluster_id,
44
- "parameters" => parameters})
44
+ "parameters" => parameters,
45
+ "notify_on_job_finish" => true
46
+ })
45
47
  Excon.stub({:method => :post, :path => "/v2/jobs", :body => body}) do |params|
46
48
  {:body => Mortar::API::OkJson.encode({'job_id' => job_id}), :status => 200}
47
49
  end
@@ -60,13 +62,57 @@ describe Mortar::API do
60
62
  "git_ref" => git_ref,
61
63
  "cluster_size" => cluster_size,
62
64
  "keep_alive" => true,
63
- "parameters" => {}})
65
+ "parameters" => {},
66
+ "notify_on_job_finish" => true
67
+ })
64
68
  Excon.stub({:method => :post, :path => "/v2/jobs", :body => body}) do |params|
65
69
  {:body => Mortar::API::OkJson.encode({'job_id' => job_id}), :status => 200}
66
70
  end
67
71
  response = @api.post_job_new_cluster(project_name, pigscript_name, git_ref, cluster_size)
68
72
  response.body['job_id'].should == job_id
69
73
  end
74
+
75
+ it "posts a job for a new cluster, defaulting to notify_on_job_finish of true" do
76
+ job_id = "7b93e4d3ab034188a0c2be418d3d24ed"
77
+ project_name = "my_project"
78
+ pigscript_name = "my_pigscript"
79
+ git_ref = "e20395b8b06fbf52e86665b0660209673f311d1a"
80
+ cluster_size = 5
81
+ body = Mortar::API::OkJson.encode({"project_name" => project_name,
82
+ "pigscript_name" => pigscript_name,
83
+ "git_ref" => git_ref,
84
+ "cluster_size" => cluster_size,
85
+ "keep_alive" => true,
86
+ "parameters" => {},
87
+ "notify_on_job_finish" => true
88
+ })
89
+ Excon.stub({:method => :post, :path => "/v2/jobs", :body => body}) do |params|
90
+ {:body => Mortar::API::OkJson.encode({'job_id' => job_id}), :status => 200}
91
+ end
92
+ response = @api.post_job_new_cluster(project_name, pigscript_name, git_ref, cluster_size)
93
+ response.body['job_id'].should == job_id
94
+ end
95
+
96
+ it "accepts notify_on_job_finish of false" do
97
+ job_id = "7b93e4d3ab034188a0c2be418d3d24ed"
98
+ project_name = "my_project"
99
+ pigscript_name = "my_pigscript"
100
+ git_ref = "e20395b8b06fbf52e86665b0660209673f311d1a"
101
+ cluster_size = 5
102
+ body = Mortar::API::OkJson.encode({"project_name" => project_name,
103
+ "pigscript_name" => pigscript_name,
104
+ "git_ref" => git_ref,
105
+ "cluster_size" => cluster_size,
106
+ "keep_alive" => false,
107
+ "parameters" => {},
108
+ "notify_on_job_finish" => false
109
+ })
110
+ Excon.stub({:method => :post, :path => "/v2/jobs", :body => body}) do |params|
111
+ {:body => Mortar::API::OkJson.encode({'job_id' => job_id}), :status => 200}
112
+ end
113
+ response = @api.post_job_new_cluster(project_name, pigscript_name, git_ref, cluster_size, :keepalive => false, :notify_on_job_finish => false)
114
+ response.body['job_id'].should == job_id
115
+ end
70
116
 
71
117
  it "accepts keep_alive of false" do
72
118
  job_id = "7b93e4d3ab034188a0c2be418d3d24ed"
@@ -79,7 +125,9 @@ describe Mortar::API do
79
125
  "git_ref" => git_ref,
80
126
  "cluster_size" => cluster_size,
81
127
  "keep_alive" => false,
82
- "parameters" => {}})
128
+ "parameters" => {},
129
+ "notify_on_job_finish" => true
130
+ })
83
131
  Excon.stub({:method => :post, :path => "/v2/jobs", :body => body}) do |params|
84
132
  {:body => Mortar::API::OkJson.encode({'job_id' => job_id}), :status => 200}
85
133
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mortar-api-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Mortar Data
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-11-27 00:00:00 Z
18
+ date: 2013-01-17 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: excon