Add basic kitchen tests setup
Added tests for designate salt formulas for
deployment without started services and without backend.
Change-Id: I4bad0fb4a00761e3121c073c266a733c9bb47f25
diff --git a/.kitchen.yml b/.kitchen.yml
new file mode 100644
index 0000000..04266e2
--- /dev/null
+++ b/.kitchen.yml
@@ -0,0 +1,61 @@
+---
+driver:
+ name: docker
+ hostname: designate.ci.local
+ use_sudo: true
+
+provisioner:
+ name: salt_solo
+ salt_install: bootstrap
+ salt_bootstrap_url: https://bootstrap.saltstack.com
+ salt_version: latest
+ require_chef: false
+ log_level: error
+ formula: designate
+ grains:
+ noservices: True
+ dependencies:
+ - name: linux
+ repo: git
+ source: https://github.com/salt-formulas/salt-formula-linux
+ - name: mysql
+ repo: git
+ source: https://github.com/salt-formulas/salt-formula-mysql
+ - name: rabbitmq
+ repo: git
+ source: https://github.com/salt-formulas/salt-formula-rabbitmq
+ state_top:
+ base:
+ "*":
+ - linux
+ - mysql
+#TODO: use rabbitmq when https://mirantis.jira.com/browse/PROD-11712 is fixed
+# - rabbitmq
+ - designate
+ pillars:
+ top.sls:
+ base:
+ "*":
+ - linux_repo_openstack
+ - designate
+ pillars-from-files:
+ linux_repo_openstack.sls: tests/pillar/repo_mcp_openstack.sls
+
+verifier:
+ name: inspec
+ sudo: true
+
+platforms:
+ - name: <%= ENV['PLATFORM'] || 'ubuntu-xenial' %>
+ driver_config:
+ image: <%= ENV['PLATFORM'] || 'trevorj/salty-whales:xenial' %>
+ platform: ubuntu
+
+suites:
+
+ - name: designate_without_backend
+ provisioner:
+ pillars-from-files:
+ designate.sls: tests/pillar/designate_ocata.sls
+
+# vim: ft=yaml sw=2 ts=2 sts=2 tw=125
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..03a7f7b
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,38 @@
+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: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/designate/server.sls b/designate/server.sls
index 934757a..246887b 100644
--- a/designate/server.sls
+++ b/designate/server.sls
@@ -41,6 +41,7 @@
- require:
- pkg: designate_server_packages
+{%- if not grains.get('noservices', False) %}
designate_syncdb:
cmd.run:
- name: designate-manage database sync
@@ -62,6 +63,7 @@
- cmd: designate_pool_sync
- watch:
- file: /etc/designate/designate.conf
+{%- endif %}
{%- if server.version not in ['liberty', 'juno', 'kilo'] and server.pools is defined %}
# Since Mitaka it is recommended to use pools.yaml for pools configuration
@@ -72,6 +74,7 @@
- require:
- pkg: designate_server_packages
+{%- if not grains.get('noservices', False) %}
designate_pool_update:
cmd.run:
- name: designate-manage pool update
@@ -80,3 +83,4 @@
- service: designate_server_services
{%- endif %}
{%- endif %}
+{%- endif %}
diff --git a/tests/pillar/designate_ocata.sls b/tests/pillar/designate_ocata.sls
index 4022cdb..eee747c 100644
--- a/tests/pillar/designate_ocata.sls
+++ b/tests/pillar/designate_ocata.sls
@@ -1,14 +1,39 @@
designate:
+ _support:
+ sensu:
+ enabled: false
server:
enabled: true
+ local_bind: true
region: RegionOne
domain_id: 5186883b-91fb-4891-bd49-e6769234a8fc
version: ocata
+ bind:
+ api:
+ address: 127.0.0.1
+ database:
+ engine: mysql
+ host: 127.0.0.1
+ port: 3306
+ name:
+ main_database: designate
+ pool_manager: designate_pool_manager
+ user: designate
+ password: passw0rd
+ identity:
+ engine: keystone
+ host: 127.0.0.1
+ port: 35357
+ tenant: service
+ user: designate
+ password: passw0rd
message_queue:
+ engine: rabbitmq
members:
- - host: 127.0.0.1
- - host: 127.0.1.1
- - host: 127.0.2.1
+ - host: 127.0.0.1
+ user: openstack
+ password: password
+ virtual_host: '/openstack'
pools:
default:
description: 'default pool'
@@ -41,3 +66,75 @@
also_notifies:
- host: 127.0.3.1
port: 53
+mysql:
+ client:
+ enabled: true
+ version: '5.7'
+ admin:
+ host: localhost
+ port: 3306
+ user: admin
+ password: password
+ encoding: utf8
+ server:
+ enabled: true
+ version: "5.7"
+ force_encoding: utf8
+ bind:
+ address: 0.0.0.0
+ port: 3306
+ protocol: tcp
+ database:
+ designate:
+ encoding: utf8
+ users:
+ - host: '%'
+ name: designate
+ password: passw0rd
+ rights: all
+ - host: 127.0.0.1
+ name: designate
+ password: passw0rd
+ rights: all
+ designate_pool_manager:
+ encoding: utf8
+ users:
+ - host: '%'
+ name: designate
+ password: passw0rd
+ rights: all
+ - host: 127.0.0.1
+ name: designate
+ password: passw0rd
+ rights: all
+# On xenial rabbitmq fails to start inside docker on MK CI
+# rabbitmq:
+# server:
+# enabled: true
+# bind:
+# address: 0.0.0.0
+# port: 5672
+# secret_key: rabbit_master_cookie
+# admin:
+# name: adminuser
+# password: pwd
+# host:
+# '/':
+# enabled: true
+# user: guest
+# password: guest
+# policies:
+# - name: HA
+# pattern: '^(?!amq\.).*'
+# definition: '{"ha-mode": "all", "message-ttl": 120000}'
+# '/openstack':
+# enabled: true
+# user: openstack
+# password: password
+# policies:
+# - name: HA
+# pattern: '^(?!amq\.).*'
+# definition: '{"ha-mode": "all", "message-ttl": 120000}'
+# memory:
+# vm_high_watermark: 0.4
+# plugins: ['']
diff --git a/tests/pillar/repo_mcp_openstack.sls b/tests/pillar/repo_mcp_openstack.sls
new file mode 100644
index 0000000..7d73591
--- /dev/null
+++ b/tests/pillar/repo_mcp_openstack.sls
@@ -0,0 +1,52 @@
+linux:
+ system:
+ enabled: true
+ repo:
+ mirantis_openstack:
+ 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: 1100
+ 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: 1100
+ 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: 1100
+ 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: 1100
+ 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: 1100
+ package: '*'
+ mk_openstack:
+ source: "deb [arch=amd64] http://apt-mk.mirantis.com/{{ grains.get('oscodename') }}/ nightly ocata"
+ architectures: amd64
+ key_url: "http://apt-mk.mirantis.com/public.gpg"
+ pin:
+ - pin: 'release a=nightly'
+ priority: 1100
+ package: '*'