mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Implmentation of new APIs to checking state/persistence of objects
This implements the virConnectIsSecure, virConnectIsEncrypted, virDomainIsPersistent, virDomainIsActive, virNetworkIsActive, virNetworkIsPersistent, virStoragePoolIsActive, virStoragePoolIsPersistent, virInterfaceIsActive APIs in (nearly) all drivers. Exceptions are: phyp: missing domainIsActive/Persistent esx: missing domainIsPersistent opennebula: missing domainIsActive/Persistent * src/remote/remote_protocol.x: Define remote wire ABI for newly added APIs. * daemon/remote_dispatch*.h: Re-generated from remote_protocol.x * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/network/bridge_driver.c, src/opennebula/one_driver.c, src/openvz/openvz_conf.c, src/openvz/openvz_driver.c, src/phyp/phyp_driver.c, src/remote/remote_driver.c, src/storage/storage_driver.c, src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c, src/xen/xen_driver.c, src/xen/xen_driver.h, src/xen/xen_inotify.c, src/xen/xen_inotify.h: Implement all the new APIs where possible
This commit is contained in:
202
daemon/remote.c
202
daemon/remote.c
@@ -5001,6 +5001,208 @@ remoteDispatchSecretLookupByUsage (struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
|
||||
static int remoteDispatchDomainIsActive(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
remote_domain_is_active_args *args,
|
||||
remote_domain_is_active_ret *ret)
|
||||
{
|
||||
virDomainPtr domain;
|
||||
|
||||
domain = get_nonnull_domain(conn, args->dom);
|
||||
if (domain == NULL) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret->active = virDomainIsActive(domain);
|
||||
|
||||
if (ret->active < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int remoteDispatchDomainIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
remote_domain_is_persistent_args *args,
|
||||
remote_domain_is_persistent_ret *ret)
|
||||
{
|
||||
virDomainPtr domain;
|
||||
|
||||
domain = get_nonnull_domain(conn, args->dom);
|
||||
if (domain == NULL) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret->persistent = virDomainIsPersistent(domain);
|
||||
|
||||
if (ret->persistent < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int remoteDispatchInterfaceIsActive(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
remote_interface_is_active_args *args,
|
||||
remote_interface_is_active_ret *ret)
|
||||
{
|
||||
virInterfacePtr iface;
|
||||
|
||||
iface = get_nonnull_interface(conn, args->iface);
|
||||
if (iface == NULL) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret->active = virInterfaceIsActive(iface);
|
||||
|
||||
if (ret->active < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int remoteDispatchNetworkIsActive(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
remote_network_is_active_args *args,
|
||||
remote_network_is_active_ret *ret)
|
||||
{
|
||||
virNetworkPtr network;
|
||||
|
||||
network = get_nonnull_network(conn, args->net);
|
||||
if (network == NULL) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret->active = virNetworkIsActive(network);
|
||||
|
||||
if (ret->active < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int remoteDispatchNetworkIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
remote_network_is_persistent_args *args,
|
||||
remote_network_is_persistent_ret *ret)
|
||||
{
|
||||
virNetworkPtr network;
|
||||
|
||||
network = get_nonnull_network(conn, args->net);
|
||||
if (network == NULL) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret->persistent = virNetworkIsPersistent(network);
|
||||
|
||||
if (ret->persistent < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int remoteDispatchStoragePoolIsActive(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
remote_storage_pool_is_active_args *args,
|
||||
remote_storage_pool_is_active_ret *ret)
|
||||
{
|
||||
virStoragePoolPtr pool;
|
||||
|
||||
pool = get_nonnull_storage_pool(conn, args->pool);
|
||||
if (pool == NULL) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret->active = virStoragePoolIsActive(pool);
|
||||
|
||||
if (ret->active < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int remoteDispatchStoragePoolIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
remote_storage_pool_is_persistent_args *args,
|
||||
remote_storage_pool_is_persistent_ret *ret)
|
||||
{
|
||||
virStoragePoolPtr pool;
|
||||
|
||||
pool = get_nonnull_storage_pool(conn, args->pool);
|
||||
if (pool == NULL) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret->persistent = virStoragePoolIsPersistent(pool);
|
||||
|
||||
if (ret->persistent < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int remoteDispatchIsSecure(struct qemud_server *server ATTRIBUTE_UNUSED,
|
||||
struct qemud_client *client ATTRIBUTE_UNUSED,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr ATTRIBUTE_UNUSED,
|
||||
remote_error *err,
|
||||
void *args ATTRIBUTE_UNUSED,
|
||||
remote_is_secure_ret *ret)
|
||||
{
|
||||
ret->secure = virConnectIsSecure(conn);
|
||||
|
||||
if (ret->secure < 0) {
|
||||
remoteDispatchConnError(err, conn);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*----- Helpers. -----*/
|
||||
|
||||
/* get_nonnull_domain and get_nonnull_network turn an on-wire
|
||||
|
||||
@@ -126,3 +126,10 @@
|
||||
remote_secret_undefine_args val_remote_secret_undefine_args;
|
||||
remote_secret_lookup_by_usage_args val_remote_secret_lookup_by_usage_args;
|
||||
remote_domain_migrate_prepare_tunnel_args val_remote_domain_migrate_prepare_tunnel_args;
|
||||
remote_domain_is_active_args val_remote_domain_is_active_args;
|
||||
remote_domain_is_persistent_args val_remote_domain_is_persistent_args;
|
||||
remote_network_is_active_args val_remote_network_is_active_args;
|
||||
remote_network_is_persistent_args val_remote_network_is_persistent_args;
|
||||
remote_storage_pool_is_active_args val_remote_storage_pool_is_active_args;
|
||||
remote_storage_pool_is_persistent_args val_remote_storage_pool_is_persistent_args;
|
||||
remote_interface_is_active_args val_remote_interface_is_active_args;
|
||||
|
||||
@@ -226,6 +226,22 @@ static int remoteDispatchDomainInterfaceStats(
|
||||
remote_error *err,
|
||||
remote_domain_interface_stats_args *args,
|
||||
remote_domain_interface_stats_ret *ret);
|
||||
static int remoteDispatchDomainIsActive(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
remote_domain_is_active_args *args,
|
||||
remote_domain_is_active_ret *ret);
|
||||
static int remoteDispatchDomainIsPersistent(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
remote_domain_is_persistent_args *args,
|
||||
remote_domain_is_persistent_ret *ret);
|
||||
static int remoteDispatchDomainLookupById(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
@@ -514,6 +530,14 @@ static int remoteDispatchInterfaceGetXmlDesc(
|
||||
remote_error *err,
|
||||
remote_interface_get_xml_desc_args *args,
|
||||
remote_interface_get_xml_desc_ret *ret);
|
||||
static int remoteDispatchInterfaceIsActive(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
remote_interface_is_active_args *args,
|
||||
remote_interface_is_active_ret *ret);
|
||||
static int remoteDispatchInterfaceLookupByMacString(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
@@ -538,6 +562,14 @@ static int remoteDispatchInterfaceUndefine(
|
||||
remote_error *err,
|
||||
remote_interface_undefine_args *args,
|
||||
void *ret);
|
||||
static int remoteDispatchIsSecure(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
void *args,
|
||||
remote_is_secure_ret *ret);
|
||||
static int remoteDispatchListDefinedDomains(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
@@ -666,6 +698,22 @@ static int remoteDispatchNetworkGetBridgeName(
|
||||
remote_error *err,
|
||||
remote_network_get_bridge_name_args *args,
|
||||
remote_network_get_bridge_name_ret *ret);
|
||||
static int remoteDispatchNetworkIsActive(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
remote_network_is_active_args *args,
|
||||
remote_network_is_active_ret *ret);
|
||||
static int remoteDispatchNetworkIsPersistent(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
remote_network_is_persistent_args *args,
|
||||
remote_network_is_persistent_ret *ret);
|
||||
static int remoteDispatchNetworkLookupByName(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
@@ -1034,6 +1082,22 @@ static int remoteDispatchStoragePoolGetInfo(
|
||||
remote_error *err,
|
||||
remote_storage_pool_get_info_args *args,
|
||||
remote_storage_pool_get_info_ret *ret);
|
||||
static int remoteDispatchStoragePoolIsActive(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
remote_storage_pool_is_active_args *args,
|
||||
remote_storage_pool_is_active_ret *ret);
|
||||
static int remoteDispatchStoragePoolIsPersistent(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
remote_storage_pool_is_persistent_args *args,
|
||||
remote_storage_pool_is_persistent_ret *ret);
|
||||
static int remoteDispatchStoragePoolListVolumes(
|
||||
struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
|
||||
@@ -106,3 +106,11 @@
|
||||
remote_secret_get_xml_desc_ret val_remote_secret_get_xml_desc_ret;
|
||||
remote_secret_get_value_ret val_remote_secret_get_value_ret;
|
||||
remote_secret_lookup_by_usage_ret val_remote_secret_lookup_by_usage_ret;
|
||||
remote_is_secure_ret val_remote_is_secure_ret;
|
||||
remote_domain_is_active_ret val_remote_domain_is_active_ret;
|
||||
remote_domain_is_persistent_ret val_remote_domain_is_persistent_ret;
|
||||
remote_network_is_active_ret val_remote_network_is_active_ret;
|
||||
remote_network_is_persistent_ret val_remote_network_is_persistent_ret;
|
||||
remote_storage_pool_is_active_ret val_remote_storage_pool_is_active_ret;
|
||||
remote_storage_pool_is_persistent_ret val_remote_storage_pool_is_persistent_ret;
|
||||
remote_interface_is_active_ret val_remote_interface_is_active_ret;
|
||||
|
||||
@@ -747,3 +747,43 @@
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_prepare_tunnel_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* IsSecure => 149 */
|
||||
.fn = (dispatch_fn) remoteDispatchIsSecure,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_is_secure_ret,
|
||||
},
|
||||
{ /* DomainIsActive => 150 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_is_active_ret,
|
||||
},
|
||||
{ /* DomainIsPersistent => 151 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainIsPersistent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_is_persistent_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_is_persistent_ret,
|
||||
},
|
||||
{ /* NetworkIsActive => 152 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_is_active_ret,
|
||||
},
|
||||
{ /* NetworkIsPersistent => 153 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkIsPersistent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_is_persistent_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_is_persistent_ret,
|
||||
},
|
||||
{ /* StoragePoolIsActive => 154 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_is_active_ret,
|
||||
},
|
||||
{ /* StoragePoolIsPersistent => 155 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolIsPersistent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_is_persistent_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_is_persistent_ret,
|
||||
},
|
||||
{ /* InterfaceIsActive => 156 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_interface_is_active_ret,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user