Sha256: e4f57b33622fb7515e9a51124636d0e91ef0fec9836cf81cc48306b423e8ca21

Contents?: true

Size: 1.71 KB

Versions: 6

Compression:

Stored size: 1.71 KB

Contents

require 'escape'

module EY
  module Model
    class Deployment < ApiStruct.new(:id, :app, :created_at, :commit, :environment, :finished_at, :migrate_command, :output, :ref, :resolved_ref, :successful)
      def self.started(environment, app, ref, migrate_command)
        deployment = from_hash({
          :app             => app,
          :environment     => environment,
          :migrate_command => migrate_command,
          :ref             => ref,
        })
        deployment.start
        deployment
      end

      def start
        post_to_api({
          :migrate         => !!migrate_command,
          :migrate_command => migrate_command,
          :output          => output,
          :ref             => ref,
        })
      end

      def finished(successful, output)
        self.successful = successful
        self.output = output
        put_to_api({:successful => successful, :output => output})
      end

      private

      def post_to_api(params)
        update_with_response api.request(collection_uri, :method => :post, :params => {:deployment => params})
      end

      def put_to_api(params)
        update_with_response api.request(member_uri("/finished"), :method => :put, :params => {:deployment => params})
      end

      def update_with_response(response)
        data = response['deployment']
        data.each do |key,val|
          self.send("#{key}=", val) if respond_to?("#{key}=")
        end
      end

      def collection_uri
        "/apps/#{app.id}/environments/#{environment.id}/deployments"
      end

      def member_uri(path = nil)
        "/apps/#{app.id}/environments/#{environment.id}/deployments/#{id}#{path}"
      end

      def api
        app.api
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
engineyard-1.3.18 lib/engineyard/model/deployment.rb
engineyard-1.3.17 lib/engineyard/model/deployment.rb
engineyard-1.3.16 lib/engineyard/model/deployment.rb
engineyard-1.3.15 lib/engineyard/model/deployment.rb
engineyard-1.3.14 lib/engineyard/model/deployment.rb
engineyard-1.3.13 lib/engineyard/model/deployment.rb