Class: Libvirt::Domain

Inherits:
Object
  • Object
show all
Defined in:
lib/libvirt/domain.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dom_ptr) ⇒ Domain

Returns a new instance of Domain.



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/libvirt/domain.rb', line 12

def initialize(dom_ptr)
  @dom_ptr = dom_ptr

  free = ->(obj_id) do
    Util.log(:debug) { "Finalize Libvirt::Domain 0x#{obj_id.to_s(16)} @dom_ptr=#{@dom_ptr}," }
    return unless @dom_ptr

    fr_result = FFI::Domain.virDomainFree(@dom_ptr)
    warn "Couldn't free Libvirt::Domain (0x#{obj_id.to_s(16)}) pointer #{@dom_ptr.address}" if fr_result.negative?
  end
  ObjectSpace.define_finalizer(self, free)
end

Class Method Details

.load_ref(dom_ptr) ⇒ Object

Raises:



5
6
7
8
9
10
# File 'lib/libvirt/domain.rb', line 5

def self.load_ref(dom_ptr)
  ref_result = FFI::Domain.virDomainRef(dom_ptr)
  raise Errors::LibError, "Couldn't retrieve domain reference" if ref_result.negative?

  new(dom_ptr)
end

Instance Method Details

#auto_startBoolean

Returns:

  • (Boolean)

Raises:



61
62
63
64
65
66
67
# File 'lib/libvirt/domain.rb', line 61

def auto_start
  value = ::FFI::MemoryPointer.new(:int)
  result = FFI::Domain.virDomainGetAutostart(@dom_ptr, value)
  raise Errors::LibError, "Couldn't get domain auto_start" if result.negative?

  value.read_int == 1
end

#free_domainObject

Raises:



107
108
109
110
111
112
# File 'lib/libvirt/domain.rb', line 107

def free_domain
  result = FFI::Domain.virDomainFree(@dom_ptr)
  raise Errors::LibError, "Couldn't free domain" if result.negative?

  @dom_ptr = nil
end

#get_metadata(type: :ELEMENT, uri: nil, flags: :AFFECT_CURRENT) ⇒ String

Retrieves metadata

Parameters:

  • type (Integer, Symbol) (defaults to: :ELEMENT)

    one of :ELEMENT, :TITLE, :DESCRIPTION

  • uri (String) (defaults to: nil)

    xml namespace (required for type element)

  • flags (Integer, Symbol) (defaults to: :AFFECT_CURRENT)

    one off AFFECT_CURRENT, AFFECT_CONFIG, AFFECT_LIVE AFFECT_CURRENT 0x0 - Affect current domain state. AFFECT_LIVE 0x1 - Affect running domain state. AFFECT_CONFIG 0x2 - Affect persistent domain state.

Returns:

  • (String)

    xml node, title, or description.

Raises:



196
197
198
199
200
201
# File 'lib/libvirt/domain.rb', line 196

def (type: :ELEMENT, uri: nil, flags: :AFFECT_CURRENT)
  result = FFI::Domain.(@dom_ptr, type, uri, flags)
  raise Errors::LibError, "Couldn't get domain metadata" if result.nil?

  result
end

#get_stateObject

Raises:



25
26
27
28
29
30
31
32
33
34
# File 'lib/libvirt/domain.rb', line 25

def get_state
  state = ::FFI::MemoryPointer.new(:int)
  reason = ::FFI::MemoryPointer.new(:int)
  result = FFI::Domain.virDomainGetState(@dom_ptr, state, reason, 0)
  raise Errors::LibError, "Couldn't get domain state" if result.negative?

  state_sym = FFI::Domain.enum_type(:state)[state.read_int]
  reason_sym = FFI::Domain.state_reason(state_sym, reason.read_int)
  [state_sym, reason_sym]
end

#max_memoryObject



89
90
91
# File 'lib/libvirt/domain.rb', line 89

