From 3f516ad814096217dfebd13bcd88c954b16f9568 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 18 Sep 2026 11:33:02 +0530 Subject: [PATCH 1/2] notes for improve error messaging Related https://github.com/apache/cloudstack/pull/12336 Signed-off-by: Abhishek Kumar --- .../images/error-message-hindi-locale.png | Bin 0 -> 67077 bytes source/adminguide/error_messages.rst | 213 ++++++++++++++++++ source/adminguide/index.rst | 1 + 3 files changed, 214 insertions(+) create mode 100644 source/_static/images/error-message-hindi-locale.png create mode 100644 source/adminguide/error_messages.rst diff --git a/source/_static/images/error-message-hindi-locale.png b/source/_static/images/error-message-hindi-locale.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae5b10ba185e4edd50b8832618cd6062c395eb1 GIT binary patch literal 67077 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.json + +The ```` is any name you choose, conventionally the name of the +plugin or customization it belongs to (for example +``error-messages-mycompany.json``). These files are **not** shipped inside +any CloudStack package or plugin JAR; they are purely a runtime mechanism, +so you create them yourself on each management server. + +An override file only needs to contain the keys it changes: + +.. code:: json + + { + "vm.stop.vm.not.found": "Custom wording for this one message only." + } + +All matching ``error-messages-*.json`` files in the directory are merged on +top of the main ``error-messages.json``, in alphabetical order by filename, +with later files taking precedence on a per-key basis. If two override files +define the same key, the alphabetically later filename wins and a warning is +logged. The merge happens key by key, not file by file, overriding a base +key leaves that key's ``.admin`` variant (if defined elsewhere) untouched. + +Like the main file, override files are hot-reloaded - adding, removing, or +editing one takes effect on the next request, with no restart. + +Multi-management-server deployments +-------------------------------------- + +Each management server reloads based only on its own local copy of these +files. In a deployment with more than one management server, keep +``error-messages.json`` and any override files in sync across every node, +for example by managing them with the same configuration-management tooling +used for the rest of the management server configuration. A change made on +only one node will only be visible to API calls handled by that node. + +Global settings for metadata rendering +------------------------------------------ + +Two global settings control how object values (such as a VM or volume) are +rendered when substituted into a message template: + +.. cssclass:: table-striped table-bordered table-hover + ++------------------------------------------------------+-------------------------------------------------------------------+ +| Global Setting | Description | ++======================================================+===================================================================+ +| ``error.message.metadata.prefer.tostring`` | When ``true``, prefer the object's own ``toString()`` over the | +| | default display-name lookup when rendering it into a message. | +| | Default: ``false``. | ++------------------------------------------------------+-------------------------------------------------------------------+ +| ``error.message.metadata.include.id.for.admins`` | When ``true``, include the internal database ID (in addition to | +| | the UUID) for objects referenced in a message shown to a root | +| | admin. Default: ``true``. | ++------------------------------------------------------+-------------------------------------------------------------------+ + +Both settings require a **management server restart** to take effect. This +is deliberate, unlike most dynamic global settings, these are read on every +error message rendered, so making them dynamic would add avoidable database +load on a busy system. + +Structured fields in the API response +----------------------------------------- + +Alongside the existing ``errortext`` field, API error responses (and failed +async job results) also include: + +- ``errortextkey``: the stable error key (for example + ``vm.stop.vm.not.found``), unaffected by any customization of the message + text itself. +- ``errormetadata``: the raw metadata values used to fill in the message + template, as a key/value map. + +These are useful for API clients and integrations that want to react to a +specific error condition or localize the message themselves, rather than +matching against the (customizable) human-readable ``errortext`` string. + +For example, a failed ``deployVirtualMachine`` call that hits an account +resource limit returns: + +.. code:: json + + { + "deployvirtualmachineresponse": { + "uuidList": [], + "errorcode": 535, + "cserrorcode": 9999, + "errortext": "Unable to deploy Instance because allocating 1 more Instance would exceed the Account limits. Current: 2, Reserved: 0, Limit: 2. Release unused resources, then retry.", + "errortextkey": "vm.deploy.resourcelimit.exceeded.account", + "errormetadata": { + "resourceRequested": "1", + "resourceTypeDisplay": "Instance", + "resourceOwnerType": "Account", + "resourceAmount": "2", + "resourceReserved": "0", + "resourceLimit": "2" + } + } + } + +``errortextkey`` and the keys inside ``errormetadata`` stay the same no +matter how ``error-messages.json`` is customized; only ``errortext`` changes +with the template. + +Localizing messages in the UI +--------------------------------- + +``error-messages.json`` controls the message returned by the API itself, but +the UI has its own, separate localization mechanism based on the same +``errortextkey``. The UI's locale files, one JSON file per language under +``ui/public/locales/`` (for example ``hi.json`` for Hindi, ``fr_FR.json`` for +French), are flat key/value maps of translation strings, already used for +every other piece of UI text. + +If the current locale's file has an entry whose key exactly matches an +error's ``errortextkey``, the UI shows that translation instead of the +server-rendered ``errortext``, substituting ``{{placeholder}}`` tokens in it +with the matching values from ``errormetadata``. If no matching key exists in +the current locale, the UI falls back to the server's ``errortext`` as-is. + +This means a developer or operator can add or edit a UI-side translation for +a specific error message by adding a key equal to its ``errortextkey`` to the +relevant locale file, with no change needed on the management server. For +example, a translation added to ``ui/public/locales/hi.json`` for the +``vm.deploy.resourcelimit.exceeded.account`` error from the example above +would show a Hindi-locale user: + +.. figure:: /_static/images/error-message-hindi-locale.png + :align: center + :alt: The same resource-limit error rendered in Hindi via a UI locale file + + The account resource-limit error from the example above, localized in + the UI via a ``hi.json`` entry keyed on ``errortextkey``. diff --git a/source/adminguide/index.rst b/source/adminguide/index.rst index ada0a37b4d..3f2017e856 100644 --- a/source/adminguide/index.rst +++ b/source/adminguide/index.rst @@ -163,6 +163,7 @@ Managing the Cloud management kms + error_messages System Reliability and Availability ----------------------------------- From 997a1c83f8c1903154e45abf14d2c9ff68931f5a Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 18 Sep 2026 12:17:11 +0530 Subject: [PATCH 2/2] admin variant in UI Signed-off-by: Abhishek Kumar --- source/adminguide/error_messages.rst | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/adminguide/error_messages.rst b/source/adminguide/error_messages.rst index d62dc259cb..3a40dea981 100644 --- a/source/adminguide/error_messages.rst +++ b/source/adminguide/error_messages.rst @@ -200,8 +200,15 @@ the current locale, the UI falls back to the server's ``errortext`` as-is. This means a developer or operator can add or edit a UI-side translation for a specific error message by adding a key equal to its ``errortextkey`` to the -relevant locale file, with no change needed on the management server. For -example, a translation added to ``ui/public/locales/hi.json`` for the +relevant locale file, with no change needed on the management server. + +**Admin variant**: like the server, before falling back to the base key, the +UI first tries a key suffixed ``.admin`` when the current user is a root +admin, the same ``.admin`` suffix and root-admin-only condition described +under "Admin-only variants" above. There is no equivalent variant for +resource admins, domain admins, or regular users. + +For example, a translation added to ``ui/public/locales/hi.json`` for the ``vm.deploy.resourcelimit.exceeded.account`` error from the example above would show a Hindi-locale user: