44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			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
 | 
