<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-text-flowed" style="font-family: -moz-fixed;
      font-size: 12px;" lang="x-western">Over the past day or so, I've
      made an effort  to get Quantum running in HTTPD.   <br>
      <br>
      My rationale has been to provide:<br>
      <br>
      1. Native SSL support<br>
      2. IPv6<br>
      3. Certificate based Authentication <br>
      <br>
      My goal has been to do this all on Essex without changing the
      projects' python code base. I'm attempting to do this for all of
      the Openstack components,  and since Quantum has no dependencies, 
      it seemed a good next step after Keystone.<br>
      <br>
      <br>
      The obvious way to set it up should be to use a wsgi file with
      just
      <br>
      <br>
      <br>
      from paste.deploy.loadwsgi  import loadapp
      <br>
      application = loadapp('config:/etc/quantum/quantum.conf',
      'quantum')
      <br>
      <br>
      But it fails due to issues finding the plugins (error log at the
      end of the message). It deploys cleanly once I made the following
      changes to quantum.<br>
      <br>
      --- a/quantum/extensions/extensions.py
      <br>
      +++ b/quantum/extensions/extensions.py
      <br>
      @@ -538,8 +538,9 @@ class ResourceExtension(object):
      <br>
       # Returns the extention paths from a config entry and the
      __path__
      <br>
       # of quantum.extensions
      <br>
       def get_extensions_path(config=None):
      <br>
      -    paths = ':'.join(quantum.extensions.__path__)
      <br>
      -    if config:
      <br>
      -        paths = ':'.join([config.get('api_extensions_path', ''),
      paths])
      <br>
      +#    paths = ':'.join(quantum.extensions.__path__)
      <br>
      +    paths = "<i class="moz-txt-slash"><span class="moz-txt-tag">/</span>etc/quantum/plugins<span
          class="moz-txt-tag">/</span></i>"
      <br>
      +#    if config:
      <br>
      +#        paths = ':'.join([config.get('api_extensions_path', ''),
      paths])
      <br>
      <br>
           return paths
      <br>
      <br>
      Without this, there is a spurious error message due to the leading
      ':'  which puts a blank first element to the path.  It also fails
      to find the extensions path regardless of values put into config
      files etc.  It is this last issue which leads me to highly suggest
      we push Quantum to get on the openstack-common bandwagon,  as its
      Config file processing is confusing and,  I think, broken for the
      general case.
      <br>
      <br>
      <br>
      The other issue which leads me to suspect this approach won't work
      is the fact that the quantum command line client accepts a
      hostname and a port,  but not an URL.  So,  while we could deploy
      quantum behind HTTPD and port 443,  it would basically be the root
      of the HTTP directory,  and we wouldn't be able to share the HTTPD
      instance.  We couldn't do
      <br>
      <br>
      <a class="moz-txt-link-freetext" href="https://hostname/quantum">https://hostname/quantum</a>
      <br>
      <br>
      and put it next to
      <br>
      <br>
      <a class="moz-txt-link-freetext" href="https://hostname/keystone">https://hostname/keystone</a>
      <br>
      <br>
      <br>
      Again, not without a code change.  <br>
      <br>
      Finally,  there seems to be some support for SSL in Quantum.  I
      note that the quantum client has   the option
      <br>
      <br>
      -s, --ssl             use ssl
      <br>
      <br>
      which leads me to believe that it has been at least attempted.  It
      may be that the quantum server would not be severely impacted by
      the overhead of SSL in Python.<br>
      <br>
      <br>
      <br>
      Here's the HTTP error log if I don't make the above change:<br>
      <br>
      <br>
      [Thu Apr 12 11:21:13 2012] [info] Initial (No.1) HTTPS request
      received for chil<br>
      d 7 (server ayoungstack.bos.redhat.com:443)<br>
      [Thu Apr 12 11:21:13 2012] [info] [client 10.16.187.36] mod_wsgi
      (pid=8747, proc<br>
      ess='', application='ayoungstack.bos.redhat.com|/quantum/api'):
      Loading WSGI scr<br>
      ipt '/var/www/cgi-bin/quantum/api'.<br>
      [Thu Apr 12 11:21:13 2012] [error]
      ERROR:quantum.extensions.extensions:Extension<br>
       path "/etc/quantum/extension" doesn't exist!<br>
      [Thu Apr 12 11:21:13 2012] [error]
      WARNING:quantum.extensions.extensions:extensi<br>
      on file portstats.py wasnt loaded due to cannot import name
      extensions<br>
      [Thu Apr 12 11:21:13 2012] [error]
      WARNING:quantum.extensions.extensions:extensi<br>
      on Cisco Nova Tenant not supported by plugin
      <quantum.plugins.openvswitch.ovs_qu<br>
      antum_plugin.OVSQuantumPlugin object at 0x7f1fae80e450><br>
      [Thu Apr 12 11:21:13 2012] [error]
      WARNING:quantum.extensions.extensions:extensi<br>
      on Cisco Port Profile not supported by plugin
      <quantum.plugins.openvswitch.ovs_q<br>
      uantum_plugin.OVSQuantumPlugin object at 0x7f1fae80e450><br>
      [Thu Apr 12 11:21:13 2012] [error]
      WARNING:quantum.extensions.extensions:extensi<br>
      on Cisco Multiport not supported by plugin
      <quantum.plugins.openvswitch.ovs_quan<br>
      tum_plugin.OVSQuantumPlugin object at 0x7f1fae80e450><br>
      [Thu Apr 12 11:21:13 2012] [error]
      WARNING:quantum.extensions.extensions:Did not<br>
       find expected name "Extensions" in
      /opt/stack/quantum/quantum/extensions/extens<br>
      ions.py<br>
      <br>
    </div>
  </body>
</html>