Molecule test for nfs role 02/83102/3
authorSamuli Silvius <s.silvius@partner.samsung.com>
Sat, 23 Mar 2019 12:09:41 +0000 (14:09 +0200)
committerSamuli Silvius <s.silvius@partner.samsung.com>
Mon, 1 Apr 2019 17:41:52 +0000 (20:41 +0300)
Issue-ID: OOM-1756

Change-Id: I2e1aef3296689c284a4b530e6a2022302c7b86f7
Signed-off-by: Samuli Silvius <s.silvius@partner.samsung.com>
ansible/roles/nfs/.yamllint [new file with mode: 0644]
ansible/roles/nfs/molecule/default/molecule.yml [new file with mode: 0644]
ansible/roles/nfs/molecule/default/playbook.yml [new file with mode: 0644]
ansible/roles/nfs/molecule/default/tests/test_default.py [new file with mode: 0644]
ansible/roles/nfs/molecule/default/tests/test_kubernetes-server.py [new file with mode: 0644]
ansible/roles/nfs/molecule/default/tests/test_nfs-server.py [new file with mode: 0644]
ansible/roles/nfs/templates/exports.j2

diff --git a/ansible/roles/nfs/.yamllint b/ansible/roles/nfs/.yamllint
new file mode 100644 (file)
index 0000000..ad0be76
--- /dev/null
@@ -0,0 +1,11 @@
+extends: default
+
+rules:
+  braces:
+    max-spaces-inside: 1
+    level: error
+  brackets:
+    max-spaces-inside: 1
+    level: error
+  line-length: disable
+  truthy: disable
diff --git a/ansible/roles/nfs/molecule/default/molecule.yml b/ansible/roles/nfs/molecule/default/molecule.yml
new file mode 100644 (file)
index 0000000..552f4bc
--- /dev/null
@@ -0,0 +1,44 @@
+---
+dependency:
+  name: galaxy
+driver:
+  name: docker
+lint:
+  name: yamllint
+platforms:
+  - name: kubernetes-node-1
+    image: molecule-${PREBUILD_PLATFORM_DISTRO:-centos7}:${PREBUILD_DISTRO_VERSION:-latest}
+    pre_build_image: true
+    privileged: true
+    command: ${MOLECULE_DOCKER_COMMAND:-""}
+    groups:
+      - kubernetes
+      - nfs-server
+    networks:
+      - name: nfs-net
+    volumes:
+      - /sys/fs/cgroup:/sys/fs/cgroup:ro
+      - ${HOME}/data:/dockerdata-nfs:rw
+
+  - name: kubernetes-node-2
+    image: molecule-${PREBUILD_PLATFORM_DISTRO:-centos7}:${PREBUILD_DISTRO_VERSION:-latest}
+    pre_build_image: true
+    privileged: true
+    command: ${MOLECULE_DOCKER_COMMAND:-""}
+    groups:
+      - kubernetes
+    networks:
+      - name: nfs-net
+    volumes:
+      - /sys/fs/cgroup:/sys/fs/cgroup:ro
+provisioner:
+  name: ansible
+  inventory:
+    links:
+      group_vars: ../../../../group_vars
+  lint:
+    name: ansible-lint
+verifier:
+  name: testinfra
+  lint:
+    name: flake8
diff --git a/ansible/roles/nfs/molecule/default/playbook.yml b/ansible/roles/nfs/molecule/default/playbook.yml
new file mode 100644 (file)
index 0000000..37aad5b
--- /dev/null
@@ -0,0 +1,5 @@
+---
+- name: Converge
+  hosts: all
+  roles:
+    - role: nfs
diff --git a/ansible/roles/nfs/molecule/default/tests/test_default.py b/ansible/roles/nfs/molecule/default/tests/test_default.py
new file mode 100644 (file)
index 0000000..4813989
--- /dev/null
@@ -0,0 +1,16 @@
+import os
+import pytest
+
+import testinfra.utils.ansible_runner
+
+testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
+    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
+
+
+@pytest.mark.parametrize('pkg', [
+  'nfs-utils'
+])
+def test_pkg(host, pkg):
+    package = host.package(pkg)
+
+    assert package.is_installed
diff --git a/ansible/roles/nfs/molecule/default/tests/test_kubernetes-server.py b/ansible/roles/nfs/molecule/default/tests/test_kubernetes-server.py
new file mode 100644 (file)
index 0000000..b702a73
--- /dev/null
@@ -0,0 +1,15 @@
+import os
+
+import testinfra.utils.ansible_runner
+
+testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
+    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('kubernetes-node-2')
+
+
+def test_nfs_mount(host):
+    mp = host.mount_point("/dockerdata-nfs")
+    assert mp.exists
+    assert mp.filesystem == "nfs"
+    assert mp.device == "kubernetes-node-1:/dockerdata-nfs"
+    assert host.file("/etc/fstab").\
+        contains("kubernetes-node-1:/dockerdata-nfs /dockerdata-nfs nfs")
diff --git a/ansible/roles/nfs/molecule/default/tests/test_nfs-server.py b/ansible/roles/nfs/molecule/default/tests/test_nfs-server.py
new file mode 100644 (file)
index 0000000..078c653
--- /dev/null
@@ -0,0 +1,25 @@
+import os
+import pytest
+
+import testinfra.utils.ansible_runner
+
+testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
+    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('nfs-server')
+
+
+@pytest.mark.parametrize('svc', [
+    'rpcbind',
+    'nfs-server'
+])
+def test_svc(host, svc):
+    service = host.service(svc)
+
+    assert service.is_running
+    assert service.is_enabled
+
+
+def test_exports(host):
+    f = host.file("/etc/exports")
+    assert f.exists
+    assert f.content_string == \
+        """/dockerdata-nfs  kubernetes-node-2(rw,sync,no_root_squash,no_subtree_check)"""  # noqa: E501
index c605d9b..465c9d2 100644 (file)
@@ -1,3 +1,3 @@
-{% for host in groups.kubernetes -%}
+{% for host in groups.kubernetes | difference(groups['nfs-server']) -%}
     {{ nfs_mount_path }}  {{ hostvars[host].ansible_host | default(hostvars[host].inventory_hostname) }}(rw,sync,no_root_squash,no_subtree_check)
 {% endfor %}