From 21f52833289f32c75304b4c5afafacbc1df94996 Mon Sep 17 00:00:00 2001 From: Osier Yang Date: Tue, 16 Nov 2010 15:48:47 +0800 Subject: [PATCH] virsh: add net-info command To list basic information about the network. * tools/virsh.c * tools/virsh.pod --- tools/virsh.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/virsh.pod | 4 ++++ 2 files changed, 63 insertions(+) diff --git a/tools/virsh.c b/tools/virsh.c index d15a8df742..3a74053c9d 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -3678,6 +3678,64 @@ cmdNetworkDumpXML(vshControl *ctl, const vshCmd *cmd) return ret; } +/* + * "net-info" command + */ +static const vshCmdInfo info_network_info[] = { + {"help", N_("network information")}, + {"desc", "Returns basic information about the network"}, + {NULL, NULL} +}; + +static const vshCmdOptDef opts_network_info[] = { + {"network", VSH_OT_DATA, VSH_OFLAG_REQ, N_("network name")}, + {NULL, 0, 0, NULL} +}; + +static int +cmdNetworkInfo(vshControl *ctl, const vshCmd *cmd) +{ + virNetworkPtr network; + char uuid[VIR_UUID_STRING_BUFLEN]; + int autostart; + int persistent = -1; + int active = -1; + char *bridge = NULL; + + if (!vshConnectionUsability(ctl, ctl->conn)) + return FALSE; + + if (!(network = vshCommandOptNetworkBy(ctl, cmd, NULL, + VSH_BYNAME))) + return FALSE; + + vshPrint(ctl, "%-15s %s\n", _("Name"), virNetworkGetName(network)); + + if (virNetworkGetUUIDString(network, uuid) == 0) + vshPrint(ctl, "%-15s %s\n", _("UUID"), uuid); + + active = virNetworkIsActive(network); + if (active >= 0) + vshPrint(ctl, "%-15s %s\n", _("Active:"), active? _("yes") : _("no")); + + persistent = virNetworkIsPersistent(network); + if (persistent < 0) + vshPrint(ctl, "%-15s %s\n", _("Persistent:"), _("unknown")); + else + vshPrint(ctl, "%-15s %s\n", _("Persistent:"), persistent ? _("yes") : _("no")); + + if (virNetworkGetAutostart(network, &autostart) < 0) + vshPrint(ctl, "%-15s %s\n", _("Autostart:"), _("no autostart")); + else + vshPrint(ctl, "%-15s %s\n", _("Autostart:"), autostart ? _("yes") : _("no")); + + bridge = virNetworkGetBridgeName(network); + if (bridge) + vshPrint(ctl, "%-15s %s\n", _("Bridge:"), bridge); + + virNetworkFree(network); + return TRUE; +} /* * "iface-edit" command @@ -9879,6 +9937,7 @@ static const vshCmdDef commands[] = { {"net-destroy", cmdNetworkDestroy, opts_network_destroy, info_network_destroy}, {"net-dumpxml", cmdNetworkDumpXML, opts_network_dumpxml, info_network_dumpxml}, {"net-edit", cmdNetworkEdit, opts_network_edit, info_network_edit}, + {"net-info", cmdNetworkInfo, opts_network_info, info_network_info}, {"net-list", cmdNetworkList, opts_network_list, info_network_list}, {"net-name", cmdNetworkName, opts_network_name, info_network_name}, {"net-start", cmdNetworkStart, opts_network_start, info_network_start}, diff --git a/tools/virsh.pod b/tools/virsh.pod index b21e916772..8032256253 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -743,6 +743,10 @@ except that it does some error checking. The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment variables, and defaults to C. +=item B I + +Returns basic information about the I object. + =item B optional I<--inactive> or I<--all> Returns the list of active networks, if I<--all> is specified this will also -- GitLab