Merge "Add NFS backend configuration option in salt-formulas/cinder project."
diff --git a/.kitchen.yml b/.kitchen.yml
index 222da18..a00d4ec 100644
--- a/.kitchen.yml
+++ b/.kitchen.yml
@@ -18,6 +18,9 @@
     - name: linux
       repo: git
       source: https://github.com/salt-formulas/salt-formula-linux
+    - name: apache
+      repo: git
+      source: https://github.com/salt-formulas/salt-formula-apache
     - name: keystone
       repo: git
       source: https://github.com/salt-formulas/salt-formula-keystone
@@ -25,6 +28,7 @@
     base:
       "*":
         - linux.system
+        - apache
         - cinder
   pillars:
     top.sls:
@@ -79,6 +83,11 @@
             volume:
               enabled: false
 
+  - name: control_cluster
+    provisioner:
+      pillars-from-files:
+        cinder.sls: tests/pillar/control_cluster_intree_wsgi.sls
+
   - name: gpfs_single
     provisioner:
       pillars-from-files:
diff --git a/cinder/controller.sls b/cinder/controller.sls
index 07772bd..950b6ca 100644
--- a/cinder/controller.sls
+++ b/cinder/controller.sls
@@ -152,10 +152,15 @@
   - require_in:
     - service: cinder_controller_services
 
