Merge pull request #10 from Martin819/master

Added Kitchen tests and Travis
diff --git a/.kitchen.yml b/.kitchen.yml
new file mode 100644
index 0000000..2afc53c
--- /dev/null
+++ b/.kitchen.yml
@@ -0,0 +1,57 @@
+---
+driver:
+  name: docker
+  hostname: etcd.ci.local
+  use_sudo: false
+
+provisioner:
+  name: salt_solo
+  salt_install: bootstrap
+  salt_bootstrap_url: https://bootstrap.saltstack.com
+  salt_version: latest
+  require_chef: false
+  log_level: error
+  formula: etcd
+  grains:
+    noservices: True
+  state_top:
+    base:
+      "*":
+        - etcd
+  pillars:
+    top.sls:
+      base:
+        "*":
+          - etcd
+  dependencies:
+    - name: linux
+      repo: git
+      source: https://github.com/salt-formulas/salt-formula-linux.git
+
+verifier:
+  name: inspec
+  sudo: true
+
+platforms:
+  - name: <%=ENV['PLATFORM'] || 'ubuntu-xenial'%>
+    driver_config:
+      image: <%=ENV['PLATFORM'] || 'trevorj/salty-whales:xenial'%>
+      platform: ubuntu
+
+suites:
+
+  - name: cluster
+    provisioner:
+      pillars-from-files:
+        etcd.sls: tests/pillar/cluster.sls
+
+  - name: proxy
+    provisioner:
+      pillars-from-files:
+        etcd.sls: tests/pillar/proxy.sls
+
+  - name: single
+    provisioner:
+      pillars-from-files:
+        etcd.sls: tests/pillar/single.sls
+# vim: ft=yaml sw=2 ts=2 sts=2 tw=125
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..4f34af2
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,40 @@
+sudo: required
+services:
+  - docker
+
+install:
+  - pip install PyYAML
+  - pip install virtualenv
+  - |
+    test -e Gemfile || cat <<EOF > Gemfile
+    source 'https://rubygems.org'
+    gem 'rake'
+    gem 'test-kitchen'
+    gem 'kitchen-docker'
+    gem 'kitchen-inspec'
+    gem 'inspec'
+    gem 'kitchen-salt', :git => 'https://github.com/salt-formulas/kitchen-salt.git'
+  - bundle install
+
+env:
+    - PLATFORM=trevorj/salty-whales:trusty
+    - PLATFORM=trevorj/salty-whales:xenial
+
+
+before_script:
+  - set -o pipefail
+  - make test | tail
+
+script:
+  - test ! -e .kitchen.yml || bundle exec kitchen test -t tests/integration
+
+notifications:
+  webhooks:
+    urls:
+      - https://webhooks.gitter.im/e/6123573504759330786b
+    on_success: change  # options: [always|never|change] default: always
+    on_failure: never  # options: [always|never|change] default: always
+    on_start: never     # options: [always|never|change] default: always
+    on_cancel: never    # options: [always|never|change] default: always
+    on_error: never    # options: [always|never|change] default: always
+  email: false
diff --git a/etcd/map.jinja b/etcd/map.jinja
index cd2aa98..ead5617 100644
--- a/etcd/map.jinja
+++ b/etcd/map.jinja
@@ -7,4 +7,13 @@
         'pkgs': [],
         'services': []
     },
-}, merge=salt['pillar.get']('etcd:server')) %}
+}, merge=salt['grains.filter_by']({
+    'trusty': {
+        'pkgs': ['etcd'],
+        'services': ['etcd']
+    },
+    'xenial': {
+        'pkgs': ['etcd', 'python-etcd'],
+        'services': ['etcd']
+    },
+}, grain='oscodename', merge=salt['pillar.get']('etcd:server'))) %}
diff --git a/etcd/server/service.sls b/etcd/server/service.sls
index 72c39ea..9a9093c 100644
--- a/etcd/server/service.sls
+++ b/etcd/server/service.sls
@@ -1,6 +1,19 @@
 {%- from "etcd/map.jinja" import server with context %}
+{% from "linux/map.jinja" import system with context %}
+
 {%- if server.enabled %}
 
