Sha256: 1364e00dd41f739cea2cdd9ce63656f939a3c2664edc55b13daf6fe209c8f297

Contents?: true

Size: 1.27 KB

Versions: 7

Compression:

Stored size: 1.27 KB

Contents

require_relative 'common'

module Kontena::Cli::Stacks
  class DeployCommand < Kontena::Command
    include Kontena::Cli::Common
    include Kontena::Cli::GridOptions
    include Common

    parameter "NAME", "Stack name"

    def execute
      require_api_url
      token = require_token

      deployment = nil
      spinner "Deploying stack #{pastel.cyan(name)}" do
        deployment = deploy_stack(token, name)
        deployment['service_deploys'].each do |service_deploy|
          wait_for_deploy_to_finish(token, service_deploy)
        end
      end
    end

    def deploy_stack(token, name)
      client(token).post("stacks/#{current_grid}/#{name}/deploy", {})
    end

    # @param [String] token
    # @param [Hash] deployment
    # @return [Boolean]
    def wait_for_deploy_to_finish(token, deployment, timeout = 600)
      deployed = false
      Timeout::timeout(timeout) do
        until deployed
          deployment = client(token).get("services/#{deployment['service_id']}/deploys/#{deployment['id']}")
          deployed = true if deployment['finished_at']
          sleep 1
        end
        if deployment['state'] == 'error'
          raise deployment['reason']
        end
      end

      deployed
    rescue Timeout::Error
      raise 'deploy timed out'
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
kontena-cli-1.0.0.pre2 lib/kontena/cli/stacks/deploy_command.rb
kontena-cli-1.0.0.pre1 lib/kontena/cli/stacks/deploy_command.rb
kontena-cli-0.17.0.pre5 lib/kontena/cli/stacks/deploy_command.rb
kontena-cli-0.17.0.pre4 lib/kontena/cli/stacks/deploy_command.rb
kontena-cli-0.17.0.pre3 lib/kontena/cli/stacks/deploy_command.rb
kontena-cli-0.17.0.pre2 lib/kontena/cli/stacks/deploy_command.rb
kontena-cli-0.17.0.pre1 lib/kontena/cli/stacks/deploy_command.rb