コード例 #1
0
ファイル: services.py プロジェクト: EUDAT-DPMT/pcp.cregsync
def main(app):
    argparser = utils.getArgParser()
    logger = utils.getLogger('var/log/cregsync_services.log')
    args = argparser.parse_args()
    logger.info("'services.py' called with '%s'" % args)

    site = utils.getSite(app, args.site_id, args.admin_id)
    logger.info("Got site '%s' as '%s'" % (args.site_id, args.admin_id))

    targetfolder = site.catalog
    # returns a list of dicts with service data
    spmt_services = utils.getServiceData(args.path, args.filename)
    email2puid = utils.email2puid(site)

    logger.info("Iterating over the service data")
    for entry in spmt_services:
        shortname = entry['name']
        id = prepareid(shortname)
        if id is None:
            logger.warning("Couldn't generate id for ", values)
            continue
        if id not in targetfolder.objectIds():
            targetfolder.invokeFactory('Service', id)
            logger.info("Added %s to the 'catalog' folder" % id)

        # retrieve data to extended rather than overwrite
        additional = targetfolder[id].getAdditional()
        data = preparedata(entry, site, additional, email2puid)
        logger.debug(data)
        targetfolder[id].edit(**data)
        targetfolder[id].reindexObject()
        site.portal_repository.save(obj=targetfolder[id],
                                    comment="Synchronization from SPMT")
        logger.info("Updated %s in the 'catalog' folder" % id)
        if args.top: continue
        try:
            data = entry['service_details_list']['service_details'][0]
            # we assume there is at most one
            addDetails(site, targetfolder[id], data, logger)
        except IndexError:
            pass

    if not args.dry:
        logger.info("Committing changes to database")
        import transaction
        transaction.commit()
    else:
        logger.info("dry run; not committing anything")

    logger.info("Done")
コード例 #2
0
ファイル: services.py プロジェクト: EUDAT-DPMT/pcp.cregsync
def main(app):
    argparser = utils.getArgParser()
    logger = utils.getLogger('var/log/cregsync_services.log')
    args = argparser.parse_args()
    logger.info("'services.py' called with '%s'" % args)

    site = utils.getSite(app, args.site_id, args.admin_id)
    logger.info("Got site '%s' as '%s'" % (args.site_id, args.admin_id))

    targetfolder = site.catalog
    # returns a list of dicts with service data
    spmt_services = utils.getServiceData(args.path, args.filename)   
    email2puid = utils.email2puid(site)
        
    logger.info("Iterating over the service data")
    for entry in spmt_services:
        shortname = entry['name']
        id = prepareid(shortname)
        if id is None:
            logger.warning("Couldn't generate id for ", values)
            continue
        if id not in targetfolder.objectIds():
            targetfolder.invokeFactory('Service', id)
            logger.info("Added %s to the 'catalog' folder" % id)

        # retrieve data to extended rather than overwrite
        additional = targetfolder[id].getAdditional()
        data = preparedata(entry, site, additional, email2puid)
        logger.debug(data)
        targetfolder[id].edit(**data)
        targetfolder[id].reindexObject()
        site.portal_repository.save(obj=targetfolder[id], 
                                    comment="Synchronization from SPMT")
        logger.info("Updated %s in the 'catalog' folder" % id)
        if args.top: continue
        try:
            data = entry['service_details_list']['service_details'][0]  
            # we assume there is at most one
            addDetails(site, targetfolder[id], data, logger)
        except IndexError:
            pass

    if not args.dry:
        logger.info("Committing changes to database")
        import transaction
        transaction.commit()
    else:
        logger.info("dry run; not committing anything")
            
    logger.info("Done")
コード例 #3
0
def main(app):
    argparser = utils.getArgParser()
    logger = utils.getLogger('var/log/cregsync_reg_service_components.log')
    args = argparser.parse_args()
    logger.info("'reg_service_components.py' called with '%s'" % args)

    site = utils.getSite(app, args.site_id, args.admin_id)
    logger.info("Got site '%s' as '%s'" % (args.site_id, args.admin_id))

    creg_services = utils.getData(
        args.path, args.filename)  # returns a csv.DictReader instance
    extension_properties = utils.getProperties(
        args.path, 'SERVICE_PROPERTIES_DATA_TABLE.csv')
    email2puid = utils.email2puid(site)

    logger.info("Iterating over the service data")
    for entry in creg_services:
        id = prepareid('_'.join([entry['HOSTNAME'], entry['ID']]))
        if id is None:
            logger.warning("Couldn't generate id for ", entry)
            continue
        targetfolder = getTargetFolder(site, entry)
        if targetfolder is None:
            continue
        if id not in targetfolder.objectIds():
            targetfolder.invokeFactory('RegisteredServiceComponent', id)
            logger.info("Added '%s' to '%s'" % (id, targetfolder.Title()))

        # retrieve data to extended rather than overwritten
        additional = targetfolder[id].getAdditional()
        extensions = extension_properties.get(entry['ID'], [])
        data = preparedata(entry, site, additional, extensions, email2puid)
        logger.debug(data)
        targetfolder[id].edit(**data)
        targetfolder[id].reindexObject()
        site.portal_repository.save(
            obj=targetfolder[id],
            comment="Syncronization from Central Registry")
        logger.info("Updated '%s' in '%s'" % (id, targetfolder.Title()))

    if not args.dry:
        logger.info("Committing changes to database")
        import transaction
        transaction.commit()
    else:
        logger.info("dry run; not committing anything")

    logger.info("Done")
