** Description changed:

+ [ Impact ]
+ 
+  * In Resolute, the `heat-api` Apache vhost points at `/usr/bin/heat-api`, but
+    that file is not installed. The packaged WSGI entry point is
+    `/usr/bin/heat-wsgi-api`.
+ 
+  * Apache consequently cannot load the Heat API. Requests return HTTP 500 and
+    the Apache error log reports that `/usr/bin/heat-api` is missing.
+ 
+  * The upload updates the vhost to use the installed WSGI entry point and adds
+    an autopkgtest check that configured WSGI scripts exist and are executable.
+ 
+ [ Test Plan ]
+ 
+  * Use a disposable Resolute system with Apache. Before enabling
+    `resolute-proposed`, install and enable the released package:
+ 
+        sudo apt update
+        sudo apt install heat-api apache2 libapache2-mod-wsgi-py3 curl
+        sudo a2ensite heat-api
+        sudo systemctl restart apache2
+ 
+  * Confirm the enabled vhost uses the missing path and reproduce the
+ failure:
+ 
+        awk '$1 == "WSGIScriptAlias" { print }' 
/etc/apache2/sites-enabled/heat-api.conf
+        test ! -e /usr/bin/heat-api
+        test -x /usr/bin/heat-wsgi-api
+        curl -i http://127.0.0.1:8004/ || true
+        sudo tail -n 50 /var/log/apache2/heat_api_error.log
+ 
+  * Enable `resolute-proposed`, install the candidate `heat-api`, 
`heat-common`,
+    and `python3-heat` packages, and record their versions.
+ 
+  * Confirm the effective vhost now references `/usr/bin/heat-wsgi-api`, 
validate
+    Apache, restart it, and repeat the request:
+ 
+        awk '$1 == "WSGIScriptAlias" { print }' 
/etc/apache2/sites-enabled/heat-api.conf
+        sudo apache2ctl configtest
+        sudo systemctl restart apache2
+        curl -i http://127.0.0.1:8004/ || true
+        sudo tail -n 50 /var/log/apache2/heat_api_error.log
+ 
+    Apache must remain active and the log must not contain the earlier
+    missing-script error. Any remaining HTTP 500 must be investigated.
+ 
+  * If a locally modified vhost is retained during upgrade, confirm the enabled
+    configuration itself uses `/usr/bin/heat-wsgi-api`.
+ 
+ [ Where problems could occur ]
+ 
+  * A wrong alias, an unexecutable WSGI script, or an import failure would 
still
+    prevent Apache from starting or leave Heat API requests returning HTTP 500.
+ 
+  * Locally modified Apache conffiles may retain the old alias during upgrade.
+    Inspecting the enabled vhost is necessary, not merely the packaged file.
+ 
+  * The accompanying autopkgtest covers configured script presence, but it does
+    not prove a fully configured Heat deployment can serve authenticated API
+    requests. The Apache request check covers that boundary.
+ 
+ [ Other Info ]
+ 
+  * LP: #2155160 identifies the regression from the Apache/mod_wsgi packaging
+    transition. The sibling CFN vhost already uses its installed WSGI script 
and
+    is not changed.
+ 
  Summary:
  
  When heat-api runs under Apache/mod_wsgi (heat ≥ 25.0.0), Apache is unable to 
start the heat-api vhost because the WSGI script path in debian/heat-api.conf 
is wrong. Every heat-api request returns a 500 error, and the Apache error log 
shows:
  "Target WSGI script not found or unable to stat: /usr/bin/heat-api"
  
  Root cause:
  
  The bug was introduced in heat 1:25.0.0~rc1-0ubuntu3 (questing, 2025-09-26) 
when the heat-api service was migrated from a systemd daemon to 
Apache/mod_wsgi. The new vhost file debian/heat-api.conf contains:
  "WSGIScriptAlias / /usr/bin/heat-api"
  
  However, no heat package installs /usr/bin/heat-api. The actual WSGI
  entry-point script, installed by python3-heat, is /usr/bin/heat-wsgi-
  api. The sibling vhost file debian/heat-api-cfn.conf is correct
  (/usr/bin/heat-wsgi-api-cfn), making this a straightforward typo in
  heat-api.conf.
  
  Reproduction:
  
  - Install heat-api on questing or resolute
  - a2ensite heat-api && systemctl restart apache2
  - curl -i http://localhost:8004/ -> HTTP 500
  - grep "heat-api" /var/log/apache2/heat_api_error.log -> Target WSGI script 
not found or unable to stat: /usr/bin/heat-api
  
  After applying the sed one-liner s|WSGIScriptAlias / /usr/bin/heat-
  api$|WSGIScriptAlias / /usr/bin/heat-wsgi-api| to the installed conf
  file and restarting apache2, the heat-api endpoint responds normally.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2155160

Title:
  heat-api.conf references nonexistent WSGI script /usr/bin/heat-api

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/flamingo/+bug/2155160/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to