Add --alias to support custom disk alias in virsh attach-disk.
Report error if custom alias doesn't start with 'ua-'.
Signed-off-by: Han Han <hhan(a)redhat.com>
---
tools/virsh-domain.c | 15 ++++++++++++++-
tools/virsh.pod | 3 ++-
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 8adec1d9b1..467417852e 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -290,6 +290,10 @@ static const vshCmdOptDef opts_attach_disk[] = {
.type = VSH_OT_STRING,
.help = N_("wwn of disk device")
},
+ {.name = "alias",
+ .type = VSH_OT_STRING,
+ .help = N_("custom alias name of disk device")
+ },
{.name = "rawio",
.type = VSH_OT_BOOL,
.help = N_("needs rawio capability")
@@ -574,7 +578,7 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
*subdriver = NULL, *type = NULL, *mode = NULL,
*iothread = NULL, *cache = NULL, *io = NULL,
*serial = NULL, *straddr = NULL, *wwn = NULL,
- *targetbus = NULL;
+ *targetbus = NULL, *alias = NULL;
struct DiskAddress diskAddr;
bool isFile = false, functionReturn = false;
int ret;
@@ -611,6 +615,7 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
vshCommandOptStringReq(ctl, cmd, "wwn", &wwn) < 0 ||
vshCommandOptStringReq(ctl, cmd, "address", &straddr) < 0 ||
vshCommandOptStringReq(ctl, cmd, "targetbus", &targetbus) < 0
||
+ vshCommandOptStringReq(ctl, cmd, "alias", &alias) < 0 ||
vshCommandOptStringReq(ctl, cmd, "sourcetype", &stype) < 0)
goto cleanup;
@@ -680,6 +685,14 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
if (serial)
virBufferAsprintf(&buf, "<serial>%s</serial>\n",
serial);
+ if (alias) {
+ if (!STRPREFIX(alias, "ua-")) {
+ vshError(ctl, _("Custom alias name should start with ua-"));
+ goto cleanup;
+ }
+ virBufferAsprintf(&buf, "<alias name='%s'/>",
alias);
+ }
+
if (wwn)
virBufferAsprintf(&buf, "<wwn>%s</wwn>\n", wwn);
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 771e99591e..4f0d12225a 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -3027,7 +3027,7 @@ expected.
=item B<attach-disk> I<domain> I<source> I<target>
[[[I<--live>] [I<--config>]
| [I<--current>]] | [I<--persistent>]] [I<--targetbus bus>]
[I<--driver
driver>] [I<--subdriver subdriver>] [I<--iothread iothread>]
-[I<--cache cache>] [I<--io io>] [I<--type type>]
+[I<--cache cache>] [I<--io io>] [I<--type type>] [I<--alias
alias>]
[I<--mode mode>] [I<--sourcetype sourcetype>] [I<--serial serial>]
[I<--wwn
wwn>] [I<--rawio>] [I<--address address>] [I<--multifunction>]
[I<--print-xml>]
@@ -3050,6 +3050,7 @@ disk formats. I<type> can indicate I<lun>,
I<cdrom> or I<floppy> as
alternative to the disk default, although this use only replaces the media
within the existing virtual cdrom or floppy device; consider using
B<update-device> for this usage instead.
+I<alias> can set user supplied alias. It should start with 'ua-'.
I<mode> can specify the two specific mode I<readonly> or I<shareable>.
I<sourcetype> can indicate the type of source (block|file)
I<cache> can be one of "default", "none",
"writethrough", "writeback",
--
2.17.1