Class: MurmurIce::Meta

Inherits:
Object
  • Object
show all
Defined in:
lib/murmur-ice.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Meta

Returns a new instance of Meta.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/murmur-ice.rb', line 9

def initialize(options = {})
  host       = options[:host]       || "127.0.0.1"
  port       = options[:port]       || 6502
  ice_secret = options[:ice_secret] || nil

  unless ice_secret.nil?
    props = Ice::createProperties
    props.setProperty "Ice.ImplicitContext", "Shared"
    idd = Ice::InitializationData.new
    idd.properties = props
    ic = Ice::initialize idd
    ic.getImplicitContext.put("secret", ice_secret)
  else
    raise MurmurIce::IceSecretException
  end

  validate_host(host, port)
  
  @meta = Murmur::MetaPrx::checkedCast(ic.stringToProxy("Meta: tcp -h #{host} -p #{port}"))
end

Instance Method Details

#create_server!Object

Create a new virtual server



82
83
84
85
# File 'lib/murmur-ice.rb', line 82

def create_server!
  server = @meta.newServer
  return Server.new(self, @meta, nil, server)
end

#destroy_server!(id) ⇒ Object

Destroy a virtual server



90
91
92
93
94
# File 'lib/murmur-ice.rb', line 90

def destroy_server!(id)
  server = Server.new(self, @meta, id)
  server.stop if server.is_running?
  puts server.interface.delete
end

#get_server(id) ⇒ Object

Initialize a virtual server



75
76
77
# File 'lib/murmur-ice.rb', line 75

def get_server(id)
  Server.new(self, @meta, id)
end

#get_uptimeObject

Return murmur uptime



58
59
60
# File 'lib/murmur-ice.rb', line 58

def get_uptime
  return @meta.getUptime
end

#get_versionObject

Return murmur version



51
52
53
# File 'lib/murmur-ice.rb', line 51

def get_version
  return @meta.getVersion
end

#list_servers(only_running = false) ⇒ Object

Return virtual servers



65
66
67
68
69
70
# File 'lib/murmur-ice.rb', line 65

def list_servers(only_running=false)
  method = only_running ? :getBootedServers : :getAllServers
  @meta.send(method).collect do |server|
    Server.new(self, @meta, nil, server)
  end
end

#validate_host(host, port) ⇒ Object

Check if the host is running Ice.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/murmur-ice.rb', line 33

def validate_host(host,port)
  begin
    Timeout::timeout(2) do
      begin
        s = TCPSocket.new(host,port)
        s.close
      rescue
        raise MurmurIce::InvalidMetaException
      end
    end
  rescue Timeout::Error
    raise MurmurIce::InvalidMetaException
  end      
end