Sha256: 8675f4b48723a6c516edb5af958f684dfa0959685839b15db38d8d6349fd03cb

Contents?: true

Size: 1.55 KB

Versions: 6

Compression:

Stored size: 1.55 KB

Contents

require 'rancher/api/models/instance/action'

module Rancher
  module Api
    #
    # instance usually container
    #
    class Instance
      include ::Her::Model

      belongs_to :host

      def container?
        type == 'container'
      end

      #
      # Actions: execute, logs, restart, setlabels, stop, update
      #

      #
      # Execute works like this:
      #   - send request with command (array of strings)
      #   - in response you get WebSocket URL and token
      #   - connect to container using WebSocket and send token as parameter
      #   - get response and exit websocket connection
      #

      # HTTP/1.1 POST /v1/projects/1a5/containers/1i382/?action=execute
      # Host: 188.166.70.58:8080
      # Accept: application/json
      # Content-Type: application/json
      # Content-Length: 112

      # {
      #   "attachStdin": true,
      #   "attachStdout": true,
      #   "command": [
      #     "rake",
      #     "db:create",
      #     "db:schema:load",
      #     "db:seed"
      #   ],
      #   "tty": true
      # }

      def execute(command)
        url = actions['execute']

        data = {
          'attachStdin' => true,
          'attachStdout' => true,
          'command' => command,
          'tty' => true
        }

        action = Action.post(url, data)
        action.run!
      end

      def logs(lines = 20)
        url = actions['logs']
        data = {
          'follow' => false,
          'lines' => lines
        }

        action = Action.post(url, data)
        action.run!
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rancher-api-0.4.0 lib/rancher/api/models/instance.rb
rancher-api-0.3.8 lib/rancher/api/models/instance.rb
rancher-api-0.3.7 lib/rancher/api/models/instance.rb
rancher-api-0.3.6 lib/rancher/api/models/instance.rb
rancher-api-0.3.5 lib/rancher/api/models/instance.rb
rancher-api-0.3.3 lib/rancher/api/models/instance.rb