env:
     ANSIBLE_ROLES_PATH: ../../../../test/roles
     ANSIBLE_LIBRARY: ../../../../library
+  inventory:
+    group_vars:
+      all:
+        cluster_config_dir: /opt/onap/cluster
   options:
     e: "app_data_path=/opt/onap"
   lint:
 
     - role: prepare-rke
       vars:
         mode: all
-    - prepare-docker-dind
 
 - name: "Infra specific preparations"
   hosts: infrastructure
 
+++ /dev/null
-import os
-import pytest
-
-import testinfra.utils.ansible_runner
-
-testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
-    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts(
-      'kubernetes-control-plane')
-
-
-@pytest.mark.parametrize('container_name', [
-  'kube-apiserver', 'kube-controller-manager', 'kube-scheduler', 'kubelet'])
-def test_container_running(host, container_name):
-    assert host.docker(container_name).is_running
 
+++ /dev/null
-import os
-import pytest
-
-import testinfra.utils.ansible_runner
-
-testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
-    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('kubernetes-etcd')
-
-
-@pytest.mark.parametrize('container_name', [
-  'etcd'])
-def test_container_running(host, container_name):
-    assert host.docker(container_name).is_running
 
 import os
 import pytest
-import json
 
 import testinfra.utils.ansible_runner
 
 @pytest.mark.parametrize('filename', [
   '/root/.kube/config',
   '/opt/onap/cluster/cluster.yml',
-  '/opt/onap/cluster/cluster.rkestate'])
+  '/opt/onap/cluster/kubernetes-dashboard.yml',
+  '/opt/onap/cluster/k8s-dashboard-user.yml',
+  '/opt/onap/cluster/kube_config_cluster.yml'])
 def test_file_existence(host, filename):
     assert host.file(filename).exists
 
 
 def test_rke_version_works(host):
     # Note that we need to cd to the cluster data dir first, really.
-    assert host.run('cd /opt/onap/cluster && rke version').rc == 0
-
-
-def test_nodes_ready(host):
-    # Retrieve all node names.
-    nodecmdres = host.run('kubectl get nodes -o name')
-    assert nodecmdres.rc == 0
-    nodes = nodecmdres.stdout.split('\n')
-    for node in nodes:
-        assert host.run(
-          'kubectl wait --timeout=0 --for=condition=ready ' + node).rc == 0
-
-
-def test_pods_ready(host):
-    # Retrieve all pods from all namespaces.
-    # Because we need pod and namespace name, we get full json representation.
-    podcmdres = host.run('kubectl get pods --all-namespaces -o json')
-    assert podcmdres.rc == 0
-    pods = json.loads(podcmdres.stdout)['items']
-    for pod in pods:
-        # Each pod may be either created by a job or not.
-        # In job case they should already be completed
-        # when we are here so we ignore them.
-        namespace = pod['metadata']['namespace']
-        podname = pod['metadata']['name']
-        condition = 'Ready'
-        if len(pod['metadata']['ownerReferences']) == 1 and pod[
-          'metadata']['ownerReferences'][0]['kind'] == 'Job':
-            continue
-        assert host.run(
-          'kubectl wait --timeout=240s --for=condition=' + condition + ' -n ' +
-          namespace + ' pods/' + podname).rc == 0
+    assert host.run('cd /opt/onap/cluster && rke').rc == 0
 
+++ /dev/null
-import os
-import pytest
-
-import testinfra.utils.ansible_runner
-
-testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
-    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('kubernetes-node')
-
-
-@pytest.mark.parametrize('container_name', [
-  'kubelet', 'kube-proxy'])
-def test_container_running(host, container_name):
-    assert host.docker(container_name).is_running
 
   inventory:
     group_vars:
       all:
+        cluster_config_dir: /opt/onap/cluster
         rke_etcd:
           enabled_custom_etcd_storage: false
           storage_path: /var/lib/etcd-custom
           storage_mountpoint: /var/lib/rancher/etcd-custom
           enabled_unsafe_volatile_storage: true
           tmpfs_size: 5G
+  options:
+    e: "app_data_path=/opt/onap"
   playbooks:
     prepare: ../default/prepare.yml
     converge: ../default/playbook.yml
     destroy: ../default/destroy.yml
-  options:
-    e: "app_data_path=/opt/onap"
   lint:
     name: ansible-lint
 scenario:
 
 - name: Prepare for all
   hosts: all
   roles:
-    - prepare-docker-dind
     - role: prepare-rke
       vars:
         mode: all
 
 ---
 app_name: moleculeapp
 app_data_path: "/opt/{{ app_name }}"
+cluster_config_dir: "/opt/{{ app_name }}/cluster"
 
     name: systemd-user-sessions
     state: started
 
+- name: "Add docker group"
+  group:
+    name: docker
 
     path: "{{ app_data_path }}/downloads"
     state: directory
 
+- name: "Create rke binary wrapper"
+  template:
+    src: rke.j2
+    dest: "{{ app_data_path }}/downloads/rke_linux-amd64"
+    mode: 0755
+
 - name: "Install rke-{{ rke_version }}"
-  command: "curl --connect-timeout 10 -L https://github.com/rancher/rke/releases/download/v{{ rke_version }}/rke_linux-amd64 -o {{ app_data_path }}/downloads/rke_linux-amd64"
+  command: "curl --connect-timeout 10 -L https://github.com/rancher/rke/releases/download/v{{ rke_version }}/rke_linux-amd64 -o {{ app_data_path }}/downloads/rke_linux-amd64_real"
   register: result
   retries: 10
   delay: 1
   until: not result.failed
   args:
     warn: false
+
+- name: "Ensure downloaded rke binary has correct file mode"
+  file:
+    path: "{{ app_data_path }}/downloads/rke_linux-amd64_real"
+    mode: 0755
 
--- /dev/null
+#!/bin/bash
+
+if [[ $@ =~ 'up' ]];
+then
+  # If the operation is 'rke up' then simulate rke up operation
+  echo $@
+  touch {{ cluster_config_dir }}/kube_config_cluster.yml
+elif [[ $@ =~ 'version' ]];
+then
+  {{ app_data_path }}/downloads/rke_linux-amd64_real version
+  exit 0
+else
+  {{ app_data_path }}/downloads/rke_linux-amd64_real $@
+fi