+{%- if grains.get('oscodename', 'trusty') %}
+
+linux_packages:
+  pkg.installed:
+    - pkgs: {{ system.pkgs }}
+
+include:
+  - linux.system.repo
+
+{%- endif %}
+
 {%- if server.get('source', {}).get('engine', 'pkg') == 'pkg' %}
 
 etcd_packages:
@@ -9,8 +22,10 @@
 {%- if server.get('engine', 'systemd') %}
   - require:
     - file: /etc/default/etcd
+  {% if not grains.get('noservices', False) %}
   - watch_in:
     - service: etcd
+  {% endif %}
 {%- endif %}
 
 
@@ -58,8 +73,10 @@
     - group: root
     - require:
       - dockerng: copy-etcd-binaries
+    {% if not grains.get('noservices', False) %}
     - watch_in:
       - service: etcd
+    {% endif %}
 
 {% endfor %}
 
@@ -107,8 +124,10 @@
 {%- else %}
         initial_cluster_state: existing
 {%- endif %}
+    {% if not grains.get('noservices', False) %}
     - watch_in:
       - service: etcd
+    {% endif %}
 
 /var/lib/etcd/:
   file.directory:
@@ -124,11 +143,15 @@
     - require:
       - file: /var/lib/etcd/
 
+{% if not grains.get('noservices', False) %}
+
 etcd:
   service.running:
   - enable: True
   - name: {{ server.services }}
 
+{% endif %}
+
 {%- endif %}
 
 {%- endif %}
diff --git a/metadata.yml b/metadata.yml
index 43c307e..9a1336b 100644
--- a/metadata.yml
+++ b/metadata.yml
@@ -1,3 +1,6 @@
 name: "etcd"
 version: "0.1"
-source: "https://github.com/tcpcloud/salt-formula-etcd"
+source: "https://github.com/salt-formulas/salt-formula-etcd"
+dependencies:
+- name: linux
+  source: "https://github.com/salt-formulas/salt-formula-linux"
diff --git a/tests/pillar/cluster.sls b/tests/pillar/cluster.sls
index a91825f..cd421d1 100644
--- a/tests/pillar/cluster.sls
+++ b/tests/pillar/cluster.sls
@@ -15,3 +15,12 @@
     - host: 10.0.175.103
       name: etcd03
       port: 4001
+linux:
+  system:
+    name: hostname
+    enabled: true
+    repo:
+      docker:
+        source: 'deb http://ppa.launchpad.net/cloud-green/trusty-backports/ubuntu trusty main'
+        key_id: E6396E0A9EA00B88BF1D40C434EDB5B7EC1764A6
+        key_server: hkp://p80.pool.sks-keyservers.net:80
diff --git a/tests/pillar/proxy.sls b/tests/pillar/proxy.sls
index 5313ab7..6286e27 100644
--- a/tests/pillar/proxy.sls
+++ b/tests/pillar/proxy.sls
@@ -12,3 +12,12 @@
       name: etcd02
     - host: 10.0.175.103
       name: etcd03
+linux:
+  system:
+    name: hostname
+    enabled: true
+    repo:
+      docker:
+        source: 'deb http://ppa.launchpad.net/cloud-green/trusty-backports/ubuntu trusty main'
+        key_id: E6396E0A9EA00B88BF1D40C434EDB5B7EC1764A6
+        key_server: hkp://p80.pool.sks-keyservers.net:80
diff --git a/tests/pillar/single.sls b/tests/pillar/single.sls
index 2f830cd..a7b3a7f 100644
--- a/tests/pillar/single.sls
+++ b/tests/pillar/single.sls
@@ -9,3 +9,12 @@
     - host: 10.0.175.101
       name: etcd01
       port: 4001
+linux:
+  system:
+    name: hostname
+    enabled: true
+    repo:
+      docker:
+        source: 'deb http://ppa.launchpad.net/cloud-green/trusty-backports/ubuntu trusty main'
+        key_id: E6396E0A9EA00B88BF1D40C434EDB5B7EC1764A6
+        key_server: hkp://p80.pool.sks-keyservers.net:80