Class: Asteroid::Provider::Mock

Inherits:
Abstract
  • Object
show all
Defined in:
lib/asteroid/provider/mock.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Abstract

#required_instance_attributes, #type, type

Constructor Details

#initialize(config = {}) ⇒ Mock

Returns a new instance of Mock.



19
20
21
22
23
24
# File 'lib/asteroid/provider/mock.rb', line 19

def initialize(config = {})
  @config = config
  @config[:filename] ||= self.class.filename
  
  load_world
end

Class Method Details

.clear!Object



11
12
13
# File 'lib/asteroid/provider/mock.rb', line 11

def self.clear!
  FileUtils.rm filename if File.exists? filename
end

.filenameObject



15
16
17
# File 'lib/asteroid/provider/mock.rb', line 15

def self.filename
  File.join(File.dirname(__FILE__), '../../../world.yml')
end

.ip_addressObject



7
8
9
# File 'lib/asteroid/provider/mock.rb', line 7

def self.ip_address
  (0..3).to_a.map{|a| rand(255)}.join(".")
end

Instance Method Details

#create_instance(server) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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) ⇒ Object



47
48
49
50
51
52
# 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

#instancesObject



26
27
28
# File 'lib/asteroid/provider/mock.rb', line 26

def instances
  @world[:instances] ||= []
end