Class: OpenNebula::Host
- Inherits:
-
PoolElement
- Object
- XMLElement
- PoolElement
- OpenNebula::Host
- Defined in:
- lib/opennebula/host.rb
Constant Summary collapse
- HOST_METHODS =
{ :info => "host.info", :allocate => "host.allocate", :delete => "host.delete", :enable => "host.enable", :update => "host.update", :monitoring => "host.monitoring", :rename => "host.rename" }
- HOST_STATES =
%w{INIT MONITORING_MONITORED MONITORED ERROR DISABLED MONITORING_ERROR MONITORING_INIT MONITORING_DISABLED}
- SHORT_HOST_STATES =
{ "INIT" => "init", "MONITORING_MONITORED" => "update", "MONITORED" => "on", "ERROR" => "err", "DISABLED" => "off", "MONITORING_ERROR" => "retry", "MONITORING_INIT" => "init", "MONITORING_DISABLED" => "off" }
Class Method Summary collapse
-
.build_xml(pe_id = nil) ⇒ Object
Creates a Host description with just its identifier this method should be used to create plain Host objects.
Instance Method Summary collapse
-
#allocate(hostname, im, vmm, vnm, cluster_id = ClusterPool::NONE_CLUSTER_ID) ⇒ Integer, OpenNebula::Error
Allocates a new Host in OpenNebula.
-
#delete ⇒ Object
Deletes the Host.
-
#disable ⇒ Object
Disables the Host.
-
#enable ⇒ Object
Enables the Host.
- #flush ⇒ Object
-
#info ⇒ Object
(also: #info!)
Retrieves the information of the given Host.
-
#initialize(xml, client) ⇒ Host
constructor
Class constructor.
-
#monitoring(xpath_expressions) ⇒ Hash<String, Array<Array<int>>>, OpenNebula::Error
Retrieves this Host’s monitoring data from OpenNebula.
-
#monitoring_xml ⇒ String
Retrieves this Host’s monitoring data from OpenNebula, in XML.
-
#rename(name) ⇒ nil, OpenNebula::Error
Renames this Host.
-
#short_state_str ⇒ Object
Returns the state of the Host (string value).
-
#state ⇒ Object
Returns the state of the Host (numeric value).
-
#state_str ⇒ Object
Returns the state of the Host (string value).
-
#update(new_template, append = false) ⇒ nil, OpenNebula::Error
Replaces the template contents.
Methods inherited from PoolElement
#id, #name, new_with_id, #to_str
Methods inherited from XMLElement
#[], #add_element, #attr, #delete_element, #each, #each_xpath, #element_xml, #has_elements?, #initialize_xml, #name, #retrieve_elements, #template_like_str, #template_str, #template_xml, #text, #to_hash, #to_xml
Constructor Details
#initialize(xml, client) ⇒ Host
Class constructor
68 69 70 71 72 73 |
# File 'lib/opennebula/host.rb', line 68 def initialize(xml, client) super(xml,client) @client = client @pe_id = self['ID'].to_i if self['ID'] end |
Class Method Details
.build_xml(pe_id = nil) ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/opennebula/host.rb', line 57 def Host.build_xml(pe_id=nil) if pe_id host_xml = "<HOST><ID>#{pe_id}</ID></HOST>" else host_xml = "<HOST></HOST>" end XMLElement.build_xml(host_xml, 'HOST') end |
Instance Method Details
#allocate(hostname, im, vmm, vnm, cluster_id = ClusterPool::NONE_CLUSTER_ID) ⇒ Integer, OpenNebula::Error
Allocates a new Host in OpenNebula
96 97 98 |
# File 'lib/opennebula/host.rb', line 96 def allocate(hostname,im,vmm,vnm,cluster_id=ClusterPool::NONE_CLUSTER_ID) super(HOST_METHODS[:allocate],hostname,im,vmm,vnm,cluster_id) end |
#delete ⇒ Object
Deletes the Host
101 102 103 |
# File 'lib/opennebula/host.rb', line 101 def delete() super(HOST_METHODS[:delete]) end |
#disable ⇒ Object
Disables the Host
111 112 113 |
# File 'lib/opennebula/host.rb', line 111 def disable() set_enabled(false) end |
#enable ⇒ Object
Enables the Host
106 107 108 |
# File 'lib/opennebula/host.rb', line 106 def enable() set_enabled(true) end |
#flush ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/opennebula/host.rb', line 115 def flush() self.disable vm_pool = OpenNebula::VirtualMachinePool.new(@client, VirtualMachinePool::INFO_ALL_VM) rc = vm_pool.info if OpenNebula.is_error?(rc) puts rc. exit -1 end vm_pool.each do |vm| hid = vm['HISTORY_RECORDS/HISTORY[last()]/HID'] if hid == self['ID'] vm.resched end end end |
#info ⇒ Object Also known as: info!
Retrieves the information of the given Host.
80 81 82 |
# File 'lib/opennebula/host.rb', line 80 def info() super(HOST_METHODS[:info], 'HOST') end |
#monitoring(xpath_expressions) ⇒ Hash<String, Array<Array<int>>>, OpenNebula::Error
Retrieves this Host’s monitoring data from OpenNebula
166 167 168 169 |
# File 'lib/opennebula/host.rb', line 166 def monitoring(xpath_expressions) return super(HOST_METHODS[:monitoring], 'HOST', 'LAST_MON_TIME', xpath_expressions) end |
#monitoring_xml ⇒ String
Retrieves this Host’s monitoring data from OpenNebula, in XML
174 175 176 177 178 |
# File 'lib/opennebula/host.rb', line 174 def monitoring_xml() return Error.new('ID not defined') if !@pe_id return @client.call(HOST_METHODS[:monitoring], @pe_id) end |
#rename(name) ⇒ nil, OpenNebula::Error
Renames this Host
186 187 188 |
# File 'lib/opennebula/host.rb', line 186 def rename(name) return call(HOST_METHODS[:rename], @pe_id, name) end |
#short_state_str ⇒ Object
Returns the state of the Host (string value)
205 206 207 |
# File 'lib/opennebula/host.rb', line 205 def short_state_str SHORT_HOST_STATES[state_str] end |
#state ⇒ Object
Returns the state of the Host (numeric value)
195 196 197 |
# File 'lib/opennebula/host.rb', line 195 def state self['STATE'].to_i end |
#state_str ⇒ Object
Returns the state of the Host (string value)
200 201 202 |
# File 'lib/opennebula/host.rb', line 200 def state_str HOST_STATES[state] end |
#update(new_template, append = false) ⇒ nil, OpenNebula::Error
Replaces the template contents
143 144 145 |
# File 'lib/opennebula/host.rb', line 143 def update(new_template, append=false) super(HOST_METHODS[:update], new_template, append ? 1 : 0) end |