Adding ability to run smoke test in multinode

The patch adds ability to run smoke tests in multinode for
that below actions have been:

* copy tempest config from config node to test_target
* send keystonerc file to mine from control node
* put keystonerc from mine to test_target

Change-Id: Ifb8555e0526daa5e32c46fbac518ef45ca4ad1ef
Related-PROD: PROD-18350
diff --git a/README.rst b/README.rst
index 4d24d42..5df03f5 100644
--- a/README.rst
+++ b/README.rst
@@ -12,6 +12,8 @@
 
 .. code-block:: yaml
   runtest:
+    keystonerc_node: ctl01*
+    test_target: gtw01*
     artifact_collector:
       enabled: true
       artifactory:
diff --git a/runtest/map.jinja b/runtest/map.jinja
index 7360cbc..10e0419 100644
--- a/runtest/map.jinja
+++ b/runtest/map.jinja
@@ -1,6 +1,7 @@
 {% set runtest = salt['grains.filter_by']({
     'default': {
-        'pkgs':['python-jsonpath-rw']
+        'pkgs':['python-jsonpath-rw'],
+        'keystonerc': '/root/keystonercv3',
     }
 }, grain='os', merge=salt['pillar.get']('runtest'), base='default') %}
 
diff --git a/runtest/put_keystone_file.sls b/runtest/put_keystone_file.sls
new file mode 100644
index 0000000..bffbad9
--- /dev/null
+++ b/runtest/put_keystone_file.sls
@@ -0,0 +1,9 @@
+{%- from "runtest/map.jinja" import runtest with context %}
+
+{%- set keystone_client_file = salt['mine.get']('*', 'keystonerc_file', 'compound') %}
+
+put_keystone_file:
+  file.managed:
+    - name: {{ runtest.keystonerc }}
+    - contents: '{{ keystone_client_file.values()[0] }}'
+
diff --git a/runtest/tempest.sls b/runtest/tempest.sls
index 06024ac..cca70d4 100644
--- a/runtest/tempest.sls
+++ b/runtest/tempest.sls
@@ -1,16 +1,54 @@
-{%- from "runtest/map.jinja" import tempest with context %}
-{%- if tempest.get('enabled', False) -%}
+{%- from "runtest/map.jinja" import runtest with context %}
+{%- if runtest.tempest.get('enabled', False) -%}
 
 tempest_config_dir:
   file.directory:
-  - name: {{ tempest.cfg_dir }}
+  - name: {{ runtest.tempest.cfg_dir }}
   - makedirs: true
   - mode: 755
 
 tempest_config_file:
   runtest.tempestconf_present:
-    - name: {{ tempest.cfg_dir }}/{{ tempest.cfg_name }}
+    - name: {{ runtest.tempest.cfg_dir }}/{{ runtest.tempest.cfg_name }}
     - require:
       - file: tempest_config_dir
 
+{%- if runtest.test_target is defined %}
+create_on_target:
+  salt.function:
+    - tgt: {{ runtest.test_target }}
+    - tgt_type: compound
+    - name: file.mkdir
+    - arg:
+      -  {{ runtest.tempest.cfg_dir }}
+
+copy_to_target:
+  cmd.run:
+    - name: salt-cp {{ runtest.test_target }} {{ runtest.tempest.cfg_dir }}/{{ runtest.tempest.cfg_name }} {{ runtest.tempest.cfg_dir }}/{{ runtest.tempest.cfg_name }}
+    - require:
+      - salt: create_on_target
 {%- endif -%}
+
+{%- if runtest.keystonerc_node is defined %}
+mine_send_keystonerc_file:
+  salt.function:
+    - tgt: {{ runtest.keystonerc_node }}
+    - tgt_type: compound
+    - name: mine.send
+    - arg:
+      - 'keystonerc_file'
+      - 'mine_function=cmd.shell'
+      - 'cat {{ runtest.keystonerc }}'
+
+put_keystone_rc_file:
+  salt.state:
+    - tgt: {{ runtest.test_target }}
+    - tgt_type: compound
+    - sls: runtest.put_keystone_file
+    - require:
+      - salt: mine_send_keystonerc_file
+
+{%- endif -%}
+
+{%- endif -%}
+