From 1da73ef2ba4e5bafaee95016b63c7fda5f788227 Mon Sep 17 00:00:00 2001 From: Devananda van der Veen Date: Sat, 8 Feb 2014 00:20:45 -0800 Subject: [PATCH] Add samples to serve API through Apache mod_wsgi The default API service (ironic.cmd.api) uses the wsgiref library. Some deployers may want to serve the API through apache/httpd instead. This patch adds application hooks to use with mod_wsgi, and a sample apache2 config file to demonstrate its use with debian-based distros. Change-Id: I44cd8e0941c350a6e5c16cf2d068c3e8d684ab47 Related-bug: #1279206 --- etc/apache2/ironic | 37 +++++++++++++++++++++++++++++++++++++ ironic/api/app.wsgi | 27 +++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 etc/apache2/ironic create mode 100644 ironic/api/app.wsgi diff --git a/etc/apache2/ironic b/etc/apache2/ironic new file mode 100644 index 0000000000..195ec5c3ca --- /dev/null +++ b/etc/apache2/ironic @@ -0,0 +1,37 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# This is an example Apache2 configuration file for using the +# Ironic API through mod_wsgi. This version assumes you are +# running devstack to configure the software. + +Listen 6385 + + + WSGIDaemonProcess ironic user=stack group=stack threads=10 + WSGIScriptAlias / /opt/stack/ironic/ironic/api/app.wsgi + + SetEnv APACHE_RUN_USER stack + SetEnv APACHE_RUN_GROUP stack + WSGIProcessGroup ironic + + ErrorLog /var/log/apache2/ironic_error.log + LogLevel info + CustomLog /var/log/apache2/ironic_access.log combined + + + WSGIProcessGroup ironic + WSGIApplicationGroup %{GLOBAL} + AllowOverride All + Require all granted + + diff --git a/ironic/api/app.wsgi b/ironic/api/app.wsgi new file mode 100644 index 0000000000..20f3a186b2 --- /dev/null +++ b/ironic/api/app.wsgi @@ -0,0 +1,27 @@ +# -*- mode: python -*- +# -*- encoding: utf-8 -*- +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +""" +Use this file for deploying the API service under Apache2 mod_wsgi. +""" + +from ironic.api import app +from ironic.common import service +from ironic.openstack.common import gettextutils + +gettextutils.install('ironic') + +service.prepare_service([]) + +application = app.VersionSelectorApplication()