virsh.h 5.7 KB
Newer Older
E
Eric Blake 已提交
1 2 3
/*
 * virsh.h: a shell to exercise the libvirt API
 *
4
 * Copyright (C) 2005, 2007-2016 Red Hat, Inc.
E
Eric Blake 已提交
5 6 7 8 9 10 11 12 13 14 15 16
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with this library.  If not, see
E
Eric Blake 已提交
18 19 20 21 22 23 24 25
 * <http://www.gnu.org/licenses/>.
 *
 * Daniel Veillard <veillard@redhat.com>
 * Karel Zak <kzak@redhat.com>
 * Daniel P. Berrange <berrange@redhat.com>
 */

#ifndef VIRSH_H
26
# define VIRSH_H
E
Eric Blake 已提交
27 28 29 30 31 32 33

# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <stdarg.h>
# include <unistd.h>
# include <sys/stat.h>
34
# include <termios.h>
E
Eric Blake 已提交
35 36

# include "internal.h"
37
# include "virerror.h"
38
# include "virthread.h"
39
# include "virpolkit.h"
40
# include "vsh.h"
E
Eric Blake 已提交
41

42 43
# define VIRSH_PROMPT_RW    "virsh # "
# define VIRSH_PROMPT_RO    "virsh > "
E
Eric Blake 已提交
44 45 46 47 48 49

# define VIR_FROM_THIS VIR_FROM_NONE

/*
 * Command group types
 */
50 51 52 53 54 55 56 57 58 59 60 61
# define VIRSH_CMD_GRP_DOM_MANAGEMENT   "Domain Management"
# define VIRSH_CMD_GRP_DOM_MONITORING   "Domain Monitoring"
# define VIRSH_CMD_GRP_STORAGE_POOL     "Storage Pool"
# define VIRSH_CMD_GRP_STORAGE_VOL      "Storage Volume"
# define VIRSH_CMD_GRP_NETWORK          "Networking"
# define VIRSH_CMD_GRP_NODEDEV          "Node Device"
# define VIRSH_CMD_GRP_IFACE            "Interface"
# define VIRSH_CMD_GRP_NWFILTER         "Network Filter"
# define VIRSH_CMD_GRP_SECRET           "Secret"
# define VIRSH_CMD_GRP_SNAPSHOT         "Snapshot"
# define VIRSH_CMD_GRP_HOST_AND_HV      "Host and Hypervisor"
# define VIRSH_CMD_GRP_VIRSH            "Virsh itself"
E
Eric Blake 已提交
62

63 64 65 66 67 68 69 70 71 72
/*
 * Common command options
 */
# define VIRSH_COMMON_OPT_POOL(_helpstr)                          \
    {.name = "pool",                                              \
     .type = VSH_OT_DATA,                                         \
     .flags = VSH_OFLAG_REQ,                                      \
     .help = _helpstr                                             \
    }                                                             \

73 74 75 76 77 78 79
# define VIRSH_COMMON_OPT_DOMAIN(_helpstr)                        \
    {.name = "domain",                                            \
     .type = VSH_OT_DATA,                                         \
     .flags = VSH_OFLAG_REQ,                                      \
     .help = _helpstr                                             \
    }                                                             \

80 81
# define VIRSH_COMMON_OPT_CONFIG(_helpstr)                        \
    {.name = "config",                                            \
82 83
     .type = VSH_OT_BOOL,                                         \
     .help = _helpstr                                             \
84 85
    }                                                             \

86 87 88 89 90 91
# define VIRSH_COMMON_OPT_LIVE(_helpstr)                          \
    {.name = "live",                                              \
     .type = VSH_OT_BOOL,                                         \
     .help = _helpstr                                             \
    }                                                             \

92 93 94 95 96 97
# define VIRSH_COMMON_OPT_CURRENT(_helpstr)                       \
    {.name = "current",                                           \
     .type = VSH_OT_BOOL,                                         \
     .help = _helpstr                                             \
    }                                                             \

98 99 100 101 102 103 104
# define VIRSH_COMMON_OPT_FILE(_helpstr)                          \
    {.name = "file",                                              \
     .type = VSH_OT_DATA,                                         \
     .flags = VSH_OFLAG_REQ,                                      \
     .help = _helpstr                                             \
    }                                                             \

105 106
typedef struct _virshControl virshControl;
typedef virshControl *virshControlPtr;
E
Eric Blake 已提交
107

108
typedef struct _virshCtrlData virshCtrlData;
E
Eric Blake 已提交
109 110 111 112

/*
 * vshControl
 */
113
struct _virshControl {
E
Eric Blake 已提交
114 115 116 117 118 119 120 121
    virConnectPtr conn;         /* connection to hypervisor (MAY BE NULL) */
    bool readonly;              /* connect readonly (first time only, not
                                 * during explicit connect command)
                                 */
    bool useGetInfo;            /* must use virDomainGetInfo, since
                                   virDomainGetState is not supported */
    bool useSnapshotOld;        /* cannot use virDomainSnapshotGetParent or
                                   virDomainSnapshotNumChildren */
122 123
    bool blockJobNoBytes;       /* true if _BANDWIDTH_BYTE blockjob flags
                                   are missing */
E
Eric Blake 已提交
124 125
    const char *escapeChar;     /* String representation of
                                   console escape character */
E
Eric Blake 已提交
126
};
E
Eric Blake 已提交
127 128 129 130 131

/* Typedefs, function prototypes for job progress reporting.
 * There are used by some long lingering commands like
 * migrate, dump, save, managedsave.
 */
132
struct _virshCtrlData {
E
Eric Blake 已提交
133 134 135
    vshControl *ctl;
    const vshCmd *cmd;
    int writefd;
136
    virConnectPtr dconn;
E
Eric Blake 已提交
137
};
E
Eric Blake 已提交
138

139 140 141 142 143 144 145
/* Filter flags for various vshCommandOpt*By() functions */
typedef enum {
    VIRSH_BYID   = (1 << 1),
    VIRSH_BYUUID = (1 << 2),
    VIRSH_BYNAME = (1 << 3),
    VIRSH_BYMAC  = (1 << 4),
} virshLookupByFlags;
146

147
virConnectPtr virshConnect(vshControl *ctl, const char *uri, bool readonly);
148

E
Eric Blake 已提交
149
#endif /* VIRSH_H */