Sha256: 45bc76d64aabab571864a5dba2a1f335a4b052a788cb353d23622e385b4b32ab

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

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

module Rancher
  module Api
    module Helpers
      module Instance
        #
        # 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
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rancher-api-beta-0.8.1 lib/rancher/api/helpers/instance.rb