You need to sign in or sign up before continuing.
提交 6427091f 编写于 作者: D Daniel Veillard

* src/virsh.c: add 3 new commands for node device detach, reattach and reset,

  patch by Mark McLoughlin.
Daniel
上级 737af2ea
Mon Mar 2 17:26:48 CET 2009 Daniel Veillard <veillard@redhat.com>
* src/virsh.c: add 3 new commands for node device detach,
reattach and reset, patch by Mark McLoughlin.
Mon Mar 2 17:19:23 CET 2009 Daniel Veillard <veillard@redhat.com> Mon Mar 2 17:19:23 CET 2009 Daniel Veillard <veillard@redhat.com>
* include/libvirt/libvirt.h include/libvirt/libvirt.h.in * include/libvirt/libvirt.h include/libvirt/libvirt.h.in
...@@ -5,7 +10,8 @@ Mon Mar 2 17:19:23 CET 2009 Daniel Veillard <veillard@redhat.com> ...@@ -5,7 +10,8 @@ Mon Mar 2 17:19:23 CET 2009 Daniel Veillard <veillard@redhat.com>
src/lxc_driver.c src/openvz_driver.c src/qemu_driver.c src/lxc_driver.c src/openvz_driver.c src/qemu_driver.c
src/test.c src/uml_driver.c: add the public APIs for src/test.c src/uml_driver.c: add the public APIs for
virNodeDeviceDettach virNodeDeviceReAttach and virNodeDeviceReset virNodeDeviceDettach virNodeDeviceReAttach and virNodeDeviceReset
and extends the driver structure accordingly. and extends the driver structure accordingly, patch by Mark
McLoughlin.
Mon Mar 2 17:07:44 CET 2009 Daniel Veillard <veillard@redhat.com> Mon Mar 2 17:07:44 CET 2009 Daniel Veillard <veillard@redhat.com>
......
...@@ -4432,6 +4432,129 @@ cmdNodeDeviceDumpXML (vshControl *ctl, const vshCmd *cmd) ...@@ -4432,6 +4432,129 @@ cmdNodeDeviceDumpXML (vshControl *ctl, const vshCmd *cmd)
return TRUE; return TRUE;
} }
/*
* "nodedev-dettach" command
*/
static const vshCmdInfo info_node_device_dettach[] = {
{"help", gettext_noop("dettach node device its device driver")},
{"desc", gettext_noop("Dettach node device its device driver before assigning to a domain.")},
{NULL, NULL}
};
static const vshCmdOptDef opts_node_device_dettach[] = {
{"device", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("device key")},
{NULL, 0, 0, NULL}
};
static int
cmdNodeDeviceDettach (vshControl *ctl, const vshCmd *cmd)
{
const char *name;
virNodeDevicePtr device;
int ret = TRUE;
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
return FALSE;
if (!(name = vshCommandOptString(cmd, "device", NULL)))
return FALSE;
if (!(device = virNodeDeviceLookupByName(ctl->conn, name))) {
vshError(ctl, FALSE, "%s '%s'", _("Could not find matching device"), name);
return FALSE;
}
if (virNodeDeviceDettach(device) == 0) {
vshPrint(ctl, _("Device %s dettached\n"), name);
} else {
vshError(ctl, FALSE, _("Failed to dettach device %s"), name);
ret = FALSE;
}
virNodeDeviceFree(device);
return ret;
}
/*
* "nodedev-reattach" command
*/
static const vshCmdInfo info_node_device_reattach[] = {
{"help", gettext_noop("reattach node device its device driver")},
{"desc", gettext_noop("Dettach node device its device driver before assigning to a domain.")},
{NULL, NULL}
};
static const vshCmdOptDef opts_node_device_reattach[] = {
{"device", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("device key")},
{NULL, 0, 0, NULL}
};
static int
cmdNodeDeviceReAttach (vshControl *ctl, const vshCmd *cmd)
{
const char *name;
virNodeDevicePtr device;
int ret = TRUE;
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
return FALSE;
if (!(name = vshCommandOptString(cmd, "device", NULL)))
return FALSE;
if (!(device = virNodeDeviceLookupByName(ctl->conn, name))) {
vshError(ctl, FALSE, "%s '%s'", _("Could not find matching device"), name);
return FALSE;
}
if (virNodeDeviceReAttach(device) == 0) {
vshPrint(ctl, _("Device %s re-attached\n"), name);
} else {
vshError(ctl, FALSE, _("Failed to re-attach device %s"), name);
ret = FALSE;
}
virNodeDeviceFree(device);
return ret;
}
/*
* "nodedev-reset" command
*/
static const vshCmdInfo info_node_device_reset[] = {
{"help", gettext_noop("reset node device")},
{"desc", gettext_noop("Reset node device before or after assigning to a domain.")},
{NULL, NULL}
};
static const vshCmdOptDef opts_node_device_reset[] = {
{"device", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("device key")},
{NULL, 0, 0, NULL}
};
static int
cmdNodeDeviceReset (vshControl *ctl, const vshCmd *cmd)
{
const char *name;
virNodeDevicePtr device;
int ret = TRUE;
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
return FALSE;
if (!(name = vshCommandOptString(cmd, "device", NULL)))
return FALSE;
if (!(device = virNodeDeviceLookupByName(ctl->conn, name))) {
vshError(ctl, FALSE, "%s '%s'", _("Could not find matching device"), name);
return FALSE;
}
if (virNodeDeviceReset(device) == 0) {
vshPrint(ctl, _("Device %s reset\n"), name);
} else {
vshError(ctl, FALSE, _("Failed to reset device %s"), name);
ret = FALSE;
}
virNodeDeviceFree(device);
return ret;
}
/* /*
* "hostkey" command * "hostkey" command
*/ */
...@@ -5576,6 +5699,9 @@ static const vshCmdDef commands[] = { ...@@ -5576,6 +5699,9 @@ static const vshCmdDef commands[] = {
{"nodedev-list", cmdNodeListDevices, opts_node_list_devices, info_node_list_devices}, {"nodedev-list", cmdNodeListDevices, opts_node_list_devices, info_node_list_devices},
{"nodedev-dumpxml", cmdNodeDeviceDumpXML, opts_node_device_dumpxml, info_node_device_dumpxml}, {"nodedev-dumpxml", cmdNodeDeviceDumpXML, opts_node_device_dumpxml, info_node_device_dumpxml},
{"nodedev-dettach", cmdNodeDeviceDettach, opts_node_device_dettach, info_node_device_dettach},
{"nodedev-reattach", cmdNodeDeviceReAttach, opts_node_device_reattach, info_node_device_reattach},
{"nodedev-reset", cmdNodeDeviceReset, opts_node_device_reset, info_node_device_reset},
{"pool-autostart", cmdPoolAutostart, opts_pool_autostart, info_pool_autostart}, {"pool-autostart", cmdPoolAutostart, opts_pool_autostart, info_pool_autostart},
{"pool-build", cmdPoolBuild, opts_pool_build, info_pool_build}, {"pool-build", cmdPoolBuild, opts_pool_build, info_pool_build},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册