53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| class StackBase < MongoModel
 | |
| 
 | |
|   attr_accessor :id, :project, :deploy_env, :stack_template, :cloud_stack_id, :provider
 | |
| 
 | |
|   types id: {type: String, empty: false},
 | |
|     provider: {type: String, empty: false},
 | |
|     project: {type: String, empty: false},
 | |
|     deploy_env: {type: String, empty: false},
 | |
|     stack_template: {type: String, empty: false},
 | |
|     cloud_stack_id: {type: String, empty: false}
 | |
| 
 | |
|   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.cloud_stack_id = attrs['cloud_stack_id']
 | |
|     self
 | |
|   end
 | |
| 
 | |
|   def to_hash_without_id
 | |
|     {
 | |
|       provider: provider,
 | |
|       project: self.project,
 | |
|       deploy_env: self.deploy_env,
 | |
|       stack_template: self.stack_template,
 | |
|       cloud_stack_id: self.cloud_stack_id
 | |
|     }
 | |
|   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
 | |
| 
 | |
| end
 | 