def max_memory
  FFI::Domain.virDomainGetMaxMemory(@dom_ptr)
end

#max_vcpusObject



55
56
57
# File 'lib/libvirt/domain.rb', line 55

def max_vcpus
  FFI::Domain.virDomainGetMaxVcpus(@dom_ptr)
end

#nameObject

Raises:



48
49
50
51
52
53
# File 'lib/libvirt/domain.rb', line 48

def name
  result = FFI::Domain.virDomainGetName(@dom_ptr)
  raise Errors::LibError, "Couldn't retrieve storage pool name" if result.nil?

  result
end

#persistent?Boolean

Returns:

  • (Boolean)

Raises:



203
204
205
206
207
208
# File 'lib/libvirt/domain.rb', line 203

def persistent?
  result = FFI::Domain.virDomainIsPersistent(@dom_ptr)
  raise Errors::LibError, "Couldn't set domain metadata" if result.negative?

  result == 1
end

#power_off(flags = 0) ⇒ Object

Raises:



129
130
131
132
# File 'lib/libvirt/domain.rb', line 129

def power_off(flags = 0)
  result = FFI::Domain.virDomainDestroyFlags(@dom_ptr, flags)
  raise Errors::LibError, "Couldn't power off domain" if result.negative?
end

#reboot(flags = 0) ⇒ Object

Raises:



119
120
121
122
# File 'lib/libvirt/domain.rb', line 119

def reboot(flags = 0)
  result = FFI::Domain.virDomainReboot(@dom_ptr, flags)
  raise Errors::LibError, "Couldn't reboot domain" if result.negative?
end

#reset(flags = 0) ⇒ Object

Raises:



134
135
136
137
# File 'lib/libvirt/domain.rb', line 134

def reset(flags = 0)
  result = FFI::Domain.virDomainReset(@dom_ptr, flags)
  raise Errors::LibError, "Couldn't reset domain" if result.negative?
end

#resumeObject

Raises:



144
145
146
147
# File 'lib/libvirt/domain.rb', line 144

def resume
  result = FFI::Domain.virDomainResume(@dom_ptr)
  raise Errors::LibError, "Couldn't resume domain" if result.negative?
end

#save_memory(flags = :PAUSED) ⇒ Object

After save_memory(:PAUSED) you need to call #start and #resume to move domain to the running state.

Raises:



164
165
166
167
# File 'lib/libvirt/domain.rb', line 164

def save_memory(flags = :PAUSED)
  result = FFI::Domain.virDomainManagedSave(@dom_ptr, flags)
  raise Errors::LibError, "Couldn't save domain memory" if result.negative?
end

#screenshot(stream, display = 0) ⇒ Object

Raises:



97
98
99
100
101
102
103
104
105
# File 'lib/libvirt/domain.rb', line 97

def screenshot(stream, display = 0)
  dbg { "#screenshot stream=#{stream}, display=#{display}," }

  mime_type, pointer = FFI::Domain.virDomainScreenshot(@dom_ptr, stream.to_ptr, display, 0)
  raise Errors::LibError, "Couldn't attach domain screenshot" if pointer.null?

  # free pointer required
  mime_type
end

#set_auto_start(value) ⇒ Object

Parameters:

  • value (Boolean)

Raises:



71
72
73
74
75
# File 'lib/libvirt/domain.rb', line 71

def set_auto_start(value)
  value = value ? 1 : 0
  result = FFI::Domain.virDomainSetAutostart(@dom_ptr, value)
  raise Errors::LibError, "Couldn't set domain auto_start" if result.negative?
end

#set_metadata(metadata, type: :ELEMENT, key: nil, uri: nil, flags: :AFFECT_CURRENT) ⇒ Object

Sets metadata

