Separate out the high-level API actions.
[libguestfs.git] / guestfish-actions.pod
1 =head2 add-cdrom | cdrom
2
3  add-cdrom filename
4
5 This function adds a virtual CD-ROM disk image to the guest.
6
7 This is equivalent to the qemu parameter C<-cdrom filename>.
8
9 =head2 add-drive | add
10
11  add-drive filename
12
13 This function adds a virtual machine disk image C<filename> to the
14 guest.  The first time you call this function, the disk appears as IDE
15 disk 0 (C</dev/sda>) in the guest, the second time as C</dev/sdb>, and
16 so on.
17
18 You don't necessarily need to be root when using libguestfs.  However
19 you obviously do need sufficient permissions to access the filename
20 for whatever operations you want to perform (ie. read access if you
21 just want to read the image or write access if you want to modify the
22 image).
23
24 This is equivalent to the qemu parameter C<-drive file=filename>.
25
26 =head2 aug-close
27
28  aug-close
29
30 Close the current Augeas handle and free up any resources
31 used by it.  After calling this, you have to call
32 C<aug_init> again before you can use any other
33 Augeas functions.
34
35 =head2 aug-defnode
36
37  aug-defnode name expr val
38
39 Defines a variable C<name> whose value is the result of
40 evaluating C<expr>.
41
42 If C<expr> evaluates to an empty nodeset, a node is created,
43 equivalent to calling C<aug_set> C<expr>, C<value>.
44 C<name> will be the nodeset containing that single node.
45
46 On success this returns a pair containing the
47 number of nodes in the nodeset, and a boolean flag
48 if a node was created.
49
50 =head2 aug-defvar
51
52  aug-defvar name expr
53
54 Defines an Augeas variable C<name> whose value is the result
55 of evaluating C<expr>.  If C<expr> is NULL, then C<name> is
56 undefined.
57
58 On success this returns the number of nodes in C<expr>, or
59 C<0> if C<expr> evaluates to something which is not a nodeset.
60
61 =head2 aug-get
62
63  aug-get path
64
65 Look up the value associated with C<path>.  If C<path>
66 matches exactly one node, the C<value> is returned.
67
68 =head2 aug-init
69
70  aug-init root flags
71
72 Create a new Augeas handle for editing configuration files.
73 If there was any previous Augeas handle associated with this
74 guestfs session, then it is closed.
75
76 You must call this before using any other C<aug_*>
77 commands.
78
79 C<root> is the filesystem root.  C<root> must not be NULL,
80 use C</> instead.
81
82 The flags are the same as the flags defined in
83 E<lt>augeas.hE<gt>, the logical I<or> of the following
84 integers:
85
86 =over 4
87
88 =item C<AUG_SAVE_BACKUP> = 1
89
90 Keep the original file with a C<.augsave> extension.
91
92 =item C<AUG_SAVE_NEWFILE> = 2
93
94 Save changes into a file with extension C<.augnew>, and
95 do not overwrite original.  Overrides C<AUG_SAVE_BACKUP>.
96
97 =item C<AUG_TYPE_CHECK> = 4
98
99 Typecheck lenses (can be expensive).
100
101 =item C<AUG_NO_STDINC> = 8
102
103 Do not use standard load path for modules.
104
105 =item C<AUG_SAVE_NOOP> = 16
106
107 Make save a no-op, just record what would have been changed.
108
109 =item C<AUG_NO_LOAD> = 32
110
111 Do not load the tree in C<aug_init>.
112
113 =back
114
115 To close the handle, you can call C<aug_close>.
116
117 To find out more about Augeas, see L<http://augeas.net/>.
118
119 =head2 aug-insert
120
121  aug-insert path label true|false
122
123 Create a new sibling C<label> for C<path>, inserting it into
124 the tree before or after C<path> (depending on the boolean
125 flag C<before>).
126
127 C<path> must match exactly one existing node in the tree, and
128 C<label> must be a label, ie. not contain C</>, C<*> or end
129 with a bracketed index C<[N]>.
130
131 =head2 aug-load
132
133  aug-load
134
135 Load files into the tree.
136
137 See C<aug_load> in the Augeas documentation for the full gory
138 details.
139
140 =head2 aug-ls
141
142  aug-ls path
143
144 This is just a shortcut for listing C<aug_match>
145 C<path/*> and sorting the resulting nodes into alphabetical order.
146
147 =head2 aug-match
148
149  aug-match path
150
151 Returns a list of paths which match the path expression C<path>.
152 The returned paths are sufficiently qualified so that they match
153 exactly one node in the current tree.
154
155 =head2 aug-mv
156
157  aug-mv src dest
158
159 Move the node C<src> to C<dest>.  C<src> must match exactly
160 one node.  C<dest> is overwritten if it exists.
161
162 =head2 aug-rm
163
164  aug-rm path
165
166 Remove C<path> and all of its children.
167
168 On success this returns the number of entries which were removed.
169
170 =head2 aug-save
171
172  aug-save
173
174 This writes all pending changes to disk.
175
176 The flags which were passed to C<aug_init> affect exactly
177 how files are saved.
178
179 =head2 aug-set
180
181  aug-set path val
182
183 Set the value associated with C<path> to C<value>.
184
185 =head2 blockdev-flushbufs
186
187  blockdev-flushbufs device
188
189 This tells the kernel to flush internal buffers associated
190 with C<device>.
191
192 This uses the L<blockdev(8)> command.
193
194 =head2 blockdev-getbsz
195
196  blockdev-getbsz device
197
198 This returns the block size of a device.
199
200 (Note this is different from both I<size in blocks> and
201 I<filesystem block size>).
202
203 This uses the L<blockdev(8)> command.
204
205 =head2 blockdev-getro
206
207  blockdev-getro device
208
209 Returns a boolean indicating if the block device is read-only
210 (true if read-only, false if not).
211
212 This uses the L<blockdev(8)> command.
213
214 =head2 blockdev-getsize64
215
216  blockdev-getsize64 device
217
218 This returns the size of the device in bytes.
219
220 See also C<blockdev_getsz>.
221
222 This uses the L<blockdev(8)> command.
223
224 =head2 blockdev-getss
225
226  blockdev-getss device
227
228 This returns the size of sectors on a block device.
229 Usually 512, but can be larger for modern devices.
230
231 (Note, this is not the size in sectors, use C<blockdev_getsz>
232 for that).
233
234 This uses the L<blockdev(8)> command.
235
236 =head2 blockdev-getsz
237
238  blockdev-getsz device
239
240 This returns the size of the device in units of 512-byte sectors
241 (even if the sectorsize isn't 512 bytes ... weird).
242
243 See also C<blockdev_getss> for the real sector size of
244 the device, and C<blockdev_getsize64> for the more
245 useful I<size in bytes>.
246
247 This uses the L<blockdev(8)> command.
248
249 =head2 blockdev-rereadpt
250
251  blockdev-rereadpt device
252
253 Reread the partition table on C<device>.
254
255 This uses the L<blockdev(8)> command.
256
257 =head2 blockdev-setbsz
258
259  blockdev-setbsz device blocksize
260
261 This sets the block size of a device.
262
263 (Note this is different from both I<size in blocks> and
264 I<filesystem block size>).
265
266 This uses the L<blockdev(8)> command.
267
268 =head2 blockdev-setro
269
270  blockdev-setro device
271
272 Sets the block device named C<device> to read-only.
273
274 This uses the L<blockdev(8)> command.
275
276 =head2 blockdev-setrw
277
278  blockdev-setrw device
279
280 Sets the block device named C<device> to read-write.
281
282 This uses the L<blockdev(8)> command.
283
284 =head2 cat
285
286  cat path
287
288 Return the contents of the file named C<path>.
289
290 Note that this function cannot correctly handle binary files
291 (specifically, files containing C<\0> character which is treated
292 as end of string).  For those you need to use the C<download>
293 function which has a more complex interface.
294
295 Because of the message protocol, there is a transfer limit 
296 of somewhere between 2MB and 4MB.  To transfer large files you should use
297 FTP.
298
299 =head2 chmod
300
301  chmod mode path
302
303 Change the mode (permissions) of C<path> to C<mode>.  Only
304 numeric modes are supported.
305
306 =head2 chown
307
308  chown owner group path
309
310 Change the file owner to C<owner> and group to C<group>.
311
312 Only numeric uid and gid are supported.  If you want to use
313 names, you will need to locate and parse the password file
314 yourself (Augeas support makes this relatively easy).
315
316 =head2 command
317
318  command arguments,...
319
320 This call runs a command from the guest filesystem.  The
321 filesystem must be mounted, and must contain a compatible
322 operating system (ie. something Linux, with the same
323 or compatible processor architecture).
324
325 The single parameter is an argv-style list of arguments.
326 The first element is the name of the program to run.
327 Subsequent elements are parameters.  The list must be
328 non-empty (ie. must contain a program name).
329
330 The C<$PATH> environment variable will contain at least
331 C</usr/bin> and C</bin>.  If you require a program from
332 another location, you should provide the full path in the
333 first parameter.
334
335 Shared libraries and data files required by the program
336 must be available on filesystems which are mounted in the
337 correct places.  It is the caller's responsibility to ensure
338 all filesystems that are needed are mounted at the right
339 locations.
340
341 =head2 command-lines
342
343  command-lines arguments,...
344
345 This is the same as C<command>, but splits the
346 result into a list of lines.
347
348 =head2 config
349
350  config qemuparam qemuvalue
351
352 This can be used to add arbitrary qemu command line parameters
353 of the form C<-param value>.  Actually it's not quite arbitrary - we
354 prevent you from setting some parameters which would interfere with
355 parameters that we use.
356
357 The first character of C<param> string must be a C<-> (dash).
358
359 C<value> can be NULL.
360
361 =head2 exists
362
363  exists path
364
365 This returns C<true> if and only if there is a file, directory
366 (or anything) with the given C<path> name.
367
368 See also C<is_file>, C<is_dir>, C<stat>.
369
370 =head2 file
371
372  file path
373
374 This call uses the standard L<file(1)> command to determine
375 the type or contents of the file.  This also works on devices,
376 for example to find out whether a partition contains a filesystem.
377
378 The exact command which runs is C<file -bsL path>.  Note in
379 particular that the filename is not prepended to the output
380 (the C<-b> option).
381
382 =head2 get-autosync
383
384  get-autosync
385
386 Get the autosync flag.
387
388 =head2 get-path
389
390  get-path
391
392 Return the current search path.
393
394 This is always non-NULL.  If it wasn't set already, then this will
395 return the default path.
396
397 =head2 get-state
398
399  get-state
400
401 This returns the current state as an opaque integer.  This is
402 only useful for printing debug and internal error messages.
403
404 For more information on states, see L<guestfs(3)>.
405
406 =head2 get-verbose
407
408  get-verbose
409
410 This returns the verbose messages flag.
411
412 =head2 is-busy
413
414  is-busy
415
416 This returns true iff this handle is busy processing a command
417 (in the C<BUSY> state).
418
419 For more information on states, see L<guestfs(3)>.
420
421 =head2 is-config
422
423  is-config
424
425 This returns true iff this handle is being configured
426 (in the C<CONFIG> state).
427
428 For more information on states, see L<guestfs(3)>.
429
430 =head2 is-dir
431
432  is-dir path
433
434 This returns C<true> if and only if there is a directory
435 with the given C<path> name.  Note that it returns false for
436 other objects like files.
437
438 See also C<stat>.
439
440 =head2 is-file
441
442  is-file path
443
444 This returns C<true> if and only if there is a file
445 with the given C<path> name.  Note that it returns false for
446 other objects like directories.
447
448 See also C<stat>.
449
450 =head2 is-launching
451
452  is-launching
453
454 This returns true iff this handle is launching the subprocess
455 (in the C<LAUNCHING> state).
456
457 For more information on states, see L<guestfs(3)>.
458
459 =head2 is-ready
460
461  is-ready
462
463 This returns true iff this handle is ready to accept commands
464 (in the C<READY> state).
465
466 For more information on states, see L<guestfs(3)>.
467
468 =head2 kill-subprocess
469
470  kill-subprocess
471
472 This kills the qemu subprocess.  You should never need to call this.
473
474 =head2 launch | run
475
476  launch
477
478 Internally libguestfs is implemented by running a virtual machine
479 using L<qemu(1)>.
480
481 You should call this after configuring the handle
482 (eg. adding drives) but before performing any actions.
483
484 =head2 list-devices
485
486  list-devices
487
488 List all the block devices.
489
490 The full block device names are returned, eg. C</dev/sda>
491
492 =head2 list-partitions
493
494  list-partitions
495
496 List all the partitions detected on all block devices.
497
498 The full partition device names are returned, eg. C</dev/sda1>
499
500 This does not return logical volumes.  For that you will need to
501 call C<lvs>.
502
503 =head2 ll
504
505  ll directory
506
507 List the files in C<directory> (relative to the root directory,
508 there is no cwd) in the format of 'ls -la'.
509
510 This command is mostly useful for interactive sessions.  It
511 is I<not> intended that you try to parse the output string.
512
513 =head2 ls
514
515  ls directory
516
517 List the files in C<directory> (relative to the root directory,
518 there is no cwd).  The '.' and '..' entries are not returned, but
519 hidden files are shown.
520
521 This command is mostly useful for interactive sessions.  Programs
522 should probably use C<readdir> instead.
523
524 =head2 lstat
525
526  lstat path
527
528 Returns file information for the given C<path>.
529
530 This is the same as C<stat> except that if C<path>
531 is a symbolic link, then the link is stat-ed, not the file it
532 refers to.
533
534 This is the same as the C<lstat(2)> system call.
535
536 =head2 lvcreate
537
538  lvcreate logvol volgroup mbytes
539
540 This creates an LVM volume group called C<logvol>
541 on the volume group C<volgroup>, with C<size> megabytes.
542
543 =head2 lvm-remove-all
544
545  lvm-remove-all
546
547 This command removes all LVM logical volumes, volume groups
548 and physical volumes.
549
550 B<This command is dangerous.  Without careful use you
551 can easily destroy all your data>.
552
553 =head2 lvs
554
555  lvs
556
557 List all the logical volumes detected.  This is the equivalent
558 of the L<lvs(8)> command.
559
560 This returns a list of the logical volume device names
561 (eg. C</dev/VolGroup00/LogVol00>).
562
563 See also C<lvs_full>.
564
565 =head2 lvs-full
566
567  lvs-full
568
569 List all the logical volumes detected.  This is the equivalent
570 of the L<lvs(8)> command.  The "full" version includes all fields.
571
572 =head2 mkdir
573
574  mkdir path
575
576 Create a directory named C<path>.
577
578 =head2 mkdir-p
579
580  mkdir-p path
581
582 Create a directory named C<path>, creating any parent directories
583 as necessary.  This is like the C<mkdir -p> shell command.
584
585 =head2 mkfs
586
587  mkfs fstype device
588
589 This creates a filesystem on C<device> (usually a partition
590 of LVM logical volume).  The filesystem type is C<fstype>, for
591 example C<ext3>.
592
593 =head2 mount
594
595  mount device mountpoint
596
597 Mount a guest disk at a position in the filesystem.  Block devices
598 are named C</dev/sda>, C</dev/sdb> and so on, as they were added to
599 the guest.  If those block devices contain partitions, they will have
600 the usual names (eg. C</dev/sda1>).  Also LVM C</dev/VG/LV>-style
601 names can be used.
602
603 The rules are the same as for L<mount(2)>:  A filesystem must
604 first be mounted on C</> before others can be mounted.  Other
605 filesystems can only be mounted on directories which already
606 exist.
607
608 The mounted filesystem is writable, if we have sufficient permissions
609 on the underlying device.
610
611 The filesystem options C<sync> and C<noatime> are set with this
612 call, in order to improve reliability.
613
614 =head2 mounts
615
616  mounts
617
618 This returns the list of currently mounted filesystems.  It returns
619 the list of devices (eg. C</dev/sda1>, C</dev/VG/LV>).
620
621 Some internal mounts are not shown.
622
623 =head2 pvcreate
624
625  pvcreate device
626
627 This creates an LVM physical volume on the named C<device>,
628 where C<device> should usually be a partition name such
629 as C</dev/sda1>.
630
631 =head2 pvs
632
633  pvs
634
635 List all the physical volumes detected.  This is the equivalent
636 of the L<pvs(8)> command.
637
638 This returns a list of just the device names that contain
639 PVs (eg. C</dev/sda2>).
640
641 See also C<pvs_full>.
642
643 =head2 pvs-full
644
645  pvs-full
646
647 List all the physical volumes detected.  This is the equivalent
648 of the L<pvs(8)> command.  The "full" version includes all fields.
649
650 =head2 read-lines
651
652  read-lines path
653
654 Return the contents of the file named C<path>.
655
656 The file contents are returned as a list of lines.  Trailing
657 C<LF> and C<CRLF> character sequences are I<not> returned.
658
659 Note that this function cannot correctly handle binary files
660 (specifically, files containing C<\0> character which is treated
661 as end of line).  For those you need to use the C<read_file>
662 function which has a more complex interface.
663
664 =head2 rm
665
666  rm path
667
668 Remove the single file C<path>.
669
670 =head2 rm-rf
671
672  rm-rf path
673
674 Remove the file or directory C<path>, recursively removing the
675 contents if its a directory.  This is like the C<rm -rf> shell
676 command.
677
678 =head2 rmdir
679
680  rmdir path
681
682 Remove the single directory C<path>.
683
684 =head2 set-autosync | autosync
685
686  set-autosync true|false
687
688 If C<autosync> is true, this enables autosync.  Libguestfs will make a
689 best effort attempt to run C<sync> when the handle is closed
690 (also if the program exits without closing handles).
691
692 =head2 set-path | path
693
694  set-path path
695
696 Set the path that libguestfs searches for kernel and initrd.img.
697
698 The default is C<$libdir/guestfs> unless overridden by setting
699 C<LIBGUESTFS_PATH> environment variable.
700
701 The string C<path> is stashed in the libguestfs handle, so the caller
702 must make sure it remains valid for the lifetime of the handle.
703
704 Setting C<path> to C<NULL> restores the default path.
705
706 =head2 set-verbose | verbose
707
708  set-verbose true|false
709
710 If C<verbose> is true, this turns on verbose messages (to C<stderr>).
711
712 Verbose messages are disabled unless the environment variable
713 C<LIBGUESTFS_DEBUG> is defined and set to C<1>.
714
715 =head2 sfdisk
716
717  sfdisk device cyls heads sectors lines,...
718
719 This is a direct interface to the L<sfdisk(8)> program for creating
720 partitions on block devices.
721
722 C<device> should be a block device, for example C</dev/sda>.
723
724 C<cyls>, C<heads> and C<sectors> are the number of cylinders, heads
725 and sectors on the device, which are passed directly to sfdisk as
726 the I<-C>, I<-H> and I<-S> parameters.  If you pass C<0> for any
727 of these, then the corresponding parameter is omitted.  Usually for
728 'large' disks, you can just pass C<0> for these, but for small
729 (floppy-sized) disks, sfdisk (or rather, the kernel) cannot work
730 out the right geometry and you will need to tell it.
731
732 C<lines> is a list of lines that we feed to C<sfdisk>.  For more
733 information refer to the L<sfdisk(8)> manpage.
734
735 To create a single partition occupying the whole disk, you would
736 pass C<lines> as a single element list, when the single element being
737 the string C<,> (comma).
738
739 B<This command is dangerous.  Without careful use you
740 can easily destroy all your data>.
741
742 =head2 stat
743
744  stat path
745
746 Returns file information for the given C<path>.
747
748 This is the same as the C<stat(2)> system call.
749
750 =head2 statvfs
751
752  statvfs path
753
754 Returns file system statistics for any mounted file system.
755 C<path> should be a file or directory in the mounted file system
756 (typically it is the mount point itself, but it doesn't need to be).
757
758 This is the same as the C<statvfs(2)> system call.
759
760 =head2 sync
761
762  sync
763
764 This syncs the disk, so that any writes are flushed through to the
765 underlying disk image.
766
767 You should always call this if you have modified a disk image, before
768 closing the handle.
769
770 =head2 touch
771
772  touch path
773
774 Touch acts like the L<touch(1)> command.  It can be used to
775 update the timestamps on a file, or, if the file does not exist,
776 to create a new zero-length file.
777
778 =head2 tune2fs-l
779
780  tune2fs-l device
781
782 This returns the contents of the ext2 or ext3 filesystem superblock
783 on C<device>.
784
785 It is the same as running C<tune2fs -l device>.  See L<tune2fs(8)>
786 manpage for more details.  The list of fields returned isn't
787 clearly defined, and depends on both the version of C<tune2fs>
788 that libguestfs was built against, and the filesystem itself.
789
790 =head2 umount | unmount
791
792  umount pathordevice
793
794 This unmounts the given filesystem.  The filesystem may be
795 specified either by its mountpoint (path) or the device which
796 contains the filesystem.
797
798 =head2 umount-all | unmount-all
799
800  umount-all
801
802 This unmounts all mounted filesystems.
803
804 Some internal mounts are not unmounted by this call.
805
806 =head2 vgcreate
807
808  vgcreate volgroup physvols,...
809
810 This creates an LVM volume group called C<volgroup>
811 from the non-empty list of physical volumes C<physvols>.
812
813 =head2 vgs
814
815  vgs
816
817 List all the volumes groups detected.  This is the equivalent
818 of the L<vgs(8)> command.
819
820 This returns a list of just the volume group names that were
821 detected (eg. C<VolGroup00>).
822
823 See also C<vgs_full>.
824
825 =head2 vgs-full
826
827  vgs-full
828
829 List all the volumes groups detected.  This is the equivalent
830 of the L<vgs(8)> command.  The "full" version includes all fields.
831
832 =head2 write-file
833
834  write-file path content size
835
836 This call creates a file called C<path>.  The contents of the
837 file is the string C<content> (which can contain any 8 bit data),
838 with length C<size>.
839
840 As a special case, if C<size> is C<0>
841 then the length is calculated using C<strlen> (so in this case
842 the content cannot contain embedded ASCII NULs).
843
844 Because of the message protocol, there is a transfer limit 
845 of somewhere between 2MB and 4MB.  To transfer large files you should use
846 FTP.
847