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.create_from_bson(attrs) attrs['id'] = attrs["_id"] self.new(attrs) end def create_stack_in_cloud! raise 'override me' end end