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(connection) ⇒ Apps

Returns a new instance of Apps.



236
237
238
# File 'lib/marathon/app.rb', line 236

def initialize(connection)
  @connection = 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.


279
280
281
282
283
284
# File 'lib/marathon/app.rb', line 279

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)
end

#delete(id) ⇒ Object

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



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

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

#get(id) ⇒ Object

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



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

def get(id)
  json = @connection.get("/v2/apps/#{id}")['app']
  Marathon::App.new(json)
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



313
314
315
316
317
318
319
320
321
322
# File 'lib/marathon/app.rb', line 313

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) }
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.


266
267
268
269
270
271
# File 'lib/marathon/app.rb', line 266

def restart(id, force = false)
  query = {}
  query[:force] = true if force
  json = @connection.post("/v2/apps/#{id}/restart", query)
  Marathon::DeploymentInfo.new(json)
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


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

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

#version(id, version) ⇒ Object

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



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

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

#versions(id) ⇒ Object

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



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

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