-{%- if controller.version in ('ocata','pike') %}
+{%- if controller.version not in ['mitaka','newton'] %}
+include:
+  - apache
+{#- Creation of sites using templates is deprecated, sites should be generated by apache pillar, and enabled by cinder formula #}
+{%- if pillar.get('apache', {}).get('server', {}).get('site', {}).cinder is not defined %}
 
-/etc/apache2/conf-available/cinder-wsgi.conf:
+cinder_apache_conf_file:
   file.managed:
+  - name: /etc/apache2/conf-available/cinder-wsgi.conf
   - source: salt://cinder/files/{{ controller.version }}/cinder-wsgi.conf
   - template: jinja
   - require:
@@ -164,6 +169,36 @@
 apache_enable_cinder_wsgi:
   apache_conf.enabled:
     - name: cinder-wsgi
+    - require:
+      - cinder_apache_conf_file
+
+{%- else %}
+
+cleanup_configs:
+  file.absent:
+    - names: ['/etc/apache2/conf-available/cinder-wsgi.conf', '/etc/apache2/conf-enabled/cinder-wsgi.conf']
+
+cinder_apache_conf_file:
+  file.exists:
+  - name: /etc/apache2/sites-available/wsgi_cinder.conf
+  - require:
+    - pkg: cinder_controller_packages
+    - cleanup_configs
+
+apache_enable_cinder_wsgi:
+  apache_site.enabled:
+    - name: wsgi_cinder
+    - require:
+      - cinder_apache_conf_file
+
+{%- endif %}
+
+cinder_api_service_dead:
+  service.dead:
+    - name: cinder-api
+    - enable: False
+    - require:
+      - pkg: cinder_controller_packages
 
 cinder_api_service:
   service.running:
@@ -174,6 +209,7 @@
   {%- endif %}
   - require:
     - pkg: cinder_controller_packages
+    - service: cinder_api_service_dead
   - watch:
     {%- if controller.message_queue.get('ssl',{}).get('enabled', False) %}
     - file: rabbitmq_ca_cinder_controller
@@ -183,7 +219,8 @@
     {%- endif %}
     - file: /etc/cinder/cinder.conf
     - file: /etc/cinder/api-paste.ini
-    - file: /etc/apache2/conf-available/cinder-wsgi.conf
+    - cinder_apache_conf_file
+    - apache_enable_cinder_wsgi
 
 {%- else %}
 
diff --git a/metadata.yml b/metadata.yml
index 3a8709d..89be788 100644
--- a/metadata.yml
+++ b/metadata.yml
@@ -4,3 +4,5 @@
 dependencies:
   - name: keystone
     source: "https://github.com/salt-formulas/salt-formula-keystone"
+  - name: apache
+    source: "https://github.com/salt-formulas/salt-formula-apache"
diff --git a/tests/pillar/ceph_single.sls b/tests/pillar/ceph_single.sls
index 5c029b6..bc15f19 100644
--- a/tests/pillar/ceph_single.sls
+++ b/tests/pillar/ceph_single.sls
@@ -92,3 +92,45 @@
       name: cinder
       user: cinder
       password: pwd
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/control_cluster.sls b/tests/pillar/control_cluster.sls
index 8877772..a9628fb 100644
--- a/tests/pillar/control_cluster.sls
+++ b/tests/pillar/control_cluster.sls
@@ -63,3 +63,45 @@
     policy:
       'volume:delete': 'rule:admin_or_owner'
       'volume:extend':
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/control_cluster_intree_wsgi.sls b/tests/pillar/control_cluster_intree_wsgi.sls
new file mode 100644
index 0000000..4c078d4
--- /dev/null
+++ b/tests/pillar/control_cluster_intree_wsgi.sls
@@ -0,0 +1,80 @@
+cinder:
+  controller:
+    enabled: true
+    version: liberty
+    osapi:
+      host: 127.0.0.1
+    database:
+      engine: mysql
+      host: 127.0.0.1
+      port: 3306
+      name: cinder
+      user: cinder
+      password: password
+    identity:
+      engine: keystone
+      region: RegionOne
+      host: 127.0.0.1
+      port: 35357
+      tenant: service
+      user: cinder
+      password: password
+      endpoint_type: internalURL
+    glance:
+      host: 127.0.0.1
+      port: 9292
+    logging:
+      log_appender: false
+      log_handlers:
+        watchedfile:
+          enabled: true
+        fluentd:
+          enabled: false
+        ossyslog:
+          enabled: false
+    message_queue:
+      engine: rabbitmq
+      members:
+      - host: 127.0.0.1
+      - host: 127.0.1.1
+      - host: 127.0.2.1
+      user: openstack
+      password: password
+      virtual_host: '/openstack'
+    cache:
+      engine: memcached
+      members:
+      - host: 127.0.0.1
+        port: 11211
+      - host: 127.0.0.1
+        port: 11211
+      - host: 127.0.0.1
+        port: 11211
+    storage:
+      engine: storwize
+      host: 192.168.0.1
+      port: 22
+      user: username
+      password: pass
+
+    audit:
+      filter_factory: 'keystonemiddleware.audit:filter_factory'
+      map_file: '/etc/pycadf/cinder_api_audit_map.conf'
+    policy:
+      'volume:delete': 'rule:admin_or_owner'
+      'volume:extend':
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
diff --git a/tests/pillar/control_single.sls b/tests/pillar/control_single.sls
index 8f3996e..24784bc 100644
--- a/tests/pillar/control_single.sls
+++ b/tests/pillar/control_single.sls
@@ -48,3 +48,45 @@
     policy:
       'volume:delete': 'rule:admin_or_owner'
       'volume:extend':
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/gpfs_single.sls b/tests/pillar/gpfs_single.sls
index f8e07ed..4491ac6 100644
--- a/tests/pillar/gpfs_single.sls
+++ b/tests/pillar/gpfs_single.sls
@@ -98,3 +98,45 @@
       name: cinder
       user: cinder
       password: pwd
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/hp3par_single.sls b/tests/pillar/hp3par_single.sls
index ef96fc6..02ef0c3 100644
--- a/tests/pillar/hp3par_single.sls
+++ b/tests/pillar/hp3par_single.sls
@@ -108,3 +108,45 @@
       name: cinder
       user: cinder
       password: pwd
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/lefthand_single.sls b/tests/pillar/lefthand_single.sls
index a21446f..024f2bc 100644
--- a/tests/pillar/lefthand_single.sls
+++ b/tests/pillar/lefthand_single.sls
@@ -98,3 +98,45 @@
       name: cinder
       user: cinder
       password: pwd
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/nfs.sls b/tests/pillar/nfs.sls
index b771446..c0edf25 100644
--- a/tests/pillar/nfs.sls
+++ b/tests/pillar/nfs.sls
@@ -67,3 +67,45 @@
         engine: nfs
         type_name: nfs-driver
         volume_group: cinder-volume
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/solidfire_single.sls b/tests/pillar/solidfire_single.sls
index 292782a..9d2c180 100644
--- a/tests/pillar/solidfire_single.sls
+++ b/tests/pillar/solidfire_single.sls
@@ -99,3 +99,45 @@
       name: cinder
       user: cinder
       password: pwd
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/storwize_single.sls b/tests/pillar/storwize_single.sls
index 082514b..f1b6c49 100644
--- a/tests/pillar/storwize_single.sls
+++ b/tests/pillar/storwize_single.sls
@@ -148,3 +148,45 @@
       name: cinder
       user: cinder
       password: pwd
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/volume_single.sls b/tests/pillar/volume_single.sls
index 5840955..d243510 100644
--- a/tests/pillar/volume_single.sls
+++ b/tests/pillar/volume_single.sls
@@ -45,3 +45,45 @@
       port: 22
       user: username
       password: pass
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/volume_single_barbican.sls b/tests/pillar/volume_single_barbican.sls
index aec8b59..e1da081 100644
--- a/tests/pillar/volume_single_barbican.sls
+++ b/tests/pillar/volume_single_barbican.sls
@@ -47,3 +47,45 @@
       port: 22
       user: username
       password: pass
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'
diff --git a/tests/pillar/vsp_single.sls b/tests/pillar/vsp_single.sls
index 0eb85de..8e5ab5c 100644
--- a/tests/pillar/vsp_single.sls
+++ b/tests/pillar/vsp_single.sls
@@ -99,3 +99,45 @@
       name: cinder
       user: cinder
       password: pwd
+apache:
+  server:
+    enabled: true
+    default_mpm: event
+    mpm:
+      prefork:
+        enabled: true
+        servers:
+          start: 5
+          spare:
+            min: 2
+            max: 10
+        max_requests: 0
+        max_clients: 20
+        limit: 20
+    site:
+      cinder:
+        enabled: false
+        available: true
+        type: wsgi
+        name: cinder
+        wsgi:
+          daemon_process: cinder-wsgi
+          processes: 5
+          threads: 1
+          user: cinder
+          group: cinder
+          display_name: '%{GROUP}'
+          script_alias: '/ /usr/bin/cinder-wsgi'
+          application_group: '%{GLOBAL}'
+          authorization: 'On'
+        host:
+          address: 127.0.0.1
+          name: 127.0.0.1
+          port: 8776
+        log:
+          custom:
+            format: >-
+              %v:%p %{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+          error:
+            enabled: true
+            format: '%M'