コード例 #1
0
ファイル: ingestpipeline.py プロジェクト: mfkiwl/lofar-1
def main():
    import os.path
    from optparse import OptionParser
    from lofar.common import dbcredentials

    # Check the invocation arguments
    parser = OptionParser("%prog [options] <path_to_jobfile.xml>",
                          description='Run the ingestpipeline on a single jobfile.')
    parser.add_option('-q', '--broker', dest='broker', type='string', default=DEFAULT_BROKER, help='Address of the qpid broker, default: %default')
    parser.add_option('--busname', dest='busname', type='string', default=DEFAULT_BUSNAME, help='Name of the bus exchange on the qpid broker on which the ingest notifications are published, default: %default')
    parser.add_option("-u", "--user", dest="user", type="string", default=getpass.getuser(), help="username for to login on <host>, [default: %default]")
    parser.add_option('-s', '--minimal-SIP', dest='minimal_SIP', action='store_true', help='create and upload a minimal SIP to the LTA catalogue when the normal SIP is not accepted.')
    parser.add_option('-V', '--verbose', dest='verbose', action='store_true', help='verbose logging')
    parser.add_option('-t', '--timeout', dest='globus_timeout', type='int', default=GLOBUS_TIMEOUT, help='number of seconds (default=%default) to wait for globus-url-copy to finish after the transfer is done (while lta-site is computing checksums)')
    parser.add_option("-l", "--lta_credentials", dest="lta_credentials", type="string",
                      default='LTA' if isProductionEnvironment() else 'LTA_test',
                      help="Name of lofar credentials for lta user/pass (see ~/.lofar/dbcredentials) [default=%default]")
    parser.add_option("-m", "--mom_credentials", dest="mom_credentials", type="string",
                      default='MoM_site' if isProductionEnvironment() else 'MoM_site_test',
                      help="Name of credentials for MoM user/pass (see ~/.lofar/dbcredentials) [default=%default]")
    (options, args) = parser.parse_args()

    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s',
                        level=logging.DEBUG if options.verbose else logging.INFO)

    if len(args) != 1:
        parser.print_help()
        sys.exit(1)

    try:
        path = args[0]

        if os.path.isfile(path):
            job = parseJobXmlFile(path)
            job['filename'] = path
            logger.info("Parsed jobfile %s: %s", path, job)

            ltacreds = dbcredentials.DBCredentials().get(options.lta_credentials)
            ltaClient = LTAClient(ltacreds.user, ltacreds.password)

            momcreds = dbcredentials.DBCredentials().get(options.mom_credentials)
            momClient = MoMClient(momcreds.user, momcreds.password)

            jobPipeline = IngestPipeline(job, momClient, ltaClient,
                                         busname=options.busname,
                                         broker=options.broker,
                                         user=options.user,
                                         globus_timeout=options.globus_timeout,
                                         minimal_SIP=options.minimal_SIP)
            jobPipeline.run()
            exit(0)
        else:
            logger.info("No such file %s", path)
            exit(1)
    except Exception as e:
        logger.error(e)
        exit(1)
コード例 #2
0
    def __init__(self, user=None, password=None):
        if user == None or password == None:
            # (mis)use dbcredentials to read user/pass from disk
            from lofar.common import dbcredentials
            dbc = dbcredentials.DBCredentials()
            creds = dbc.get('LTA' if isProductionEnvironment() else 'LTA_test')
            user = creds.user
            password = creds.password

        url = LTA_BASE_URL % (user, password)
        self.__rpc = xmlrpc.client.ServerProxy(url)
        logger.info('LTAClient connected to: %s', self.__hidePassword(url))
コード例 #3
0
ファイル: momhttpclient.py プロジェクト: mfkiwl/lofar-1
    def __init__(self, mom_base_url, user=None, password=None):
        if user == None or password == None:
            # (mis)use dbcredentials to read user/pass from disk
            from lofar.common import dbcredentials
            dbc = dbcredentials.DBCredentials()
            creds = dbc.get(
                'MoM_site' if isProductionEnvironment() else 'MoM_site_test')
            user = creds.user
            password = creds.password

        self.mom_base_url = mom_base_url
        self.__user = user
        self.__password = password
        self.session = None

        self.__momURLlogin = self.mom_base_url + 'useradministration/user/systemlogin.do'
        self.__momUR_security_check = self.mom_base_url + 'useradministration/user/j_security_check'
        self.__momURLlogout = self.mom_base_url + 'useradministration/user/logout.do'
コード例 #4
0
#!/usr/bin/python

import sys
from lofar.qpidinfrastructure.QPIDDB import qpidinfra
from lofar.common import dbcredentials

dbcreds = dbcredentials.DBCredentials().get("qpidinfra")
todb = qpidinfra(dbcreds)

tosearch = sys.stdin.readlines()

numlines = len(tosearch)

#fqdn=['lhn001.cep2.lofar',
#      'ccu001.control.lofar',
#      'sas001.control.lofar',
#      'cbm001.control.lofar',
#      'cbm001.control.lofar',
#      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',


