74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| module Devops
 | |
|   module Model
 | |
|     class StackBase < MongoModel
 | |
| 
 | |
|       attr_accessor :id, :project, :deploy_env, :stack_template, :cloud_stack_id, :provider, :parameters, :template_body
 | |
| 
 | |
|       types id: {type: String, empty: false},
 | |
|             provider: {type: String, empty: false},
 | |
|             project: {type: String, empty: true},
 | |
|             deploy_env: {type: String, empty: true},
 | |
|             stack_template: {type: String, empty: true},
 | |
|             template_body: {type: String, empty: true}
 | |
|             # cloud_stack_id: {type: String, empty: true}
 | |
|             # TODO: add parameters Hash
 | |
| 
 | |
|       def initialize attrs={}
 | |
|         self.id = attrs['id']
 | |
|         self.provider = attrs['provider']
 | |
|         self.project = attrs['project']
 | |
|         self.deploy_env = attrs['deploy_env']
 | |
|         self.stack_template = attrs['stack_template']
 | |
|         self.template_body = attrs['template_body']
 | |
|         # self.cloud_stack_id = attrs['cloud_stack_id']
 | |
|         self.parameters = attrs['parameters']
 | |
|         self
 | |
|       end
 | |
| 
 | |
|       def to_hash_without_id
 | |
|         {
 | |
|           provider: provider,
 | |
|           project: project,
 | |
|           deploy_env: deploy_env,
 | |
|           stack_template: stack_template,
 | |
|           cloud_stack_id: cloud_stack_id,
 | |
|           parameters: parameters
 | |
|         }
 | |
|       end
 | |
| 
 | |
| 
 | |
|       # attrs should include:
 | |
|       # - id (String)
 | |
|       # - provider (String)
 | |
|       # - deploy_env (String)
 | |
|       # - stack_template (String)
 | |
|       def self.create(attrs)
 | |
|         model = new(attrs)
 | |
|         model.create_stack_in_cloud!
 | |
|         model
 | |
|       end
 | |
| 
 | |
|       def self.build_from_bson(attrs)
 | |
|         attrs['id'] = attrs["_id"]
 | |
|         self.new(attrs)
 | |
|       end
 | |
| 
 | |
|       def create_stack_in_cloud!
 | |
|         raise 'override me'
 | |
|       end
 | |
| 
 | |
|       def delete_stack_in_cloud!
 | |
|         raise 'override me'
 | |
|       end
 | |
| 
 | |
|       # if not set in constructor, assume stack was created via stack_template.
 | |
|       # It is need to support presets.
 | |
|       # TODO: refactore it.
 | |
|       def template_body
 | |
|         @template_body ||= Devops::Api2.settings.mongo.stack_template(stack_template).template_body
 | |
|       end
 | |
| 
 | |
|     end
 | |
|   end
 | |
| end
 | 
