diff options
-rw-r--r-- | daemon/lvm.c | 84 | ||||
-rw-r--r-- | generator/generator_actions.ml | 62 | ||||
-rw-r--r-- | src/MAX_PROC_NR | 2 |
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 |