def extract_metadata(manifest, labelfile=None, prefix=None): '''extract_metadata will write a file of metadata from shub :param manifest: the manifest to use ''' if prefix is None: prefix = "" prefix = prefix.upper() source = 'Hub' if 'frozen' in manifest: source = 'Registry' metadata = manifest.copy() remove_fields = ['files', 'spec', 'metrics'] for remove_field in remove_fields: if remove_field in metadata: del metadata[remove_field] if labelfile is not None: for key, value in metadata.items(): key = "%s%s" % (prefix, key) value = ADD(key=key, value=value, jsonfile=labelfile, force=True) bot.verbose("Saving Singularity %s metadata to %s" % (source, labelfile)) return metadata
def extract_labels(manifest, labelfile=None, prefix=None): '''extract_labels will write a file of key value pairs including maintainer, and labels. :param manifest: the manifest to use :param labelfile: if defined, write to labelfile (json) :param prefix: an optional prefix to add to the names ''' if prefix is None: prefix = "" labels = get_config(manifest, 'Labels') if labels is not None and len(labels) is not 0: bot.verbose3("Found Docker container labels!") if labelfile is not None: for key, value in labels.items(): key = "%s%s" % (prefix, key) value = ADD(key, value, labelfile, force=True) return labels
def main(): parser = get_parser() try: (args,options) = parser.parse_args() except: sys.exit(0) if args.key is not None and args.file is not None and args.value is not None: value = ADD(key=args.key, value=args.value, jsonfile=args.file, force=args.force) else: bot.error("--key and --file and --value must be defined for ADD. Exiting") sys.exit(1)