Do not create files in site-package directory 65/63565/1
authorJuha Kosonen <juha.kosonen@nokia.com>
Mon, 15 Oct 2018 14:23:23 +0000 (17:23 +0300)
committerJuha Kosonen <juha.kosonen@nokia.com>
Tue, 16 Oct 2018 05:35:02 +0000 (05:35 +0000)
Use /home/opnfv/functest/data/rally/task directory for storing
temporary files when running rally tasks.

Also removes unused vm scenario from task service list.

Change-Id: Icfd4f99ebe6194360bda8bd88e497e018a9541a0
Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com>
(cherry picked from commit 520331a06750dd02228f840c346402f52fb864e8)

functest/opnfv_tests/openstack/rally/rally.py
functest/opnfv_tests/openstack/rally/task.yaml
functest/tests/unit/openstack/rally/test_rally.py

index ac44de1..1d7d75f 100644 (file)
@@ -56,7 +56,8 @@ class RallyBase(singlevm.VmReady2):
     ITERATIONS_AMOUNT = 10
     CONCURRENCY = 4
     BLACKLIST_FILE = os.path.join(RALLY_DIR, "blacklist.txt")
-    TEMP_DIR = os.path.join(RALLY_DIR, "var")
+    TASK_DIR = os.path.join(getattr(config.CONF, 'dir_rally_data'), 'task')
+    TEMP_DIR = os.path.join(TASK_DIR, 'var')
 
     visibility = 'public'
     shared_network = True
@@ -78,7 +79,7 @@ class RallyBase(singlevm.VmReady2):
             domain=self.project.domain.id)
         self.results_dir = os.path.join(
             getattr(config.CONF, 'dir_results'), self.case_name)
-        self.task_file = os.path.join(self.RALLY_DIR, 'task.yaml')
+        self.task_file = ''
         self.creators = []
         self.summary = []
         self.scenario_dir = ''
@@ -420,10 +421,26 @@ class RallyBase(singlevm.VmReady2):
         else:
             raise Exception("Test name '%s' is invalid" % self.test_name)
 
-        if not os.path.exists(self.task_file):
-            LOGGER.error("Task file '%s' does not exist.", self.task_file)
+        if not os.path.exists(self.TASK_DIR):
+            os.makedirs(self.TASK_DIR)
+
+        task = os.path.join(self.RALLY_DIR, 'task.yaml')
+        if not os.path.exists(task):
+            LOGGER.error("Task file '%s' does not exist.", task)
             raise Exception("Task file '{}' does not exist.".
-                            format(self.task_file))
+                            format(task))
+        self.task_file = os.path.join(self.TASK_DIR, 'task.yaml')
+        shutil.copyfile(task, self.task_file)
+
+        task_macro = os.path.join(self.RALLY_DIR, 'macro')
+        if not os.path.exists(task_macro):
+            LOGGER.error("Task macro dir '%s' does not exist.", task_macro)
+            raise Exception("Task macro dir '{}' does not exist.".
+                            format(task_macro))
+        macro_dir = os.path.join(self.TASK_DIR, 'macro')
+        if os.path.exists(macro_dir):
+            shutil.rmtree(macro_dir)
+        shutil.copytree(task_macro, macro_dir)
 
         self.update_keystone_default_role()
         self.compute_cnt = len(self.cloud.list_hypervisors())
index fe9304f..14d4e71 100644 (file)
@@ -42,7 +42,3 @@
 {% if "heat" in service_list %}
 {%- include "var/opnfv-heat.yaml"-%}
 {% endif %}
-
-{% if "vm" in service_list %}
-{%- include "var/opnfv-vm.yaml"-%}
-{% endif %}
index 22ddb1c..1499257 100644 (file)
@@ -267,6 +267,9 @@ class OSRallyTesting(unittest.TestCase):
             self.rally_base.prepare_run()
 
     @mock.patch('functest.opnfv_tests.openstack.rally.rally.os.path.exists')
+    @mock.patch('functest.opnfv_tests.openstack.rally.rally.shutil.copyfile')
+    @mock.patch('functest.opnfv_tests.openstack.rally.rally.shutil.copytree')
+    @mock.patch('functest.opnfv_tests.openstack.rally.rally.shutil.rmtree')
     def test_prepare_run_flavor_alt_creation_failed(self, *args):
         # pylint: disable=unused-argument
         self.rally_base.TESTS = ['test1', 'test2']