marathon_client 0.0.11 → 0.2.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/bin/marathon +37 -26
 - data/lib/marathon/client.rb +24 -0
 - 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: 373a4dd26360c174192c911f7f5077ea9c1822a6
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 73a66e779cb50071b726fa554e4fecf5708fe46d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 4d07a14c8e6b562e84f4dfc83cf00b9eaa1c66b19d8fcdfc4dcd6398ae29cf131e9e577b95dfc46a09bbd14e95e07a7c75440dfd82a9b5e864d346237abf4efa
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e6b8abd1120b3dd4e39be8b13dfc3cb1a77597eeba0fdcaa53febfc11b1ea0f1c64f25120d8fc1515c5b4a4562cb8075bc25d760a708981b583f3723f70919c4
         
     | 
    
        data/bin/marathon
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'marathon'))
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'trollop'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            SUB_COMMANDS = %w[start stop scale list]
         
     | 
| 
      
 6 
     | 
    
         
            +
            SUB_COMMANDS = %w[start stop scale list search]
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            global_opts = Trollop.options do
         
     | 
| 
       9 
9 
     | 
    
         
             
              version Marathon::VERSION
         
     | 
| 
         @@ -16,6 +16,7 @@ Available commands: 
     | 
|
| 
       16 
16 
     | 
    
         
             
              scale   Scale the number of app instances.
         
     | 
| 
       17 
17 
     | 
    
         
             
              stop    Stop an app and remove it from Marathon.
         
     | 
| 
       18 
18 
     | 
    
         
             
              list    Show a list of running apps and their options.
         
     | 
| 
      
 19 
     | 
    
         
            +
              search  Search the current list of apps.
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
            Global options:
         
     | 
| 
       21 
22 
     | 
    
         
             
            EOS
         
     | 
| 
         @@ -49,6 +50,11 @@ cmd_opts = case cmd 
     | 
|
| 
       49 
50 
     | 
    
         
             
                Trollop.options do
         
     | 
| 
       50 
51 
     | 
    
         
             
                  opt :id, 'A unique identifier for the app.', :short => '-i', :type => String
         
     | 
| 
       51 
52 
     | 
    
         
             
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
              when 'search'
         
     | 
| 
      
 54 
     | 
    
         
            +
                Trollop.options do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  opt :id, 'A unique identifier for the app.', :short => '-i', :type => String, :default => nil
         
     | 
| 
      
 56 
     | 
    
         
            +
                  opt :command, 'The command for the app.', :short => '-C', :type => String, :default => nil
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
       52 
58 
     | 
    
         
             
              else
         
     | 
| 
       53 
59 
     | 
    
         
             
                {}
         
     | 
| 
       54 
60 
     | 
    
         
             
              end
         
     | 
| 
         @@ -59,31 +65,7 @@ marathon = Marathon::Client.new( 
     | 
|
| 
       59 
65 
     | 
    
         
             
              global_opts[:marathon_pass]
         
     | 
| 
       60 
66 
     | 
    
         
             
            )
         
     | 
| 
       61 
67 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
            case cmd
         
     | 
| 
       64 
     | 
    
         
            -
            when 'start'
         
     | 
| 
       65 
     | 
    
         
            -
              app_opts = {
         
     | 
| 
       66 
     | 
    
         
            -
                :instances => cmd_opts[:num_instances] || 1,
         
     | 
| 
       67 
     | 
    
         
            -
                :uris => cmd_opts[:uri] || [],
         
     | 
| 
       68 
     | 
    
         
            -
                :cmd => cmd_opts[:command],
         
     | 
| 
       69 
     | 
    
         
            -
                :env => cmd_opts[:env].nil? ? {} : Hash[cmd_opts[:env].map { |e| e.split('=', 2) }],
         
     | 
| 
       70 
     | 
    
         
            -
                :cpus => cmd_opts[:cpus] || 1.0,
         
     | 
| 
       71 
     | 
    
         
            -
                :mem => cmd_opts[:mem] || 10.0,
         
     | 
| 
       72 
     | 
    
         
            -
                :constraints => (cmd_opts[:constraint] || []).map { |c| c.split(':') }
         
     | 
| 
       73 
     | 
    
         
            -
              }
         
     | 
