summaryrefslogtreecommitdiffstats
path: root/daemon
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-07-25 10:29:58 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-07-25 14:47:15 +0100
commite64bf3fb2945e552d74bde43fb2ff4e1180b976b (patch)
tree5229b59c5d13f1d65be82dc2a8d184dcd441c9af /daemon
parent2b59b5f1d2e36b0ef84b7c7c9ab2c4b602f2ad91 (diff)
downloadlibguestfs-e64bf3fb2945e552d74bde43fb2ff4e1180b976b.tar.gz
libguestfs-e64bf3fb2945e552d74bde43fb2ff4e1180b976b.tar.xz
libguestfs-e64bf3fb2945e552d74bde43fb2ff4e1180b976b.zip
New APIs: pvchange-uuid, pvchange-uuid-all, vgchange-uuid, vgchange-uuid-all.
These APIs will allow sysprep to change the UUIDs of all PVs and VGs in the system. LVs don't have UUIDs AFAICT, or at least there seems to be no way to change them if they do have them.
Diffstat (limited to 'daemon')
-rw-r--r--daemon/lvm.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/daemon/lvm.c b/daemon/lvm.c
index 06fdbff0..5f0c3a69 100644
--- a/daemon/lvm.c
+++ b/daemon/lvm.c
@@ -960,3 +960,87 @@ do_vgmeta (const char *vg, size_t *size_r)
return buf; /* caller will free */
}
+
+int
+do_pvchange_uuid (const char *device)
+{
+ char *err;
+ int r;
+
+ r = command (NULL, &err,
+ "lvm", "pvchange", "-u", device, NULL);
+ if (r == -1) {
+ reply_with_error ("%s: %s", device, err);
+ free (err);
+ return -1;
+ }
+
+ free (err);
+
+ udev_settle ();
+
+ return 0;
+}
+
+int
+do_pvchange_uuid_all (void)
+{
+ char *err;
+ int r;
+
+ r = command (NULL, &err,
+ "lvm", "pvchange", "-u", "-a", NULL);
+ if (r == -1) {
+ reply_with_error ("%s", err);
+ free (err);
+ return -1;
+ }
+
+ free (err);
+
+ udev_settle ();
+
+ return 0;
+}
+
+int
+do_vgchange_uuid (const char *vg)
+{
+ char *err;
+ int r;
+
+ r = command (NULL, &err,
+ "lvm", "vgchange", "-u", vg, NULL);
+ if (r == -1) {
+ reply_with_error ("%s: %s", vg, err);
+ free (err);
+ return -1;
+ }
+
+ free (err);
+
+ udev_settle ();
+
+ return 0;
+}
+
+int
+do_vgchange_uuid_all (void)
+{
+ char *err;
+ int r;
+
+ r = command (NULL, &err,
+ "lvm", "vgchange", "-u", NULL);
+ if (r == -1) {
+ reply_with_error ("%s", err);
+ free (err);
+ return -1;
+ }
+
+ free (err);
+
+ udev_settle ();
+
+ return 0;
+}