fluke/devops-service/providers/category_cloud_provider.rb

62 lines
1.5 KiB
Ruby
Raw Permalink Normal View History

2018-04-04 22:44:39 +03:00
require_relative 'category_provider'
require "commands/image"
module Devops
module Model
class CategoryCloudProvider < CategoryProvider
include ::ImageCommands
include ActiveModel::Validations
attr_accessor :flavor, :image, :security_groups
validate :validate_cloud_params
def initialize d={}
super(d)
self.flavor = d["flavor"]
self.image = d["image"]
# b = d["security_groups"] || ["default"]
self.security_groups = d["security_groups"]
end
def to_hash
h = super
h.merge!({
"flavor" => self.flavor,
"image" => self.image,
"security_groups" => self.security_groups
})
end
def validate_flavor
if flavor.nil?
errors.add(:flavor, "'flavor' is udefined")
else
if provider_instance.flavors.detect{|f| f['id'] == flavor}.nil?
errors.add(:flavor, "'flavor' is invalid")
end
end
end
def validate_image
if image.nil?
errors.add(:image, "'image' is udefined")
else
if get_available_provider_images(self.provider, self.provider_account).detect{|i| i["id"] == @model.image}.nil?
errors.add(:image, "'image' is invalid")
end
end
end
def waiting_server(server, out)
out << "\nWaiting for a server"
out.flush
provider_instance.waiting_server(server, out)
end
end
end
end