mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
virsh: add nodedev-autostart
Add ability to set node devices to autostart on boot or parent device availability. Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
@@ -5131,6 +5131,21 @@ When *--timestamp* is used, a human-readable timestamp will be printed
|
|||||||
before the event.
|
before the event.
|
||||||
|
|
||||||
|
|
||||||
|
nodedev-autostart
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
**Syntax:**
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
nodedev-autostart [--disable] device
|
||||||
|
|
||||||
|
Configure a device to be automatically started when the host machine boots or
|
||||||
|
the parent device becomes available. With *--disable*, the device will be set
|
||||||
|
to manual mode and will no longer be automatically started by the host. This
|
||||||
|
command is only supported for persistently-defined mediated devices.
|
||||||
|
|
||||||
|
|
||||||
VIRTUAL NETWORK COMMANDS
|
VIRTUAL NETWORK COMMANDS
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
|||||||
@@ -1153,6 +1153,71 @@ cmdNodeDeviceStart(vshControl *ctl, const vshCmd *cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "nodedev-autostart" command
|
||||||
|
*/
|
||||||
|
static const vshCmdInfo info_node_device_autostart[] = {
|
||||||
|
{.name = "help",
|
||||||
|
.data = N_("autostart a defined node device")
|
||||||
|
},
|
||||||
|
{.name = "desc",
|
||||||
|
.data = N_("Configure a node device to be automatically started at boot.")
|
||||||
|
},
|
||||||
|
{.name = NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const vshCmdOptDef opts_node_device_autostart[] = {
|
||||||
|
{.name = "device",
|
||||||
|
.type = VSH_OT_DATA,
|
||||||
|
.flags = VSH_OFLAG_REQ,
|
||||||
|
.help = N_("device name or wwn pair in 'wwnn,wwpn' format"),
|
||||||
|
.completer = virshNodeDeviceNameCompleter,
|
||||||
|
},
|
||||||
|
{.name = "disable",
|
||||||
|
.type = VSH_OT_BOOL,
|
||||||
|
.help = N_("disable autostarting")
|
||||||
|
},
|
||||||
|
{.name = NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool
|
||||||
|
cmdNodeDeviceAutostart(vshControl *ctl, const vshCmd *cmd)
|
||||||
|
{
|
||||||
|
virNodeDevice *dev = NULL;
|
||||||
|
bool ret = false;
|
||||||
|
const char *name = NULL;
|
||||||
|
int autostart;
|
||||||
|
|
||||||
|
if (vshCommandOptStringReq(ctl, cmd, "device", &name) < 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
dev = vshFindNodeDevice(ctl, name);
|
||||||
|
|
||||||
|
if (!dev) goto cleanup;
|
||||||
|
|
||||||
|
autostart = !vshCommandOptBool(cmd, "disable");
|
||||||
|
|
||||||
|
if (virNodeDeviceSetAutostart(dev, autostart) < 0) {
|
||||||
|
if (autostart)
|
||||||
|
vshError(ctl, _("failed to mark device %s as autostarted"), name);
|
||||||
|
else
|
||||||
|
vshError(ctl, _("failed to unmark device %s as autostarted"), name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (autostart)
|
||||||
|
vshPrintExtra(ctl, _("Device %s marked as autostarted\n"), name);
|
||||||
|
else
|
||||||
|
vshPrintExtra(ctl, _("Device %s unmarked as autostarted\n"), name);
|
||||||
|
|
||||||
|
ret = true;
|
||||||
|
cleanup:
|
||||||
|
if (dev)
|
||||||
|
virNodeDeviceFree(dev);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const vshCmdDef nodedevCmds[] = {
|
const vshCmdDef nodedevCmds[] = {
|
||||||
{.name = "nodedev-create",
|
{.name = "nodedev-create",
|
||||||
.handler = cmdNodeDeviceCreate,
|
.handler = cmdNodeDeviceCreate,
|
||||||
@@ -1224,5 +1289,11 @@ const vshCmdDef nodedevCmds[] = {
|
|||||||
.info = info_node_device_start,
|
.info = info_node_device_start,
|
||||||
.flags = 0
|
.flags = 0
|
||||||
},
|
},
|
||||||
|
{.name = "nodedev-autostart",
|
||||||
|
.handler = cmdNodeDeviceAutostart,
|
||||||
|
.opts = opts_node_device_autostart,
|
||||||
|
.info = info_node_device_autostart,
|
||||||
|
.flags = 0
|
||||||
|
},
|
||||||
{.name = NULL}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user