Sha256: 796e9adf41227be9078b60462c3e69f2dceda8511369e77776b79200094f0f15

Contents?: true

Size: 1.8 KB

Versions: 3

Compression:

Stored size: 1.8 KB

Contents

module Kontena
  module Callbacks
    class AuthenticateAfterDeploy < Kontena::Callback

      include Kontena::Cli::Common

      matches_commands 'master create'

      def after
        ENV["DEBUG"] && puts("Command result: #{command.result.inspect}")
        ENV["DEBUG"] && puts("Command exit code: #{command.exit_code.inspect}")
        return unless command.exit_code == 0
        return unless command.result.kind_of?(Hash)
        return unless command.result.has_key?(:public_ip)
        return unless command.result.has_key?(:code)
        return unless command.result.has_key?(:name)

        # In case there already is a server with the same name add random characters to name
        if config.find_server(command.result[:name])
          command.result[:name] = "#{command.result[:name]}-#{SecureRandom.hex(2)}"
        end

        new_master = Kontena::Cli::Config::Server.new(
          url: "https://#{command.result[:public_ip]}",
          name: command.result[:name]
        )

        retried = false

        # Figure out if HTTPS works, if not, try HTTP
        begin
          ENV["DEBUG"] && puts("Trying to request / from #{new_master.url}")
          client = Kontena::Client.new(new_master.url, nil, ignore_ssl_errors: true)
          client.get('/')
        rescue
          ENV["DEBUG"] && puts("HTTPS test failed: #{$!} #{$!.message}")
          unless retried
            new_master.url = "http://#{command.result[:public_ip]}"
            retried = true
            retry
          end
          return
        end

        require 'shellwords'
        cmd = "master login --verbose --name #{command.result[:name].shellescape} --code #{command.result[:code].shellescape} #{new_master.url.shellescape}"
        ENV["DEBUG"] && puts("Running: #{cmd}")
        Kontena.run(cmd)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kontena-cli-0.16.0.pre3 lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb
kontena-cli-0.16.0.pre2 lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb
kontena-cli-0.16.0.pre1 lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb