def refresh_repositories(hints=None): settings = Settings() try: logging.debug("Reading metadata from %s", settings.REPO_METADATA) definition = yaml.load(open(settings.REPO_METADATA, 'r')) except Exception as error: # fixme raise JensRepositoriesError("Unable to parse %s (%s)", settings.REPO_METADATA, error) inventory = get_inventory() desired = get_desired_inventory() deltas = {} logging.debug("Initial inventory: %s", inventory) logging.debug("Needed from overrides: %s", desired) for partition in ("modules", "hostgroups", "common"): logging.info("Refreshing bare repositories (%s)", partition) logging.debug("Calculating '%s' delta...", partition) delta = _calculate_delta(definition['repositories'][partition], inventory[partition]) logging.info("New repositories: %s", delta['new']) logging.debug("Existing repositories: %s", delta['existing']) logging.info("Deleted repositories: %s", delta['deleted']) logging.info("Cloning and expanding NEW bare repositories...") delta['new'] = _create_new_repositories(delta['new'], partition, definition, inventory[partition], desired[partition]) # If hints are passed but there's nothing explicitly declared # for a given partition, we make it explicit here. if hints and partition not in hints: hints[partition] = set() logging.info("Expanding EXISTING bare repositories...") _refresh_repositories(delta['existing'], partition, inventory[partition], desired[partition], hints[partition] if hints else None) logging.info("Purging REMOVED bare repositories...") _purge_repositories(delta['deleted'], partition, inventory[partition]) deltas[partition] = delta persist_inventory(inventory) logging.debug("Final inventory: %s", inventory) return (deltas, inventory)
def assertClone(self, identifier, pointsto=None): partition, element, dirname = identifier.split('/') path = "%s/%s/%s/%s" % (self.settings.CLONEDIR, \ partition, element, dirname) if not os.path.isdir(path): raise AssertionError("Clone '%s' not found" % path) if not os.path.isdir("%s/code" % path): raise AssertionError("Clone '%s' does not have code dir" % path) if not os.path.isdir("%s/data" % path): raise AssertionError("Clone '%s' does not have data dir" % path) inventory = get_inventory() self.assertTrue(partition in inventory) self.assertTrue(element in inventory[partition]) refname = dirname_to_refname(dirname) self.assertTrue(refname in inventory[partition][element]) if pointsto is not None: self.assertEquals(get_repository_head(path), pointsto)
def assertClone(self, identifier, pointsto=None): partition, element, dirname = identifier.split('/') path = "%s/%s/%s/%s" % (self.settings.CLONEDIR, \ partition, element, dirname) if not os.path.isdir(path): raise AssertionError("Clone '%s' not found" % path) if not os.path.isdir("%s/code" % path): raise AssertionError("Clone '%s' does not have code dir" % path) if not os.path.isdir("%s/data" % path): raise AssertionError("Clone '%s' does not have data dir" % path) inventory = get_inventory() self.assertTrue(partition in inventory) self.assertTrue(element in inventory[partition]) refname = dirname_to_refname(dirname) self.assertTrue(refname in inventory[partition][element]) if pointsto is not None: self.assertEqual(get_repository_head(path), pointsto)
from jens.reposinventory import get_desired_inventory from jens.tools import ref_is_commit from jens.tools import refname_to_dirname from jens.git import GIT_CLONE_TIMEOUT, GIT_FETCH_TIMEOUT @timed def refresh_repositories(settings, lock, hints=None): try: logging.debug("Reading metadata from %s" % settings.REPO_METADATA) definition = yaml.load(open(settings.REPO_METADATA, 'r')) except Exception, error: #fixme raise JensRepositoriesError("Unable to parse %s" % \ settings.REPO_METADATA) inventory = get_inventory(settings) desired = get_desired_inventory(settings) deltas = {} logging.debug("Initial inventory: %s" % inventory) logging.debug("Needed from overrides: %s" % desired) for partition in ("modules", "hostgroups", "common"): logging.info("Refreshing bare repositories (%s)" % partition) logging.debug("Calculating '%s' delta..." % partition) delta = _calculate_delta(settings, definition['repositories'][partition], inventory[partition]) logging.info("New repositories: %s" % delta['new']) logging.debug("Existing repositories: %s" % delta['existing']) logging.info("Deleted repositories: %s" % delta['deleted'])
from jens.reposinventory import get_inventory, persist_inventory from jens.reposinventory import get_desired_inventory from jens.tools import ref_is_commit from jens.tools import refname_to_dirname from jens.git import GIT_CLONE_TIMEOUT, GIT_FETCH_TIMEOUT @timed def refresh_repositories(settings, lock): try: logging.debug("Reading metadata from %s" % settings.REPO_METADATA) definition = yaml.load(open(settings.REPO_METADATA, 'r')) except Exception, error: #fixme raise JensRepositoriesError("Unable to parse %s" % \ settings.REPO_METADATA) inventory = get_inventory(settings) desired = get_desired_inventory(settings) deltas = {} logging.debug("Initial inventory: %s" % inventory) logging.debug("Needed from overrides: %s" % desired) for partition in ("modules", "hostgroups", "common"): logging.info("Refreshing bare repositories (%s)" % partition) logging.debug("Calculating '%s' delta..." % partition) delta = _calculate_delta(settings, definition['repositories'][partition], inventory[partition]) logging.info("New repositories: %s" % delta['new']) logging.debug("Existing repositories: %s" % delta['existing']) logging.info("Deleted repositories: %s" % delta['deleted'])
from jens.reposinventory import get_desired_inventory from jens.tools import ref_is_commit from jens.tools import refname_to_dirname @timed def refresh_repositories(hints=None): settings = Settings() try: logging.debug("Reading metadata from %s", settings.REPO_METADATA) definition = yaml.load(open(settings.REPO_METADATA, 'r')) except Exception, error: # fixme raise JensRepositoriesError("Unable to parse %s (%s)", settings.REPO_METADATA, error) inventory = get_inventory() desired = get_desired_inventory() deltas = {} logging.debug("Initial inventory: %s", inventory) logging.debug("Needed from overrides: %s", desired) for partition in ("modules", "hostgroups", "common"): logging.info("Refreshing bare repositories (%s)", partition) logging.debug("Calculating '%s' delta...", partition) delta = _calculate_delta(definition['repositories'][partition], inventory[partition]) logging.info("New repositories: %s", delta['new']) logging.debug("Existing repositories: %s", delta['existing']) logging.info("Deleted repositories: %s", delta['deleted'])