コード例 #4
0
ファイル: providers.py プロジェクト: MarionRZG/pcp.cregsync
def main(app):
    argparser = utils.getArgParser()
    logger = utils.getLogger('var/log/cregsync_providers.log')
    args = argparser.parse_args()
    logger.info("'providers.py' called with '%s'" % args)

    site = utils.getSite(app, args.site_id, args.admin_id)
    logger.info("Got site '%s' as '%s'" % (args.site_id, args.admin_id))

    targetfolder = site.providers
    creg_sites = utils.getData(
        args.path, args.filename)  # returns a csv.DictReader instance
    email2puid = utils.email2puid(site)

    logger.info("Iterating over the provider data")
    for entry in creg_sites:
        shortname = entry['SHORTNAME']
        # our one hard-coded exception here:
        if shortname == 'RZG':
            shortname = "MPCDF"
        id = prepareid(shortname)
        if id is None:
            logger.warning("Couldn't generate id for ", values)
            continue
        if id not in targetfolder.objectIds():
            targetfolder.invokeFactory('Provider', id)
            logger.info("Added %s to the providers folder" % id)

        # retrieve data to extended rather than overwritten
        additional = targetfolder[id].getAdditional()
        data = preparedata(entry, site, additional, email2puid)
        logger.debug(data)
        targetfolder[id].edit(**data)
        targetfolder[id].reindexObject()
        site.portal_repository.save(
            obj=targetfolder[id],
            comment="Syncronization from Central Registry")
        logger.info("Updated %s in the providers folder" % id)

    if not args.dry:
        logger.info("Committing changes to database")
        import transaction
        transaction.commit()
    else:
        logger.info("dry run; not committing anything")

    logger.info("Done")
コード例 #5
0
def main(app):
    argparser = utils.getArgParser()
    logger = utils.getLogger('var/log/cregsync_reg_service_components.log')
    args = argparser.parse_args()
    logger.info("'reg_service_components.py' called with '%s'" % args)

    site = utils.getSite(app, args.site_id, args.admin_id)
    logger.info("Got site '%s' as '%s'" % (args.site_id, args.admin_id))

    creg_services = utils.getData(args.path, args.filename)   # returns a csv.DictReader instance
    extension_properties = utils.getProperties(args.path, 'SERVICE_PROPERTIES_DATA_TABLE.csv')
    email2puid = utils.email2puid(site)

    logger.info("Iterating over the service data")
    for entry in creg_services:
        id = prepareid('_'.join([entry['HOSTNAME'], entry['ID']]))
        if id is None:
            logger.warning("Couldn't generate id for ", entry)
            continue
        targetfolder = getTargetFolder(site, entry)
        if targetfolder is None:
            continue
        if id not in targetfolder.objectIds():
            targetfolder.invokeFactory('RegisteredServiceComponent', id)
            logger.info("Added '%s' to '%s'" % (id, targetfolder.Title()))

        # retrieve data to extended rather than overwritten
        additional = targetfolder[id].getAdditional()
        extensions = extension_properties.get(entry['ID'], [])
        data = preparedata(entry, site, additional, extensions, email2puid)
        logger.debug(data)
        targetfolder[id].edit(**data)
        targetfolder[id].reindexObject()
        site.portal_repository.save(obj=targetfolder[id], 
                                    comment="Syncronization from Central Registry")
        logger.info("Updated '%s' in '%s'" % (id, targetfolder.Title()))

    if not args.dry:
        logger.info("Committing changes to database")
        import transaction
        transaction.commit()
    else:
        logger.info("dry run; not committing anything")
            
    logger.info("Done")
コード例 #6
0
ファイル: providers.py プロジェクト: EUDAT-DPMT/pcp.cregsync
def main(app):
    argparser = utils.getArgParser()
    logger = utils.getLogger('var/log/cregsync_providers.log')
    args = argparser.parse_args()
    logger.info("'providers.py' called with '%s'" % args)

    site = utils.getSite(app, args.site_id, args.admin_id)
    logger.info("Got site '%s' as '%s'" % (args.site_id, args.admin_id))

    targetfolder = site.providers
    creg_sites = utils.getData(args.path, args.filename)   # returns a csv.DictReader instance
    email2puid = utils.email2puid(site)
        
    logger.info("Iterating over the provider data")
    for entry in creg_sites:
        shortname = entry['SHORTNAME']
        # our one hard-coded exception here:
        if shortname == 'RZG':
            shortname = "MPCDF"
        id = prepareid(shortname)
        if id is None:
            logger.warning("Couldn't generate id for ", values)
            continue
        if id not in targetfolder.objectIds():
            targetfolder.invokeFactory('Provider', id)
            logger.info("Added %s to the providers folder" % id)

        # retrieve data to extended rather than overwritten
        additional = targetfolder[id].getAdditional()
        data = preparedata(entry, site, additional, email2puid)
        logger.debug(data)
        targetfolder[id].edit(**data)
        targetfolder[id].reindexObject()
        site.portal_repository.save(obj=targetfolder[id], 
                                    comment="Syncronization from Central Registry")
        logger.info("Updated %s in the providers folder" % id)

    if not args.dry:
        logger.info("Committing changes to database")
        import transaction
        transaction.commit()
    else:
        logger.info("dry run; not committing anything")
            
    logger.info("Done")