summaryrefslogtreecommitdiffstats
path: root/python/examples/create_disk.py
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2010-11-24 18:10:50 +0000
committerRichard W.M. Jones <rjones@redhat.com>2010-11-24 20:12:50 +0000
commit472722a72df89895bb11a1244eafa7915b1af116 (patch)
tree691e4b23823d7395cc6b594ab2cca3acaa904de8 /python/examples/create_disk.py
parent086bd1f7bfab4c10d890ecca3506a1b091c0d398 (diff)
downloadlibguestfs-472722a72df89895bb11a1244eafa7915b1af116.tar.gz
libguestfs-472722a72df89895bb11a1244eafa7915b1af116.tar.xz
libguestfs-472722a72df89895bb11a1244eafa7915b1af116.zip
python: Translate C examples into Python and include documentation.
Diffstat (limited to 'python/examples/create_disk.py')
-rw-r--r--python/examples/create_disk.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/python/examples/create_disk.py b/python/examples/create_disk.py
new file mode 100644
index 00000000..9d4e8d9b
--- /dev/null
+++ b/python/examples/create_disk.py
@@ -0,0 +1,61 @@
+# Example showing how to create a disk image.
+
+import os
+import guestfs
+
+output = "disk.img"
+
+g = guestfs.GuestFS ()
+
+# Create a raw-format sparse disk image, 512 MB in size.
+f = open (output, "w")
+f.truncate (512 * 1024 * 1024)
+f.close ()
+
+# Set the trace flag so that we can see each libguestfs call.
+g.set_trace (1)
+
+# Set the autosync flag so that the disk will be synchronized
+# automatically when the libguestfs handle is closed.
+g.set_autosync (1)
+
+# Attach the disk image to libguestfs.
+g.add_drive_opts (output, format = "raw", readonly = 0)
+
+# Run the libguestfs back-end.
+g.launch ()
+
+# Get the list of devices. Because we only added one drive
+# above, we expect that this list should contain a single
+# element.
+devices = g.list_devices ()
+assert (len (devices) == 1)
+
+# Partition the disk as one single MBR partition.
+g.part_disk (devices[0], "mbr")
+
+# Get the list of partitions. We expect a single element, which
+# is the partition we have just created.
+partitions = g.list_partitions ()
+assert (len (partitions) == 1)
+
+# Create a filesystem on the partition.
+g.mkfs ("ext4", partitions[0])
+
+# Now mount the filesystem so that we can add files.
+g.mount_options ("", partitions[0], "/")
+
+# Create some files and directories.
+g.touch ("/empty")
+message = "Hello, world\n"
+g.write ("/hello", message)
+g.mkdir ("/foo")
+
+# This one uploads the local file /etc/resolv.conf into
+# the disk image.
+g.upload ("/etc/resolv.conf", "/foo/resolv.conf")
+
+# Because 'autosync' was set (above) we can just close the handle
+# and the disk contents will be synchronized. You can also do
+# this manually by calling g.umount_all and g.sync.
+del g