Parameters:

  • metadata (String)

    xml node for element type, text for other types DESCRIPTION 0x0 - Operate on TITLE 0x1 - Operate on ELEMENT 0x2 - Operate on <metadata></p></div> </li> <li> <span class='name'>type</span> <span class='type'>(<tt>Integer</tt>, <tt>Symbol</tt>)</span> <em class="default">(defaults to: <tt>:ELEMENT</tt>)</em> — <div class='inline'><p>one of :ELEMENT, :TITLE, :DESCRIPTION</p></div> </li> <li> <span class='name'>key</span> <span class='type'>(<tt>String</tt>)</span> <em class="default">(defaults to: <tt>nil</tt>)</em> — <div class='inline'><p>xml key (required for type element)</p></div> </li> <li> <span class='name'>uri</span> <span class='type'>(<tt>String</tt>)</span> <em class="default">(defaults to: <tt>nil</tt>)</em> — <div class='inline'><p>xml namespace (required for type element)</p></div> </li> <li> <span class='name'>flags</span> <span class='type'>(<tt>Integer</tt>, <tt>Symbol</tt>)</span> <em class="default">(defaults to: <tt>:AFFECT_CURRENT</tt>)</em> — <div class='inline'><p>one off AFFECT_CURRENT, AFFECT_CONFIG, AFFECT_LIVE AFFECT_CURRENT 0x0 - Affect current domain state. AFFECT_LIVE 0x1 - Affect running domain state. AFFECT_CONFIG 0x2 - Affect persistent domain state.</p></div> </li> </ul> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/Errors/LibError" title="Libvirt::Errors::LibError (class)">Libvirt::Errors::LibError</a></span></tt>)</span> — <div class='inline'><p>if operation failed</p></div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 182 183 184 185</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 182</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_set_metadata identifier id'>set_metadata</span><span class='lparen token'>(</span><span class='rubyid_metadata identifier id'>metadata</span><span class='comma token'>,</span> <span class='label val'>type:</span> <span class='symbol val'>:ELEMENT</span><span class='comma token'>,</span> <span class='label val'>key:</span> <span class='rubyid_nil nil kw'>nil</span><span class='comma token'>,</span> <span class='label val'>uri:</span> <span class='rubyid_nil nil kw'>nil</span><span class='comma token'>,</span> <span class='label val'>flags:</span> <span class='symbol val'>:AFFECT_CURRENT</span><span class='rparen token'>)</span> <span class='rubyid_result identifier id'>result</span> <span class='assign token'>=</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_virDomainSetMetadata identifier id'>virDomainSetMetadata</span><span class='lparen token'>(</span><span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span><span class='comma token'>,</span> <span class='rubyid_type identifier id'>type</span><span class='comma token'>,</span> <span class='rubyid_metadata identifier id'>metadata</span><span class='comma token'>,</span> <span class='rubyid_key identifier id'>key</span><span class='comma token'>,</span> <span class='rubyid_uri identifier id'>uri</span><span class='comma token'>,</span> <span class='rubyid_flags identifier id'>flags</span><span class='rparen token'>)</span> <span class='rubyid_raise identifier id'>raise</span> <span class='rubyid_Errors constant id'>Errors</span><span class='colon2 op'>::</span><span class='rubyid_LibError constant id'>LibError</span><span class='comma token'>,</span> <span class='string val'>"Couldn't set domain metadata"</span> <span class='rubyid_if if_mod kw'>if</span> <span class='rubyid_result identifier id'>result</span><span class='dot token'>.</span><span class='rubyid_negative? fid id'>negative?</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="shutdown-instance_method"> #<strong>shutdown</strong>(flags = :ACPI_POWER_BTN) ⇒ <tt>Object</tt> </h3><script> document.getElementById("shutdown-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:shutdown">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> </div> </div> <div class="tags"> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/Errors/LibError" title="Libvirt::Errors::LibError (class)">Errors::LibError</a></span></tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 124 125 126 127</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 124</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_shutdown identifier id'>shutdown</span><span class='lparen token'>(</span><span class='rubyid_flags identifier id'>flags</span> <span class='assign token'>=</span> <span class='symbol val'>:ACPI_POWER_BTN</span><span class='rparen token'>)</span> <span class='rubyid_result identifier id'>result</span> <span class='assign token'>=</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_virDomainShutdownFlags identifier id'>virDomainShutdownFlags</span><span class='lparen token'>(</span><span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span><span class='comma token'>,</span> <span class='rubyid_flags identifier id'>flags</span><span class='rparen token'>)</span> <span class='rubyid_raise identifier id'>raise</span> <span class='rubyid_Errors constant id'>Errors</span><span class='colon2 op'>::</span><span class='rubyid_LibError constant id'>LibError</span><span class='comma token'>,</span> <span class='string val'>"Couldn't shutdown domain"</span> <span class='rubyid_if if_mod kw'>if</span> <span class='rubyid_result identifier id'>result</span><span class='dot token'>.</span><span class='rubyid_negative? fid id'>negative?</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="start-instance_method"> #<strong>start</strong>(flags = 0) ⇒ <tt>Object</tt> </h3><script> document.getElementById("start-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:start">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> </div> </div> <div class="tags"> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/Errors/LibError" title="Libvirt::Errors::LibError (class)">Errors::LibError</a></span></tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 114 115 116 117</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 114</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_start identifier id'>start</span><span class='lparen token'>(</span><span class='rubyid_flags identifier id'>flags</span> <span class='assign token'>=</span> <span class='integer val'>0</span><span class='rparen token'>)</span> <span class='rubyid_result identifier id'>result</span> <span class='assign token'>=</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_virDomainCreateWithFlags identifier id'>virDomainCreateWithFlags</span><span class='lparen token'>(</span><span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span><span class='comma token'>,</span> <span class='rubyid_flags identifier id'>flags</span><span class='rparen token'>)</span> <span class='rubyid_raise identifier id'>raise</span> <span class='rubyid_Errors constant id'>Errors</span><span class='colon2 op'>::</span><span class='rubyid_LibError constant id'>LibError</span><span class='comma token'>,</span> <span class='string val'>"Couldn't start domain"</span> <span class='rubyid_if if_mod kw'>if</span> <span class='rubyid_result identifier id'>result</span><span class='dot token'>.</span><span class='rubyid_negative? fid id'>negative?</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="suspend-instance_method"> #<strong>suspend</strong> ⇒ <tt>Object</tt> </h3><script> document.getElementById("suspend-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:suspend">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> </div> </div> <div class="tags"> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/Errors/LibError" title="Libvirt::Errors::LibError (class)">Errors::LibError</a></span></tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 139 140 141 142</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 139</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_suspend identifier id'>suspend</span> <span class='rubyid_result identifier id'>result</span> <span class='assign token'>=</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_virDomainSuspend identifier id'>virDomainSuspend</span><span class='lparen token'>(</span><span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span><span class='rparen token'>)</span> <span class='rubyid_raise identifier id'>raise</span> <span class='rubyid_Errors constant id'>Errors</span><span class='colon2 op'>::</span><span class='rubyid_LibError constant id'>LibError</span><span class='comma token'>,</span> <span class='string val'>"Couldn't suspend domain"</span> <span class='rubyid_if if_mod kw'>if</span> <span class='rubyid_result identifier id'>result</span><span class='dot token'>.</span><span class='rubyid_negative? fid id'>negative?</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="to_ptr-instance_method"> #<strong>to_ptr</strong> ⇒ <tt>Object</tt> </h3><script> document.getElementById("to_ptr-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:to_ptr">permalink</a>' ); </script> <table class="source_code"> <tr> <td> <pre class="lines"> 36 37 38</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 36</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_to_ptr identifier id'>to_ptr</span> <span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="undefine-instance_method"> #<strong>undefine</strong>(options_or_flags = nil) ⇒ <tt>Object</tt> </h3><script> document.getElementById("undefine-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:undefine">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> <p>Undefine a domain. If the domain is running, it's converted to transient domain, without stopping it. If the domain is inactive, the domain configuration is removed.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>options_or_flags</span> <span class='type'>(<tt>Array<Symbol></tt>, <tt>Hash{Symbol=>Boolean}</tt>, <tt>Integer</tt>, <tt>Symbol</tt>, <tt>nil</tt>)</span> <em class="default">(defaults to: <tt>nil</tt>)</em> </li> </ul> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/Errors/LibError" title="Libvirt::Errors::LibError (class)">Libvirt::Errors::LibError</a></span></tt>)</span> — <div class='inline'><p>if operation failed</p></div> </li> </ul> <p class="tag_title">See Also:</p> <ul class="see"> <li><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/FFI/Domain" title="Libvirt::FFI::Domain (module)">enum :undefine_flags_values for acceptable keys</a></span></li> <li><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/Util#parse_flags-class_method" title="Libvirt::Util.parse_flags (method)">for possible argument values</a></span></li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 156 157 158 159 160</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 156</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_undefine identifier id'>undefine</span><span class='lparen token'>(</span><span class='rubyid_options_or_flags identifier id'>options_or_flags</span> <span class='assign token'>=</span> <span class='rubyid_nil nil kw'>nil</span><span class='rparen token'>)</span> <span class='rubyid_flags identifier id'>flags</span> <span class='assign token'>=</span> <span class='rubyid_Util constant id'>Util</span><span class='dot token'>.</span><span class='rubyid_parse_flags identifier id'>parse_flags</span> <span class='rubyid_options_or_flags identifier id'>options_or_flags</span><span class='comma token'>,</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_enum_type identifier id'>enum_type</span><span class='lparen token'>(</span><span class='symbol val'>:undefine_flags_values</span><span class='rparen token'>)</span> <span class='rubyid_result identifier id'>result</span> <span class='assign token'>=</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_virDomainUndefineFlags identifier id'>virDomainUndefineFlags</span><span class='lparen token'>(</span><span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span><span class='comma token'>,</span> <span class='rubyid_flags identifier id'>flags</span><span class='rparen token'>)</span> <span class='rubyid_raise identifier id'>raise</span> <span class='rubyid_Errors constant id'>Errors</span><span class='colon2 op'>::</span><span class='rubyid_LibError constant id'>LibError</span><span class='comma token'>,</span> <span class='string val'>"Couldn't resume domain"</span> <span class='rubyid_if if_mod kw'>if</span> <span class='rubyid_result identifier id'>result</span><span class='dot token'>.</span><span class='rubyid_negative? fid id'>negative?</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="uuid-instance_method"> #<strong>uuid</strong> ⇒ <tt>Object</tt> </h3><script> document.getElementById("uuid-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:uuid">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> </div> </div> <div class="tags"> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt><span class='object_link'><a href="/gems/libvirt_ffi/Libvirt/Errors/LibError" title="Libvirt::Errors::LibError (class)">Errors::LibError</a></span></tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 40 41 42 43 44 45 46</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 40</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_uuid identifier id'>uuid</span> <span class='rubyid_buff identifier id'>buff</span> <span class='assign token'>=</span> <span class='colon3 op'>::</span><span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_MemoryPointer constant id'>MemoryPointer</span><span class='dot token'>.</span><span class='rubyid_new identifier id'>new</span><span class='lparen token'>(</span><span class='symbol val'>:char</span><span class='comma token'>,</span> <span class='rubyid_Util constant id'>Util</span><span class='colon2 op'>::</span><span class='rubyid_UUID_STRING_BUFLEN constant id'>UUID_STRING_BUFLEN</span><span class='rparen token'>)</span> <span class='rubyid_result identifier id'>result</span> <span class='assign token'>=</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_virDomainGetUUIDString identifier id'>virDomainGetUUIDString</span><span class='lparen token'>(</span><span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span><span class='comma token'>,</span> <span class='rubyid_buff identifier id'>buff</span><span class='rparen token'>)</span> <span class='rubyid_raise identifier id'>raise</span> <span class='rubyid_Errors constant id'>Errors</span><span class='colon2 op'>::</span><span class='rubyid_LibError constant id'>LibError</span><span class='comma token'>,</span> <span class='string val'>"Couldn't get domain uuid"</span> <span class='rubyid_if if_mod kw'>if</span> <span class='rubyid_result identifier id'>result</span><span class='dot token'>.</span><span class='rubyid_negative? fid id'>negative?</span> <span class='rubyid_buff identifier id'>buff</span><span class='dot token'>.</span><span class='rubyid_read_string identifier id'>read_string</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="vcpus-instance_method"> #<strong>vcpus</strong> ⇒ <tt>Object</tt> </h3><script> document.getElementById("vcpus-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:vcpus">permalink</a>' ); </script> <div class="docstring"> <div class="discussion"> <p>def vcpus</p> <h1 id="https___github_com_libvirt_ruby_libvirt_blob_9f71ff5add1f57ffef7cf513b72638d92d9fd84f_ext_libvirt_domain_c_L787"><a href="https://github.com/libvirt/ruby-libvirt/blob/9f71ff5add1f57ffef7cf513b72638d92d9fd84f/ext/libvirt/domain.c#L787">https://github.com/libvirt/ruby-libvirt/blob/9f71ff5add1f57ffef7cf513b72638d92d9fd84f/ext/libvirt/domain.c#L787</a></h1> <h1 id="dominfo___virDomainGetInfo">dominfo = virDomainGetInfo</h1> <h1 id="dominfo_nrVirtCpu">dominfo.nrVirtCpu</h1> <h1 id="maxcpus___ruby_libvirt_get_maxcpus_ruby_libvirt_connect_get_d___">maxcpus = ruby_libvirt_get_maxcpus(ruby_libvirt_connect_get(d));</h1> <h1 id="vcpu_infos_ptr">vcpu_infos_ptr</h1> <p>FFI::Domain.virDomainGetVcpus(@dom_ptr, vcpu_infos_ptr, maxinfo, cpumaps, maplen) end</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 85 86 87</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 85</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_vcpus identifier id'>vcpus</span> <span class='rubyid_OpenStruct constant id'>OpenStruct</span><span class='dot token'>.</span><span class='rubyid_new identifier id'>new</span><span class='lparen token'>(</span><span class='label val'>count:</span> <span class='rubyid_max_vcpus identifier id'>max_vcpus</span><span class='rparen token'>)</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="xml_desc-instance_method"> #<strong>xml_desc</strong>(flags = 0) ⇒ <tt>Object</tt> </h3><script> document.getElementById("xml_desc-instance_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/libvirt_ffi/Libvirt%2FDomain:xml_desc">permalink</a>' ); </script> <table class="source_code"> <tr> <td> <pre class="lines"> 93 94 95</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/libvirt/domain.rb', line 93</span> <span class='rubyid_def def kw'>def</span> <span class='rubyid_xml_desc identifier id'>xml_desc</span><span class='lparen token'>(</span><span class='rubyid_flags identifier id'>flags</span> <span class='assign token'>=</span> <span class='integer val'>0</span><span class='rparen token'>)</span> <span class='rubyid_FFI constant id'>FFI</span><span class='colon2 op'>::</span><span class='rubyid_Domain constant id'>Domain</span><span class='dot token'>.</span><span class='rubyid_virDomainGetXMLDesc identifier id'>virDomainGetXMLDesc</span><span class='lparen token'>(</span><span class='rubyid_@dom_ptr ivar id'>@dom_ptr</span><span class='comma token'>,</span> <span class='rubyid_flags identifier id'>flags</span><span class='rparen token'>)</span> <span class='rubyid_end end kw'>end</span> </pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Mon Sep 21 08:07:02 2026 by <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.45 (ruby-4.0.7). </div> </div> </body> </html>