forked from ungleich-public/cdist
new special value require="CDIST_HONOR_MANIFEST_ORDER"
which tells cdist to execute types in the manifest order
This commit is contained in:
parent
f23999c8d3
commit
824381e6ca
2 changed files with 32 additions and 0 deletions
|
@ -71,6 +71,7 @@ class Emulator(object):
|
||||||
raise MissingRequiredEnvironmentVariableError(e.args[0])
|
raise MissingRequiredEnvironmentVariableError(e.args[0])
|
||||||
|
|
||||||
self.object_base_path = os.path.join(self.global_path, "object")
|
self.object_base_path = os.path.join(self.global_path, "object")
|
||||||
|
self.typeorder_path = os.path.join(self.global_path, "typeorder")
|
||||||
|
|
||||||
self.type_name = os.path.basename(argv[0])
|
self.type_name = os.path.basename(argv[0])
|
||||||
self.cdist_type = core.CdistType(self.type_base_path, self.type_name)
|
self.cdist_type = core.CdistType(self.type_base_path, self.type_name)
|
||||||
|
@ -152,6 +153,9 @@ class Emulator(object):
|
||||||
else:
|
else:
|
||||||
self.cdist_object.create()
|
self.cdist_object.create()
|
||||||
self.cdist_object.parameters = self.parameters
|
self.cdist_object.parameters = self.parameters
|
||||||
|
# record the created object in typeorder file
|
||||||
|
with open(self.typeorder_path, 'a') as tofd:
|
||||||
|
tofd.write(self.cdist_object.name + os.linesep)
|
||||||
|
|
||||||
# Record / Append source
|
# Record / Append source
|
||||||
self.cdist_object.source.append(self.object_source)
|
self.cdist_object.source.append(self.object_source)
|
||||||
|
@ -188,6 +192,18 @@ class Emulator(object):
|
||||||
# Ignore empty fields - probably the only field anyway
|
# Ignore empty fields - probably the only field anyway
|
||||||
if len(requirement) == 0: continue
|
if len(requirement) == 0: continue
|
||||||
|
|
||||||
|
|
||||||
|
if requirement == "CDIST_HONOR_MANIFEST_ORDER":
|
||||||
|
# load object name created bevor this one from typeorder file ...
|
||||||
|
with open(self.typeorder_path, 'r') as tofd:
|
||||||
|
lines = tofd.readlines()
|
||||||
|
# replace the placeholder with the last created object
|
||||||
|
try:
|
||||||
|
requirement = lines[-2].strip()
|
||||||
|
except IndexError:
|
||||||
|
# if no second last line, we are on the first object, so do not set a requirement
|
||||||
|
continue
|
||||||
|
|
||||||
# Raises an error, if object cannot be created
|
# Raises an error, if object cannot be created
|
||||||
try:
|
try:
|
||||||
cdist_object = self.cdist_object.object_from_name(requirement)
|
cdist_object = self.cdist_object.object_from_name(requirement)
|
||||||
|
|
|
@ -128,6 +128,22 @@ All objects that are created in a type manifest are automatically required
|
||||||
from the type that is calling them. This is called "autorequirement" in
|
from the type that is calling them. This is called "autorequirement" in
|
||||||
cdist jargon.
|
cdist jargon.
|
||||||
|
|
||||||
|
You can tell cdist to execute all types in the order in which they are created
|
||||||
|
in the manifest by setting require to the special value of
|
||||||
|
"CDIST_HONOR_MANIFEST_ORDER".
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Tells cdist to execute all types in the order in which they are created ...
|
||||||
|
export require="CDIST_HONOR_MANIFEST_ORDER"
|
||||||
|
__sample_type 1
|
||||||
|
__sample_type 2
|
||||||
|
__example_type 23
|
||||||
|
# Now this types are executed in the creation order
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
Loading…
Reference in a new issue