remote: introduce remoteGetSchedulerParametersFlags

* daemon/remote.c (remoteDispatchDomainGetSchedulerParameters):
New function.
* src/remote/remote_driver.c (remoteDomainGetSchedulerParameters):
Likewise.
* src/remote/remote_protocol.x
(remote_domain_get_scheduler_parameters_flags_args)
(remote_domain_get_scheduler_parameters_flags_ret): New types.
(remote_procedure): New RPC.
* src/remote_protocol-structs: Likewise.
This commit is contained in:
Eric Blake 2011-05-17 15:45:03 -06:00 committed by Daniel Veillard
parent 8432170f6f
commit baa371eca0
4 changed files with 117 additions and 2 deletions

View File

@ -684,6 +684,59 @@ no_memory:
goto cleanup;
}
static int
remoteDispatchDomainGetSchedulerParametersFlags(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
remote_domain_get_scheduler_parameters_flags_args *args,
remote_domain_get_scheduler_parameters_flags_ret *ret)
{
virDomainPtr dom = NULL;
virTypedParameterPtr params = NULL;
int nparams = args->nparams;
int rv = -1;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
if (nparams > REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
goto cleanup;
}
if (VIR_ALLOC_N(params, nparams) < 0)
goto no_memory;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
if (virDomainGetSchedulerParametersFlags(dom, params, &nparams,
args->flags) < 0)
goto cleanup;
if (remoteSerializeTypedParameters(params, nparams,
&ret->params.params_len,
&ret->params.params_val) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
if (dom)
virDomainFree(dom);
VIR_FREE(params);
return rv;
no_memory:
virReportOOMError();
goto cleanup;
}
static int
remoteDispatchDomainSetSchedulerParameters(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,

View File

@ -2466,6 +2466,45 @@ done:
return rv;
}
static int
remoteDomainGetSchedulerParametersFlags (virDomainPtr domain,
virTypedParameterPtr params,
int *nparams,
unsigned int flags)
{
int rv = -1;
remote_domain_get_scheduler_parameters_flags_args args;
remote_domain_get_scheduler_parameters_flags_ret ret;
struct private_data *priv = domain->conn->privateData;
remoteDriverLock(priv);
make_nonnull_domain (&args.dom, domain);
args.nparams = *nparams;
args.flags = flags;
memset (&ret, 0, sizeof ret);
if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_SCHEDULER_PARAMETERS_FLAGS,
(xdrproc_t) xdr_remote_domain_get_scheduler_parameters_flags_args, (char *) &args,
(xdrproc_t) xdr_remote_domain_get_scheduler_parameters_flags_ret, (char *) &ret) == -1)
goto done;
if (remoteDeserializeTypedParameters(ret.params.params_len,
ret.params.params_val,
REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX,
params,
nparams) < 0)
goto cleanup;
rv = 0;
cleanup:
xdr_free ((xdrproc_t) xdr_remote_domain_get_scheduler_parameters_flags_ret, (char *) &ret);
done:
remoteDriverUnlock(priv);
return rv;
}
static int
remoteDomainSetSchedulerParameters (virDomainPtr domain,
virTypedParameterPtr params, int nparams)
@ -6424,7 +6463,9 @@ static virDriver remote_driver = {
.domainSetAutostart = remoteDomainSetAutostart, /* 0.3.0 */
.domainGetSchedulerType = remoteDomainGetSchedulerType, /* 0.3.0 */
.domainGetSchedulerParameters = remoteDomainGetSchedulerParameters, /* 0.3.0 */
.domainGetSchedulerParametersFlags = remoteDomainGetSchedulerParametersFlags, /* 0.9.2 */
.domainSetSchedulerParameters = remoteDomainSetSchedulerParameters, /* 0.3.0 */
.domainSetSchedulerParametersFlags = remoteDomainSetSchedulerParametersFlags, /* 0.9.2 */
.domainMigratePrepare = remoteDomainMigratePrepare, /* 0.3.2 */
.domainMigratePerform = remoteDomainMigratePerform, /* 0.3.2 */
.domainMigrateFinish = remoteDomainMigrateFinish, /* 0.3.2 */
@ -6478,7 +6519,6 @@ static virDriver remote_driver = {
.domainMigratePerform3 = remoteDomainMigratePerform3, /* 0.9.2 */
.domainMigrateFinish3 = remoteDomainMigrateFinish3, /* 0.9.2 */
.domainMigrateConfirm3 = remoteDomainMigrateConfirm3, /* 0.9.2 */
.domainSetSchedulerParametersFlags = remoteDomainSetSchedulerParametersFlags, /* 0.9.2 */
};
static virNetworkDriver network_driver = {

View File

@ -434,6 +434,16 @@ struct remote_domain_get_scheduler_parameters_ret {
remote_typed_param params<REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX>;
};
struct remote_domain_get_scheduler_parameters_flags_args {
remote_nonnull_domain dom;
int nparams;
unsigned int flags;
};
struct remote_domain_get_scheduler_parameters_flags_ret {
remote_typed_param params<REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX>;
};
struct remote_domain_set_scheduler_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params<REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX>;
@ -2281,7 +2291,8 @@ enum remote_procedure {
REMOTE_PROC_INTERFACE_CHANGE_BEGIN = 220, /* autogen autogen */
REMOTE_PROC_INTERFACE_CHANGE_COMMIT = 221, /* autogen autogen */
REMOTE_PROC_INTERFACE_CHANGE_ROLLBACK = 222 /* autogen autogen */
REMOTE_PROC_INTERFACE_CHANGE_ROLLBACK = 222, /* autogen autogen */
REMOTE_PROC_DOMAIN_GET_SCHEDULER_PARAMETERS_FLAGS = 223 /* skipgen skipgen */
/*
* Notice how the entries are grouped in sets of 10 ?
* Nice isn't it. Please keep it this way when adding more.

View File

@ -151,6 +151,17 @@ struct remote_domain_get_scheduler_parameters_ret {
remote_typed_param * params_val;
} params;
};
struct remote_domain_get_scheduler_parameters_flags_args {
remote_nonnull_domain dom;
int nparams;
u_int flags;
};
struct remote_domain_get_scheduler_parameters_flags_ret {
struct {
u_int params_len;
remote_typed_param * params_val;
} params;
};
struct remote_domain_set_scheduler_parameters_args {
remote_nonnull_domain dom;
struct {