Source code for dynamo_consistency.dynamo

"""
This sub-module includes all of the interaction with dynamo
"""


import logging

from collections import defaultdict

from .. import opts


LOG = logging.getLogger(__name__)

# This is the old version of connecting to dynamo
if opts.V1:
    LOG.warning('Using v1 of dynamo interface')
    from .v1 import inventory
    from .v1 import registry
    from .v1 import siteinfo

# The new version is designed to run as a script on the dynamo server
else:
    from .v2 import inventory
    from .v2 import siteinfo

    if opts.V1_REPORTING:
        from .v1 import registry
    else:
        from .v2 import registry

[docs]def filelist_to_blocklist(site, filelist, blocklist): """ Reads in a list of files, and generates a summary of blocks :param str site: Used to query the inventory :param str filelist: Location of list of files :param str blocklist: Location where to write block report """ # We want to track which blocks missing files are coming from track_missing_blocks = defaultdict( lambda: {'errors': 0, 'blocks': defaultdict(lambda: {'group': '', 'errors': 0} ) }) for dataset, block, group in inventory.filelist_to_blocklist(site, filelist): track_missing_blocks[dataset]['errors'] += 1 track_missing_blocks[dataset]['blocks'][block]['errors'] += 1 track_missing_blocks[dataset]['blocks'][block]['group'] = group # Output file with the missing datasets with open(blocklist, 'w') as output_file: for dataset, vals in \ sorted(track_missing_blocks.iteritems(), key=lambda x: x[1]['errors'], reverse=True): for block_name, block in sorted(vals['blocks'].iteritems()): output_file.write('%10i %-17s %s#%s\n' % \ (block['errors'], block['group'], dataset, block_name))