Initial commit
Change-Id: I680e0343e1d37b185d334c0133ebb155ce7de9be
diff --git a/_states/runtest.py b/_states/runtest.py
new file mode 100644
index 0000000..6700bf7
--- /dev/null
+++ b/_states/runtest.py
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+'''
+Management of runtest resources
+===============================
+:depends: - jsonpath-rw Python module
+:configuration: See :py:mod:`salt.modules.runtest` for setup instructions.
+'''
+
+import importlib
+import logging
+import os
+from functools import wraps
+LOG = logging.getLogger(__name__)
+
+DEPENDENCIES = ['jsonpath_rw']
+
+def __virtual__():
+ '''
+ Only load if runtest module if dependencies are present
+ '''
+ failures = []
+ for module in DEPENDENCIES:
+ try:
+ importlib.import_module(module)
+ except ImportError:
+ failures.append(module)
+ if failures:
+ log.error("The required modules are not present %s" % ','.join(failures))
+ return False
+ return 'runtest'
+
+def _test_call(method):
+ (resource, functionality) = method.func_name.split('_')
+ if functionality == 'present':
+ functionality = 'updated'
+ else:
+ functionality = 'removed'
+
+ @wraps(method)
+ def check_for_testing(name, *args, **kwargs):
+ if __opts__.get('test', None):
+ return _no_change(name, resource, test=functionality)
+ return method(name, *args, **kwargs)
+ return check_for_testing
+
+@_test_call
+def tempestconf_present(name, regenerate=False):
+ """ Checks that file with config present."""
+
+
+ if os.path.isfile(name) and not regenerate:
+ return _no_change(name, 'tempest_config')
+
+ cfg = __salt__['runtest.generate_tempest_config'](name)
+ return _created(name, 'tempest_config', cfg)
+
+
+def _created(name, resource, resource_definition):
+ changes_dict = {'name': name,
+ 'changes': resource_definition,
+ 'result': True,
+ 'comment': '{0} {1} created'.format(resource, name)}
+ return changes_dict
+
+def _no_change(name, resource, test=False):
+ changes_dict = {'name': name,
+ 'changes': {},
+ 'result': True}
+ if test:
+ changes_dict['comment'] = \
+ '{0} {1} will be {2}'.format(resource, name, test)
+ else:
+ changes_dict['comment'] = \
+ '{0} {1} is in correct state'.format(resource, name)
+ return changes_dict