const char *password,
unsigned int flags);
+int virDomainRename(virDomainPtr dom,
+ const char *new_name,
+ unsigned int flags);
+
#endif /* __VIR_LIBVIRT_DOMAIN_H__ */
typedef int
(*virDrvDomainIsActive)(virDomainPtr dom);
+typedef int
+(*virDrvDomainRename)(virDomainPtr dom,
+ const char *new_name,
+ unsigned int flags);
+
typedef int
(*virDrvDomainIsPersistent)(virDomainPtr dom);
virDrvConnectIsEncrypted connectIsEncrypted;
virDrvConnectIsSecure connectIsSecure;
virDrvDomainIsActive domainIsActive;
+ virDrvDomainRename domainRename;
virDrvDomainIsPersistent domainIsPersistent;
virDrvDomainIsUpdated domainIsUpdated;
virDrvConnectCompareCPU connectCompareCPU;
return -1;
}
+/**
+ * virDomainRename:
+ * @dom: pointer to the domain object
+ * @new_name: new domain name
+ * @flags: extra flags; not used yet, so callers should always pass 0
+ *
+ * Rename a domain. New domain name is specified in the second
+ * argument. Depending on each driver implementation it may be
+ * required that domain is in a specific state.
+ *
+ * Returns 0 if successfully renamed, -1 on error
+ */
+int
+virDomainRename(virDomainPtr dom,
+ const char *new_name,
+ unsigned int flags)
+{
+ VIR_DEBUG("dom=%p, new_name=%s", dom, NULLSTR(new_name));
+
+ virResetLastError();
+ virCheckDomainReturn(dom, -1);
+ virCheckNonNullArgGoto(new_name, error);
+
+ if (dom->conn->driver->domainRename) {
+ int ret = dom->conn->driver->domainRename(dom, new_name, flags);
+ if (ret < 0)
+ goto error;
+ return ret;
+ }
+
+ virReportUnsupportedError();
+ error:
+ virDispatchError(dom->conn);
+ return -1;
+}
/**
* virDomainIsUpdated:
virTypedParamsAddStringList;
} LIBVIRT_1.2.16;
+LIBVIRT_1.2.19 {
+ global:
+ virDomainRename;
+} LIBVIRT_1.2.17;
+
# .... define new API here using predicted next version number ....
.domainGetFSInfo = remoteDomainGetFSInfo, /* 1.2.11 */
.domainInterfaceAddresses = remoteDomainInterfaceAddresses, /* 1.2.14 */
.domainSetUserPassword = remoteDomainSetUserPassword, /* 1.2.16 */
+ .domainRename = remoteDomainRename, /* 1.2.19 */
};
static virNetworkDriver network_driver = {
unsigned int flags;
};
+struct remote_domain_rename_args {
+ remote_nonnull_domain dom;
+ remote_string new_name;
+ unsigned int flags;
+};
+
+struct remote_domain_rename_ret {
+ int rename;
+};
/*----- Protocol. -----*/
* @generate:both
* @acl: domain:set_password
*/
- REMOTE_PROC_DOMAIN_SET_USER_PASSWORD = 357
+ REMOTE_PROC_DOMAIN_SET_USER_PASSWORD = 357,
+
+ /**
+ * @generate: both
+ * @acl: domain:write
+ * @acl: domain:save
+ */
+ REMOTE_PROC_DOMAIN_RENAME = 358
};
remote_string password;
u_int flags;
};
+struct remote_domain_rename_args {
+ remote_nonnull_domain dom;
+ remote_string new_name;
+ u_int flags;
+};
+struct remote_domain_rename_ret {
+ int rename;
+};
enum remote_procedure {
REMOTE_PROC_CONNECT_OPEN = 1,
REMOTE_PROC_CONNECT_CLOSE = 2,
REMOTE_PROC_DOMAIN_ADD_IOTHREAD = 355,
REMOTE_PROC_DOMAIN_DEL_IOTHREAD = 356,
REMOTE_PROC_DOMAIN_SET_USER_PASSWORD = 357,
+ REMOTE_PROC_DOMAIN_RENAME = 358,
};