/* Print SchedulerType */
schedulertype = virDomainGetSchedulerType(dom, &nparams);
- if (schedulertype != NULL){
+ if (schedulertype != NULL) {
vshPrint(ctl, "%-15s: %s\n", _("Scheduler"),
schedulertype);
VIR_FREE(schedulertype);
params = vshMalloc(ctl, sizeof(*params) * nparams);
memset(params, 0, sizeof(*params) * nparams);
- ret = virDomainGetSchedulerParameters(dom, params, &nparams);
+ if (flags || current) {
+ /* We cannot query both live and config at once, so settle
+ on current in that case. If we are setting, then the
+ two values should match when we re-query; otherwise, we
+ report the error later. */
+ ret = virDomainGetSchedulerParametersFlags(dom, params, &nparams,
+ ((live && config) ? 0
+ : flags));
+ } else {
+ ret = virDomainGetSchedulerParameters(dom, params, &nparams);
+ }
if (ret == -1)
goto cleanup;
/* See if any params are being set */
- for (i = 0; i < nparams; i++){
+ for (i = 0; i < nparams; i++) {
ret = cmdSchedInfoUpdate(ctl, cmd, &(params[i]));
if (ret == -1)
goto cleanup;
if (ret == -1)
goto cleanup;
- ret = virDomainGetSchedulerParameters(dom, params, &nparams);
+ if (flags || current)
+ ret = virDomainGetSchedulerParametersFlags(dom, params,
+ &nparams,
+ ((live && config) ? 0
+ : flags));
+ else
+ ret = virDomainGetSchedulerParameters(dom, params, &nparams);
if (ret == -1)
goto cleanup;
} else {
var_value_pair);
goto cleanup;
}
+ /* When not doing --set, --live and --config do not mix. */
+ if (live && config) {
+ vshError(ctl, "%s",
+ _("cannot query both live and config at once"));
+ goto cleanup;
+ }
}
ret_val = true;
- for (i = 0; i < nparams; i++){
+ for (i = 0; i < nparams; i++) {
switch (params[i].type) {
case VIR_TYPED_PARAM_INT:
vshPrint(ctl, "%-15s: %d\n", params[i].field, params[i].value.i);