updateConfiguration with a scope id returns the global value in its response

Ouverte
#14,638 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@bhouse-nexthop y travaille déjà.

Depuis le 9/11/2026.

  • #14641 par @bhouse-nexthop — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
java
Domaine
api, backend

Piste de recherche

Read ConfigurationManagerImpl.updateConfiguration(UpdateCfgCmd) and UpdateCfgCmd.setResponseValue(), then compare the scoped update path with the global findByName(name) return. The issue says the inner update already returns the normalized scoped value; trace how that reaches the API response. Done when the response reports the value set for the requested scope, including implicit scopes. Pull request #14641 is already open.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

problem

On main, updateConfiguration with a scope id (zoneid, clusterid, storageid, accountid, domainid, imagestoreuuid or managementserverid) returns the global value of the setting in its response, not the value that was just set. The scoped value is stored correctly. listConfigurations with the same scope id shows it, and it takes effect.

$ cmk update configuration name=drs.algorithm value=condensed clusterid=<cluster>
{"name": "drs.algorithm", "value": "balanced", "scope": "cluster", ...}   <- global value
$ cmk list configurations name=drs.algorithm clusterid=<cluster>
... "value": "condensed"                                                   <- the value that was set

A script or UI that checks the response sees the wrong value.

Cause:

  • ConfigurationManagerImpl.updateConfiguration(UpdateCfgCmd) ends with return _configDao.findByName(name);. That is the global configuration row, whatever the scope.
  • Since #11770, UpdateCfgCmd.setResponseValue() copies cfg.getValue() into the response. Before that change, it echoed the value from the request. So for a scoped update, the response now has the global value.

The same applies to the implicit scope a domain admin or a user gets when they call the API without a scope id.

versions

main (24.0.0-SNAPSHOT), since #11770. 4.22 and earlier echo the value from the request and are not affected.

The steps to reproduce the bug
  1. Note the global value of a cluster-scoped setting, for example drs.algorithm (balanced by default).
  2. updateConfiguration name=drs.algorithm value=condensed clusterid=<cluster>.
  3. The response's value is balanced.
  4. listConfigurations name=drs.algorithm clusterid=<cluster> returns condensed.
What to do about it?

Have updateConfiguration return the value that was set in the requested scope when a scope is given. The inner updateConfiguration(...) already returns that value, after normalization (for example, lowercased booleans).

Langage dominant
Java
Étoiles
3.1k
Forks
1.4k
Merge moyen
7 j 16 h
PR mergées (30 j)
15

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/cloudstack

Toutes les issues de apache/cloudstack

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.