Setting up glance disk and container formats

- container_formats parameter support has been added
- disk_formats parameter support has been added

Change-Id: I0f64926f760b2d8926af15f5548d5f53f5b55e91
Prod-related: PROD-32324
diff --git a/README.rst b/README.rst
index 1bc559d..07bd013 100644
--- a/README.rst
+++ b/README.rst
@@ -18,6 +18,20 @@
         workers: 8
         glance_uid: 302
         glance_gid: 302
+        container_formats:
+          ami:
+            enabled: True
+          ari:
+            enabled: False
+          docker:
+            enabled: True
+        disk_formats:
+          vhd:
+            enabled: False
+          raw:
+            enabled: True
+          qcow2:
+            enabled: True
         policy:
           publicize_image:
             - "role:admin"
diff --git a/glance/files/mitaka/glance-api.conf.Debian b/glance/files/mitaka/glance-api.conf.Debian
index af1223b..3069223 100644
--- a/glance/files/mitaka/glance-api.conf.Debian
+++ b/glance/files/mitaka/glance-api.conf.Debian
@@ -1257,10 +1257,29 @@
 # value)
 # Deprecated group/name - [DEFAULT]/container_formats
 #container_formats = ami,ari,aki,bare,ovf,ova,docker
+{%- if server.container_formats is defined %}
+  {%- set cformats = [] %}
+  {%- for cname, cobj in server.container_formats.iteritems() %}
+    {%- if cobj.get('enabled', False) %}
+      {%- do cformats.append(cname) %}
+    {%- endif %}
+  {%- endfor %}
+container_formats = {{ cformats|join(',') }}
+{% endif %}
 
 # Supported values for the 'disk_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/disk_formats
 #disk_formats = ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso
+{%- if server.disk_formats is defined %}
+  {%- set dformats = [] %}
+  {%- for dname, dobj in server.disk_formats.iteritems() %}
+    {%- if dobj.get('enabled', False) %}
+      {%- do dformats.append(dname) %}
+    {%- endif %}
+  {%- endfor %}
+
+disk_formats = {{ dformats|join(',') }}
+{% endif %}
 
 [keystone_authtoken]
 revocation_cache_time = 10
diff --git a/glance/files/newton/glance-api.conf.Debian b/glance/files/newton/glance-api.conf.Debian
index 89169b2..f1d1680 100644
--- a/glance/files/newton/glance-api.conf.Debian
+++ b/glance/files/newton/glance-api.conf.Debian
@@ -3340,10 +3340,29 @@
 # Supported values for the 'container_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/container_formats
 #container_formats = ami,ari,aki,bare,ovf,ova,docker
+{%- if server.container_formats is defined %}
+  {%- set cformats = [] %}
+  {%- for cname, cobj in server.container_formats.iteritems() %}
+    {%- if cobj.get('enabled', False) %}
+      {%- do cformats.append(cname) %}
+    {%- endif %}
+  {%- endfor %}
+container_formats = {{ cformats|join(',') }}
+{% endif %}
 
 # Supported values for the 'disk_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/disk_formats
 #disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso
+{%- if server.disk_formats is defined %}
+  {%- set dformats = [] %}
+  {%- for dname, dobj in server.disk_formats.iteritems() %}
+    {%- if dobj.get('enabled', False) %}
+      {%- do dformats.append(dname) %}
+    {%- endif %}
+  {%- endfor %}
+
+disk_formats = {{ dformats|join(',') }}
+{% endif %}
 
 
 [keystone_authtoken]
diff --git a/glance/files/ocata/glance-api.conf.Debian b/glance/files/ocata/glance-api.conf.Debian
index 0944a04..eb3a557 100644
--- a/glance/files/ocata/glance-api.conf.Debian
+++ b/glance/files/ocata/glance-api.conf.Debian
@@ -3412,10 +3412,30 @@
 # Supported values for the 'container_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/container_formats
 #container_formats = ami,ari,aki,bare,ovf,ova,docker
+{%- if server.container_formats is defined %}
+  {%- set cformats = [] %}
+  {%- for cname, cobj in server.container_formats.iteritems() %}
+    {%- if cobj.get('enabled', False) %}
+      {%- do cformats.append(cname) %}
+    {%- endif %}
+  {%- endfor %}
+container_formats = {{ cformats|join(',') }}
+{% endif %}
+
 
 # Supported values for the 'disk_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/disk_formats
 #disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso
+{%- if server.disk_formats is defined %}
+  {%- set dformats = [] %}
+  {%- for dname, dobj in server.disk_formats.iteritems() %}
+    {%- if dobj.get('enabled', False) %}
+      {%- do dformats.append(dname) %}
+    {%- endif %}
+  {%- endfor %}
+
+disk_formats = {{ dformats|join(',') }}
+{% endif %}
 
 
 [keystone_authtoken]
diff --git a/glance/files/pike/glance-api.conf.Debian b/glance/files/pike/glance-api.conf.Debian
index 6b5de03..2a7b119 100644
--- a/glance/files/pike/glance-api.conf.Debian
+++ b/glance/files/pike/glance-api.conf.Debian
@@ -3248,10 +3248,29 @@
 # Supported values for the 'container_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/container_formats
 #container_formats = ami,ari,aki,bare,ovf,ova,docker
+{%- if server.container_formats is defined %}
+  {%- set cformats = [] %}
+  {%- for cname, cobj in server.container_formats.iteritems() %}
+    {%- if cobj.get('enabled', False) %}
+      {%- do cformats.append(cname) %}
+    {%- endif %}
+  {%- endfor %}
+container_formats = {{ cformats|join(',') }}
+{% endif %}
 
 # Supported values for the 'disk_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/disk_formats
 #disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso
+{%- if server.disk_formats is defined %}
+  {%- set dformats = [] %}
+  {%- for dname, dobj in server.disk_formats.iteritems() %}
+    {%- if dobj.get('enabled', False) %}
+      {%- do dformats.append(dname) %}
+    {%- endif %}
+  {%- endfor %}
+
+disk_formats = {{ dformats|join(',') }}
+{% endif %}
 
 
 [keystone_authtoken]
diff --git a/glance/files/queens/glance-api.conf.Debian b/glance/files/queens/glance-api.conf.Debian
index 57f76b1..1ff03d1 100644
--- a/glance/files/queens/glance-api.conf.Debian
+++ b/glance/files/queens/glance-api.conf.Debian
@@ -1755,11 +1755,29 @@
 # value)
 # Deprecated group/name - [DEFAULT]/container_formats
 #container_formats = ami,ari,aki,bare,ovf,ova,docker
+{%- if server.container_formats is defined %}
+  {%- set cformats = [] %}
+  {%- for cname, cobj in server.container_formats.iteritems() %}
+    {%- if cobj.get('enabled', False) %}
+      {%- do cformats.append(cname) %}
+    {%- endif %}
+  {%- endfor %}
+container_formats = {{ cformats|join(',') }}
+{% endif %}
 
 # Supported values for the 'disk_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/disk_formats
 #disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso,ploop,root-tar
+{%- if server.disk_formats is defined %}
+  {%- set dformats = [] %}
+  {%- for dname, dobj in server.disk_formats.iteritems() %}
+    {%- if dobj.get('enabled', False) %}
+      {%- do dformats.append(dname) %}
+    {%- endif %}
+  {%- endfor %}
 
+disk_formats = {{ dformats|join(',') }}
+{% endif %}
 
 [paste_deploy]
 
diff --git a/glance/files/rocky/glance-api.conf.Debian b/glance/files/rocky/glance-api.conf.Debian
index dc83a0d..67d90c7 100644
--- a/glance/files/rocky/glance-api.conf.Debian
+++ b/glance/files/rocky/glance-api.conf.Debian
@@ -2934,10 +2934,29 @@
 # Supported values for the 'container_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/container_formats
 #container_formats = ami,ari,aki,bare,ovf,ova,docker
+{%- if server.container_formats is defined %}
+  {%- set cformats = [] %}
+  {%- for cname, cobj in server.container_formats.iteritems() %}
+    {%- if cobj.get('enabled', False) %}
+      {%- do cformats.append(cname) %}
+    {%- endif %}
+  {%- endfor %}
+container_formats = {{ cformats|join(',') }}
+{% endif %}
 
 # Supported values for the 'disk_format' image attribute (list value)
 # Deprecated group/name - [DEFAULT]/disk_formats
 #disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso,ploop
+{%- if server.disk_formats is defined %}
+  {%- set dformats = [] %}
+  {%- for dname, dobj in server.disk_formats.iteritems() %}
+    {%- if dobj.get('enabled', False) %}
+      {%- do dformats.append(dname) %}
+    {%- endif %}
+  {%- endfor %}
+
+disk_formats = {{ dformats|join(',') }}
+{% endif %}
 
 
 [keystone_authtoken]
diff --git a/tests/pillar/cluster.sls b/tests/pillar/cluster.sls
index b8b0db3..8eaea51 100644
--- a/tests/pillar/cluster.sls
+++ b/tests/pillar/cluster.sls
@@ -3,6 +3,20 @@
     enabled: true
     version: liberty
     workers: 8
+    container_formats:
+      ami:
+        enabled: True
+      ari:
+        enabled: False
+      docker:
+        enabled: True
+    disk_formats:
+      vhd:
+        enabled: False
+      raw:
+        enabled: True
+      qcow2:
+        enabled: True
     database:
       engine: mysql
       host: 127.0.0.1