diff --git a/tools/virsh.c b/tools/virsh.c index b9e159b34a..6bb0fc8a99 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -14132,6 +14132,49 @@ cmdTTYConsole(vshControl *ctl, const vshCmd *cmd) return ret; } +/* + * "domhostname" command + */ +static const vshCmdInfo info_domhostname[] = { + {"help", N_("print the domain's hostname")}, + {"desc", ""}, + {NULL, NULL} +}; + +static const vshCmdOptDef opts_domhostname[] = { + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")}, + {NULL, 0, 0, NULL} +}; + +static bool +cmdDomHostname(vshControl *ctl, const vshCmd *cmd) +{ + char *hostname; + virDomainPtr dom; + bool ret = false; + + if (!vshConnectionUsability(ctl, ctl->conn)) + return false; + + if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) + return false; + + hostname = virDomainGetHostname(dom, 0); + if (hostname == NULL) { + vshError(ctl, "%s", _("failed to get hostname")); + goto error; + } + + vshPrint(ctl, "%s\n", hostname); + ret = true; + +error: + VIR_FREE(hostname); + virDomainFree(dom); + return ret; +} + + /* * "attach-device" command */ @@ -18171,6 +18214,7 @@ static const vshCmdDef domManagementCmds[] = { {"detach-interface", cmdDetachInterface, opts_detach_interface, info_detach_interface, 0}, {"domdisplay", cmdDomDisplay, opts_domdisplay, info_domdisplay, 0}, + {"domhostname", cmdDomHostname, opts_domhostname, info_domhostname, 0}, {"domid", cmdDomid, opts_domid, info_domid, 0}, {"domif-setlink", cmdDomIfSetLink, opts_domif_setlink, info_domif_setlink, 0}, {"domiftune", cmdDomIftune, opts_domiftune, info_domiftune, 0}, diff --git a/tools/virsh.pod b/tools/virsh.pod index 4bddf15fff..b4a3d5c895 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -826,6 +826,10 @@ Output a URI which can be used to connect to the graphical display of the domain via VNC, SPICE or RDP. If I<--include-password> is specified, the SPICE channel password will be included in the URI. +=item B I + +Returns the hostname of a domain, if the hypervisor makes it available. + =item B I Returns basic information about the domain.