From f1231bb97d1701da61741d3477f80ee20d61e5e5 Mon Sep 17 00:00:00 2001
From: Pasquale Toscano <pasqualetoscano90@gmail.com>
Date: Tue, 1 Dec 2020 08:34:49 +0100
Subject: [PATCH] Add molecule for Kata Containers with Containerd (#6905)

---
 .../molecule/default/converge.yml             | 10 +++++
 .../molecule/default/molecule.yml             | 44 +++++++++++++++++++
 .../molecule/default/prepare.yml              |  6 +++
 .../molecule/default/tests/test_default.py    | 30 +++++++++++++
 4 files changed, 90 insertions(+)
 create mode 100644 roles/container-engine/kata-containers/molecule/default/converge.yml
 create mode 100644 roles/container-engine/kata-containers/molecule/default/molecule.yml
 create mode 100644 roles/container-engine/kata-containers/molecule/default/prepare.yml
 create mode 100644 roles/container-engine/kata-containers/molecule/default/tests/test_default.py

diff --git a/roles/container-engine/kata-containers/molecule/default/converge.yml b/roles/container-engine/kata-containers/molecule/default/converge.yml
new file mode 100644
index 000000000..995705705
--- /dev/null
+++ b/roles/container-engine/kata-containers/molecule/default/converge.yml
@@ -0,0 +1,10 @@
+---
+- name: Converge
+  hosts: all
+  become: true
+  vars:
+    kata_containers_enabled: true
+  roles:
+    - role: kubespray-defaults
+    - role: containerd
+    - role: kata-containers
diff --git a/roles/container-engine/kata-containers/molecule/default/molecule.yml b/roles/container-engine/kata-containers/molecule/default/molecule.yml
new file mode 100644
index 000000000..8cccf8dfc
--- /dev/null
+++ b/roles/container-engine/kata-containers/molecule/default/molecule.yml
@@ -0,0 +1,44 @@
+---
+driver:
+  name: vagrant
+  provider:
+    name: libvirt
+    options:
+      driver: kvm
+lint: |
+  set -e
+  yamllint -c ../../../.yamllint .
+platforms:
+  - name: ubuntu18
+    box: generic/ubuntu1804
+    cpus: 1
+    memory: 1024
+    nested: true
+    groups:
+      - kube-master
+  - name: ubuntu20
+    box: generic/ubuntu2004
+    cpus: 1
+    memory: 1024
+    nested: true
+    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
+  inventory:
+    group_vars:
+      all:
+        become: true
+verifier:
+  name: testinfra
+  lint:
+    name: flake8
diff --git a/roles/container-engine/kata-containers/molecule/default/prepare.yml b/roles/container-engine/kata-containers/molecule/default/prepare.yml
new file mode 100644
index 000000000..1afc51a04
--- /dev/null
+++ b/roles/container-engine/kata-containers/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/kata-containers/molecule/default/tests/test_default.py b/roles/container-engine/kata-containers/molecule/default/tests/test_default.py
new file mode 100644
index 000000000..15e80825d
--- /dev/null
+++ b/roles/container-engine/kata-containers/molecule/default/tests/test_default.py
@@ -0,0 +1,30 @@
+import os
+
+import testinfra.utils.ansible_runner
+
+testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
+    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
+
+
+def test_run(host):
+    kataruntime = "/opt/kata/bin/kata-runtime"
+    with host.sudo():
+        cmd = host.command(kataruntime + " version")
+    assert cmd.rc == 0
+    assert "kata-runtime" in cmd.stdout
+
+
+def test_run_pod(host):
+    image = "docker.io/library/hello-world:latest"
+    runtime = "io.containerd.kata-qemu.v2"
+
+    pull_command = "ctr image pull {}".format(image)
+    with host.sudo():
+        cmd = host.command(pull_command)
+    assert cmd.rc == 0
+
+    run_command = "ctr run --runtime {} {} kata1".format(runtime, image)
+    with host.sudo():
+        cmd = host.command(run_command)
+    assert cmd.rc == 0
+    assert "Hello from Docker!" in cmd.stdout
-- 
GitLab