Add ability to choose OS version in tests

This commit adds possibility to run kitchen
tests on different Openstack versions. By default
ocata release will be tested.

Also, run_tests.sh fixed to not to check pillars
which don't contain cinder dict.

Change-Id: Ie1d6b9a3f8e8e0d26852a5d010f88abdb1d75f71
Related-Prod: OSCORE-451
diff --git a/.kitchen.yml b/.kitchen.yml
index 7284f4b..4a31b11 100644
--- a/.kitchen.yml
+++ b/.kitchen.yml
@@ -15,18 +15,32 @@
   grains:
     noservices: True
   dependencies:
+    - name: linux
+      repo: git
+      source: https://github.com/salt-formulas/salt-formula-linux
     - name: keystone
       repo: git
       source: https://github.com/salt-formulas/salt-formula-keystone
   state_top:
     base:
       "*":
+        - linux.system
         - cinder
   pillars:
     top.sls:
       base:
         "*":
+          - linux_repo_openstack
           - cinder
+          - release
+    release.sls:
+      cinder:
+        controller:
+          version: <%= ENV['OS_VERSION'] || 'ocata' %>
+        volume:
+          version: <%= ENV['OS_VERSION'] || 'ocata' %>
+  pillars-from-files:
+    linux_repo_openstack.sls: tests/pillar/repo_mcp_openstack_<%= ENV['OS_VERSION'] || 'ocata' %>.sls
 
 verifier:
   name: inspec
@@ -49,11 +63,21 @@
     provisioner:
       pillars-from-files:
         cinder.sls: tests/pillar/control_cluster.sls
+      pillars:
+        release.sls:
+          cinder:
+            volume:
+              enabled: false
 
   - name: control_single
     provisioner:
       pillars-from-files:
         cinder.sls: tests/pillar/control_single.sls
+      pillars:
+        release.sls:
+          cinder:
+            volume:
+              enabled: false
 
   - name: gpfs_single
     provisioner:
@@ -89,4 +113,5 @@
     provisioner:
       pillars-from-files:
         cinder.sls: tests/pillar/vsp_single.sls
+
 # vim: ft=yaml sw=2 ts=2 sts=2 tw=125
diff --git a/.travis.yml b/.travis.yml
index 77f72c9..9570c9b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,26 +17,26 @@
   - bundle install
 
 env:
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=ceph_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=ceph_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=control_cluster
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=control_cluster
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=control_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=control_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=gpfs_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=gpfs_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=hp3par_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=hp3par_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=lefthand_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=lefthand_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=solidfire_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=solidfire_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=storwize_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=storwize_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=volume_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=volume_single
-    - PLATFORM=trevorj/salty-whales:trusty SUITE=vsp_single
-    - PLATFORM=trevorj/salty-whales:xenial SUITE=vsp_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=ceph_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=ceph_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=control_cluster
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=control_cluster
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=control_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=control_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=gpfs_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=gpfs_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=hp3par_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=hp3par_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=lefthand_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=lefthand_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=solidfire_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=solidfire_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=storwize_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=storwize_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=volume_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=volume_single
+    - PLATFORM=trevorj/salty-whales:trusty OS_VERSION=mitaka SUITE=vsp_single
+    - PLATFORM=trevorj/salty-whales:xenial OS_VERSION=ocata SUITE=vsp_single
 
 before_script:
   - set -o pipefail
diff --git a/tests/pillar/repo_mcp_openstack_mitaka.sls b/tests/pillar/repo_mcp_openstack_mitaka.sls
new file mode 100644
index 0000000..ea24305
--- /dev/null
+++ b/tests/pillar/repo_mcp_openstack_mitaka.sls
@@ -0,0 +1,44 @@
+linux:
+  system:
+    enabled: true
+    repo:
+      mirantis_openstack_repo:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }} mitaka main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }}/archive-mcpmitaka.key"
+        pin:
+        - pin: 'release a=mitaka'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_hotfix:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }} mitaka-hotfix main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }}/archive-mcpmitaka.key"
+        pin:
+        - pin: 'release a=mitaka-hotfix'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_security:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }} mitaka-security main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }}/archive-mcpmitaka.key"
+        pin:
+        - pin: 'release a=mitaka-security'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_updates:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }} mitaka-updates main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }}/archive-mcpmitaka.key"
+        pin:
+        - pin: 'release a=mitaka-uptades'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_holdback:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }} mitaka-holdback main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/mitaka/{{ grains.get('oscodename') }}/archive-mcpmitaka.key"
+        pin:
+        - pin: 'release a=mitaka-holdback'
+          priority: 1050
+          package: '*'
diff --git a/tests/pillar/repo_mcp_openstack_newton.sls b/tests/pillar/repo_mcp_openstack_newton.sls
new file mode 100644
index 0000000..9504235
--- /dev/null
+++ b/tests/pillar/repo_mcp_openstack_newton.sls
@@ -0,0 +1,44 @@
+linux:
+  system:
+    enabled: true
+    repo:
+      mirantis_openstack_repo:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }} newton main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }}/archive-mcpnewton.key"
+        pin:
+        - pin: 'release a=newton'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_hotfix:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }} newton-hotfix main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }}/archive-mcpnewton.key"
+        pin:
+        - pin: 'release a=newton-hotfix'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_security:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }} newton-security main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }}/archive-mcpnewton.key"
+        pin:
+        - pin: 'release a=newton-security'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_updates:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }} newton-updates main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }}/archive-mcpnewton.key"
+        pin:
+        - pin: 'release a=newton-uptades'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_holdback:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }} newton-holdback main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/newton/{{ grains.get('oscodename') }}/archive-mcpnewton.key"
+        pin:
+        - pin: 'release a=newton-holdback'
+          priority: 1050
+          package: '*'
diff --git a/tests/pillar/repo_mcp_openstack_ocata.sls b/tests/pillar/repo_mcp_openstack_ocata.sls
new file mode 100644
index 0000000..e601208
--- /dev/null
+++ b/tests/pillar/repo_mcp_openstack_ocata.sls
@@ -0,0 +1,44 @@
+linux:
+  system:
+    enabled: true
+    repo:
+      mirantis_openstack_repo:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }} ocata main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }}/archive-mcpocata.key"
+        pin:
+        - pin: 'release a=ocata'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_hotfix:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }} ocata-hotfix main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }}/archive-mcpocata.key"
+        pin:
+        - pin: 'release a=ocata-hotfix'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_security:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }} ocata-security main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }}/archive-mcpocata.key"
+        pin:
+        - pin: 'release a=ocata-security'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_updates:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }} ocata-updates main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }}/archive-mcpocata.key"
+        pin:
+        - pin: 'release a=ocata-uptades'
+          priority: 1050
+          package: '*'
+      mirantis_openstack_holdback:
+        source: "deb http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }} ocata-holdback main"
+        architectures: amd64
+        key_url: "http://mirror.fuel-infra.org/mcp-repos/ocata/{{ grains.get('oscodename') }}/archive-mcpocata.key"
+        pin:
+        - pin: 'release a=ocata-holdback'
+          priority: 1050
+          package: '*'
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 6710a50..688643f 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -126,6 +126,7 @@
 
 run() {
     for pillar in ${PILLARDIR}/*.sls; do
+        grep ${FORMULA_NAME}: ${pillar} &>/dev/null || continue
         state_name=$(basename ${pillar%.sls})
         salt_run --id=${state_name} state.show_sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
     done