mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-27 19:11:16 +00:00
Introduce virDomainRename API
Also, among with this new API new ACL that restricts rename capability is invented too. Signed-off-by: Tomas Meszaros <exo@tty.sk> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
0e4972fe48
commit
9f7a559a6d
@ -3844,4 +3844,8 @@ int virDomainSetUserPassword(virDomainPtr dom,
|
||||
const char *password,
|
||||
unsigned int flags);
|
||||
|
||||
int virDomainRename(virDomainPtr dom,
|
||||
const char *new_name,
|
||||
unsigned int flags);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_DOMAIN_H__ */
|
||||
|
@ -649,6 +649,11 @@ typedef int
|
||||
typedef int
|
||||
(*virDrvDomainIsActive)(virDomainPtr dom);
|
||||
|
||||
typedef int
|
||||
(*virDrvDomainRename)(virDomainPtr dom,
|
||||
const char *new_name,
|
||||
unsigned int flags);
|
||||
|
||||
typedef int
|
||||
(*virDrvDomainIsPersistent)(virDomainPtr dom);
|
||||
|
||||
@ -1347,6 +1352,7 @@ struct _virHypervisorDriver {
|
||||
virDrvConnectIsEncrypted connectIsEncrypted;
|
||||
virDrvConnectIsSecure connectIsSecure;
|
||||
virDrvDomainIsActive domainIsActive;
|
||||
virDrvDomainRename domainRename;
|
||||
virDrvDomainIsPersistent domainIsPersistent;
|
||||
virDrvDomainIsUpdated domainIsUpdated;
|
||||
virDrvConnectCompareCPU connectCompareCPU;
|
||||
|
@ -8774,6 +8774,41 @@ virDomainIsPersistent(virDomainPtr dom)
|
||||
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:
|
||||
|
@ -720,4 +720,9 @@ LIBVIRT_1.2.17 {
|
||||
virTypedParamsAddStringList;
|
||||
} LIBVIRT_1.2.16;
|
||||
|
||||
LIBVIRT_1.2.19 {
|
||||
global:
|
||||
virDomainRename;
|
||||
} LIBVIRT_1.2.17;
|
||||
|
||||
# .... define new API here using predicted next version number ....
|
||||
|
@ -8391,6 +8391,7 @@ static virHypervisorDriver hypervisor_driver = {
|
||||
.domainGetFSInfo = remoteDomainGetFSInfo, /* 1.2.11 */
|
||||
.domainInterfaceAddresses = remoteDomainInterfaceAddresses, /* 1.2.14 */
|
||||
.domainSetUserPassword = remoteDomainSetUserPassword, /* 1.2.16 */
|
||||
.domainRename = remoteDomainRename, /* 1.2.19 */
|
||||
};
|
||||
|
||||
static virNetworkDriver network_driver = {
|
||||
|
@ -3230,6 +3230,15 @@ struct remote_domain_set_user_password_args {
|
||||
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. -----*/
|
||||
|
||||
@ -5696,5 +5705,12 @@ enum remote_procedure {
|
||||
* @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
|
||||
};
|
||||
|
@ -2684,6 +2684,14 @@ struct remote_domain_set_user_password_args {
|
||||
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,
|
||||
@ -3042,4 +3050,5 @@ enum remote_procedure {
|
||||
REMOTE_PROC_DOMAIN_ADD_IOTHREAD = 355,
|
||||
REMOTE_PROC_DOMAIN_DEL_IOTHREAD = 356,
|
||||
REMOTE_PROC_DOMAIN_SET_USER_PASSWORD = 357,
|
||||
REMOTE_PROC_DOMAIN_RENAME = 358,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user