Sha256: 37cf96066a63237526f4ee1a0d0eb282fe5409466257a1e23a1282fe3157f493

Contents?: true

Size: 1.36 KB

Versions: 36

Compression:

Stored size: 1.36 KB

Contents

module Ufo::Cfn
  class Deploy < Base
    def run
      ensure_log_group_exist
      ensure_cluster_exist
      stop_old_tasks
      stack = Stack.new(@options)
      success = stack.deploy

      return unless @options[:wait]
      if success
        puts "Software shipped!"
      else
        puts "Software fail to ship."
        exit 1
      end
    end

    def ensure_cluster_exist
      return unless Ufo.config.ecs.create_cluster

      cluster = ecs_clusters.first
      exist = cluster && cluster.status == "ACTIVE"
      return if exist

      ecs.create_cluster(cluster_name: @cluster)
      logger.info "#{@cluster} cluster created."
    end

    def ecs_clusters
      ecs.describe_clusters(clusters: [@cluster]).clusters
    end

    # Start a thread that will poll for ecs deployments and kill of tasks in old deployments.
    # This must be done in a thread because the stack update process is blocking.
    def stop_old_tasks
      return unless @options[:stop_old_tasks]
      return unless @options[:wait] # only works when deployment is blocking

      Thread.new do
        stop = Ufo::Stop.new(@options.merge(mute: true))
        while true
          stop.log "checking for old tasks and waiting for 10 seconds"
          stop.run
          sleep 10
        end
      end
    end

    def ensure_log_group_exist
      Ufo::LogGroup.new(@options).create
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
ufo-6.3.13 lib/ufo/cfn/deploy.rb
ufo-6.3.12 lib/ufo/cfn/deploy.rb
ufo-6.3.11 lib/ufo/cfn/deploy.rb
ufo-6.3.10 lib/ufo/cfn/deploy.rb
ufo-6.3.9 lib/ufo/cfn/deploy.rb
ufo-6.3.8 lib/ufo/cfn/deploy.rb
ufo-6.3.7 lib/ufo/cfn/deploy.rb
ufo-6.3.6 lib/ufo/cfn/deploy.rb
ufo-6.3.5 lib/ufo/cfn/deploy.rb
ufo-6.3.4 lib/ufo/cfn/deploy.rb
ufo-6.3.3 lib/ufo/cfn/deploy.rb
ufo-6.3.2 lib/ufo/cfn/deploy.rb
ufo-6.3.1 lib/ufo/cfn/deploy.rb
ufo-6.3.0 lib/ufo/cfn/deploy.rb
ufo-6.2.5 lib/ufo/cfn/deploy.rb
ufo-6.2.4 lib/ufo/cfn/deploy.rb
ufo-6.2.3 lib/ufo/cfn/deploy.rb
ufo-6.2.2 lib/ufo/cfn/deploy.rb
ufo-6.2.1 lib/ufo/cfn/deploy.rb
ufo-6.2.0 lib/ufo/cfn/deploy.rb