| 
       74 
     | 
    
         
            -
              puts "Starting app '#{cmd_opts[:id]}'"
         
     | 
| 
       75 
     | 
    
         
            -
              res = marathon.start(cmd_opts[:id], app_opts)
         
     | 
| 
       76 
     | 
    
         
            -
              puts res
         
     | 
| 
       77 
     | 
    
         
            -
            when 'scale'
         
     | 
| 
       78 
     | 
    
         
            -
              puts "Scaling app '#{cmd_opts[:id]}' to #{cmd_opts[:num_instances]} instances"
         
     | 
| 
       79 
     | 
    
         
            -
              res = marathon.scale(cmd_opts[:id], cmd_opts[:num_instances])
         
     | 
| 
       80 
     | 
    
         
            -
              puts res
         
     | 
| 
       81 
     | 
    
         
            -
            when 'stop'
         
     | 
| 
       82 
     | 
    
         
            -
              puts "Stopping app '#{cmd_opts[:id]}'"
         
     | 
| 
       83 
     | 
    
         
            -
              res = marathon.stop(cmd_opts[:id])
         
     | 
| 
       84 
     | 
    
         
            -
              puts res
         
     | 
| 
       85 
     | 
    
         
            -
            when 'list'
         
     | 
| 
       86 
     | 
    
         
            -
              res = marathon.list
         
     | 
| 
      
 68 
     | 
    
         
            +
            def handle_listing(res)
         
     | 
| 
       87 
69 
     | 
    
         
             
              if res.success?
         
     | 
| 
       88 
70 
     | 
    
         
             
                res.parsed_response.each do |app|
         
     | 
| 
       89 
71 
     | 
    
         
             
                  puts "App ID:     #{app['id']}"
         
     | 
| 
         @@ -109,6 +91,35 @@ when 'list' 
     | 
|
| 
       109 
91 
     | 
    
         
             
              else
         
     | 
| 
       110 
92 
     | 
    
         
             
                puts res
         
     | 
| 
       111 
93 
     | 
    
         
             
              end
         
     | 
| 
      
 94 
     | 
    
         
            +
            end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
            # Run
         
     | 
| 
      
 97 
     | 
    
         
            +
            case cmd
         
     | 
| 
      
 98 
     | 
    
         
            +
            when 'start'
         
     | 
| 
      
 99 
     | 
    
         
            +
              app_opts = {
         
     | 
| 
      
 100 
     | 
    
         
            +
                :instances => cmd_opts[:num_instances] || 1,
         
     | 
| 
      
 101 
     | 
    
         
            +
                :uris => cmd_opts[:uri] || [],
         
     | 
| 
      
 102 
     | 
    
         
            +
                :cmd => cmd_opts[:command],
         
     | 
| 
      
 103 
     | 
    
         
            +
                :env => cmd_opts[:env].nil? ? {} : Hash[cmd_opts[:env].map { |e| e.split('=', 2) }],
         
     | 
| 
      
 104 
     | 
    
         
            +
                :cpus => cmd_opts[:cpus] || 1.0,
         
     | 
| 
      
 105 
     | 
    
         
            +
                :mem => cmd_opts[:mem] || 10.0,
         
     | 
| 
      
 106 
     | 
    
         
            +
                :constraints => (cmd_opts[:constraint] || []).map { |c| c.split(':') }
         
     | 
| 
      
 107 
     | 
    
         
            +
              }
         
     | 
| 
      
 108 
     | 
    
         
            +
              puts "Starting app '#{cmd_opts[:id]}'"
         
     | 
| 
      
 109 
     | 
    
         
            +
              res = marathon.start(cmd_opts[:id], app_opts)
         
     | 
| 
      
 110 
     | 
    
         
            +
              puts res
         
     | 
| 
      
 111 
     | 
    
         
            +
            when 'scale'
         
     | 
| 
      
 112 
     | 
    
         
            +
              puts "Scaling app '#{cmd_opts[:id]}' to #{cmd_opts[:num_instances]} instances"
         
     | 
| 
      
 113 
     | 
    
         
            +
              res = marathon.scale(cmd_opts[:id], cmd_opts[:num_instances])
         
     | 
| 
      
 114 
     | 
    
         
            +
              puts res
         
     | 
| 
      
 115 
     | 
    
         
            +
            when 'stop'
         
     | 
| 
      
 116 
     | 
    
         
            +
              puts "Stopping app '#{cmd_opts[:id]}'"
         
     | 
| 
      
 117 
     | 
    
         
            +
              res = marathon.stop(cmd_opts[:id])
         
     | 
| 
      
 118 
     | 
    
         
            +
              puts res
         
     | 
| 
      
 119 
     | 
    
         
            +
            when 'list'
         
     | 
| 
      
 120 
     | 
    
         
            +
              handle_listing(marathon.list)
         
     | 
| 
      
 121 
     | 
    
         
            +
            when 'search'
         
     | 
| 
      
 122 
     | 
    
         
            +
              handle_listing(marathon.search(cmd_opts[:id], cmd_opts[:command]))
         
     | 
| 
       112 
123 
     | 
    
         
             
            else
         
     | 
| 
       113 
124 
     | 
    
         
             
              Trollop.die "unknown subcommand #{cmd.inspect}"
         
     | 
| 
       114 
125 
     | 
    
         
             
            end
         
     | 
    
        data/lib/marathon/client.rb
    CHANGED
    
    | 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'uri'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module Marathon
         
     | 
| 
       2 
4 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
5 
     | 
    
         
             
                include HTTParty
         
     | 
| 
         @@ -24,6 +26,18 @@ module Marathon 
     | 
|
| 
       24 
26 
     | 
    
         
             
                  wrap_request(:get, '/v1/apps')
         
     | 
| 
       25 
27 
     | 
    
         
             
                end
         
     | 
| 
       26 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
                def list_tasks(id)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  wrap_request(:get, URI.escape("/v1/apps/#{id}/tasks"))
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                def search(id = nil, cmd = nil)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  params = {}
         
     | 
| 
      
 35 
     | 
    
         
            +
                  params[:id] = id unless id.nil?
         
     | 
| 
      
 36 
     | 
    
         
            +
                  params[:cmd] = cmd unless cmd.nil?
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  wrap_request(:get, "/v1/apps/search?#{query_params(params)}")
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       27 
41 
     | 
    
         
             
                def endpoints(id = nil)
         
     | 
| 
       28 
42 
     | 
    
         
             
                  if id.nil?
         
     | 
| 
       29 
43 
     | 
    
         
             
                    wrap_request(:get, "/v1/endpoints")
         
     | 
| 
         @@ -48,6 +62,12 @@ module Marathon 
     | 
|
| 
       48 
62 
     | 
    
         
             
                  wrap_request(:post, '/v1/apps/stop', :body => body)
         
     | 
| 
       49 
63 
     | 
    
         
             
                end
         
     | 
| 
       50 
64 
     | 
    
         | 
| 
      
 65 
     | 
    
         
            +
                def kill_tasks(appId, host = '*', scale = false)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  body = {}
         
     | 
| 
      
 67 
     | 
    
         
            +
                  params = {:scale => scale, :host => host, :appId => appId}
         
     | 
| 
      
 68 
     | 
    
         
            +
                  wrap_request(:post, "/v1/tasks/kill?#{query_params(params)}", :body => body)
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       51 
71 
     | 
    
         
             
                private
         
     | 
| 
       52 
72 
     | 
    
         | 
| 
       53 
73 
     | 
    
         
             
                def wrap_request(method, url, options = {})
         
     | 
| 
         @@ -57,5 +77,9 @@ module Marathon 
     | 
|
| 
       57 
77 
     | 
    
         
             
                rescue => e
         
     | 
| 
       58 
78 
     | 
    
         
             
                  Marathon::Response.error(e.message)
         
     | 
| 
       59 
79 
     | 
    
         
             
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                def query_params(hash)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  URI.escape(hash.map { |k,v| "#{k}=#{v}" }.join('&'))
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
       60 
84 
     | 
    
         
             
              end
         
     | 
| 
       61 
85 
     | 
    
         
             
            end
         
     | 
    
        data/lib/marathon/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: marathon_client
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tobi Knaup
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2013-11- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2013-11-22 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: trollop
         
     |