class Asteroid::Provider::Mock

Public Class Methods

clear!() click to toggle source
# File lib/asteroid/provider/mock.rb, line 11
def self.clear!
  FileUtils.rm filename if File.exists? filename
end
filename() click to toggle source
# File lib/asteroid/provider/mock.rb, line 15
def self.filename
  File.join(File.dirname(__FILE__), '../../../world.yml')
end
ip_address() click to toggle source
# File lib/asteroid/provider/mock.rb, line 7
def self.ip_address
  (0..3).to_a.map{|a| rand(255)}.join(".")
end
new(config = {}) click to toggle source
# File lib/asteroid/provider/mock.rb, line 19
def initialize(config = {})
  @config = config
  @config[:filename] ||= self.class.filename
  
  load_world
end

Public Instance Methods

create_instance(server) click to toggle source
# File lib/asteroid/provider/mock.rb, line 30
def create_instance(server)
  instance = {
    name: server.generate_instance_name,
    id: SecureRandom.hex(5),
    ip_address: self.class.ip_address,
    type: server.type
  }

  self.instances << instance 
  save_world

  Instance.new instance.merge({
    provider: self,
    server: server
  })
end
destroy_instance(instance) click to toggle source
# File lib/asteroid/provider/mock.rb, line 47
def destroy_instance(instance)
  self.instances.delete_if do |i|
    i[:id] == i.id
  end
  save_world
end
instances() click to toggle source
# File lib/asteroid/provider/mock.rb, line 26
def instances
  @world[:instances] ||= []
end

Private Instance Methods

load_world() click to toggle source
# File lib/asteroid/provider/mock.rb, line 56
def load_world 
  begin
    @world = YAML::load_file @config[:filename]
  rescue
    @world = {}
  end
end
save_world() click to toggle source
# File lib/asteroid/provider/mock.rb, line 64
def save_world
  File.open(@config[:filename], 'w') do |f|
    f.write @world.to_yaml
  end
  load_world
end