Class: Marathon::App
Overview
This class represents a Marathon App. See mesosphere.github.io/marathon/docs/rest-api.html#apps for full list of API’s methods.
Constant Summary collapse
- ACCESSORS =
%w[ id args cmd cpus disk env executor fetch instances mem ports requirePorts storeUris tasksHealthy tasksUnhealthy tasksRunning tasksStaged upgradeStrategy deployments uris user version labels ]
- DEFAULTS =
{ :env => {}, :labels => {} }
Instance Attribute Summary collapse
-
#constraints ⇒ Object
readonly
Returns the value of attribute constraints.
-
#container ⇒ Object
readonly
Returns the value of attribute container.
-
#healthChecks ⇒ Object
readonly
Returns the value of attribute healthChecks.
-
#read_only ⇒ Object
readonly
Returns the value of attribute read_only.
-
#tasks ⇒ Object
readonly
Returns the value of attribute tasks.
Attributes inherited from Base
Class Method Summary collapse
-
.change(id, hash, force = false) ⇒ Object
Change parameters of a running application.
-
.delete(id) ⇒ Object
(also: remove)
Delete the application with id.
-
.get(id) ⇒ Object
List the application with id.
-
.list(cmd = nil, embed = nil, id = nil, label = nil) ⇒ Object
List all applications.
-
.restart(id, force = false) ⇒ Object
Restart the application with id.
-
.start(hash) ⇒ Object
(also: create)
Create and start an application.
-
.version(id, version) ⇒ Object
List the configuration of the application with id at version.
-
.versions(id) ⇒ Object
List the versions of the application with id.
Instance Method Summary collapse
-
#change!(hash, force = false) ⇒ Object
Change parameters of a running application.
-
#check_read_only ⇒ Object
Prevent actions on read only instances.
-
#initialize(hash, marathon_instance = Marathon.singleton, read_only = false) ⇒ App
constructor
Create a new application object.
-
#refresh ⇒ Object
Reload attributes from marathon API.
-
#restart!(force = false) ⇒ Object
Initiates a rolling restart of all running tasks of the given app.
-
#roll_back!(version, force = false) ⇒ Object
Create a new version with parameters of an old version.
-
#scale!(instances, force = false) ⇒ Object
Change the number of desired instances.
-
#start!(force = false) ⇒ Object
Create and start the application.
-
#suspend!(force = false) ⇒ Object
Change the number of desired instances to 0.
-
#to_pretty_s ⇒ Object
Returns a string for listing the application.
- #to_s ⇒ Object
-
#versions(version = nil) ⇒ Object
List the versions of the application.
Methods inherited from Base
Methods included from Error
error_class, error_message, from_response
Constructor Details
#initialize(hash, marathon_instance = Marathon.singleton, read_only = false) ⇒ App
Create a new application object. hash
: Hash including all attributes.
See https://mesosphere.github.io/marathon/docs/rest-api.html#post-/v2/apps for full details.
read_only
: prevent actions on this application marathon_instance
: MarathonInstance holding a connection to marathon
21 22 23 24 25 26 27 |
# File 'lib/marathon/app.rb', line 21 def initialize(hash, marathon_instance = Marathon.singleton, read_only = false) super(Marathon::Util.merge_keywordized_hash(DEFAULTS, hash), ACCESSORS) raise ArgumentError, 'App must have an id' unless id @read_only = read_only @marathon_instance = marathon_instance refresh_attributes end |
Instance Attribute Details
#constraints ⇒ Object (readonly)
Returns the value of attribute constraints.
14 15 16 |
# File 'lib/marathon/app.rb', line 14 def constraints @constraints end |
#container ⇒ Object (readonly)
Returns the value of attribute container.
14 15 16 |
# File 'lib/marathon/app.rb', line 14 def container @container end |
#healthChecks ⇒ Object (readonly)
Returns the value of attribute healthChecks.
14 15 16 |
# File 'lib/marathon/app.rb', line 14 def healthChecks @healthChecks end |
#read_only ⇒ Object (readonly)
Returns the value of attribute read_only.
14 15 16 |
# File 'lib/marathon/app.rb', line 14 def read_only @read_only end |
#tasks ⇒ Object (readonly)
Returns the value of attribute tasks.
14 15 16 |
# File 'lib/marathon/app.rb', line 14 def tasks @tasks end |
Class 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.
220 221 222 |
# File 'lib/marathon/app.rb', line 220 def change(id, hash, force = false) Marathon.singleton.apps.change(id, hash, force) end |
.delete(id) ⇒ Object Also known as: remove
Delete the application with id. id
: Application’s id.
191 192 193 |
# File 'lib/marathon/app.rb', line 191 def delete(id) Marathon.singleton.apps.delete(id) end |
.get(id) ⇒ Object
List the application with id. id
: Application’s id.
175 176 177 |
# File 'lib/marathon/app.rb', line 175 def get(id) Marathon.singleton.apps.get(id) 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.failures". Apps' last failures are not embedded in the response by default.
185 186 187 |
# File 'lib/marathon/app.rb', line 185 def list(cmd = nil, = nil, id=nil, label=nil) Marathon.singleton.apps.list(cmd, , id, label) 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.
210 211 212 |
# File 'lib/marathon/app.rb', line 210 def restart(id, force = false) Marathon.singleton.apps.restart(id, force) end |
.start(hash) ⇒ Object Also known as: create
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
200 201 202 |
# File 'lib/marathon/app.rb', line 200 def start(hash) Marathon.singleton.apps.start(hash) end |
Instance Method Details
#change!(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. hash
: Hash of attributes to change. 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.
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/marathon/app.rb', line 80 def change!(hash, force = false) check_read_only Marathon::Util.keywordize_hash!(hash) if hash[:version] and hash.size > 1 # remove :version if it's not the only key new_hash = Marathon::Util.remove_keys(hash, [:version]) else new_hash = hash end @marathon_instance.apps.change(id, new_hash, force) end |
#check_read_only ⇒ Object
Prevent actions on read only instances. Raises an ArgumentError when triying to change read_only instances.
31 32 33 34 35 |
# File 'lib/marathon/app.rb', line 31 def check_read_only if read_only raise Marathon::Error::ArgumentError, "This app is 'read only' and does not support any actions" end end |
#refresh ⇒ Object
Reload attributes from marathon API.
50 51 52 53 54 55 56 |
# File 'lib/marathon/app.rb', line 50 def refresh check_read_only new_app = @marathon_instance.apps.get(id) @info = new_app.info refresh_attributes self end |
#restart!(force = false) ⇒ Object
Initiates a rolling restart of all running tasks of the given app. This call respects the configured minimumHealthCapacity. 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.
69 70 71 72 |
# File 'lib/marathon/app.rb', line 69 def restart!(force = false) check_read_only @marathon_instance.apps.restart(id, force) end |
#roll_back!(version, force = false) ⇒ Object
Create a new version with parameters of an old version. Currently running tasks are restarted, while maintaining the minimumHealthCapacity. version
: Version name of the old version. 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.
97 98 99 |
# File 'lib/marathon/app.rb', line 97 def roll_back!(version, force = false) change!({:version => version}, force) end |
#scale!(instances, force = false) ⇒ Object
Change the number of desired instances. instances
: Number of running instances. 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.
105 106 107 |
# File 'lib/marathon/app.rb', line 105 def scale!(instances, force = false) change!({:instances => instances}, force) end |
#start!(force = false) ⇒ Object
Create and start the application. 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.
61 62 63 |
# File 'lib/marathon/app.rb', line 61 def start!(force = false) change!(info, force) end |
#suspend!(force = false) ⇒ Object
Change the number of desired instances to 0. 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.
112 113 114 |
# File 'lib/marathon/app.rb', line 112 def suspend!(force = false) scale!(0, force) end |
#to_pretty_s ⇒ Object
Returns a string for listing the application.
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/marathon/app.rb', line 121 def to_pretty_s %Q[ App ID: #{id} Instances: #{tasks.size}/#{instances} Command: #{cmd} CPUs: #{cpus} Memory: #{mem} MB #{pretty_container} #{pretty_uris} #{pretty_env} #{pretty_constraints} Version: #{version} ] .gsub(/\n\s+/, "\n") .gsub(/\n\n+/, "\n") .strip end |
#to_s ⇒ Object
116 117 118 |
# File 'lib/marathon/app.rb', line 116 def to_s "Marathon::App { :id => #{id} }" end |
#versions(version = nil) ⇒ Object
List the versions of the application. version
: Get a specific versions Returns Array of Strings if ++version = nil++, else returns Hash with version information.
41 42 43 44 45 46 47 |
# File 'lib/marathon/app.rb', line 41 def versions(version = nil) if version @marathon_instance.apps.version(id, version) else @marathon_instance.apps.versions(id) end end |