mortar-api-ruby 0.4.1 → 0.5.0

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.
@@ -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