summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--daemon/lvm.c84
-rw-r--r--generator/generator_actions.ml62
-rw-r--r--src/MAX_PROC_NR2
3 files changed, 147 insertions, 1 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;
+}
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index ecb2e8cd..a07fce96 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -8975,6 +8975,68 @@ The returned struct contains geometry information. Missing
fields are returned as C<-1> (for numeric fields) or empty
string." };
+ { defaults with
+ name = "pvchange_uuid";
+ style = RErr, [Device "device"], [];
+ proc_nr = Some 338;
+ optional = Some "lvm2";
+ tests = [
+ InitEmpty, IfAvailable "lvm2", TestRun (
+ [["part_disk"; "/dev/sda"; "mbr"];
+ ["pvcreate"; "/dev/sda1"];
+ ["pvchange_uuid"; "/dev/sda1"]])
+ ];
+ shortdesc = "generate a new random UUID for a physical volume";
+ longdesc = "\
+Generate a new random UUID for the physical volume C<device>." };
+
+ { defaults with
+ name = "pvchange_uuid_all";
+ style = RErr, [], [];
+ proc_nr = Some 339;
+ optional = Some "lvm2";
+ tests = [
+ InitEmpty, IfAvailable "lvm2", TestRun (
+ [["part_disk"; "/dev/sda"; "mbr"];
+ ["pvcreate"; "/dev/sda1"];
+ ["pvchange_uuid_all"]])
+ ];
+ shortdesc = "generate new random UUIDs for all physical volumes";
+ longdesc = "\
+Generate new random UUIDs for all physical volumes." };
+
+ { defaults with
+ name = "vgchange_uuid";
+ style = RErr, [String "vg"], [];
+ proc_nr = Some 340;
+ optional = Some "lvm2";
+ tests = [
+ InitEmpty, IfAvailable "lvm2", TestRun (
+ [["part_disk"; "/dev/sda"; "mbr"];
+ ["pvcreate"; "/dev/sda1"];
+ ["vgcreate"; "VG"; "/dev/sda1"];
+ ["vgchange_uuid"; "/dev/VG"]])
+ ];
+ shortdesc = "generate a new random UUID for a volume group";
+ longdesc = "\
+Generate a new random UUID for the volume group C<vg>." };
+
+ { defaults with
+ name = "vgchange_uuid_all";
+ style = RErr, [], [];
+ proc_nr = Some 341;
+ optional = Some "lvm2";
+ tests = [
+ InitEmpty, IfAvailable "lvm2", TestRun (
+ [["part_disk"; "/dev/sda"; "mbr"];
+ ["pvcreate"; "/dev/sda1"];
+ ["vgcreate"; "VG"; "/dev/sda1"];
+ ["vgchange_uuid_all"]])
+ ];
+ shortdesc = "generate new random UUIDs for all volume groups";
+ longdesc = "\
+Generate new random UUIDs for all volume groups." };
+
]
(* Non-API meta-commands available only in guestfish.
diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR
index f59a90f3..947e93bc 100644
--- a/src/MAX_PROC_NR
+++ b/src/MAX_PROC_NR
@@ -1 +1 @@
-337
+341