fluke/devops-service/db/mongo/models/stack/stack_base.rb

70 lines
1.8 KiB
Ruby
Raw Normal View History

2015-03-06 12:20:30 +03:00
module Devops
module Model
class StackBase < MongoModel
attr_accessor :id, :project, :deploy_env, :stack_template, :cloud_stack_id, :provider, :parameters
2015-03-06 12:20:30 +03:00
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: true}
# TODO: add parameters Hash
2015-03-06 12:20:30 +03:00
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.parameters = attrs['parameters']
2015-03-06 12:20:30 +03:00
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
2015-03-06 12:20:30 +03:00
}
end
2015-03-06 12:20:30 +03:00
# 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
def template_body
stack_template_model = DevopsService.mongo.stack_template(stack_template)
stack_template_model.template_body
end
2015-03-06 12:20:30 +03:00
end
2015-02-12 13:01:05 +03:00
end
end