Class: Marathon::Apps

Inherits:
Object
  • Object
show all
Defined in:
lib/marathon/app.rb

Overview

This class represents a set of Apps

Instance Method Summary collapse

Constructor Details

#initialize(marathon_instance) ⇒ Apps

Returns a new instance of Apps.



242
243
244
245
# File 'lib/marathon/app.rb', line 242

def initialize(marathon_instance)
  @marathon_instance = marathon_instance
  @connection = marathon_instance.connection
end

Instance Method Details

#change(id, hash, force = false) ⇒ Object

Change parameters of a running application. The new application parameters apply only to subsequently created tasks. Currently running tasks are restarted, while maintaining the minimumHealthCapacity. id: Application’s id. hash: A subset of app’s attributes. force: If the app is affected by a running deployment, then the update operation will fail.

The current deployment can be overridden by setting the `force` query parameter.


286
287
288
289
290
291
# File 'lib/marathon/app.rb', line 286

def change(id, hash, force = false)
  query = {}
  query[:force] = true if force
  json = @connection.put("/v2/apps/#{id}", query, :body => hash.merge(:id => id))
  Marathon::DeploymentInfo.new(json, @marathon_instance)
end

#delete(id) ⇒ Object

Delete the application with id. id: Application’s id.



256
257
258
259
# File 'lib/marathon/app.rb', line 256

def delete(id)
  json = @connection.delete("/v2/apps/#{id}")
  Marathon::DeploymentInfo.new(json, @marathon_instance)
end

#get(id) ⇒ Object

List the application with id. id: Application’s id.



249
250
251
252
# File 'lib/marathon/app.rb', line 249

def get(id)
  json = @connection.get("/v2/apps/#{id}")['app']
  Marathon::App.new(json, @marathon_instance)
end

#list(cmd = nil, embed = nil, id = nil, label = nil) ⇒ Object

List all applications. :cmd: Filter apps to only those whose commands contain cmd. :embed: Embeds nested resources that match the supplied path.

Possible values:
  "apps.tasks". Apps' tasks are not embedded in the response by default.
  "apps.counts". Apps' task counts (tasksStaged, tasksRunning, tasksHealthy, tasksUnhealthy).
  "apps.deployments". Apps' embed all deployment identifier.
  "apps.lastTaskFailure". Apps' embeds the lastTaskFailure
  "apps.failures". Apps' last failures are not embedded in the response by default.
  "apps.taskStats". Apps' exposes task statatistics.

:id: Filter apps to only return those whose id is or contains id. :label: A label selector query contains one or more label selectors



320
321
322
323
324
325
326
327
328
329
# File 'lib/marathon/app.rb', line 320

def list(cmd = nil, embed = nil, id=nil, label=nil)
  query = {}
  query[:cmd] = cmd if cmd
  query[:id] = id if id
  query[:label] = label if label
  Marathon::Util.add_choice(query, :embed, embed, %w[apps.tasks apps.counts
    apps.deployments apps.lastTaskFailure apps.failures apps.taskStats ])
  json = @connection.get('/v2/apps', query)['apps']
  json.map { |j| Marathon::App.new(j, @marathon_instance) }
end

#restart(id, force = false) ⇒ Object

Restart the application with id. id: Application’s id. force: If the app is affected by a running deployment, then the update operation will fail.

The current deployment can be overridden by setting the `force` query parameter.


273
274
275
276
277
278
# File 'lib/marathon/app.rb', line 273

def restart(id, force = false)
  query = {}
  query[:force] = true if force
  json = @connection.post("/v2/apps/#{id}/restart", query)
  Marathon::DeploymentInfo.new(json, @marathon_instance)
end

#start(hash) ⇒ Object

Create and start an application. hash: Hash including all attributes

see https://mesosphere.github.io/marathon/docs/rest-api.html#post-/v2/apps for full details


264
265
266
267
# File 'lib/marathon/app.rb', line 264

def start(hash)
  json = @connection.post('/v2/apps', nil, :body => hash)
  Marathon::App.new(json, @marathon_instance)
end

#version(id, version) ⇒ Object

List the configuration of the application with id at version. id: Application id version: Version name



303
304
305
306
# File 'lib/marathon/app.rb', line 303

def version(id, version)
  json = @connection.get("/v2/apps/#{id}/versions/#{version}")
  Marathon::App.new(json, @marathon_instance, true)
end

#versions(id) ⇒ Object

List the versions of the application with id. id: Application id



295
296
297
298
# File 'lib/marathon/app.rb', line 295

def versions(id)
  json = @connection.get("/v2/apps/#{id}/versions")
  json['versions']
end