Esempio n. 1
0
    def __init__(self, withname, mode='file'):
        """Object representing the metadata of filename.

        If mode == 'mad' - the filename is assumed to be the
        madfile. If mode == 'file', the metadata file is assumed to be
        the filename plus .mad.

        Note - started to ignore the 'mode' parameter - will determine
        that automatically (if the file ends with a .mad or not)
        """

        if withname[-4:] == '.mad':
            #this is the .mad file
            self.filename = withname[:-4]
            self.metafile = withname
        else:
            self.filename = withname
            self.metafile = withname + '.mad'

        if (not os.path.exists(self.filename)
                and not os.path.exists(self.metafile)):
            mad.util.exer("Neither filename not metadata file " +
                          "exist - do not know what to do")

        G.debug("created a metadata file for file %s" % self.filename)
        G.debug("metadata file is %s" % self.metafile)

        self.metadata = {}
        self.load()
Esempio n. 2
0
def save(md):

    G.debug('pfridge save')
    if not 'Gid' in md.keys():
        G.critical("error - no gid defined")
        sys.exit(-1)

    if not 'Pfridge' in md.keys():
        url = conf.pfridge.gidserver
        url += 'register/%s' % md['Gid']
        md['pfridge'] = md['Gid']
        G.debug("pfridge GID register")
        G.debug("calling %s" % url)

    for k in md.keys():
        if k == 'Gid':
            continue
        if k == 'Pfridge':
            continue

        v = md[k]
        url = conf.pfridge.metaserver + 'set/%s/%s' % (md['Gid'], k)
        G.debug("pfridge metadata store: %s %s" % (k, v))
        rv = _POST(url, v)
        G.debug("rv %s" % rv)
Esempio n. 3
0
def _POST(url, data):
    data = urllib.urlencode({'value': data})
    G.debug('data encoded %s' % data)
    G.debug('contacting %s' % url)
    opener = urllib2.build_opener(urllib2.HTTPHandler)
    request = urllib2.Request(url, data)
    request.get_method = lambda: 'POST'
    F = opener.open(request)
    return F.read()
Esempio n. 4
0
def hook_metadata_prepare(mdf):

    if 'gid' in mdf.metadata:
        G.debug("metadata has a gid")
        return True

    if not 'Sha1sum' in mdf.metadata:
        G.debug("metadata does not have a shasum")
        return True
    gid = _get_gid(mdf.metadata['Sha1sum'])
    mdf.metadata['Gid'] = gid
Esempio n. 5
0
    def load(self):
        """
        Check if there is a metadata file for *filename*.

        If so - load
        if not - return an empty dict

        """
        if os.path.exists(self.metafile):
            G.debug("loading metadata")
            with open(self.metafile) as F:
                self.metadata = yaml.load(F)

        plugin.run('post_metadata_load', self)
Esempio n. 6
0
File: set.py Progetto: mfiers/Mad
def run(args):
    """
    add a key value pair to parse_argument file's metadata
    """

    files = []
    remove_keys = []
    kvs = []

    for parse_argument in args.setargs:

        #is this parse_argument file or parse_argument key=value pair?
        if '=' in parse_argument:
            #it seems this is a key=value pair
            key, value = parse_argument.split('=', 1)
            if (not args.force) and (not key in conf.datatypes.keys()):
                G.critical("Invalid key %s" % key)
                print "Available keys are:"
                print ", ".join(conf.datatypes.keys())
                sys.exit(-1)
            if not value:
                remove_keys.append(key)
                G.info("Preparing %s for removal" % key)
            else:
                kvs.append((key, value))
                G.debug("adding key, value pair %s, %s" % (key, value))
        else:
            fmd = Metadata(parse_argument)
            files.append(fmd)

    G.info('found %d key value pairs' % len(kvs))
    G.info('found %d files' % len(files))

    if len(files) == 0:
        exerr("Must specify at least one file")
    for madfile in files:
        G.info("Processing file %s" % madfile)
        for k, v in kvs:
            G.debug("applying %s, %s" % (k, v))
            madfile.apply_kv(k, v)
        madfile.remove_keys(remove_keys)
        madfile.save()