mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
virsh-util: Move domain lookup helpers into virsh-util
Move virshLookupDomainBy, virshCommandOptDomainBy and virshCommandOptDomainBy to the helper file. Additionally turn the virshCommandOptDomainBy macro into a function.
This commit is contained in:
parent
e8a61ae4bd
commit
aff5aab751
@ -310,6 +310,7 @@ tools/virsh-nwfilter.c
|
||||
tools/virsh-pool.c
|
||||
tools/virsh-secret.c
|
||||
tools/virsh-snapshot.c
|
||||
tools/virsh-util.c
|
||||
tools/virsh-volume.c
|
||||
tools/virsh.c
|
||||
tools/virt-admin.c
|
||||
|
@ -37,7 +37,6 @@
|
||||
#include "intprops.h"
|
||||
#include "viralloc.h"
|
||||
#include "virmacaddr.h"
|
||||
#include "virsh-domain.h"
|
||||
#include "virxml.h"
|
||||
#include "virstring.h"
|
||||
|
||||
|
@ -83,77 +83,6 @@
|
||||
#define VIRSH_COMMON_OPT_DOMAIN_CURRENT \
|
||||
VIRSH_COMMON_OPT_CURRENT(N_("affect current domain")) \
|
||||
|
||||
static virDomainPtr
|
||||
virshLookupDomainInternal(vshControl *ctl,
|
||||
const char *cmdname,
|
||||
const char *name,
|
||||
unsigned int flags)
|
||||
{
|
||||
virDomainPtr dom = NULL;
|
||||
int id;
|
||||
virCheckFlags(VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME, NULL);
|
||||
virshControlPtr priv = ctl->privData;
|
||||
|
||||
/* try it by ID */
|
||||
if (flags & VIRSH_BYID) {
|
||||
if (virStrToLong_i(name, NULL, 10, &id) == 0 && id >= 0) {
|
||||
vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> looks like ID\n",
|
||||
cmdname);
|
||||
dom = virDomainLookupByID(priv->conn, id);
|
||||
}
|
||||
}
|
||||
|
||||
/* try it by UUID */
|
||||
if (!dom && (flags & VIRSH_BYUUID) &&
|
||||
strlen(name) == VIR_UUID_STRING_BUFLEN-1) {
|
||||
vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain UUID\n",
|
||||
cmdname);
|
||||
dom = virDomainLookupByUUIDString(priv->conn, name);
|
||||
}
|
||||
|
||||
/* try it by NAME */
|
||||
if (!dom && (flags & VIRSH_BYNAME)) {
|
||||
vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain NAME\n",
|
||||
cmdname);
|
||||
dom = virDomainLookupByName(priv->conn, name);
|
||||
}
|
||||
|
||||
vshResetLibvirtError();
|
||||
|
||||
if (!dom)
|
||||
vshError(ctl, _("failed to get domain '%s'"), name);
|
||||
|
||||
return dom;
|
||||
}
|
||||
|
||||
|
||||
virDomainPtr
|
||||
virshLookupDomainBy(vshControl *ctl,
|
||||
const char *name,
|
||||
unsigned int flags)
|
||||
{
|
||||
return virshLookupDomainInternal(ctl, "unknown", name, flags);
|
||||
}
|
||||
|
||||
|
||||
virDomainPtr
|
||||
virshCommandOptDomainBy(vshControl *ctl, const vshCmd *cmd,
|
||||
const char **name, unsigned int flags)
|
||||
{
|
||||
const char *n = NULL;
|
||||
const char *optname = "domain";
|
||||
|
||||
if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0)
|
||||
return NULL;
|
||||
|
||||
vshDebug(ctl, VSH_ERR_INFO, "%s: found option <%s>: %s\n",
|
||||
cmd->def->name, optname, n);
|
||||
|
||||
if (name)
|
||||
*name = n;
|
||||
|
||||
return virshLookupDomainInternal(ctl, cmd->def->name, n, flags);
|
||||
}
|
||||
|
||||
static virDomainPtr
|
||||
virshDomainDefine(virConnectPtr conn, const char *xml, unsigned int flags)
|
||||
|
@ -28,18 +28,6 @@
|
||||
|
||||
# include "virsh.h"
|
||||
|
||||
virDomainPtr virshLookupDomainBy(vshControl *ctl,
|
||||
const char *name,
|
||||
unsigned int flags);
|
||||
|
||||
virDomainPtr virshCommandOptDomainBy(vshControl *ctl, const vshCmd *cmd,
|
||||
const char **name, unsigned int flags);
|
||||
|
||||
/* default is lookup by Id, Name and UUID */
|
||||
# define virshCommandOptDomain(_ctl, _cmd, _name) \
|
||||
virshCommandOptDomainBy(_ctl, _cmd, _name, \
|
||||
VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME)
|
||||
|
||||
extern const vshCmdDef domManagementCmds[];
|
||||
|
||||
#endif /* VIRSH_DOMAIN_H */
|
||||
|
@ -35,7 +35,6 @@
|
||||
#include "virbitmap.h"
|
||||
#include "virbuffer.h"
|
||||
#include "viralloc.h"
|
||||
#include "virsh-domain.h"
|
||||
#include "virxml.h"
|
||||
#include "virtypedparam.h"
|
||||
#include "virstring.h"
|
||||
|
@ -37,7 +37,7 @@
|
||||
#include "virbuffer.h"
|
||||
#include "viralloc.h"
|
||||
#include "virfile.h"
|
||||
#include "virsh-domain.h"
|
||||
#include "virsh-util.h"
|
||||
#include "virstring.h"
|
||||
#include "virxml.h"
|
||||
#include "conf/snapshot_conf.h"
|
||||
|
@ -21,6 +21,92 @@
|
||||
#include "virsh-util.h"
|
||||
|
||||
#include "virfile.h"
|
||||
#include "virstring.h"
|
||||
|
||||
static virDomainPtr
|
||||
virshLookupDomainInternal(vshControl *ctl,
|
||||
const char *cmdname,
|
||||
const char *name,
|
||||
unsigned int flags)
|
||||
{
|
||||
virDomainPtr dom = NULL;
|
||||
int id;
|
||||
virCheckFlags(VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME, NULL);
|
||||
virshControlPtr priv = ctl->privData;
|
||||
|
||||
/* try it by ID */
|
||||
if (flags & VIRSH_BYID) {
|
||||
if (virStrToLong_i(name, NULL, 10, &id) == 0 && id >= 0) {
|
||||
vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> looks like ID\n",
|
||||
cmdname);
|
||||
dom = virDomainLookupByID(priv->conn, id);
|
||||
}
|
||||
}
|
||||
|
||||
/* try it by UUID */
|
||||
if (!dom && (flags & VIRSH_BYUUID) &&
|
||||
strlen(name) == VIR_UUID_STRING_BUFLEN-1) {
|
||||
vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain UUID\n",
|
||||
cmdname);
|
||||
dom = virDomainLookupByUUIDString(priv->conn, name);
|
||||
}
|
||||
|
||||
/* try it by NAME */
|
||||
if (!dom && (flags & VIRSH_BYNAME)) {
|
||||
vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain NAME\n",
|
||||
cmdname);
|
||||
dom = virDomainLookupByName(priv->conn, name);
|
||||
}
|
||||
|
||||
vshResetLibvirtError();
|
||||
|
||||
if (!dom)
|
||||
vshError(ctl, _("failed to get domain '%s'"), name);
|
||||
|
||||
return dom;
|
||||
}
|
||||
|
||||
|
||||
virDomainPtr
|
||||
virshLookupDomainBy(vshControl *ctl,
|
||||
const char *name,
|
||||
unsigned int flags)
|
||||
{
|
||||
return virshLookupDomainInternal(ctl, "unknown", name, flags);
|
||||
}
|
||||
|
||||
|
||||
virDomainPtr
|
||||
virshCommandOptDomainBy(vshControl *ctl,
|
||||
const vshCmd *cmd,
|
||||
const char **name,
|
||||
unsigned int flags)
|
||||
{
|
||||
const char *n = NULL;
|
||||
const char *optname = "domain";
|
||||
|
||||
if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0)
|
||||
return NULL;
|
||||
|
||||
vshDebug(ctl, VSH_ERR_INFO, "%s: found option <%s>: %s\n",
|
||||
cmd->def->name, optname, n);
|
||||
|
||||
if (name)
|
||||
*name = n;
|
||||
|
||||
return virshLookupDomainInternal(ctl, cmd->def->name, n, flags);
|
||||
}
|
||||
|
||||
|
||||
virDomainPtr
|
||||
virshCommandOptDomain(vshControl *ctl,
|
||||
const vshCmd *cmd,
|
||||
const char **name)
|
||||
{
|
||||
return virshCommandOptDomainBy(ctl, cmd, name,
|
||||
VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
virshDomainState(vshControl *ctl,
|
||||
|
@ -21,6 +21,23 @@
|
||||
|
||||
# include "virsh.h"
|
||||
|
||||
|
||||
virDomainPtr
|
||||
virshLookupDomainBy(vshControl *ctl,
|
||||
const char *name,
|
||||
unsigned int flags);
|
||||
|
||||
virDomainPtr
|
||||
virshCommandOptDomainBy(vshControl *ctl,
|
||||
const vshCmd *cmd,
|
||||
const char **name,
|
||||
unsigned int flags);
|
||||
|
||||
virDomainPtr
|
||||
virshCommandOptDomain(vshControl *ctl,
|
||||
const vshCmd *cmd,
|
||||
const char **name);
|
||||
|
||||
int
|
||||
virshDomainState(vshControl *ctl,
|
||||
virDomainPtr dom,
|
||||
|
Loading…
Reference in New Issue
Block a user