From e4c820c35ef3c27d3ea5183af1be51ed78a1d30b Mon Sep 17 00:00:00 2001
From: Maxime Guyot <Miouge1@users.noreply.github.com>
Date: Wed, 29 Apr 2020 18:08:25 +0200
Subject: [PATCH] Add molecule tests to containerd role (#6037)

---
 .../containerd/molecule/default/molecule.yml  | 31 +++++++++++++++++++
 .../containerd/molecule/default/playbook.yml  |  7 +++++
 .../containerd/molecule/default/prepare.yml   |  6 ++++
 .../molecule/default/tests/test_default.py    | 21 +++++++++++++
 .../containerd/tasks/crictl.yml               | 12 +++++--
 5 files changed, 74 insertions(+), 3 deletions(-)
 create mode 100644 roles/container-engine/containerd/molecule/default/molecule.yml
 create mode 100644 roles/container-engine/containerd/molecule/default/playbook.yml
 create mode 100644 roles/container-engine/containerd/molecule/default/prepare.yml
 create mode 100644 roles/container-engine/containerd/molecule/default/tests/test_default.py

diff --git a/roles/container-engine/containerd/molecule/default/molecule.yml b/roles/container-engine/containerd/molecule/default/molecule.yml
new file mode 100644
index 000000000..a6bb80e9c
--- /dev/null
+++ b/roles/container-engine/containerd/molecule/default/molecule.yml
@@ -0,0 +1,31 @@
+---
+driver:
+  name: vagrant
+  provider:
+    name: libvirt
+lint:
+  name: yamllint
+  options:
+    config-file: ../../../.yamllint
+platforms:
+  - name: ubuntu18
+    box: generic/ubuntu1804
+    cpus: 2
+    memory: 1024
+    groups:
+      - kube-master
+provisioner:
+  name: ansible
+  env:
+    ANSIBLE_ROLES_PATH: ../../../../
+  config_options:
+    defaults:
+      callback_whitelist: profile_tasks
+  lint:
+    name: ansible-lint
+    options:
+      c: ../../../.ansible-lint
+verifier:
+  name: testinfra
+  lint:
+    name: flake8
diff --git a/roles/container-engine/containerd/molecule/default/playbook.yml b/roles/container-engine/containerd/molecule/default/playbook.yml
new file mode 100644
index 000000000..b70dabf89
--- /dev/null
+++ b/roles/container-engine/containerd/molecule/default/playbook.yml
@@ -0,0 +1,7 @@
+---
+- name: Converge
+  hosts: all
+  become: true
+  roles:
+    - role: kubespray-defaults
+    - role: containerd
diff --git a/roles/container-engine/containerd/molecule/default/prepare.yml b/roles/container-engine/containerd/molecule/default/prepare.yml
new file mode 100644
index 000000000..1afc51a04
--- /dev/null
+++ b/roles/container-engine/containerd/molecule/default/prepare.yml
@@ -0,0 +1,6 @@
+---
+- name: Prepare
+  hosts: all
+  gather_facts: False
+  roles:
+    - role: bootstrap-os
diff --git a/roles/container-engine/containerd/molecule/default/tests/test_default.py b/roles/container-engine/containerd/molecule/default/tests/test_default.py
new file mode 100644
index 000000000..523408be6
--- /dev/null
+++ b/roles/container-engine/containerd/molecule/default/tests/test_default.py
@@ -0,0 +1,21 @@
+import os
+
+import testinfra.utils.ansible_runner
+
+testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
+    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
+
+
+def test_service(host):
+    svc = host.service("containerd")
+    assert svc.is_running
+    assert svc.is_enabled
+
+
+def test_run(host):
+    crictl = "/usr/local/bin/crictl"
+    path = "unix:///var/run/containerd/containerd.sock"
+    with host.sudo():
+        cmd = host.command(crictl + " --runtime-endpoint " + path + " version")
+    assert cmd.rc == 0
+    assert "RuntimeName:  containerd" in cmd.stdout
diff --git a/roles/container-engine/containerd/tasks/crictl.yml b/roles/container-engine/containerd/tasks/crictl.yml
index 60a9c91aa..0e0459508 100644
--- a/roles/container-engine/containerd/tasks/crictl.yml
+++ b/roles/container-engine/containerd/tasks/crictl.yml
@@ -21,7 +21,13 @@
     group: no
   delegate_to: "{{ inventory_hostname }}"
 
+- name: Get crictl completion
+  shell: "{{ bin_dir }}/crictl completion"
+  changed_when: False
+  register: cri_completion
+
 - name: Install crictl completion
-  shell: "{{ bin_dir }}/crictl completion >/etc/bash_completion.d/crictl"
-  ignore_errors: True
-  when: ansible_distribution in ["CentOS","RedHat", "Ubuntu", "Debian"]
+  copy:
+    dest: /etc/bash_completion.d/crictl
+    content: "{{ cri_completion.stdout }}"
+  become: True
\ No newline at end of file
-- 
GitLab