From 934a3c2651c5a786fe9d3940cee8af3a18e19ff8 Mon Sep 17 00:00:00 2001
From: Jesse Pretorius <jesse.pretorius@rackspace.co.uk>
Date: Wed, 29 Aug 2018 13:23:40 +0100
Subject: [PATCH] MNAIO: Default vm_use_snapshot is group_vars

Rather than have to default it in tasks all over the
place, we default it in group_vars. The default is to
enable the feature if file-backed VM's are used.

However, if there are no base images available, the
set_fact task disables it. If a user wishes to force
it not to be used, then an extra-var override is still
usable.

Change-Id: I5c916244a02a44da831d2a0fefd8e8aafae829b2
---
 multi-node-aio/playbooks/deploy-vms.yml     | 6 ++----
 multi-node-aio/playbooks/group_vars/all.yml | 3 +++
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/multi-node-aio/playbooks/deploy-vms.yml b/multi-node-aio/playbooks/deploy-vms.yml
index c1de1948..04ae039f 100644
--- a/multi-node-aio/playbooks/deploy-vms.yml
+++ b/multi-node-aio/playbooks/deploy-vms.yml
@@ -93,11 +93,9 @@
             patterns: '*-base.img'
           register: _base_images
 
-        - name: Set vm_use_snapshot if it's not defined
+        - name: Enable/disable vm_use_snapshot based on whether there are base image files
           set_fact:
             vm_use_snapshot: "{{ _base_images['matched'] > 0 }}"
-          when:
-            - vm_use_snapshot is not defined
 
         - name: Clean up base image files if they are not being used
           file:
@@ -132,7 +130,7 @@
         name: "{{ hostvars[item]['server_hostname'] }}"
         command: define
         xml: >-
-          {%- if (vm_use_snapshot | default(False)) | bool %}
+          {%- if vm_use_snapshot | bool %}
           {{ lookup('file', _virt_pools.pools.default.path | default('/data/images') ~ '/' ~ hostvars[item]['server_hostname'] ~ '.xml') }}
           {%- else %}
           {{ lookup('template', 'kvm/kvm-vm.xml.j2') }}
diff --git a/multi-node-aio/playbooks/group_vars/all.yml b/multi-node-aio/playbooks/group_vars/all.yml
index d30fda0f..9e2afcfb 100644
--- a/multi-node-aio/playbooks/group_vars/all.yml
+++ b/multi-node-aio/playbooks/group_vars/all.yml
@@ -35,6 +35,9 @@ ipxe_kernel_base_url: "http://boot.ipxe.org"
 # The timeout for the SSH check to the vm_servers
 vm_ssh_timeout: 1500
 
+# Whether to use snapshots (if they are available) for file-backed VM's
+vm_use_snapshot: "{{ default_vm_disk_mode == 'file' }}"
+
 # IP address, or domain name of the TFTP server
 tftp_server: "{{ hostvars[groups['pxe_hosts'][0]]['ansible_host'] | default(ansible_host) }}"
 # tftp_ssh_key: ''  # user defined ssh key, used to access the host