Merge pull request #446 from darko-poljak/feature_files_export
Feature files export
This commit is contained in:
commit
24932fe891
11 changed files with 37 additions and 3 deletions
|
@ -50,6 +50,7 @@ gencode-local
|
|||
__object_id: the objects id
|
||||
__object_fq: full qualified object id, iow: $type.name + / + object_id
|
||||
__type: full qualified path to the type's dir
|
||||
__files: full qualified path to the files dir
|
||||
|
||||
returns: string containing the generated code or None
|
||||
|
||||
|
@ -63,6 +64,7 @@ gencode-remote
|
|||
__object_id: the objects id
|
||||
__object_fq: full qualified object id, iow: $type.name + / + object_id
|
||||
__type: full qualified path to the type's dir
|
||||
__files: full qualified path to the files dir
|
||||
|
||||
returns: string containing the generated code or None
|
||||
|
||||
|
@ -91,6 +93,7 @@ class Code(object):
|
|||
self.env = {
|
||||
'__target_host': self.target_host,
|
||||
'__global': self.local.base_path,
|
||||
'__files': self.local.files_path,
|
||||
}
|
||||
|
||||
def _run_gencode(self, cdist_object, which):
|
||||
|
|
|
@ -36,6 +36,7 @@ common:
|
|||
__cdist_manifest: full qualified path of the manifest == script
|
||||
__cdist_type_base_path: full qualified path to the directory where types are defined for use in type emulator
|
||||
== local.type_path
|
||||
__files: full qualified path to the files dir
|
||||
|
||||
initial manifest is:
|
||||
script: full qualified path to the initial manifest
|
||||
|
@ -96,6 +97,7 @@ class Manifest(object):
|
|||
'__cdist_type_base_path': self.local.type_path, # for use in type emulator
|
||||
'__global': self.local.base_path,
|
||||
'__target_host': self.target_host,
|
||||
'__files': self.local.files_path,
|
||||
}
|
||||
if self.log.getEffectiveLevel() == logging.DEBUG:
|
||||
self.env.update({'__cdist_debug': "yes" })
|
||||
|
|
|
@ -35,6 +35,8 @@ import cdist.message
|
|||
from cdist import core
|
||||
import cdist.exec.util as exec_util
|
||||
|
||||
CONF_SUBDIRS_LINKED = [ "explorer", "files", "manifest", "type" ]
|
||||
|
||||
class Local(object):
|
||||
"""Execute commands locally.
|
||||
|
||||
|
@ -110,6 +112,7 @@ class Local(object):
|
|||
self.global_explorer_out_path = os.path.join(self.base_path, "explorer")
|
||||
self.object_path = os.path.join(self.base_path, "object")
|
||||
self.messages_path = os.path.join(self.base_path, "messages")
|
||||
self.files_path = os.path.join(self.conf_path, "files")
|
||||
|
||||
# Depending on conf_path
|
||||
self.global_explorer_path = os.path.join(self.conf_path, "explorer")
|
||||
|
@ -247,14 +250,14 @@ class Local(object):
|
|||
pass
|
||||
|
||||
def _create_conf_path_and_link_conf_dirs(self):
|
||||
# Link destination directories
|
||||
for sub_dir in [ "explorer", "manifest", "type" ]:
|
||||
# Create destination directories
|
||||
for sub_dir in CONF_SUBDIRS_LINKED:
|
||||
self.mkdir(os.path.join(self.conf_path, sub_dir))
|
||||
|
||||
# Iterate over all directories and link the to the output dir
|
||||
for conf_dir in self.conf_dirs:
|
||||
self.log.debug("Checking conf_dir %s ..." % (conf_dir))
|
||||
for sub_dir in [ "explorer", "manifest", "type" ]:
|
||||
for sub_dir in CONF_SUBDIRS_LINKED:
|
||||
current_dir = os.path.join(conf_dir, sub_dir)
|
||||
|
||||
# Allow conf dirs to contain only partial content
|
||||
|
|
|
@ -60,6 +60,7 @@ class Shell(object):
|
|||
'__target_host': self.target_host,
|
||||
'__manifest': self.local.manifest_path,
|
||||
'__explorer': self.local.global_explorer_path,
|
||||
'__files': self.local.files_path,
|
||||
}
|
||||
|
||||
self.env.update(additional_env)
|
||||
|
|
|
@ -82,6 +82,7 @@ class CodeTestCase(test.CdistTestCase):
|
|||
self.assertEqual(output_dict['__object'], self.cdist_object.absolute_path)
|
||||
self.assertEqual(output_dict['__object_id'], self.cdist_object.object_id)
|
||||
self.assertEqual(output_dict['__object_name'], self.cdist_object.name)
|
||||
self.assertEqual(output_dict['__files'], self.local.files_path)
|
||||
|
||||
def test_run_gencode_remote_environment(self):
|
||||
output_string = self.code.run_gencode_remote(self.cdist_object)
|
||||
|
@ -97,6 +98,7 @@ class CodeTestCase(test.CdistTestCase):
|
|||
self.assertEqual(output_dict['__object'], self.cdist_object.absolute_path)
|
||||
self.assertEqual(output_dict['__object_id'], self.cdist_object.object_id)
|
||||
self.assertEqual(output_dict['__object_name'], self.cdist_object.name)
|
||||
self.assertEqual(output_dict['__files'], self.local.files_path)
|
||||
|
||||
def test_transfer_code_remote(self):
|
||||
self.cdist_object.code_remote = self.code.run_gencode_remote(self.cdist_object)
|
||||
|
@ -112,3 +114,7 @@ class CodeTestCase(test.CdistTestCase):
|
|||
self.cdist_object.code_remote = self.code.run_gencode_remote(self.cdist_object)
|
||||
self.code.transfer_code_remote(self.cdist_object)
|
||||
self.code.run_code_remote(self.cdist_object)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import unittest
|
||||
unittest.main()
|
||||
|
|
|
@ -6,3 +6,4 @@ echo "echo __type: $__type"
|
|||
echo "echo __object: $__object"
|
||||
echo "echo __object_id: $__object_id"
|
||||
echo "echo __object_name: $__object_name"
|
||||
echo "echo __files: $__files"
|
||||
|
|
|
@ -81,6 +81,7 @@ class ManifestTestCase(test.CdistTestCase):
|
|||
self.assertEqual(output_dict['__global'], self.local.base_path)
|
||||
self.assertEqual(output_dict['__cdist_type_base_path'], self.local.type_path)
|
||||
self.assertEqual(output_dict['__manifest'], self.local.manifest_path)
|
||||
self.assertEqual(output_dict['__files'], self.local.files_path)
|
||||
|
||||
def test_type_manifest_environment(self):
|
||||
cdist_type = core.CdistType(self.local.type_path, '__dump_environment')
|
||||
|
@ -105,6 +106,7 @@ class ManifestTestCase(test.CdistTestCase):
|
|||
self.assertEqual(output_dict['__object'], cdist_object.absolute_path)
|
||||
self.assertEqual(output_dict['__object_id'], cdist_object.object_id)
|
||||
self.assertEqual(output_dict['__object_name'], cdist_object.name)
|
||||
self.assertEqual(output_dict['__files'], self.local.files_path)
|
||||
|
||||
def test_debug_env_setup(self):
|
||||
current_level = self.log.getEffectiveLevel()
|
||||
|
@ -112,3 +114,8 @@ class ManifestTestCase(test.CdistTestCase):
|
|||
manifest = cdist.core.manifest.Manifest(self.target_host, self.local)
|
||||
self.assertTrue("__cdist_debug" in manifest.env)
|
||||
self.log.setLevel(current_level)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import unittest
|
||||
unittest.main()
|
||||
|
|
|
@ -6,4 +6,5 @@ __target_host: $__target_host
|
|||
__global: $__global
|
||||
__cdist_type_base_path: $__cdist_type_base_path
|
||||
__manifest: $__manifest
|
||||
__files: $__files
|
||||
DONE
|
||||
|
|
|
@ -10,4 +10,5 @@ __self: $__self
|
|||
__object: $__object
|
||||
__object_id: $__object_id
|
||||
__object_name: $__object_name
|
||||
__files: $__files
|
||||
DONE
|
||||
|
|
|
@ -2,6 +2,7 @@ Changelog
|
|||
---------
|
||||
|
||||
next:
|
||||
* Core: Add files directory for static files (Darko Poljak)
|
||||
* Core: Fix conflicting requirements (Darko Poljak)
|
||||
* Custom: Add bash and zsh completions (Darko Poljak)
|
||||
* Core: Improve error reporting for local and remote run command (Darko Poljak)
|
||||
|
|
|
@ -73,6 +73,10 @@ confdir
|
|||
By default it consists of everything in \$HOME/.cdist and cdist/conf/.
|
||||
For more details see cdist(1)
|
||||
|
||||
confdir/files/
|
||||
Cdist does not care about this directory besides providing access to it.
|
||||
It is thought to be a general file storage area.
|
||||
|
||||
confdir/manifest/init
|
||||
This is the central entry point.
|
||||
It is an executable (+x bit set) shell script that can use
|
||||
|
@ -195,6 +199,10 @@ The following environment variables are exported by cdist:
|
|||
__explorer
|
||||
Directory that contains all global explorers.
|
||||
Available for: initial manifest, explorer, type explorer, shell
|
||||
__files
|
||||
Directory that contains content from the "files" subdirectories
|
||||
from the configuration directories.
|
||||
Available for: initial manifest, type manifest, type gencode, shell
|
||||
__manifest
|
||||
Directory that contains the initial manifest.
|
||||
Available for: initial manifest, type manifest, shell
|
||||
|
|
Loading…
Reference in a new issue