.. -*- mode: rst -*- ================================================ Control Plane API endpoints deployment via WSGI ================================================ In some projects, API services can be run: #. As a Python command that runs a web server (e.g. wsgiref or werkzeug). #. As a WSGI application hosted by performant web servers (e.g. Apache with mod_wsgi or Nginx with uWSGI). When a project provides a WSGI application the API service gains flexibility in terms of deployment, performance, configuration and scaling. Gerrit Topic ============ To facilitate tracking, commits related to this goal should use the gerrit topic:: goal-deploy-api-in-wsgi Completion Criteria =================== For all projects: #. Provide WSGI application script file(s) (e.g. to be used by web server). There shouldn't be any web server restriction and the application could be deploying to any web server that support WSGI applications. #. Switch devstack jobs to deploy control-plane API services in WSGI with Apache. Usage of Apache is already the default in Devstack, let's keep using it for consistency unless there is some efforts to support another web server but this is not the case at this time. References ========== Reference documentation for the existing WSGI deployments: * http://docs.openstack.org/developer/keystone/apache-httpd.html * http://docs.openstack.org/developer/ceilometer/install/mod_wsgi.html Current State / Anticipated Impact ================================== On 12 Jan 2017 a review of git repositories owned by big tent project showed the projects that don't support their control-plane API services deployed via WSGI: .. (emilien) I built this list based on my research. Please comment if something is wrong or missing. This list reflects the projects where API can't be deployed via WSGI. * cloudkitty * congress * designate * freezer * glance * kuryr * magnum * murano * neutron * octavia * searchlight * solum * tacker * trove * vitrage * watcher * zun .. (emilien) TODO These projects already deploy devstack with API service via WSGI: * aodh * ceilometer * cinder * gnocchi * ironic * keystone * mistral * nova * panko * swift * zaqar * (...) Project Teams ============= barbican -------- Planning Artifacts: * https://blueprints.launchpad.net/barbican/+spec/goal-deploy-api-in-wsgi Completion Artifacts: Chef OpenStack -------------- Planning Artifacts: Completion Artifacts: cinder ------ Planning Artifacts: Completion Artifacts: cloudkitty ---------- Planning Artifacts: Completion Artifacts: Community App Catalog --------------------- Planning Artifacts: Completion Artifacts: congress -------- Planning Artifacts: Completion Artifacts: designate --------- Planning Artifacts: Completion Artifacts: Documentation ------------- Planning Artifacts: Completion Artifacts: dragonflow ---------- Planning Artifacts: Completion Artifacts: ec2-api ------- Planning Artifacts: Completion Artifacts: freezer ------- Planning Artifacts: Completion Artifacts: fuel ---- Planning Artifacts: Completion Artifacts: glance ------ Planning Artifacts: * `Glance Spec Lite `_ Completion Artifacts: heat ---- Planning Artifacts: Completion Artifacts: horizon ------- Planning Artifacts: Completion Artifacts: I18n ---- Planning Artifacts: * The I18n team does not have any API services and therefore has nothing to do Completion Artifacts: * None Infrastructure -------------- Planning Artifacts: Completion Artifacts: ironic ------ Planning Artifacts: RFE: https://bugs.launchpad.net/ironic/+bug/1513005 Completion Artifacts: karbor ------ Planning Artifacts: Completion Artifacts: keystone -------- Planning Artifacts: * Keystone has no planning documents at this time since support was introduced prior to Kilo. Completion Artifacts: * http://git.openstack.org/cgit/openstack-dev/devstack/commit/?id=a00e5f8810b6ca3b0b5d63cc228125e19bc91955 kolla ----- Planning Artifacts: Completion Artifacts: kuryr ----- Planning Artifacts: Completion Artifacts: magnum ------ Planning Artifacts: Completion Artifacts: manila ------ Planning Artifacts: Completion Artifacts: mistral ------- Planning Artifacts: Completion Artifacts: monasca ------- Planning Artifacts: Completion Artifacts: murano ------ Planning Artifacts: Completion Artifacts: neutron ------- Planning Artifacts: Completion Artifacts: nova ---- Planning Artifacts: Completion Artifacts: octavia ------- Planning Artifacts: Completion Artifacts: OpenStack Charms ---------------- Planning Artifacts: Completion Artifacts: OpenStack UX ------------ Planning Artifacts: Completion Artifacts: OpenStackAnsible ---------------- Planning Artifacts: Completion Artifacts: OpenStackClient --------------- Planning Artifacts: Completion Artifacts: oslo ---- Planning Artifacts: Completion Artifacts: Packaging-deb ------------- Planning Artifacts: Completion Artifacts: Packaging-rpm ------------- Planning Artifacts: Completion Artifacts: Puppet OpenStack ---------------- Planning Artifacts: Projects where we plan to add support: * puppet-zaqar Completion Artifacts: Projects that already support WSGI deployments for API: * puppet-aodh * puppet-barbican * puppet-ceilometer * puppet-cinder * puppet-gnocchi * puppet-heat * puppet-ironic * puppet-keystone * puppet-mistral * puppet-nova * puppet-panko * puppet-vitrage Quality Assurance ----------------- Planning Artifacts: * The only project that includes a python web application is the API part of OpenStack Health, which is not an OpenStack control plane service. OpenStack Health API is deployed as a WSGI application as part of OpenStack infra. Further details in https://etherpad.openstack.org/p/pike-qa-goals-wsgi. Completion Artifacts: * None rally ----- Planning Artifacts: Completion Artifacts: RefStack -------- Planning Artifacts: Completion Artifacts: Release Management ------------------ Planning Artifacts: Completion Artifacts: requirements ------------ Planning Artifacts: * The requirements team do not have any API services and therefore has nothing to do. Completion Artifacts: * None sahara ------ Planning Artifacts: * Update devstack plugin to deploy in WSGI with Apache * Launchpad bug: https://bugs.launchpad.net/sahara/+bug/1673198 Completion Artifacts: searchlight ----------- Planning Artifacts: Completion Artifacts: Security -------- Planning Artifacts: Completion Artifacts: senlin ------ Planning Artifacts: Completion Artifacts: solum ----- Planning Artifacts: * https://blueprints.launchpad.net/solum/+spec/solum-api-under-wsgi Completion Artifacts: * Add wsgi script file: https://review.openstack.org/#/c/448400/ * Enable wsgi on devstack jobs: https://review.openstack.org/#/c/448410/ Stable branch maintenance ------------------------- Planning Artifacts: * The stable team doesn't have any code repositories and therefore has nothing to do. Completion Artifacts: * None swift ----- Planning Artifacts: Completion Artifacts: tacker ------ Planning Artifacts: Completion Artifacts: Telemetry --------- Planning Artifacts: Completion Artifacts: tricircle --------- Planning Artifacts: Completion Artifacts: tripleo ------- Planning Artifacts: During Pike, we plan to migrate some services under WSGI with Apache: * Heat APIs * Ironic API when https://bugs.launchpad.net/ironic/+bug/1608252 will be fixed. * Mistral API when https://bugs.launchpad.net/mistral/+bug/1663368 will be fixed. * Nova API when it will be officially supported by Nova team. Completion Artifacts: TripleO already deploy some services under WSGI with Apache: * Aodh API * Barbican * Ceilometer API * Cinder API * Gnocchi API * Keystone * Nova Placement * Panko API trove ----- Planning Artifacts: Completion Artifacts: vitrage ------- Planning Artifacts: Completion Artifacts: watcher ------- Planning Artifacts: Completion Artifacts: winstackers ----------- Planning Artifacts: Completion Artifacts: zaqar ----- Planning Artifacts: Completion Artifacts: zun --- Planning Artifacts: Completion Artifacts: