1 /* 2 * virdomainobjlist.h: domain objects list utilities 3 * 4 * Copyright (C) 2006-2015 Red Hat, Inc. 5 * Copyright (C) 2006-2008 Daniel P. Berrange 6 * Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with this library. If not, see 20 * <http://www.gnu.org/licenses/>. 21 */ 22 23 #pragma once 24 25 #include "domain_conf.h" 26 27 typedef struct _virDomainObjList virDomainObjList; 28 29 virDomainObjList *virDomainObjListNew(void); 30 31 virDomainObj *virDomainObjListFindByID(virDomainObjList *doms, 32 int id); 33 virDomainObj *virDomainObjListFindByUUID(virDomainObjList *doms, 34 const unsigned char *uuid); 35 virDomainObj *virDomainObjListFindByName(virDomainObjList *doms, 36 const char *name); 37 38 enum { 39 VIR_DOMAIN_OBJ_LIST_ADD_LIVE = (1 << 0), 40 VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE = (1 << 1), 41 }; 42 virDomainObj *virDomainObjListAdd(virDomainObjList *doms, 43 virDomainDef **def, 44 virDomainXMLOption *xmlopt, 45 unsigned int flags, 46 virDomainDef **oldDef); 47 48 typedef int (*virDomainObjListRenameCallback)(virDomainObj *dom, 49 const char *new_name, 50 unsigned int flags, 51 void *opaque); 52 int virDomainObjListRename(virDomainObjList *doms, 53 virDomainObj *dom, 54 const char *new_name, 55 unsigned int flags, 56 virDomainObjListRenameCallback callback, 57 void *opaque); 58 59 void virDomainObjListRemove(virDomainObjList *doms, 60 virDomainObj *dom); 61 void virDomainObjListRemoveLocked(virDomainObjList *doms, 62 virDomainObj *dom); 63 64 int virDomainObjListLoadAllConfigs(virDomainObjList *doms, 65 const char *configDir, 66 const char *autostartDir, 67 bool liveStatus, 68 virDomainXMLOption *xmlopt, 69 virDomainLoadConfigNotify notify, 70 void *opaque); 71 72 int virDomainObjListNumOfDomains(virDomainObjList *doms, 73 bool active, 74 virDomainObjListACLFilter filter, 75 virConnectPtr conn); 76 77 int virDomainObjListGetActiveIDs(virDomainObjList *doms, 78 int *ids, 79 int maxids, 80 virDomainObjListACLFilter filter, 81 virConnectPtr conn); 82 int virDomainObjListGetInactiveNames(virDomainObjList *doms, 83 char **const names, 84 int maxnames, 85 virDomainObjListACLFilter filter, 86 virConnectPtr conn); 87 88 typedef int (*virDomainObjListIterator)(virDomainObj *dom, 89 void *opaque); 90 91 int virDomainObjListForEach(virDomainObjList *doms, 92 bool modify, 93 virDomainObjListIterator callback, 94 void *opaque); 95 96 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_ACTIVE \ 97 (VIR_CONNECT_LIST_DOMAINS_ACTIVE | \ 98 VIR_CONNECT_LIST_DOMAINS_INACTIVE) 99 100 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_PERSISTENT \ 101 (VIR_CONNECT_LIST_DOMAINS_PERSISTENT | \ 102 VIR_CONNECT_LIST_DOMAINS_TRANSIENT) 103 104 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_STATE \ 105 (VIR_CONNECT_LIST_DOMAINS_RUNNING | \ 106 VIR_CONNECT_LIST_DOMAINS_PAUSED | \ 107 VIR_CONNECT_LIST_DOMAINS_SHUTOFF | \ 108 VIR_CONNECT_LIST_DOMAINS_OTHER) 109 110 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_MANAGEDSAVE \ 111 (VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE | \ 112 VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE) 113 114 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_AUTOSTART \ 115 (VIR_CONNECT_LIST_DOMAINS_AUTOSTART | \ 116 VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART) 117 118 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_SNAPSHOT \ 119 (VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT | \ 120 VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT) 121 122 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_CHECKPOINT \ 123 (VIR_CONNECT_LIST_DOMAINS_HAS_CHECKPOINT | \ 124 VIR_CONNECT_LIST_DOMAINS_NO_CHECKPOINT) 125 126 #define VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL \ 127 (VIR_CONNECT_LIST_DOMAINS_FILTERS_ACTIVE | \ 128 VIR_CONNECT_LIST_DOMAINS_FILTERS_PERSISTENT | \ 129 VIR_CONNECT_LIST_DOMAINS_FILTERS_STATE | \ 130 VIR_CONNECT_LIST_DOMAINS_FILTERS_MANAGEDSAVE | \ 131 VIR_CONNECT_LIST_DOMAINS_FILTERS_AUTOSTART | \ 132 VIR_CONNECT_LIST_DOMAINS_FILTERS_SNAPSHOT | \ 133 VIR_CONNECT_LIST_DOMAINS_FILTERS_CHECKPOINT) 134 135 int virDomainObjListCollect(virDomainObjList *doms, 136 virConnectPtr conn, 137 virDomainObj ***vms, 138 size_t *nvms, 139 virDomainObjListACLFilter filter, 140 unsigned int flags); 141 int virDomainObjListExport(virDomainObjList *doms, 142 virConnectPtr conn, 143 virDomainPtr **domains, 144 virDomainObjListACLFilter filter, 145 unsigned int flags); 146 int virDomainObjListConvert(virDomainObjList *domlist, 147 virConnectPtr conn, 148 virDomainPtr *doms, 149 size_t ndoms, 150 virDomainObj ***vms, 151 size_t *nvms, 152 virDomainObjListACLFilter filter, 153 unsigned int flags, 154 bool skip_missing); 155