dynamicweb/opennebula_api
PCoder cb16114aba Do not break the VM list when a VM's OpenNebula template was deleted
The "my virtual machines" page showed "We could not load your VMs due to a
backend connection error" for any user owning a VM whose template had been
removed from OpenNebula. OpenNebulaManager.get_template() converted every
failure, including WrongIdError for a missing template, into
ConnectionRefusedError, and VirtualMachineSerializer.get_configuration()
let that propagate, so one VM with a stale template id took down the whole
list. The only log output was an empty ERROR line, because WrongIdError
has no message.

* Add opennebula_api.exceptions.TemplateNotFoundError and raise it from
  get_template() for a missing template; keep ConnectionRefusedError for
  genuine backend failures and log them with a traceback.
* Add OpenNebulaManager.get_template_names() and resolve_template_id() so
  the serializer fetches the template pool once per list instead of
  constructing an OpenNebulaManager and fetching the pool for every VM.
* get_configuration() now falls back to the template name embedded in the
  VM name ("<template>-<vm id>") when the template is missing or the pool
  cannot be fetched, and logs why.
* Replace str.lstrip('public-') with a real prefix strip (lstrip removes a
  character set, so "public-ubuntu" became "ntu") and also strip
  "ipv6only-".
* ProcessVMSelectionMixin shows "configuration is no longer available"
  instead of an unhandled error when ordering a retired template.
* VirtualMachinesPlanListView logs the exception behind the banner.
* Add mock-based unit tests for the fallback, the UPDATED_TEMPLATES
  mapping, the single pool fetch and the new exception.

The UPDATED_TEMPLATES setting keeps working as an operational override for
mapping retired template ids to their replacements.
2026-10-19 20:53:32 +05:30
..
migrations API Integration 2017-05-12 12:07:05 +02:00
__init__.py Initial commit 2017-05-09 16:33:56 +02:00
admin.py Added Flake8 lib and fixed PEP8 violations 2017-06-29 17:34:40 +03:00
apps.py Initial commit 2017-05-09 16:33:56 +02:00
exceptions.py Do not break the VM list when a VM's OpenNebula template was deleted 2026-10-19 20:53:32 +05:30
models.py Do not break the VM list when a VM's OpenNebula template was deleted 2026-10-19 20:53:32 +05:30
serializers.py Do not break the VM list when a VM's OpenNebula template was deleted 2026-10-19 20:53:32 +05:30
tests.py Do not break the VM list when a VM's OpenNebula template was deleted 2026-10-19 20:53:32 +05:30
urls.py Remove templates 2017-06-01 17:30:53 +02:00
views.py Use username for opennebula related tasks 2020-03-05 15:27:18 +05:30