Add ability to put dockerdata-nfs on root disk

Modify the heat template so that it becomes possible to
skip volume creation for dockerdata-nfs.
This feature can be toggled at will. It is useful for the cases
where /dockerdata-nfs needs to be fast, but there are no ssd volumes available.
Of course, large enough ephemeral disks are needed, around
60 gb.

Change-Id: I37e29e7cf7273d1d4a6e896ec017d9ef8177b1d0
Issue-ID: OOM-2042
Signed-off-by: Michal Zegan <m.zegan@samsung.com>
diff --git a/tools/cicdansible/group_vars/all.yml b/tools/cicdansible/group_vars/all.yml
index 581e7c4..f886b62 100644
--- a/tools/cicdansible/group_vars/all.yml
+++ b/tools/cicdansible/group_vars/all.yml
@@ -26,6 +26,9 @@
 installer_flavor_name: ""
 #Name of the image for instances.
 image_name: ""
+#Whether to use a volume for /dockerdata-nfs or to use ephemeral disk.
+#True by default, most openstack providers offer ssd volumes probably.
+use_volume_for_nfs: true
 #Cidr of private subnet where instances are connected.
 subnet_cidr: "10.1.0.0/24"
 #Start of dhcp allocation range for subnet.
diff --git a/tools/cicdansible/heat/installer.yaml b/tools/cicdansible/heat/installer.yaml
index 793386c..7b3f10c 100644
--- a/tools/cicdansible/heat/installer.yaml
+++ b/tools/cicdansible/heat/installer.yaml
@@ -90,6 +90,13 @@
     constraints:
       - range: { min: 1 }
         description: "must be a positive number"
+  use_volume_for_nfs:
+    type: boolean
+    label: "use volume for nfs storage"
+    description: "Indicates whether a cinder volume should be used for nfs storage or not. If not checked, the nfs would be stored in the root disk"
+conditions:
+  #Condition for nfs volume usage.
+  use_volume_for_nfs: { get_param: use_volume_for_nfs }
 resources:
   # Security group used to secure access to instances.
   secgroup:
@@ -200,12 +207,14 @@
   #Nfs storage volume for first node.
   nfs_storage:
     type: OS::Cinder::Volume
+    condition: use_volume_for_nfs
     properties:
       name: nfs_storage
       size: 50
   #Attachment of volume to first node.
   nfs_storage_attachment:
     type: OS::Cinder::VolumeAttachment
+    condition: use_volume_for_nfs
     properties:
       instance_uuid: { get_attr: [nodes, "resource.0"] }
       volume_id: { get_resource: nfs_storage }
@@ -292,8 +301,12 @@
   node0_volumes:
     type: OS::Heat::Value
     properties:
+      #Note that it returns an empty list if nfs volume is disabled.
       value:
-        - [{ get_resource: nfs_storage }, "/dockerdata-nfs"]
+        if:
+          - use_volume_for_nfs
+          - - [{ get_resource: nfs_storage }, "/dockerdata-nfs"]
+          - []
 #Output values
 outputs:
   installer_ip:
diff --git a/tools/cicdansible/roles/setup_openstack_infrastructure/tasks/deploy/heat.yml b/tools/cicdansible/roles/setup_openstack_infrastructure/tasks/deploy/heat.yml
index 2bfeda7..5f9bc4f 100644
--- a/tools/cicdansible/roles/setup_openstack_infrastructure/tasks/deploy/heat.yml
+++ b/tools/cicdansible/roles/setup_openstack_infrastructure/tasks/deploy/heat.yml
@@ -32,5 +32,6 @@
       node_ip: "{{ floating_ips_by_address[first_node_ip].id }}"
       infra_ip: "{{ floating_ips_by_address[infra_ip].id }}"
       installer_ip: "{{ floating_ips_by_address[installer_ip].id }}"
+      use_volume_for_nfs: "{{ use_volume_for_nfs }}"
     wait: true
   register: heat_stack