fluke/devops-service/db/mongo/models/stack/stack_ec2.rb
2015-11-20 15:14:59 +03:00

44 lines
1.2 KiB
Ruby

require 'db/mongo/models/stack/stack_base'
module Devops
module Model
class StackEc2 < StackBase
def initialize attr={}
super(attr)
self.provider = 'ec2'
end
def stack_status
self.details['StackStatus'] if self.details
end
# creation date is instance of unsupported by mongo class, so stringify it
def bson_safe_details
return unless details
result = details.dup
result['CreationTime'] = result['CreationTime'].to_s
result
end
def update_in_cloud!(params)
parameters = params.keep_if do |key|
%w(Parameters TemplateBody TemplateURL Capabilities).include?(key)
end
provider_instance.update_stack(self, parameters)
end
# We should improve this functionality: stack will be rollbacked
# if there are errors during stack_template changing, so we should track
# that process and persist changes only in case of success.
def change_stack_template!(stack_template)
self.stack_template = stack_template
update_in_cloud!('TemplateBody' => template_body)
Devops::Db.connector.stack_update(self)
end
end
end
end