marathon-api 1.2.5 → 1.3.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/marathon.rb +61 -8
- data/lib/marathon/app.rb +90 -22
- data/lib/marathon/deployment.rb +27 -6
- data/lib/marathon/event_subscriptions.rb +35 -10
- data/lib/marathon/leader.rb +20 -5
- data/lib/marathon/queue.rb +16 -2
- data/lib/marathon/task.rb +52 -15
- data/lib/marathon/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3921a3fe5bd4c9ad4c204cdc19817507e74bfd4
|
4
|
+
data.tar.gz: fa9a7edb2421055296268c1675a6a1af4a164e2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64b24ff2efea7b645643255e82da98d8fb28d73a69ac1f3a7034de3fcaca1960c9c354ee9faf877b145758637caaea975c5b7e3715cd06d67fbf0b4107fad8e0
|
7
|
+
data.tar.gz: b8f95656fe4c1dda9eddb51adea9ec0d7137dc437d9cc17aee50406a87c21e0bee0bd2e913c938080e0eb830a16917da3442288253154266b1c6d81503012258
|
data/.gitignore
CHANGED
data/lib/marathon.rb
CHANGED
@@ -31,8 +31,56 @@ module Marathon
|
|
31
31
|
require 'marathon/queue'
|
32
32
|
require 'marathon/task'
|
33
33
|
|
34
|
+
# Represents an instance of Marathon
|
35
|
+
class MarathonInstance
|
36
|
+
attr_reader :connection
|
37
|
+
|
38
|
+
def initialize(url, options)
|
39
|
+
@connection = Connection.new(url,options)
|
40
|
+
end
|
41
|
+
|
42
|
+
def ping
|
43
|
+
connection.get('/ping')
|
44
|
+
end
|
45
|
+
|
46
|
+
# Get information about the marathon server
|
47
|
+
def info
|
48
|
+
connection.get('/v2/info')
|
49
|
+
end
|
50
|
+
|
51
|
+
def apps
|
52
|
+
Marathon::Apps.new(connection)
|
53
|
+
end
|
54
|
+
|
55
|
+
def deployments
|
56
|
+
Marathon::Deployments.new(connection)
|
57
|
+
end
|
58
|
+
|
59
|
+
def tasks
|
60
|
+
Marathon::Tasks.new(connection)
|
61
|
+
end
|
62
|
+
|
63
|
+
def queues
|
64
|
+
Marathon::Queues.new(connection)
|
65
|
+
end
|
66
|
+
|
67
|
+
def leaders
|
68
|
+
Marathon::Leader.new(connection)
|
69
|
+
end
|
70
|
+
|
71
|
+
def event_subscriptions
|
72
|
+
Marathon::EventSubscriptions.new(connection)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
|
34
78
|
DEFAULT_URL = 'http://localhost:8080'
|
35
79
|
|
80
|
+
attr_reader :singleton
|
81
|
+
|
82
|
+
@singleton = MarathonInstance::new(DEFAULT_URL,{})
|
83
|
+
|
36
84
|
# Get the marathon url from environment
|
37
85
|
def env_url
|
38
86
|
ENV['MARATHON_URL']
|
@@ -60,36 +108,41 @@ module Marathon
|
|
60
108
|
# Set a new url
|
61
109
|
def url=(new_url)
|
62
110
|
@url = new_url
|
63
|
-
|
111
|
+
reset_singleton!
|
64
112
|
end
|
65
113
|
|
66
114
|
# Set new options
|
67
115
|
def options=(new_options)
|
68
116
|
@options = env_options.merge(new_options || {})
|
69
|
-
|
117
|
+
reset_singleton!
|
70
118
|
end
|
71
119
|
|
72
120
|
# Set a new connection
|
73
121
|
def connection
|
74
|
-
|
122
|
+
singleton.connection
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
def reset_singleton!
|
127
|
+
@singleton = MarathonInstance.new(url,options)
|
75
128
|
end
|
76
129
|
|
77
|
-
# Reset the connection
|
78
130
|
def reset_connection!
|
79
|
-
|
131
|
+
reset_singleton!
|
80
132
|
end
|
81
133
|
|
82
134
|
# Get information about the marathon server
|
83
135
|
def info
|
84
|
-
|
136
|
+
singleton.info
|
85
137
|
end
|
86
138
|
|
87
139
|
# Ping marathon
|
88
140
|
def ping
|
89
|
-
|
141
|
+
singleton.ping
|
90
142
|
end
|
91
143
|
|
92
144
|
module_function :connection, :env_options, :env_url, :info, :logger, :logger=, :ping,
|
93
|
-
:options, :options=, :url, :url= ,:reset_connection
|
145
|
+
:options, :options=, :url, :url= ,:reset_connection!,:reset_singleton!,:singleton
|
146
|
+
|
94
147
|
|
95
148
|
end
|
data/lib/marathon/app.rb
CHANGED
@@ -168,8 +168,7 @@ Version: #{version}
|
|
168
168
|
# List the application with id.
|
169
169
|
# ++id++: Application's id.
|
170
170
|
def get(id)
|
171
|
-
|
172
|
-
new(json)
|
171
|
+
Marathon.singleton.apps.get(id)
|
173
172
|
end
|
174
173
|
|
175
174
|
# List all applications.
|
@@ -179,17 +178,13 @@ Version: #{version}
|
|
179
178
|
# "apps.tasks". Apps' tasks are not embedded in the response by default.
|
180
179
|
# "apps.failures". Apps' last failures are not embedded in the response by default.
|
181
180
|
def list(cmd = nil, embed = nil)
|
182
|
-
|
183
|
-
query[:cmd] = cmd if cmd
|
184
|
-
Marathon::Util.add_choice(query, :embed, embed, %w[apps.tasks apps.failures])
|
185
|
-
json = Marathon.connection.get('/v2/apps', query)['apps']
|
186
|
-
json.map { |j| new(j) }
|
181
|
+
Marathon.singleton.apps.list(cmd,embed)
|
187
182
|
end
|
188
183
|
|
189
184
|
# Delete the application with id.
|
190
185
|
# ++id++: Application's id.
|
191
186
|
def delete(id)
|
192
|
-
Marathon.
|
187
|
+
Marathon.singleton.apps.delete(id)
|
193
188
|
end
|
194
189
|
alias :remove :delete
|
195
190
|
|
@@ -197,8 +192,7 @@ Version: #{version}
|
|
197
192
|
# ++hash++: Hash including all attributes
|
198
193
|
# see https://mesosphere.github.io/marathon/docs/rest-api.html#post-/v2/apps for full details
|
199
194
|
def start(hash)
|
200
|
-
|
201
|
-
new(json)
|
195
|
+
Marathon.singleton.apps.start(hash)
|
202
196
|
end
|
203
197
|
alias :create :start
|
204
198
|
|
@@ -207,10 +201,7 @@ Version: #{version}
|
|
207
201
|
# ++force++: If the app is affected by a running deployment, then the update operation will fail.
|
208
202
|
# The current deployment can be overridden by setting the `force` query parameter.
|
209
203
|
def restart(id, force = false)
|
210
|
-
|
211
|
-
query[:force] = true if force
|
212
|
-
json = Marathon.connection.post("/v2/apps/#{id}/restart", query)
|
213
|
-
Marathon::DeploymentInfo.new(json)
|
204
|
+
Marathon.singleton.apps.restart(id,force)
|
214
205
|
end
|
215
206
|
|
216
207
|
# Change parameters of a running application. The new application parameters apply only to subsequently
|
@@ -220,25 +211,102 @@ Version: #{version}
|
|
220
211
|
# ++force++: If the app is affected by a running deployment, then the update operation will fail.
|
221
212
|
# The current deployment can be overridden by setting the `force` query parameter.
|
222
213
|
def change(id, hash, force = false)
|
223
|
-
|
224
|
-
query[:force] = true if force
|
225
|
-
json = Marathon.connection.put("/v2/apps/#{id}", query, :body => hash.merge(:id => id))
|
226
|
-
Marathon::DeploymentInfo.new(json)
|
214
|
+
Marathon.singleton.apps.change(id,hash,force)
|
227
215
|
end
|
228
216
|
|
229
217
|
# List the versions of the application with id.
|
230
218
|
# ++id++: Application id
|
231
219
|
def versions(id)
|
232
|
-
|
233
|
-
json['versions']
|
220
|
+
Marathon.singleton.apps.versions(id)
|
234
221
|
end
|
235
222
|
|
236
223
|
# List the configuration of the application with id at version.
|
237
224
|
# ++id++: Application id
|
238
225
|
# ++version++: Version name
|
239
226
|
def version(id, version)
|
240
|
-
|
241
|
-
new(json, true)
|
227
|
+
Marathon.singleton.apps.version(id,version)
|
242
228
|
end
|
243
229
|
end
|
244
230
|
end
|
231
|
+
|
232
|
+
# This class represents a set of Apps
|
233
|
+
class Marathon::Apps
|
234
|
+
def initialize(connection)
|
235
|
+
@connection = connection
|
236
|
+
end
|
237
|
+
|
238
|
+
# List the application with id.
|
239
|
+
# ++id++: Application's id.
|
240
|
+
def get(id)
|
241
|
+
json = @connection.get("/v2/apps/#{id}")['app']
|
242
|
+
Marathon::App.new(json)
|
243
|
+
end
|
244
|
+
|
245
|
+
# Delete the application with id.
|
246
|
+
# ++id++: Application's id.
|
247
|
+
def delete(id)
|
248
|
+
@connection.delete("/v2/apps/#{id}")
|
249
|
+
end
|
250
|
+
|
251
|
+
# Create and start an application.
|
252
|
+
# ++hash++: Hash including all attributes
|
253
|
+
# see https://mesosphere.github.io/marathon/docs/rest-api.html#post-/v2/apps for full details
|
254
|
+
def start(hash)
|
255
|
+
json = @connection.post('/v2/apps', nil, :body => hash)
|
256
|
+
Marathon::App.new(json)
|
257
|
+
end
|
258
|
+
|
259
|
+
# Restart the application with id.
|
260
|
+
# ++id++: Application's id.
|
261
|
+
# ++force++: If the app is affected by a running deployment, then the update operation will fail.
|
262
|
+
# The current deployment can be overridden by setting the `force` query parameter.
|
263
|
+
def restart(id, force = false)
|
264
|
+
query = {}
|
265
|
+
query[:force] = true if force
|
266
|
+
json = @connection.post("/v2/apps/#{id}/restart", query)
|
267
|
+
Marathon::DeploymentInfo.new(json)
|
268
|
+
end
|
269
|
+
|
270
|
+
# Change parameters of a running application. The new application parameters apply only to subsequently
|
271
|
+
# created tasks. Currently running tasks are restarted, while maintaining the minimumHealthCapacity.
|
272
|
+
# ++id++: Application's id.
|
273
|
+
# ++hash++: A subset of app's attributes.
|
274
|
+
# ++force++: If the app is affected by a running deployment, then the update operation will fail.
|
275
|
+
# The current deployment can be overridden by setting the `force` query parameter.
|
276
|
+
def change(id, hash, force = false)
|
277
|
+
query = {}
|
278
|
+
query[:force] = true if force
|
279
|
+
json = @connection.put("/v2/apps/#{id}", query, :body => hash.merge(:id => id))
|
280
|
+
Marathon::DeploymentInfo.new(json)
|
281
|
+
end
|
282
|
+
|
283
|
+
# List the versions of the application with id.
|
284
|
+
# ++id++: Application id
|
285
|
+
def versions(id)
|
286
|
+
json = @connection.get("/v2/apps/#{id}/versions")
|
287
|
+
json['versions']
|
288
|
+
end
|
289
|
+
|
290
|
+
# List the configuration of the application with id at version.
|
291
|
+
# ++id++: Application id
|
292
|
+
# ++version++: Version name
|
293
|
+
def version(id, version)
|
294
|
+
json = @connection.get("/v2/apps/#{id}/versions/#{version}")
|
295
|
+
Marathon::App.new(json, true)
|
296
|
+
end
|
297
|
+
|
298
|
+
# List all applications.
|
299
|
+
# ++:cmd++: Filter apps to only those whose commands contain cmd.
|
300
|
+
# ++:embed++: Embeds nested resources that match the supplied path.
|
301
|
+
# Possible values:
|
302
|
+
# "apps.tasks". Apps' tasks are not embedded in the response by default.
|
303
|
+
# "apps.failures". Apps' last failures are not embedded in the response by default.
|
304
|
+
def list(cmd = nil, embed = nil)
|
305
|
+
query = {}
|
306
|
+
query[:cmd] = cmd if cmd
|
307
|
+
Marathon::Util.add_choice(query, :embed, embed, %w[apps.tasks apps.failures])
|
308
|
+
json = @connection.get('/v2/apps', query)['apps']
|
309
|
+
json.map { |j| Marathon::App.new(j) }
|
310
|
+
end
|
311
|
+
|
312
|
+
end
|
data/lib/marathon/deployment.rb
CHANGED
@@ -32,8 +32,7 @@ class Marathon::Deployment < Marathon::Base
|
|
32
32
|
|
33
33
|
# List running deployments.
|
34
34
|
def list
|
35
|
-
|
36
|
-
json.map { |j| new(j) }
|
35
|
+
Marathon.singleton.deployments.list
|
37
36
|
end
|
38
37
|
|
39
38
|
# Cancel the deployment with id.
|
@@ -42,12 +41,34 @@ class Marathon::Deployment < Marathon::Base
|
|
42
41
|
# is created to restore the previous configuration. If set to true, then the deployment
|
43
42
|
# is still canceled but no rollback deployment is created.
|
44
43
|
def delete(id, force = false)
|
45
|
-
|
46
|
-
query[:force] = true if force
|
47
|
-
json = Marathon.connection.delete("/v2/deployments/#{id}")
|
48
|
-
Marathon::DeploymentInfo.new(json)
|
44
|
+
Marathon.singleton.deployments.delete(id,force)
|
49
45
|
end
|
50
46
|
alias :cancel :delete
|
51
47
|
alias :remove :delete
|
52
48
|
end
|
53
49
|
end
|
50
|
+
|
51
|
+
# This class represents a set of Deployments
|
52
|
+
class Marathon::Deployments
|
53
|
+
def initialize(connection)
|
54
|
+
@connection = connection
|
55
|
+
end
|
56
|
+
# List running deployments.
|
57
|
+
def list
|
58
|
+
json = @connection.get('/v2/deployments')
|
59
|
+
json.map { |j| Marathon::Deployment.new(j) }
|
60
|
+
end
|
61
|
+
|
62
|
+
# Cancel the deployment with id.
|
63
|
+
# ++id++: Deployment's id
|
64
|
+
# ++force++: If set to false (the default) then the deployment is canceled and a new deployment
|
65
|
+
# is created to restore the previous configuration. If set to true, then the deployment
|
66
|
+
# is still canceled but no rollback deployment is created.
|
67
|
+
def delete(id, force = false)
|
68
|
+
query = {}
|
69
|
+
query[:force] = true if force
|
70
|
+
json = @connection.delete("/v2/deployments/#{id}")
|
71
|
+
Marathon::DeploymentInfo.new(json)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -2,32 +2,57 @@
|
|
2
2
|
# See https://mesosphere.github.io/marathon/docs/rest-api.html#event-subscriptions for full list of API's methods.
|
3
3
|
class Marathon::EventSubscriptions
|
4
4
|
|
5
|
+
def initialize(connection)
|
6
|
+
@connection = connection
|
7
|
+
end
|
8
|
+
|
9
|
+
# List all event subscriber callback URLs.
|
10
|
+
# Returns a list of strings/URLs.
|
11
|
+
def list
|
12
|
+
json = @connection.get('/v2/eventSubscriptions')
|
13
|
+
json['callbackUrls']
|
14
|
+
end
|
15
|
+
|
16
|
+
# Register a callback URL as an event subscriber.
|
17
|
+
# ++callbackUrl++: URL to which events should be posted.
|
18
|
+
# Returns an event as hash.
|
19
|
+
def register(callbackUrl)
|
20
|
+
query = {}
|
21
|
+
query[:callbackUrl] = callbackUrl
|
22
|
+
json = @connection.post('/v2/eventSubscriptions', query)
|
23
|
+
json
|
24
|
+
end
|
25
|
+
|
26
|
+
# Unregister a callback URL from the event subscribers list.
|
27
|
+
# ++callbackUrl++: URL passed when the event subscription was created.
|
28
|
+
# Returns an event as hash.
|
29
|
+
def unregister(callbackUrl)
|
30
|
+
query = {}
|
31
|
+
query[:callbackUrl] = callbackUrl
|
32
|
+
json = @connection.delete('/v2/eventSubscriptions', query)
|
33
|
+
json
|
34
|
+
end
|
35
|
+
|
36
|
+
|
5
37
|
class << self
|
6
38
|
# List all event subscriber callback URLs.
|
7
39
|
# Returns a list of strings/URLs.
|
8
40
|
def list
|
9
|
-
|
10
|
-
json['callbackUrls']
|
41
|
+
Marathon.singleton.event_subscriptions.list
|
11
42
|
end
|
12
43
|
|
13
44
|
# Register a callback URL as an event subscriber.
|
14
45
|
# ++callbackUrl++: URL to which events should be posted.
|
15
46
|
# Returns an event as hash.
|
16
47
|
def register(callbackUrl)
|
17
|
-
|
18
|
-
query[:callbackUrl] = callbackUrl
|
19
|
-
json = Marathon.connection.post('/v2/eventSubscriptions', query)
|
20
|
-
json
|
48
|
+
Marathon.singleton.event_subscriptions.register(callbackUrl)
|
21
49
|
end
|
22
50
|
|
23
51
|
# Unregister a callback URL from the event subscribers list.
|
24
52
|
# ++callbackUrl++: URL passed when the event subscription was created.
|
25
53
|
# Returns an event as hash.
|
26
54
|
def unregister(callbackUrl)
|
27
|
-
|
28
|
-
query[:callbackUrl] = callbackUrl
|
29
|
-
json = Marathon.connection.delete('/v2/eventSubscriptions', query)
|
30
|
-
json
|
55
|
+
Marathon.singleton.event_subscriptions.unregister(callbackUrl)
|
31
56
|
end
|
32
57
|
end
|
33
58
|
end
|
data/lib/marathon/leader.rb
CHANGED
@@ -2,18 +2,33 @@
|
|
2
2
|
# See https://mesosphere.github.io/marathon/docs/rest-api.html#get-/v2/leader for full list of API's methods.
|
3
3
|
class Marathon::Leader
|
4
4
|
|
5
|
+
def initialize(connection)
|
6
|
+
@connection = connection
|
7
|
+
end
|
8
|
+
|
9
|
+
# Returns the current leader. If no leader exists, raises NotFoundError.
|
10
|
+
def get
|
11
|
+
json = @connection.get('/v2/leader')
|
12
|
+
json['leader']
|
13
|
+
end
|
14
|
+
|
15
|
+
# Causes the current leader to abdicate, triggering a new election.
|
16
|
+
# If no leader exists, raises NotFoundError.
|
17
|
+
def delete
|
18
|
+
json = @connection.delete('/v2/leader')
|
19
|
+
json['message']
|
20
|
+
end
|
21
|
+
|
5
22
|
class << self
|
6
23
|
# Returns the current leader. If no leader exists, raises NotFoundError.
|
7
24
|
def get
|
8
|
-
|
9
|
-
json['leader']
|
25
|
+
Marathon.singleton.leaders.get
|
10
26
|
end
|
11
27
|
|
12
28
|
# Causes the current leader to abdicate, triggering a new election.
|
13
29
|
# If no leader exists, raises NotFoundError.
|
14
30
|
def delete
|
15
|
-
|
16
|
-
json['message']
|
31
|
+
Marathon.singleton.leaders.delete
|
17
32
|
end
|
18
33
|
end
|
19
|
-
end
|
34
|
+
end
|
data/lib/marathon/queue.rb
CHANGED
@@ -20,8 +20,22 @@ class Marathon::Queue < Marathon::Base
|
|
20
20
|
# Show content of the task queue.
|
21
21
|
# Returns Array of Queue objects.
|
22
22
|
def list
|
23
|
-
|
24
|
-
json.map { |j| new(j) }
|
23
|
+
Marathon.singleton.queues.list
|
25
24
|
end
|
26
25
|
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# This class represents the Queue with all its elements
|
29
|
+
class Marathon::Queues
|
30
|
+
def initialize(connection)
|
31
|
+
@connection = connection
|
32
|
+
end
|
33
|
+
|
34
|
+
# Show content of the task queue.
|
35
|
+
# Returns Array of Queue objects.
|
36
|
+
def list
|
37
|
+
json = @connection.get('/v2/queue')['queue']
|
38
|
+
json.map { |j| Marathon::Queue.new(j) }
|
39
|
+
end
|
40
|
+
|
27
41
|
end
|
data/lib/marathon/task.rb
CHANGED
@@ -41,17 +41,13 @@ Version: #{version}
|
|
41
41
|
# ++status++: Return only those tasks whose status matches this parameter.
|
42
42
|
# If not specified, all tasks are returned. Possible values: running, staging.
|
43
43
|
def list(status = nil)
|
44
|
-
|
45
|
-
Marathon::Util.add_choice(query, :status, status, %w[running staging])
|
46
|
-
json = Marathon.connection.get('/v2/tasks', query)['tasks']
|
47
|
-
json.map { |j| new(j) }
|
44
|
+
Marathon.singleton.tasks.list(status)
|
48
45
|
end
|
49
46
|
|
50
47
|
# List all running tasks for application appId.
|
51
48
|
# ++appId++: Application's id
|
52
49
|
def get(appId)
|
53
|
-
|
54
|
-
json.map { |j| new(j) }
|
50
|
+
Marathon.singleton.tasks.get(appId)
|
55
51
|
end
|
56
52
|
|
57
53
|
# Kill the given list of tasks and scale apps if requested.
|
@@ -59,10 +55,7 @@ Version: #{version}
|
|
59
55
|
# ++scale++: Scale the app down (i.e. decrement its instances setting by the number of tasks killed)
|
60
56
|
# after killing the specified tasks.
|
61
57
|
def delete(ids, scale = false)
|
62
|
-
|
63
|
-
query[:scale] = true if scale
|
64
|
-
ids = [ids] if ids.is_a?(String)
|
65
|
-
Marathon.connection.post("/v2/tasks/delete", query, :body => {:ids => ids})
|
58
|
+
Marathon.singleton.tasks.delete(ids,scale)
|
66
59
|
end
|
67
60
|
alias :remove :delete
|
68
61
|
alias :kill :delete
|
@@ -73,14 +66,58 @@ Version: #{version}
|
|
73
66
|
# ++scale++: Scale the app down (i.e. decrement its instances setting by the number of tasks killed)
|
74
67
|
# after killing the specified tasks.
|
75
68
|
def delete_all(appId, host = nil, scale = false)
|
76
|
-
|
77
|
-
query[:host] = host if host
|
78
|
-
query[:scale] = true if scale
|
79
|
-
json = Marathon.connection.delete("/v2/apps/#{appId}/tasks", query)['tasks']
|
80
|
-
json.map { |j| new(j) }
|
69
|
+
Marathon.singleton.tasks.delete_all(appId,host,scale)
|
81
70
|
end
|
82
71
|
alias :remove_all :delete_all
|
83
72
|
alias :kill_all :delete_all
|
84
73
|
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# This class represents a set of Tasks
|
77
|
+
class Marathon::Tasks
|
78
|
+
def initialize(connection)
|
79
|
+
@connection = connection
|
80
|
+
end
|
81
|
+
|
82
|
+
# List tasks of all applications.
|
83
|
+
# ++status++: Return only those tasks whose status matches this parameter.
|
84
|
+
# If not specified, all tasks are returned. Possible values: running, staging.
|
85
|
+
def list(status = nil)
|
86
|
+
query = {}
|
87
|
+
Marathon::Util.add_choice(query, :status, status, %w[running staging])
|
88
|
+
json = @connection.get('/v2/tasks', query)['tasks']
|
89
|
+
json.map { |j| Marathon::Task.new(j) }
|
90
|
+
end
|
91
|
+
|
92
|
+
# List all running tasks for application appId.
|
93
|
+
# ++appId++: Application's id
|
94
|
+
def get(appId)
|
95
|
+
json = @connection.get("/v2/apps/#{appId}/tasks")['tasks']
|
96
|
+
json.map { |j| Marathon::Task.new(j) }
|
97
|
+
end
|
98
|
+
|
99
|
+
# Kill the given list of tasks and scale apps if requested.
|
100
|
+
# ++ids++: Id or list of ids with target tasks.
|
101
|
+
# ++scale++: Scale the app down (i.e. decrement its instances setting by the number of tasks killed)
|
102
|
+
# after killing the specified tasks.
|
103
|
+
def delete(ids, scale = false)
|
104
|
+
query = {}
|
105
|
+
query[:scale] = true if scale
|
106
|
+
ids = [ids] if ids.is_a?(String)
|
107
|
+
@connection.post("/v2/tasks/delete", query, :body => {:ids => ids})
|
108
|
+
end
|
109
|
+
|
110
|
+
# Kill tasks that belong to the application appId.
|
111
|
+
# ++appId++: Application's id
|
112
|
+
# ++host++: Kill only those tasks running on host host.
|
113
|
+
# ++scale++: Scale the app down (i.e. decrement its instances setting by the number of tasks killed)
|
114
|
+
# after killing the specified tasks.
|
115
|
+
def delete_all(appId, host = nil, scale = false)
|
116
|
+
query = {}
|
117
|
+
query[:host] = host if host
|
118
|
+
query[:scale] = true if scale
|
119
|
+
json = @connection.delete("/v2/apps/#{appId}/tasks", query)['tasks']
|
120
|
+
json.map { |j| Marathon::Task.new(j) }
|
121
|
+
end
|
85
122
|
|
86
123
|
end
|
data/lib/marathon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marathon-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Bechstein
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|