Example #1
0
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)
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
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'])
Example #5
0
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'])
Example #6
0
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'])