lib/simple_deploy/stack.rb in simple_deploy-0.4.5 vs lib/simple_deploy/stack.rb in simple_deploy-0.4.6
- old
+ new
@@ -1,9 +1,7 @@
require 'stackster'
require 'simple_deploy/stack/deployment'
-require 'simple_deploy/stack/stack_reader'
-require 'simple_deploy/stack/stack_lister'
require 'simple_deploy/stack/stack_attribute_formater'
module SimpleDeploy
class Stack
@@ -13,66 +11,33 @@
@config = Config.new :logger => args[:logger]
@logger = @config.logger
end
def create(args)
- stack.create :attributes => stack_attribute_formater.updated_attributes(args[:attributes]),
- :template => args[:template]
+ attributes = stack_attribute_formater.updated_attributes args[:attributes]
+ stack.create :attributes => attributes,
+ :template => args[:template]
end
def update(args)
@logger.info "Updating #{@name}."
- stack.update :attributes => stack_attribute_formater.updated_attributes(args[:attributes])
+ attributes = stack_attribute_formater.updated_attributes args[:attributes]
+ stack.update :attributes => attributes
@logger.info "Update complete for #{@name}."
end
- # To Do: Abstract deployment into it's own class
- # Pass in required stack objects for attribut mgmt
def deploy(force = false)
- @logger.info "Deploying to #{@name}."
- @logger.debug "Checking deployment status for #{@name}."
- if deployment_in_progress?
- @logger.info "Deployment in progress for #{@name}."
- @logger.info "Started by #{attributes['deployment_user']}@#{attributes['deployment_datetime']}."
- if force
- @logger.info "Forcing. Clearing deployment status."
- clear_deployment_status
- else
- @logger.error "Exiting due to existing deployment."
- @logger.error "Use -f to override."
- exit 1
- end
- else
- @logger.debug "No other deployments in progress for #{@name}."
- end
- set_deployment_in_progress
- deployment.execute
- clear_deployment_status
- @logger.info "Deploy completed succesfully for #{@name}."
+ deployment.create_deployment
+ deployment.execute force
end
def ssh
deployment.ssh
end
- def deployment_in_progress?
- attributes['deployment_in_progress'] == 'true'
- end
-
- def set_deployment_in_progress
- @logger.debug "Setting deployment in progress by #{ssh_user} for #{@name}."
- stack.update :attributes => [ { 'deployment_in_progress' => 'true',
- 'deployment_user' => ssh_user,
- 'deployment_datetime' => Time.now.to_s } ]
- end
-
- def clear_deployment_status
- @logger.debug "Clearing deployment status for #{@name}."
- stack.update :attributes => [ { 'deployment_in_progress' => '' } ]
- end
-
def destroy
+ deployment.create_deployment
stack.destroy
@logger.info "#{@name} destroyed."
end
def events(limit)
@@ -86,14 +51,13 @@
def resources
stack.resources
end
def instances
- stack.instances.map do |i|
- if i['instancesSet'].first['privateIpAddress']
- i['instancesSet'].first['privateIpAddress']
- end
+ stack.instances.map do |instance|
+ info = instance['instancesSet'].first
+ info['vpcId'] ? info['privateIpAddress'] : info['ipAddress']
end
end
def status
stack.status
@@ -112,13 +76,14 @@
end
private
def stack
+ stackster_config = @config.environment @environment
@stack ||= Stackster::Stack.new :environment => @environment,
:name => @name,
- :config => @config.environment(@environment),
+ :config => stackster_config,
:logger => @logger
end
def stack_attribute_formater
@saf ||= StackAttributeFormater.new :config => @config,
@@ -126,11 +91,12 @@
end
def deployment
@deployment ||= Stack::Deployment.new :config => @config,
:environment => @environment,
+ :name => @name,
+ :stack => stack,
:instances => instances,
- :attributes => attributes,
:ssh_user => ssh_user,
:ssh_key => ssh_key
end
def ssh_key