From a064cc19b3c65c7011e732930c5df25612996ec2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 30 Apr 2013 10:58:23 +0200 Subject: [PATCH 01/17] try new object orientated (hrrr) code instead of stage based Signed-off-by: Nico Schottelius --- cdist/config_install.py | 68 ++++++++++++++++++++++-- cdist/core/cdist_object.py | 18 +++++++ docs/dev/logs/2013-04-12.execution-order | 39 ++++++++++++++ 3 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 docs/dev/logs/2013-04-12.execution-order diff --git a/cdist/config_install.py b/cdist/config_install.py index 7c7a876d..841a19df 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# 2010-2012 Nico Schottelius (nico-cdist at schottelius.org) +# 2010-2013 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -65,8 +65,13 @@ class ConfigInstall(object): def deploy_to(self): """Mimic the old deploy to: Deploy to one host""" - self.stage_prepare() - self.stage_run() + + # Old Code + # self.stage_prepare() + # self.stage_run() + + # New Code + self.run() def deploy_and_cleanup(self): """Do what is most often done: deploy & cleanup""" @@ -76,6 +81,62 @@ class ConfigInstall(object): self.log.info("Finished successful run in %s seconds", time.time() - start_time) + ###################################################################### + # New code for running on object priority (not stage priority) + # + + def run(self): + """The main runner""" + self.explorer.run_global_explorers(self.context.local.global_explorer_out_path) + self.manifest.run_initial_manifest(self.context.initial_manifest) + self.iterate_until_finished() + + def object_list(self): + """Short name for object list retrieval""" + for cdist_object in core.CdistObject.list_objects(self.context.local.object_path, + self.context.local.type_path): + yield cdist_object + + def iterate_until_finished(self): + # Continue process until no new objects are created anymore + + objects_changed = True + + while objects_changed: + objects_changed = False + + for cdist_object in self.object_list(): + if not cdist_object.requirements_satisfied(cdist_object.requirements): + """We cannot do anything for this poor object""" + continue + + if cdist_object.state == core.CdistObject.STATE_UNDEF: + """Prepare the virgin object""" + + self.object_prepare(cdist_object) + objects_changed = True + + if not cdist_object.requirements_satisfied(cdist_object.autorequire): + """The previous step created objects we depend on - wait for them""" + continue + + if cdist_object.state == core.CdistObject.STATE_PREPARED: + self.object_run(cdist_object) + + # Check whether all objects have been finished + unfinished_object_names = [] + for cdist_object in self.object_list(): + if not cdist_object.state == cdist_object.STATE_DONE: + unfinished_object_names.append(cdist_object.name) + + if unfinished_object_names: + raise cdist.Error("The following objects could not be resolved: %s" % + (" ".join(unfinished_object_names)) + + ###################################################################### + # Stages based code + # + def stage_prepare(self): """Do everything for a deploy, minus the actual code stage""" self.explorer.run_global_explorers(self.context.local.global_explorer_out_path) @@ -89,6 +150,7 @@ class ConfigInstall(object): new_objects_created = False for cdist_object in core.CdistObject.list_objects(self.context.local.object_path, self.context.local.type_path): + if cdist_object.state == core.CdistObject.STATE_PREPARED: self.log.debug("Skipping re-prepare of object %s", cdist_object) continue diff --git a/cdist/core/cdist_object.py b/cdist/core/cdist_object.py index 73537f80..30d002f6 100644 --- a/cdist/core/cdist_object.py +++ b/cdist/core/cdist_object.py @@ -61,6 +61,7 @@ class CdistObject(object): """ # Constants for use with Object.state + STATE_UNDEF = "" STATE_PREPARED = "prepared" STATE_RUNNING = "running" STATE_DONE = "done" @@ -223,6 +224,23 @@ class CdistObject(object): except EnvironmentError as error: raise cdist.Error('Error creating directories for cdist object: %s: %s' % (self, error)) + @property + def requirements_satisfied(self): + """Return state whether normal depedencies are satisfied""" + + satisfied = True + + for requirement in self.requirements: + cdist_object = self.object_from_name(requirement) + + if not cdist_object.state == self.STATE_DONE: + satisfied = False + break + + log.debug("%s is satisfied: %s" % (self.name, satisfied)) + + return satisfied + @property def satisfied_requirements(self): """Return state whether all of our dependencies have been resolved already""" diff --git a/docs/dev/logs/2013-04-12.execution-order b/docs/dev/logs/2013-04-12.execution-order new file mode 100644 index 00000000..1739c287 --- /dev/null +++ b/docs/dev/logs/2013-04-12.execution-order @@ -0,0 +1,39 @@ +Old: + +- global explores (all) +- initial manifest +- for each object + execute type explorers + execute manifest + + continue until all objects (including newly created) + have their type explorers/manifests run +- build dependency tree +- for each object + execute gencode-* + execute code-* + +New: +- run all global explorers +- run initial manifest + creates zero or more cdist_objects +- for each cdist_object + if not cdist_object.has_unfullfilled_requirements: + execute type explorers + execute manifest + may create new objects, resulting in autorequirements + + # Gained requirements during manifest run + if object.has_auto_requirements(): + continue + + cdist_object.execute gencode-* + cdist_object.execute code-* + + +Requirements / Test cases for requirments / resolver: + + - omnipotence + - + +Test From 8a7c64f86afba67dace9c56f0bdd2526496ba29f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 30 Apr 2013 11:04:01 +0200 Subject: [PATCH 02/17] cleanups + indent errors Signed-off-by: Nico Schottelius --- cdist/config_install.py | 4 ++-- cdist/core/cdist_object.py | 48 ++------------------------------------ 2 files changed, 4 insertions(+), 48 deletions(-) diff --git a/cdist/config_install.py b/cdist/config_install.py index 841a19df..b458ad56 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -127,11 +127,11 @@ class ConfigInstall(object): unfinished_object_names = [] for cdist_object in self.object_list(): if not cdist_object.state == cdist_object.STATE_DONE: - unfinished_object_names.append(cdist_object.name) + unfinished_object_names.append(cdist_object.name) if unfinished_object_names: raise cdist.Error("The following objects could not be resolved: %s" % - (" ".join(unfinished_object_names)) + (" ".join(unfinished_object_names))) ###################################################################### # Stages based code diff --git a/cdist/core/cdist_object.py b/cdist/core/cdist_object.py index 30d002f6..566cde21 100644 --- a/cdist/core/cdist_object.py +++ b/cdist/core/cdist_object.py @@ -224,13 +224,12 @@ class CdistObject(object): except EnvironmentError as error: raise cdist.Error('Error creating directories for cdist object: %s: %s' % (self, error)) - @property - def requirements_satisfied(self): + def requirements_satisfied(self, requirements): """Return state whether normal depedencies are satisfied""" satisfied = True - for requirement in self.requirements: + for requirement in requirements: cdist_object = self.object_from_name(requirement) if not cdist_object.state == self.STATE_DONE: @@ -241,49 +240,6 @@ class CdistObject(object): return satisfied - @property - def satisfied_requirements(self): - """Return state whether all of our dependencies have been resolved already""" - - satisfied = True - - for requirement in self.all_requirements: - log.debug("%s: Checking requirement %s (%s) .." % (self.name, requirement.name, requirement.state)) - if not requirement.state == self.STATE_DONE: - satisfied = False - break - log.debug("%s is satisfied: %s" % (self.name, satisfied)) - - return satisfied - - - def find_requirements_by_name(self, requirements): - """Takes a list of requirement patterns and returns a list of matching object instances. - - Patterns are expected to be Unix shell-style wildcards for use with fnmatch.filter. - - find_requirements_by_name(['__type/object_id', '__other_type/*']) -> - [, , ] - """ - - - # FIXME: think about where/when to store this - probably not here - self.objects = dict((o.name, o) for o in self.list_objects(self.base_path, self.cdist_type.base_path)) - object_names = self.objects.keys() - - for pattern in requirements: - found = False - for requirement in fnmatch.filter(object_names, pattern): - found = True - yield self.objects[requirement] - if not found: - # FIXME: get rid of the singleton object_id, it should be invisible to the code -> hide it in Object - singleton = os.path.join(pattern, 'singleton') - if singleton in self.objects: - yield self.objects[singleton] - else: - raise RequirementNotFoundError(pattern) - @property def all_requirements(self): """ From 85d24ce2595b972fe5c236ffab1528e19b89b362 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 30 Apr 2013 15:07:27 +0200 Subject: [PATCH 03/17] fix execution order - seems to be fine now Signed-off-by: Nico Schottelius --- cdist/config_install.py | 30 +++++++++++++++++++----- cdist/core/cdist_object.py | 25 ++++---------------- docs/dev/logs/2013-04-12.execution-order | 7 +++++- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/cdist/config_install.py b/cdist/config_install.py index b458ad56..f33efdf9 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -106,7 +106,7 @@ class ConfigInstall(object): objects_changed = False for cdist_object in self.object_list(): - if not cdist_object.requirements_satisfied(cdist_object.requirements): + if cdist_object.requirements_unfinished(cdist_object.requirements): """We cannot do anything for this poor object""" continue @@ -116,22 +116,40 @@ class ConfigInstall(object): self.object_prepare(cdist_object) objects_changed = True - if not cdist_object.requirements_satisfied(cdist_object.autorequire): + if cdist_object.requirements_unfinished(cdist_object.autorequire): """The previous step created objects we depend on - wait for them""" continue if cdist_object.state == core.CdistObject.STATE_PREPARED: self.object_run(cdist_object) + objects_changed = True # Check whether all objects have been finished - unfinished_object_names = [] + unfinished_objects = [] for cdist_object in self.object_list(): if not cdist_object.state == cdist_object.STATE_DONE: - unfinished_object_names.append(cdist_object.name) + unfinished_objects.append(cdist_object) + + if unfinished_objects: + info_string = [] + + for cdist_object in unfinished_objects: + + requirement_names = [] + autorequire_names = [] + + for requirement in cdist_object.requirements_unfinished(cdist_object.requirements): + requirement_names.append(requirement.name) + + for requirement in cdist_object.requirements_unfinished(cdist_object.autorequire): + autorequire_names.append(requirement.name) + + requirements = ", ".join(requirement_names) + autorequire = ", ".join(autorequire_names) + info_string.append("%s requires: %s autorequires: %s" % (cdist_object.name, requirements, autorequire)) - if unfinished_object_names: raise cdist.Error("The following objects could not be resolved: %s" % - (" ".join(unfinished_object_names))) + ("; ".join(info_string))) ###################################################################### # Stages based code diff --git a/cdist/core/cdist_object.py b/cdist/core/cdist_object.py index 566cde21..a9306aaa 100644 --- a/cdist/core/cdist_object.py +++ b/cdist/core/cdist_object.py @@ -224,35 +224,18 @@ class CdistObject(object): except EnvironmentError as error: raise cdist.Error('Error creating directories for cdist object: %s: %s' % (self, error)) - def requirements_satisfied(self, requirements): + def requirements_unfinished(self, requirements): """Return state whether normal depedencies are satisfied""" - satisfied = True + object_list = [] for requirement in requirements: cdist_object = self.object_from_name(requirement) if not cdist_object.state == self.STATE_DONE: - satisfied = False - break - - log.debug("%s is satisfied: %s" % (self.name, satisfied)) - - return satisfied - - @property - def all_requirements(self): - """ - Return resolved autorequirements and requirements so that - a complete list of requirements is returned - """ - - all_reqs= [] - all_reqs.extend(self.find_requirements_by_name(self.requirements)) - all_reqs.extend(self.find_requirements_by_name(self.autorequire)) - - return set(all_reqs) + object_list.append(cdist_object) + return object_list class RequirementNotFoundError(cdist.Error): def __init__(self, requirement): diff --git a/docs/dev/logs/2013-04-12.execution-order b/docs/dev/logs/2013-04-12.execution-order index 1739c287..5100eeda 100644 --- a/docs/dev/logs/2013-04-12.execution-order +++ b/docs/dev/logs/2013-04-12.execution-order @@ -36,4 +36,9 @@ Requirements / Test cases for requirments / resolver: - omnipotence - -Test + +-------------------------------------------------------------------------------- +ERROR: localhost: The following objects could not be resolved: __cdistmarker/singleton requires autorequires ; __directory/etc/sudoers.d requires autorequires ; __file/etc/sudoers.d/nico requires __directory/etc/sudoers.d autorequires ; __file/etc/motd requires autorequires ; __package_pacman/atop requires autorequires ; __package_pacman/screen requires autorequires ; __package_pacman/strace requires autorequires ; __package_pacman/vim requires autorequires ; __package_pacman/zsh requires autorequires ; __package_pacman/lftp requires autorequires ; __package_pacman/nmap requires autorequires ; __package_pacman/ntp requires autorequires ; __package_pacman/rsync requires autorequires ; __package_pacman/rtorrent requires autorequires ; __package_pacman/wget requires autorequires ; __package_pacman/nload requires autorequires ; __package_pacman/iftop requires autorequires ; __package_pacman/mosh requires autorequires ; __package_pacman/git requires autorequires ; __package_pacman/mercurial requires autorequires ; __package_pacman/netcat requires autorequires ; __package_pacman/python-virtualenv requires autorequires ; __package_pacman/wireshark-cli requires autorequires ; __package_pacman/sudo requires autorequires +INFO: Total processing time for 1 host(s): 32.30426597595215 +ERROR: Failed to deploy to the following hosts: localhost + From 2dac681f2561d26e32864752d1400273f53cc00d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 30 Apr 2013 15:07:59 +0200 Subject: [PATCH 04/17] better error message Signed-off-by: Nico Schottelius --- cdist/config_install.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdist/config_install.py b/cdist/config_install.py index f33efdf9..7e8eb0f1 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -148,7 +148,7 @@ class ConfigInstall(object): autorequire = ", ".join(autorequire_names) info_string.append("%s requires: %s autorequires: %s" % (cdist_object.name, requirements, autorequire)) - raise cdist.Error("The following objects could not be resolved: %s" % + raise cdist.Error("The requirements of the following objects could not be resolved: %s" % ("; ".join(info_string))) ###################################################################### From 956f400da6fca8d904c96f6958c3ea3a5beab9d9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 30 Apr 2013 15:15:22 +0200 Subject: [PATCH 05/17] re-arrange for future cleanup Signed-off-by: Nico Schottelius --- cdist/config_install.py | 77 ++++++++++-------- cdist/resolver.py | 175 ---------------------------------------- 2 files changed, 42 insertions(+), 210 deletions(-) delete mode 100644 cdist/resolver.py diff --git a/cdist/config_install.py b/cdist/config_install.py index 7e8eb0f1..b62af3e0 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -63,20 +63,16 @@ class ConfigInstall(object): shutil.rmtree(destination) shutil.move(self.context.local.out_path, destination) - def deploy_to(self): - """Mimic the old deploy to: Deploy to one host""" + def deploy_and_cleanup(self): + """Do what is most often done: deploy & cleanup""" + start_time = time.time() # Old Code - # self.stage_prepare() - # self.stage_run() + #self.deploy_to() # New Code self.run() - def deploy_and_cleanup(self): - """Do what is most often done: deploy & cleanup""" - start_time = time.time() - self.deploy_to() self.cleanup() self.log.info("Finished successful run in %s seconds", time.time() - start_time) @@ -151,10 +147,48 @@ class ConfigInstall(object): raise cdist.Error("The requirements of the following objects could not be resolved: %s" % ("; ".join(info_string))) + ###################################################################### + # Code required by both methods (which will stay) + # + + def object_run(self, cdist_object, dry_run=False): + """Run gencode and code for an object""" + self.log.debug("Trying to run object " + cdist_object.name) + if cdist_object.state == core.CdistObject.STATE_DONE: + raise cdist.Error("Attempting to run an already finished object: %s", cdist_object) + + cdist_type = cdist_object.cdist_type + + # Generate + self.log.info("Generating and executing code for " + cdist_object.name) + cdist_object.code_local = self.code.run_gencode_local(cdist_object) + cdist_object.code_remote = self.code.run_gencode_remote(cdist_object) + if cdist_object.code_local or cdist_object.code_remote: + cdist_object.changed = True + + # Execute + if not dry_run: + if cdist_object.code_local: + self.code.run_code_local(cdist_object) + if cdist_object.code_remote: + self.code.transfer_code_remote(cdist_object) + self.code.run_code_remote(cdist_object) + + # Mark this object as done + self.log.debug("Finishing run of " + cdist_object.name) + cdist_object.state = core.CdistObject.STATE_DONE + + ###################################################################### # Stages based code # + def deploy_to(self): + """Mimic the old deploy to: Deploy to one host""" + self.stage_prepare() + self.stage_run() + + def stage_prepare(self): """Do everything for a deploy, minus the actual code stage""" self.explorer.run_global_explorers(self.context.local.global_explorer_out_path) @@ -183,33 +217,6 @@ class ConfigInstall(object): self.manifest.run_type_manifest(cdist_object) cdist_object.state = core.CdistObject.STATE_PREPARED - def object_run(self, cdist_object, dry_run=False): - """Run gencode and code for an object""" - self.log.debug("Trying to run object " + cdist_object.name) - if cdist_object.state == core.CdistObject.STATE_DONE: - raise cdist.Error("Attempting to run an already finished object: %s", cdist_object) - - cdist_type = cdist_object.cdist_type - - # Generate - self.log.info("Generating and executing code for " + cdist_object.name) - cdist_object.code_local = self.code.run_gencode_local(cdist_object) - cdist_object.code_remote = self.code.run_gencode_remote(cdist_object) - if cdist_object.code_local or cdist_object.code_remote: - cdist_object.changed = True - - # Execute - if not dry_run: - if cdist_object.code_local: - self.code.run_code_local(cdist_object) - if cdist_object.code_remote: - self.code.transfer_code_remote(cdist_object) - self.code.run_code_remote(cdist_object) - - # Mark this object as done - self.log.debug("Finishing run of " + cdist_object.name) - cdist_object.state = core.CdistObject.STATE_DONE - def stage_run(self): """The final (and real) step of deployment""" self.log.info("Generating and executing code") diff --git a/cdist/resolver.py b/cdist/resolver.py deleted file mode 100644 index ddcf382e..00000000 --- a/cdist/resolver.py +++ /dev/null @@ -1,175 +0,0 @@ -# -*- coding: utf-8 -*- -# -# 2011 Steven Armstrong (steven-cdist at armstrong.cc) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# - -import logging -import os -import itertools -import fnmatch -import pprint - -import cdist - -log = logging.getLogger(__name__) - - -class CircularReferenceError(cdist.Error): - def __init__(self, cdist_object, required_object): - self.cdist_object = cdist_object - self.required_object = required_object - - def __str__(self): - return 'Circular reference detected: %s -> %s' % (self.cdist_object.name, self.required_object.name) - - -class RequirementNotFoundError(cdist.Error): - def __init__(self, requirement): - self.requirement = requirement - - def __str__(self): - return 'Requirement could not be found: %s' % self.requirement - - -class DependencyResolver(object): - """Cdist's dependency resolver. - - Usage: - >> resolver = DependencyResolver(list_of_objects) - # Easy access to the objects we are working with - >> resolver.objects['__some_type/object_id'] - - # Easy access to a specific objects dependencies - >> resolver.dependencies['__some_type/object_id'] - [, ] - # Pretty print the dependency graph - >> from pprint import pprint - >> pprint(resolver.dependencies) - # Iterate over all existing objects in the correct order - >> for cdist_object in resolver: - >> do_something_with(cdist_object) - """ - def __init__(self, objects, logger=None): - self.objects = dict((o.name, o) for o in objects) - self._dependencies = None - self.log = logger or log - - @property - def dependencies(self): - """Build the dependency graph. - - Returns a dict where the keys are the object names and the values are - lists of all dependencies including the key object itself. - """ - if self._dependencies is None: - self.log.info("Resolving dependencies...") - self._dependencies = {} - self._preprocess_requirements() - for name,cdist_object in self.objects.items(): - resolved = [] - unresolved = [] - self._resolve_object_dependencies(cdist_object, resolved, unresolved) - self._dependencies[name] = resolved - self.log.debug(self._dependencies) - return self._dependencies - - def find_requirements_by_name(self, requirements): - """Takes a list of requirement patterns and returns a list of matching object instances. - - Patterns are expected to be Unix shell-style wildcards for use with fnmatch.filter. - - find_requirements_by_name(['__type/object_id', '__other_type/*']) -> - [, , ] - """ - object_names = self.objects.keys() - for pattern in requirements: - found = False - for requirement in fnmatch.filter(object_names, pattern): - found = True - yield self.objects[requirement] - if not found: - # FIXME: get rid of the singleton object_id, it should be invisible to the code -> hide it in Object - singleton = os.path.join(pattern, 'singleton') - if singleton in self.objects: - yield self.objects[singleton] - else: - raise RequirementNotFoundError(pattern) - - def _preprocess_requirements(self): - """Find all autorequire dependencies and merge them to be just requirements - for further processing. - """ - for cdist_object in self.objects.values(): - if cdist_object.autorequire: - # The objects (children) that this cdist_object (parent) defined - # in it's type manifest shall inherit all explicit requirements - # that the parent has so that user defined requirements are - # fullfilled and processed in the expected order. - for auto_requirement in self.find_requirements_by_name(cdist_object.autorequire): - for requirement in self.find_requirements_by_name(cdist_object.requirements): - requirement_object_all_requirements = list(requirement.requirements) + list(requirement.autorequire) - if (requirement.name not in auto_requirement.requirements - and auto_requirement.name not in requirement_object_all_requirements): - self.log.debug('Adding %s to %s.requirements', requirement.name, auto_requirement) - auto_requirement.requirements.append(requirement.name) - # On the other hand the parent shall depend on all the children - # it created so that the user can setup dependencies on it as a - # whole without having to know anything about the parents - # internals. - cdist_object.requirements.extend(cdist_object.autorequire) - # As we changed the object on disc, we have to ensure it is not - # preprocessed again if someone would call us multiple times. - cdist_object.autorequire = [] - - def _resolve_object_dependencies(self, cdist_object, resolved, unresolved): - """Resolve all dependencies for the given cdist_object and store them - in the list which is passed as the 'resolved' arguments. - - e.g. - resolved = [] - unresolved = [] - resolve_object_dependencies(some_object, resolved, unresolved) - print("Dependencies for %s: %s" % (some_object, resolved)) - """ - self.log.debug('Resolving dependencies for: %s' % cdist_object.name) - try: - unresolved.append(cdist_object) - for required_object in self.find_requirements_by_name(cdist_object.requirements): - self.log.debug("Object %s requires %s", cdist_object, required_object) - if required_object not in resolved: - if required_object in unresolved: - error = CircularReferenceError(cdist_object, required_object) - self.log.error('%s: %s', error, pprint.pformat(self._dependencies)) - raise error - self._resolve_object_dependencies(required_object, resolved, unresolved) - resolved.append(cdist_object) - unresolved.remove(cdist_object) - except RequirementNotFoundError as e: - raise cdist.CdistObjectError(cdist_object, "requires non-existing " + e.requirement) - - def __iter__(self): - """Iterate over all unique objects and yield them in the correct order. - """ - iterable = itertools.chain(*self.dependencies.values()) - # Keep record of objects that have already been seen - seen = set() - seen_add = seen.add - for cdist_object in itertools.filterfalse(seen.__contains__, iterable): - seen_add(cdist_object) - yield cdist_object From 4882c2cf190258c98f46578701b603ad306c2b4f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 30 Apr 2013 15:16:38 +0200 Subject: [PATCH 06/17] --resolver in config_install Signed-off-by: Nico Schottelius --- cdist/config_install.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/cdist/config_install.py b/cdist/config_install.py index b62af3e0..ceba1887 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -32,8 +32,6 @@ import pprint import cdist from cdist import core -from cdist import resolver - class ConfigInstall(object): """Cdist main class to hold arbitrary data""" From f95052e56f5dc453077af716c5fd9aa992c55b5f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 30 Apr 2013 15:18:03 +0200 Subject: [PATCH 07/17] remove unused modules Signed-off-by: Nico Schottelius --- cdist/config_install.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cdist/config_install.py b/cdist/config_install.py index ceba1887..4bf9ad32 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -22,12 +22,8 @@ import logging import os -import stat import shutil -import sys -import tempfile import time -import itertools import pprint import cdist From a265d870373ed7fbb91a7ec87eca02978464623d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 2 May 2013 16:41:16 +0200 Subject: [PATCH 08/17] begin dry run in command line Signed-off-by: Nico Schottelius --- cdist/core/cdist_object.py | 1 - scripts/cdist | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cdist/core/cdist_object.py b/cdist/core/cdist_object.py index a9306aaa..5d3efbdd 100644 --- a/cdist/core/cdist_object.py +++ b/cdist/core/cdist_object.py @@ -50,7 +50,6 @@ class MissingObjectIdError(cdist.Error): def __str__(self): return '%s' % (self.message) - class CdistObject(object): """Represents a cdist object. diff --git a/scripts/cdist b/scripts/cdist index fd18933a..00c55ae8 100755 --- a/scripts/cdist +++ b/scripts/cdist @@ -62,6 +62,8 @@ def commandline(): parser['configinstall'].add_argument('-i', '--initial-manifest', help='Path to a cdist manifest or \'-\' to read from stdin.', dest='manifest', required=False) + parser['configinstall'].add_argument('-n', '--dry-run', + help='Do not execute code', action='store_true') parser['configinstall'].add_argument('-p', '--parallel', help='Operate on multiple hosts in parallel', action='store_true', dest='parallel') From 119ea2f8fef3f601cdf09a20d64979fce5855cc3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 8 May 2013 15:13:42 +0200 Subject: [PATCH 09/17] add makefile for convenience Signed-off-by: Nico Schottelius --- Makefile | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..948bdcd9 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +%: + ./build $@ From d4bad031e9fbfc5030662c499a13be862777512d Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Fri, 10 May 2013 12:41:56 +0200 Subject: [PATCH 10/17] bugfix: the parameter is named 'state' not 'present' Signed-off-by: Steven Armstrong --- cdist/conf/type/__ssh_authorized_keys/manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdist/conf/type/__ssh_authorized_keys/manifest b/cdist/conf/type/__ssh_authorized_keys/manifest index 268b1fbe..47cdf746 100755 --- a/cdist/conf/type/__ssh_authorized_keys/manifest +++ b/cdist/conf/type/__ssh_authorized_keys/manifest @@ -19,7 +19,7 @@ # owner="$(cat "$__object/parameter/owner" 2>/dev/null || echo "$__object_id")" -state="$(cat "$__object/parameter/present" 2>/dev/null || echo "present")" +state="$(cat "$__object/parameter/state" 2>/dev/null || echo "present")" if [ -f "$__object/parameter/file" ]; then file="$(cat "$__object/parameter/file")" else From 0b4914a7f36ee5dc49e559f01bb055e8b19ee2e5 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 15 May 2013 09:16:52 +0200 Subject: [PATCH 11/17] +comment wording Signed-off-by: Nico Schottelius --- cdist/core/cdist_object.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdist/core/cdist_object.py b/cdist/core/cdist_object.py index a9306aaa..54009f6c 100644 --- a/cdist/core/cdist_object.py +++ b/cdist/core/cdist_object.py @@ -225,7 +225,7 @@ class CdistObject(object): raise cdist.Error('Error creating directories for cdist object: %s: %s' % (self, error)) def requirements_unfinished(self, requirements): - """Return state whether normal depedencies are satisfied""" + """Return state whether requirements are satisfied""" object_list = [] From a9ffa86b74c285e5ad8a0ef73fd6b132efbe34f3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 15 May 2013 09:19:36 +0200 Subject: [PATCH 12/17] remove some old code, merge run into deploy_and_cleanup Signed-off-by: Nico Schottelius --- cdist/config_install.py | 80 +++-------------------------------------- 1 file changed, 5 insertions(+), 75 deletions(-) diff --git a/cdist/config_install.py b/cdist/config_install.py index 4bf9ad32..5adf8b9d 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -57,30 +57,18 @@ class ConfigInstall(object): shutil.rmtree(destination) shutil.move(self.context.local.out_path, destination) - def deploy_and_cleanup(self): + def run(self): """Do what is most often done: deploy & cleanup""" start_time = time.time() - # Old Code - #self.deploy_to() - - # New Code - self.run() - - self.cleanup() - self.log.info("Finished successful run in %s seconds", - time.time() - start_time) - - ###################################################################### - # New code for running on object priority (not stage priority) - # - - def run(self): - """The main runner""" self.explorer.run_global_explorers(self.context.local.global_explorer_out_path) self.manifest.run_initial_manifest(self.context.initial_manifest) self.iterate_until_finished() + self.cleanup() + self.log.info("Finished successful run in %s seconds", time.time() - start_time) + + def object_list(self): """Short name for object list retrieval""" for cdist_object in core.CdistObject.list_objects(self.context.local.object_path, @@ -141,10 +129,6 @@ class ConfigInstall(object): raise cdist.Error("The requirements of the following objects could not be resolved: %s" % ("; ".join(info_string))) - ###################################################################### - # Code required by both methods (which will stay) - # - def object_run(self, cdist_object, dry_run=False): """Run gencode and code for an object""" self.log.debug("Trying to run object " + cdist_object.name) @@ -171,57 +155,3 @@ class ConfigInstall(object): # Mark this object as done self.log.debug("Finishing run of " + cdist_object.name) cdist_object.state = core.CdistObject.STATE_DONE - - - ###################################################################### - # Stages based code - # - - def deploy_to(self): - """Mimic the old deploy to: Deploy to one host""" - self.stage_prepare() - self.stage_run() - - - def stage_prepare(self): - """Do everything for a deploy, minus the actual code stage""" - self.explorer.run_global_explorers(self.context.local.global_explorer_out_path) - self.manifest.run_initial_manifest(self.context.initial_manifest) - - self.log.info("Running object manifests and type explorers") - - # Continue process until no new objects are created anymore - new_objects_created = True - while new_objects_created: - new_objects_created = False - for cdist_object in core.CdistObject.list_objects(self.context.local.object_path, - self.context.local.type_path): - - if cdist_object.state == core.CdistObject.STATE_PREPARED: - self.log.debug("Skipping re-prepare of object %s", cdist_object) - continue - else: - self.object_prepare(cdist_object) - new_objects_created = True - - def object_prepare(self, cdist_object): - """Prepare object: Run type explorer + manifest""" - self.log.info("Running manifest and explorers for " + cdist_object.name) - self.explorer.run_type_explorers(cdist_object) - self.manifest.run_type_manifest(cdist_object) - cdist_object.state = core.CdistObject.STATE_PREPARED - - def stage_run(self): - """The final (and real) step of deployment""" - self.log.info("Generating and executing code") - - objects = core.CdistObject.list_objects( - self.context.local.object_path, - self.context.local.type_path) - - dependency_resolver = resolver.DependencyResolver(objects) - self.log.debug(pprint.pformat(dependency_resolver.dependencies)) - - for cdist_object in dependency_resolver: - self.log.debug("Run object: %s", cdist_object) - self.object_run(cdist_object) From 782d84870dfd3c47250b4e4bd9424bbcc7e409b1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 15 May 2013 09:21:09 +0200 Subject: [PATCH 13/17] ++changes Signed-off-by: Nico Schottelius --- docs/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog b/docs/changelog index 4d9642d7..3774c81f 100644 --- a/docs/changelog +++ b/docs/changelog @@ -6,6 +6,7 @@ Changelog next: * Core: Make global explorers available to initial manifest (Arkaitz Jimenez) + * Change execution order to run object as one unit 2.1.1: 2013-04-08 * Core: Use dynamic dependency resolver to allow indirect self dependencies From ae8040536f85c3fee1ddfcbcd27d4ac71a0c658f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 15 May 2013 09:26:48 +0200 Subject: [PATCH 14/17] mere tests of autorequire and resolver into execution_order Signed-off-by: Nico Schottelius --- cdist/test/autorequire/__init__.py | 91 ------------------- .../{resolver => execution_order}/__init__.py | 91 +++++++++++++++++++ .../fixtures/conf/explorer/.keep | 0 .../conf/manifest/circular_dependency | 0 .../conf/manifest/implicit_dependencies | 0 .../fixtures/conf/manifest/recursive_type | 0 .../conf/type/__addifnosuchline/.keep | 0 .../fixtures/conf/type/__directory/.keep | 0 .../fixtures/conf/type/__git/manifest | 0 .../conf/type/__nfsroot_client/manifest | 0 .../fixtures/conf/type/__package/manifest | 0 .../conf/type/__package_special/.keep | 0 .../type/__root_ssh_authorized_key/manifest | 0 .../fixtures/conf/type/__top/manifest | 0 .../fixtures/conf/type/__user/.keep | 0 .../fixtures/object/__first/.keep | 0 .../object/__first/child/.cdist/.keep | 0 .../fixtures/object/__first/dog/.cdist/.keep | 0 .../fixtures/object/__first/man/.cdist/.keep | 0 .../object/__first/woman/.cdist/.keep | 0 .../fixtures/object/__second/.keep | 0 .../object/__second/on-the/.cdist/.keep | 0 .../object/__second/under-the/.cdist/.keep | 0 .../fixtures/object/__third/.keep | 0 .../fixtures/object/__third/moon/.cdist/.keep | 0 .../object/__third/moon/.cdist/parameter/name | 0 .../__third/moon/.cdist/parameter/planet | 0 .../fixtures/type/__first/.keep | 0 .../fixtures/type/__second/.keep | 0 .../fixtures/type/__third/.keep | 0 30 files changed, 91 insertions(+), 91 deletions(-) delete mode 100644 cdist/test/autorequire/__init__.py rename cdist/test/{resolver => execution_order}/__init__.py (51%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/explorer/.keep (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/manifest/circular_dependency (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/manifest/implicit_dependencies (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/manifest/recursive_type (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__addifnosuchline/.keep (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__directory/.keep (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__git/manifest (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__nfsroot_client/manifest (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__package/manifest (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__package_special/.keep (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__root_ssh_authorized_key/manifest (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__top/manifest (100%) rename cdist/test/{autorequire => execution_order}/fixtures/conf/type/__user/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__first/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__first/child/.cdist/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__first/dog/.cdist/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__first/man/.cdist/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__first/woman/.cdist/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__second/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__second/on-the/.cdist/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__second/under-the/.cdist/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__third/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__third/moon/.cdist/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__third/moon/.cdist/parameter/name (100%) rename cdist/test/{resolver => execution_order}/fixtures/object/__third/moon/.cdist/parameter/planet (100%) rename cdist/test/{resolver => execution_order}/fixtures/type/__first/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/type/__second/.keep (100%) rename cdist/test/{resolver => execution_order}/fixtures/type/__third/.keep (100%) diff --git a/cdist/test/autorequire/__init__.py b/cdist/test/autorequire/__init__.py deleted file mode 100644 index 714a7d4b..00000000 --- a/cdist/test/autorequire/__init__.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- -# -# 2010-2011 Steven Armstrong (steven-cdist at armstrong.cc) -# 2012 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# - -import os -import shutil - -import cdist -from cdist import test -from cdist.exec import local -from cdist import core -from cdist.core import manifest -from cdist import resolver -from cdist import config -import cdist.context - -import os.path as op -my_dir = op.abspath(op.dirname(__file__)) -fixtures = op.join(my_dir, 'fixtures') -add_conf_dir = op.join(fixtures, 'conf') - -class AutorequireTestCase(test.CdistTestCase): - - def setUp(self): - self.orig_environ = os.environ - os.environ = os.environ.copy() - self.temp_dir = self.mkdtemp() - - self.out_dir = os.path.join(self.temp_dir, "out") - self.remote_out_dir = os.path.join(self.temp_dir, "remote") - - os.environ['__cdist_out_dir'] = self.out_dir - os.environ['__cdist_remote_out_dir'] = self.remote_out_dir - - self.context = cdist.context.Context( - target_host=self.target_host, - remote_copy=self.remote_copy, - remote_exec=self.remote_exec, - add_conf_dirs=[add_conf_dir], - exec_path=test.cdist_exec_path, - debug=False) - - self.config = config.Config(self.context) - - def tearDown(self): - os.environ = self.orig_environ - shutil.rmtree(self.temp_dir) - - def test_implicit_dependencies(self): - self.context.initial_manifest = os.path.join(self.context.local.manifest_path, 'implicit_dependencies') - self.config.stage_prepare() - - objects = core.CdistObject.list_objects(self.context.local.object_path, self.context.local.type_path) - dependency_resolver = resolver.DependencyResolver(objects) - expected_dependencies = [ - dependency_resolver.objects['__package_special/b'], - dependency_resolver.objects['__package/b'], - dependency_resolver.objects['__package_special/a'] - ] - resolved_dependencies = dependency_resolver.dependencies['__package_special/a'] - self.assertEqual(resolved_dependencies, expected_dependencies) - - def test_circular_dependency(self): - self.context.initial_manifest = os.path.join(self.context.local.manifest_path, 'circular_dependency') - self.config.stage_prepare() - # raises CircularDependecyError - self.config.stage_run() - - def test_recursive_type(self): - self.context.initial_manifest = os.path.join(self.config.local.manifest_path, 'recursive_type') - self.config.stage_prepare() - # raises CircularDependecyError - self.config.stage_run() diff --git a/cdist/test/resolver/__init__.py b/cdist/test/execution_order/__init__.py similarity index 51% rename from cdist/test/resolver/__init__.py rename to cdist/test/execution_order/__init__.py index baae26de..c792a772 100644 --- a/cdist/test/resolver/__init__.py +++ b/cdist/test/execution_order/__init__.py @@ -86,3 +86,94 @@ class ResolverTestCase(test.CdistTestCase): first_man.requirements = ['__does/not/exist'] with self.assertRaises(cdist.Error): self.dependency_resolver.dependencies +# -*- coding: utf-8 -*- +# +# 2010-2011 Steven Armstrong (steven-cdist at armstrong.cc) +# 2012 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# + +import os +import shutil + +import cdist +from cdist import test +from cdist.exec import local +from cdist import core +from cdist.core import manifest +from cdist import resolver +from cdist import config +import cdist.context + +import os.path as op +my_dir = op.abspath(op.dirname(__file__)) +fixtures = op.join(my_dir, 'fixtures') +add_conf_dir = op.join(fixtures, 'conf') + +class AutorequireTestCase(test.CdistTestCase): + + def setUp(self): + self.orig_environ = os.environ + os.environ = os.environ.copy() + self.temp_dir = self.mkdtemp() + + self.out_dir = os.path.join(self.temp_dir, "out") + self.remote_out_dir = os.path.join(self.temp_dir, "remote") + + os.environ['__cdist_out_dir'] = self.out_dir + os.environ['__cdist_remote_out_dir'] = self.remote_out_dir + + self.context = cdist.context.Context( + target_host=self.target_host, + remote_copy=self.remote_copy, + remote_exec=self.remote_exec, + add_conf_dirs=[add_conf_dir], + exec_path=test.cdist_exec_path, + debug=False) + + self.config = config.Config(self.context) + + def tearDown(self): + os.environ = self.orig_environ + shutil.rmtree(self.temp_dir) + + def test_implicit_dependencies(self): + self.context.initial_manifest = os.path.join(self.context.local.manifest_path, 'implicit_dependencies') + self.config.stage_prepare() + + objects = core.CdistObject.list_objects(self.context.local.object_path, self.context.local.type_path) + dependency_resolver = resolver.DependencyResolver(objects) + expected_dependencies = [ + dependency_resolver.objects['__package_special/b'], + dependency_resolver.objects['__package/b'], + dependency_resolver.objects['__package_special/a'] + ] + resolved_dependencies = dependency_resolver.dependencies['__package_special/a'] + self.assertEqual(resolved_dependencies, expected_dependencies) + + def test_circular_dependency(self): + self.context.initial_manifest = os.path.join(self.context.local.manifest_path, 'circular_dependency') + self.config.stage_prepare() + # raises CircularDependecyError + self.config.stage_run() + + def test_recursive_type(self): + self.context.initial_manifest = os.path.join(self.config.local.manifest_path, 'recursive_type') + self.config.stage_prepare() + # raises CircularDependecyError + self.config.stage_run() diff --git a/cdist/test/autorequire/fixtures/conf/explorer/.keep b/cdist/test/execution_order/fixtures/conf/explorer/.keep similarity index 100% rename from cdist/test/autorequire/fixtures/conf/explorer/.keep rename to cdist/test/execution_order/fixtures/conf/explorer/.keep diff --git a/cdist/test/autorequire/fixtures/conf/manifest/circular_dependency b/cdist/test/execution_order/fixtures/conf/manifest/circular_dependency similarity index 100% rename from cdist/test/autorequire/fixtures/conf/manifest/circular_dependency rename to cdist/test/execution_order/fixtures/conf/manifest/circular_dependency diff --git a/cdist/test/autorequire/fixtures/conf/manifest/implicit_dependencies b/cdist/test/execution_order/fixtures/conf/manifest/implicit_dependencies similarity index 100% rename from cdist/test/autorequire/fixtures/conf/manifest/implicit_dependencies rename to cdist/test/execution_order/fixtures/conf/manifest/implicit_dependencies diff --git a/cdist/test/autorequire/fixtures/conf/manifest/recursive_type b/cdist/test/execution_order/fixtures/conf/manifest/recursive_type similarity index 100% rename from cdist/test/autorequire/fixtures/conf/manifest/recursive_type rename to cdist/test/execution_order/fixtures/conf/manifest/recursive_type diff --git a/cdist/test/autorequire/fixtures/conf/type/__addifnosuchline/.keep b/cdist/test/execution_order/fixtures/conf/type/__addifnosuchline/.keep similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__addifnosuchline/.keep rename to cdist/test/execution_order/fixtures/conf/type/__addifnosuchline/.keep diff --git a/cdist/test/autorequire/fixtures/conf/type/__directory/.keep b/cdist/test/execution_order/fixtures/conf/type/__directory/.keep similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__directory/.keep rename to cdist/test/execution_order/fixtures/conf/type/__directory/.keep diff --git a/cdist/test/autorequire/fixtures/conf/type/__git/manifest b/cdist/test/execution_order/fixtures/conf/type/__git/manifest similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__git/manifest rename to cdist/test/execution_order/fixtures/conf/type/__git/manifest diff --git a/cdist/test/autorequire/fixtures/conf/type/__nfsroot_client/manifest b/cdist/test/execution_order/fixtures/conf/type/__nfsroot_client/manifest similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__nfsroot_client/manifest rename to cdist/test/execution_order/fixtures/conf/type/__nfsroot_client/manifest diff --git a/cdist/test/autorequire/fixtures/conf/type/__package/manifest b/cdist/test/execution_order/fixtures/conf/type/__package/manifest similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__package/manifest rename to cdist/test/execution_order/fixtures/conf/type/__package/manifest diff --git a/cdist/test/autorequire/fixtures/conf/type/__package_special/.keep b/cdist/test/execution_order/fixtures/conf/type/__package_special/.keep similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__package_special/.keep rename to cdist/test/execution_order/fixtures/conf/type/__package_special/.keep diff --git a/cdist/test/autorequire/fixtures/conf/type/__root_ssh_authorized_key/manifest b/cdist/test/execution_order/fixtures/conf/type/__root_ssh_authorized_key/manifest similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__root_ssh_authorized_key/manifest rename to cdist/test/execution_order/fixtures/conf/type/__root_ssh_authorized_key/manifest diff --git a/cdist/test/autorequire/fixtures/conf/type/__top/manifest b/cdist/test/execution_order/fixtures/conf/type/__top/manifest similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__top/manifest rename to cdist/test/execution_order/fixtures/conf/type/__top/manifest diff --git a/cdist/test/autorequire/fixtures/conf/type/__user/.keep b/cdist/test/execution_order/fixtures/conf/type/__user/.keep similarity index 100% rename from cdist/test/autorequire/fixtures/conf/type/__user/.keep rename to cdist/test/execution_order/fixtures/conf/type/__user/.keep diff --git a/cdist/test/resolver/fixtures/object/__first/.keep b/cdist/test/execution_order/fixtures/object/__first/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__first/.keep rename to cdist/test/execution_order/fixtures/object/__first/.keep diff --git a/cdist/test/resolver/fixtures/object/__first/child/.cdist/.keep b/cdist/test/execution_order/fixtures/object/__first/child/.cdist/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__first/child/.cdist/.keep rename to cdist/test/execution_order/fixtures/object/__first/child/.cdist/.keep diff --git a/cdist/test/resolver/fixtures/object/__first/dog/.cdist/.keep b/cdist/test/execution_order/fixtures/object/__first/dog/.cdist/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__first/dog/.cdist/.keep rename to cdist/test/execution_order/fixtures/object/__first/dog/.cdist/.keep diff --git a/cdist/test/resolver/fixtures/object/__first/man/.cdist/.keep b/cdist/test/execution_order/fixtures/object/__first/man/.cdist/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__first/man/.cdist/.keep rename to cdist/test/execution_order/fixtures/object/__first/man/.cdist/.keep diff --git a/cdist/test/resolver/fixtures/object/__first/woman/.cdist/.keep b/cdist/test/execution_order/fixtures/object/__first/woman/.cdist/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__first/woman/.cdist/.keep rename to cdist/test/execution_order/fixtures/object/__first/woman/.cdist/.keep diff --git a/cdist/test/resolver/fixtures/object/__second/.keep b/cdist/test/execution_order/fixtures/object/__second/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__second/.keep rename to cdist/test/execution_order/fixtures/object/__second/.keep diff --git a/cdist/test/resolver/fixtures/object/__second/on-the/.cdist/.keep b/cdist/test/execution_order/fixtures/object/__second/on-the/.cdist/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__second/on-the/.cdist/.keep rename to cdist/test/execution_order/fixtures/object/__second/on-the/.cdist/.keep diff --git a/cdist/test/resolver/fixtures/object/__second/under-the/.cdist/.keep b/cdist/test/execution_order/fixtures/object/__second/under-the/.cdist/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__second/under-the/.cdist/.keep rename to cdist/test/execution_order/fixtures/object/__second/under-the/.cdist/.keep diff --git a/cdist/test/resolver/fixtures/object/__third/.keep b/cdist/test/execution_order/fixtures/object/__third/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__third/.keep rename to cdist/test/execution_order/fixtures/object/__third/.keep diff --git a/cdist/test/resolver/fixtures/object/__third/moon/.cdist/.keep b/cdist/test/execution_order/fixtures/object/__third/moon/.cdist/.keep similarity index 100% rename from cdist/test/resolver/fixtures/object/__third/moon/.cdist/.keep rename to cdist/test/execution_order/fixtures/object/__third/moon/.cdist/.keep diff --git a/cdist/test/resolver/fixtures/object/__third/moon/.cdist/parameter/name b/cdist/test/execution_order/fixtures/object/__third/moon/.cdist/parameter/name similarity index 100% rename from cdist/test/resolver/fixtures/object/__third/moon/.cdist/parameter/name rename to cdist/test/execution_order/fixtures/object/__third/moon/.cdist/parameter/name diff --git a/cdist/test/resolver/fixtures/object/__third/moon/.cdist/parameter/planet b/cdist/test/execution_order/fixtures/object/__third/moon/.cdist/parameter/planet similarity index 100% rename from cdist/test/resolver/fixtures/object/__third/moon/.cdist/parameter/planet rename to cdist/test/execution_order/fixtures/object/__third/moon/.cdist/parameter/planet diff --git a/cdist/test/resolver/fixtures/type/__first/.keep b/cdist/test/execution_order/fixtures/type/__first/.keep similarity index 100% rename from cdist/test/resolver/fixtures/type/__first/.keep rename to cdist/test/execution_order/fixtures/type/__first/.keep diff --git a/cdist/test/resolver/fixtures/type/__second/.keep b/cdist/test/execution_order/fixtures/type/__second/.keep similarity index 100% rename from cdist/test/resolver/fixtures/type/__second/.keep rename to cdist/test/execution_order/fixtures/type/__second/.keep diff --git a/cdist/test/resolver/fixtures/type/__third/.keep b/cdist/test/execution_order/fixtures/type/__third/.keep similarity index 100% rename from cdist/test/resolver/fixtures/type/__third/.keep rename to cdist/test/execution_order/fixtures/type/__third/.keep From e0193fec564a00ace0368cd4519b2be34b21ba4f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 15 May 2013 09:28:41 +0200 Subject: [PATCH 15/17] add logo that is used on cdist flyers Signed-off-by: Nico Schottelius --- docs/gfx/label-cdist-ngcm.odt | Bin 0 -> 14805 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/gfx/label-cdist-ngcm.odt diff --git a/docs/gfx/label-cdist-ngcm.odt b/docs/gfx/label-cdist-ngcm.odt new file mode 100644 index 0000000000000000000000000000000000000000..5e73b3326e45b71746136c75f65ed475997e9ab6 GIT binary patch literal 14805 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 Date: Wed, 15 May 2013 09:40:53 +0200 Subject: [PATCH 16/17] add some older logfiles (xournal and inkscape based) Signed-off-by: Nico Schottelius --- docs/dev/logs/2012-09-03.dep-ideas.xoj | Bin 0 -> 34893 bytes .../2012-11-15.cdist-sexy-interaction.svg | 282 ++++++++++++++++++ .../2013-01-03.dependencies-visualised.xoj | Bin 0 -> 91819 bytes docs/dev/logs/2013-04-08.execution-graph.xoj | Bin 0 -> 57083 bytes 4 files changed, 282 insertions(+) create mode 100644 docs/dev/logs/2012-09-03.dep-ideas.xoj create mode 100644 docs/dev/logs/2012-11-15.cdist-sexy-interaction.svg create mode 100644 docs/dev/logs/2013-01-03.dependencies-visualised.xoj create mode 100644 docs/dev/logs/2013-04-08.execution-graph.xoj diff --git a/docs/dev/logs/2012-09-03.dep-ideas.xoj b/docs/dev/logs/2012-09-03.dep-ideas.xoj new file mode 100644 index 0000000000000000000000000000000000000000..b2ab927eb659afee302fed8b461362f6c8f7a6e3 GIT binary patch literal 34893 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 + + + + + + + + + image/svg+xml + + + + + + + + + cdist + + + + configures hosts + + + + + sexy + + + + + + manages inventory + + + + + + installs hosts(missing) + + + + interact + + + + + + + + visualises inventory(missing) + + + + + + diff --git a/docs/dev/logs/2013-01-03.dependencies-visualised.xoj b/docs/dev/logs/2013-01-03.dependencies-visualised.xoj new file mode 100644 index 0000000000000000000000000000000000000000..715d25838f4f1f26a46fc9795e1173b19da07ecd GIT binary patch literal 91819 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 Date: Wed, 15 May 2013 10:08:23 +0200 Subject: [PATCH 17/17] re-add object_prepare, use new run() method Signed-off-by: Nico Schottelius --- cdist/config_install.py | 7 +++++++ scripts/cdist | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/cdist/config_install.py b/cdist/config_install.py index 5adf8b9d..43bfb7e4 100644 --- a/cdist/config_install.py +++ b/cdist/config_install.py @@ -129,6 +129,13 @@ class ConfigInstall(object): raise cdist.Error("The requirements of the following objects could not be resolved: %s" % ("; ".join(info_string))) + def object_prepare(self, cdist_object): + """Prepare object: Run type explorer + manifest""" + self.log.info("Running manifest and explorers for " + cdist_object.name) + self.explorer.run_type_explorers(cdist_object) + self.manifest.run_type_manifest(cdist_object) + cdist_object.state = core.CdistObject.STATE_PREPARED + def object_run(self, cdist_object, dry_run=False): """Run gencode and code for an object""" self.log.debug("Trying to run object " + cdist_object.name) diff --git a/scripts/cdist b/scripts/cdist index 00c55ae8..bca4fea7 100755 --- a/scripts/cdist +++ b/scripts/cdist @@ -160,7 +160,7 @@ def configinstall(args, mode): (time_end - time_start)) if len(failed_hosts) > 0: - raise cdist.Error("Failed to deploy to the following hosts: " + + raise cdist.Error("Failed to configure the following hosts: " + " ".join(failed_hosts)) def configinstall_onehost(host, args, mode, parallel): @@ -179,7 +179,7 @@ def configinstall_onehost(host, args, mode, parallel): debug=args.debug) c = mode(context) - c.deploy_and_cleanup() + c.run() context.cleanup() except cdist.Error as e: