module Guestfs

Constants

EVENT_ALL
EVENT_APPLIANCE
EVENT_CLOSE
EVENT_ENTER
EVENT_LAUNCH_DONE
EVENT_LIBRARY
EVENT_LIBVIRT_AUTH
EVENT_PROGRESS
EVENT_SUBPROCESS_QUIT
EVENT_TRACE
EVENT_WARNING

Public Class Methods

Guestfs::Guestfs.new([{:environment => false, :close_on_exit => false}]) → Guestfs::Guestfs click to toggle source

Call guestfs_create[http://libguestfs.org/guestfs.3.html#guestfs_create] to create a new libguestfs handle. The handle is represented in Ruby as an instance of the Guestfs::Guestfs class.

static VALUE
ruby_guestfs_create (int argc, VALUE *argv, VALUE m)
{
  guestfs_h *g;

  if (argc > 1)
    rb_raise (rb_eArgError, "expecting 0 or 1 arguments");

  volatile VALUE optargsv = argc == 1 ? argv[0] : rb_hash_new ();
  Check_Type (optargsv, T_HASH);

  unsigned flags = 0;
  volatile VALUE v;
  v = rb_hash_lookup (optargsv, ID2SYM (rb_intern ("environment")));
  if (v != Qnil && !RTEST (v))
    flags |= GUESTFS_CREATE_NO_ENVIRONMENT;
  v = rb_hash_lookup (optargsv, ID2SYM (rb_intern ("close_on_exit")));
  if (v != Qnil && !RTEST (v))
    flags |= GUESTFS_CREATE_NO_CLOSE_ON_EXIT;

  g = guestfs_create_flags (flags);
  if (!g)
    rb_raise (e_Error, "failed to create guestfs handle");

  /* Don't print error messages to stderr by default. */
  guestfs_set_error_handler (g, NULL, NULL);

  /* Wrap it, and make sure the close function is called when the
   * handle goes away.
   */
  return Data_Wrap_Struct (c_guestfs, NULL, ruby_guestfs_free, g);
}
Guestfs::Guestfs.event_to_string(events) → string click to toggle source

Call guestfs_event_to_string[http://libguestfs.org/guestfs.3.html#guestfs_event_to_string] to convert an event or event bitmask into a printable string.

static VALUE
ruby_event_to_string (VALUE modulev, VALUE eventsv)
{
  uint64_t events;
  char *str;

  events = NUM2ULL (eventsv);
  str = guestfs_event_to_string (events);
  if (str == NULL)
    rb_raise (e_Error, "%s", strerror (errno));

  volatile VALUE rv = rb_str_new2 (str);
  free (str);

  return rv;
}