def to_hostname(s):
    leafname = s.split(':')[0].split('.')[0].lower()
    fqdn = "%s.control.lofar" % (leafname)
    #print leafname[0:5]
    if (leafname[0:5] == 'locus'):
        fqdn = "%s.cep2.lofar" % (leafname)
    if (leafname == 'lhn001'):
        fqdn = "%s.cep2.lofar" % (leafname)

    return fqdn
コード例 #5
0
https://docs.djangoproject.com/en/1.10/ref/settings/
"""

import os
import ldap
from . import credentials
from lofar.common import dbcredentials
import logging
logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.INFO)

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

dbc = dbcredentials.DBCredentials()
restinterface_credentials = dbc.get("trigger_restinterface")

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = credentials.SECRET_KEY

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']


# Application definition
コード例 #6
0
def main():
    # make sure we run in UTC timezone
    import os
    os.environ['TZ'] = 'UTC'

    from optparse import OptionParser

    # Check the invocation arguments
    parser = OptionParser(
        "%prog [options]",
        description=
        'runs the ingest transfer server which picks up as many jobs as it can handle from the given --ingest_job_queuename and tranfers the dataproducts to the LTA, updates the LTA catalogue, and updates MoM'
    )
    parser.add_option('-b',
                      '--broker',
                      dest='broker',
                      type='string',
                      default=DEFAULT_BROKER,
                      help='Address of the qpid broker, default: %default')
    parser.add_option("-p",
                      "--max_nr_of_parallel_jobs",
                      dest="max_nr_of_parallel_jobs",
                      type="int",
                      default=MAX_NR_OF_JOBS,
                      help="Name of the job queue. [default: %default]")
    parser.add_option(
        '-e',
        '--exchange',
        dest='exchange',
        type='string',
        default=DEFAULT_BUSNAME,
        help='Name of the common bus exchange on the broker, default: %default'
    )
    parser.add_option(
        "-u",
        "--user",
        dest="user",
        type="string",
        default=getpass.getuser(),
        help="username for to login on data source host, [default: %default]")
    parser.add_option(
        "-l",
        "--lta_credentials",
        dest="lta_credentials",
        type="string",
        default='LTA' if isProductionEnvironment() else 'LTA_test',
        help=
        "Name of lofar credentials for lta user/pass (see ~/.lofar/dbcredentials) [default=%default]"
    )
    parser.add_option(
        "-m",
        "--mom_credentials",
        dest="mom_credentials",
        type="string",
        default='MoM_site' if isProductionEnvironment() else 'MoM_site_test',
        help=
        "Name of credentials for MoM user/pass (see ~/.lofar/dbcredentials) [default=%default]"
    )
    parser.add_option('-V',
                      '--verbose',
                      dest='verbose',
                      action='store_true',
                      help='verbose logging')
    (options, args) = parser.parse_args()

    logging.basicConfig(
        format='%(asctime)s %(levelname)s %(message)s',
        level=logging.DEBUG if options.verbose else logging.INFO)

    logger.info('*****************************************')
    logger.info('Started ingest server on host %s', socket.gethostname())
    logger.info('*****************************************')

    logger.info("environment:")
    for k in sorted(os.environ):
        logger.info("%s=%s", k, os.environ[k])
    logger.info('*****************************************')

    ltacreds = dbcredentials.DBCredentials().get(options.lta_credentials)
    momcreds = dbcredentials.DBCredentials().get(options.mom_credentials)

    transfer_server = IngestTransferServer(
        exchange=options.exchange,
        broker=options.broker,
        mom_credentials=momcreds,
        lta_credentials=ltacreds,
        max_nr_of_parallel_jobs=options.max_nr_of_parallel_jobs)

    incoming_jobs_listener = BusListener(
        IngestJobsForTransferHandler, {'transfer_server': transfer_server},
        exchange=options.exchange,
        routing_key="%s.#" % DEFAULT_INGEST_JOB_FOR_TRANSFER_SUBJECT)

    with incoming_jobs_listener:
        transfer_server.run()
コード例 #7
0
ファイル: store.py プロジェクト: mfkiwl/lofar-1
            site_id = site['id']
            site_name = site['name']
            siteStats[site_name] = {'site_id': site_id}

            visits = self.executeQuery('''
                select *
                from scraper.site_scraper_last_directory_visit
                where site_id = %s
                and last_visit < %s
                order by last_visit asc
                ''', [site_id, before_timestamp],
                                       fetch=FETCH_ALL)

            siteStats[site_name]['queue_length'] = len(visits)
            if len(visits) > 0:
                siteStats[site_name]['least_recent_visited_dir_id'] = visits[
                    0]['dir_id']
                siteStats[site_name]['least_recent_visit'] = visits[0][
                    'last_visit']

        return siteStats


if __name__ == '__main__':
    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s',
                        level=logging.INFO)
    dbcreds = dbcredentials.DBCredentials().get('LTASO')
    with LTAStorageDb(dbcreds, True) as db:
        print(db.rootDirectoriesForSite(1))
        print(db.dir_id(1, 'rootDir_0'))