예제 #1
0
    def __init__(self, shockurl, arasturl, config, threads, queue, kill_queue,
                 job_list, ctrl_conf):
        self.parser = SafeConfigParser()
        self.parser.read(config)
        self.job_list = job_list
        # Load plugins
        self.pmanager = ModuleManager(threads, kill_queue, job_list)

        # Set up environment
        self.shockurl = shockurl
        self.arasturl = arasturl
        self.datapath = self.parser.get('compute', 'datapath')
        if queue:
            self.queue = queue
            print('Using queue:{}'.format(self.queue))
        else:
            self.queue = self.parser.get('rabbitmq', 'default_routing_key')
        self.min_free_space = float(
            self.parser.get('compute', 'min_free_space'))
        m = ctrl_conf['meta']
        a = ctrl_conf['assembly']

        self.metadata = meta.MetadataConnection(arasturl, int(a['mongo_port']),
                                                m['mongo.db'],
                                                m['mongo.collection'],
                                                m['mongo.collection.auth'])
        self.gc_lock = multiprocessing.Lock()
예제 #2
0
def start(config_file,
          mongo_host=None,
          mongo_port=None,
          rabbit_host=None,
          rabbit_port=None):
    global parser, metadata
    logging.basicConfig(level=logging.DEBUG)

    parser = SafeConfigParser()
    parser.read(config_file)
    metadata = meta.MetadataConnection(
        parser.get('assembly', 'mongo_host'),
        int(parser.get('assembly', 'mongo_port')),
        parser.get('meta', 'mongo.db'), parser.get('meta', 'mongo.collection'),
        parser.get('meta', 'mongo.collection.auth'))

    ##### CherryPy ######
    conf = {
        'global': {
            'server.socket_host': '0.0.0.0',
            'server.socket_port': 8000,
            'log.screen': True,
            'ar_shock_url': parser.get('shock', 'host'),
        },
    }

    static_root = parser.get('web_serve', 'root')

    root = Root()
    root.user = UserResource()
    root.module = ModuleResource()
    root.shock = ShockResource({"shockurl": get_upload_url()})
    root.static = StaticResource(static_root)

    #### Admin Routes ####
    rmq_host = parser.get('assembly', 'rabbitmq_host')
    rmq_mp = parser.get('rabbitmq', 'management_port')
    rmq_user = parser.get('rabbitmq', 'management_user')
    rmq_pass = parser.get('rabbitmq', 'management_pass')
    root.admin = SystemResource(rmq_host, rmq_mp, rmq_user, rmq_pass)

    #cherrypy.request.hooks.attach('before_request_body', authenticate_request)
    cherrypy.request.hooks.attach('before_finalize', CORS)
    cherrypy.quickstart(root, '/', conf)
예제 #3
0
    def __init__(self, shockurl, rmq_host, rmq_port, mongo_host, mongo_port,
                 config, threads, queues, kill_list, kill_list_lock, job_list,
                 job_list_lock, ctrl_conf, datapath, binpath, modulebin):
        self.parser = SafeConfigParser()
        self.parser.read(config)
        self.kill_list = kill_list
        self.kill_list_lock = kill_list_lock
        self.job_list = job_list
        self.job_list_lock = job_list_lock
        # Load plugins
        self.threads = threads
        self.binpath = binpath
        self.modulebin = modulebin
        self.pmanager = ModuleManager(threads, kill_list, kill_list_lock,
                                      job_list, binpath, modulebin)

        # Set up environment
        self.shockurl = shockurl
        self.datapath = datapath
        self.rmq_host = rmq_host
        self.rmq_port = rmq_port
        self.mongo_host = mongo_host
        self.mongo_port = mongo_port
        self.queues = queues
        self.min_free_space = float(
            self.parser.get('compute', 'min_free_space'))
        self.data_expiration_days = float(
            self.parser.get('compute', 'data_expiration_days'))
        m = ctrl_conf['meta']
        a = ctrl_conf['assembly']

        collections = {
            'jobs': m.get('mongo.collection', 'jobs'),
            'auth': m.get('mongo.collection.auth', 'auth'),
            'data': m.get('mongo.collection.data', 'data'),
            'running': m.get('mongo.collection.running', 'running_jobs')
        }

        ###### TODO Use REST API
        self.metadata = meta.MetadataConnection(self.mongo_host,
                                                self.mongo_port, m['mongo.db'],
                                                collections)
        self.gc_lock = multiprocessing.Lock()
예제 #4
0
    def __init__(self, os_user, os_pass, os_tenant, os_auth_url, config_file):
        super(CloudMonitor, self).__init__(os_user,
                                           os_pass,
                                           os_tenant,
                                           os_auth_url,
                                           service_type='compute',
                                           insecure=True)

        p = SafeConfigParser()
        p.read(config_file)
        self.default_flavor = p.get('cloud', 'flavor.default')
        self.default_keypair = p.get('cloud', 'keypair.default')
        self.default_image = p.get('cloud', 'image.kbase_compute')
        self.compute_init = p.get('cloud', 'compute_init')
        self.secgroup = p.get('cloud', 'sec_group')
        self.active_nodes = p.get('cloud', 'active.collection')
        self.all_nodes = p.get('cloud', 'history.collection')
        self.mongo = p.get('meta', 'mongo.host')
        self.metadata = metadata.MetadataConnection(config_file, self.mongo)
예제 #5
0
def start(config_file,
          shock_url=None,
          mongo_host=None,
          mongo_port=None,
          rabbit_host=None,
          rabbit_port=None):

    global parser, metadata, rjobmon
    # logging.basicConfig(level=logging.DEBUG)

    parser = SafeConfigParser()
    parser.read(config_file)
    collections = {
        'jobs': parser.get('meta', 'mongo.collection'),
        'auth': parser.get('meta', 'mongo.collection.auth'),
        'data': parser.get('meta', 'mongo.collection.data'),
        'running': parser.get('meta', 'mongo.collection.running')
    }

    # Config precedence: args > config file

    if shock_url:
        parser.set('shock', 'host', shock.verify_shock_url(shock_url))
    if mongo_host:
        parser.set('assembly', 'mongo_host', mongo_host)
    if mongo_port:
        parser.set('assembly', 'mongo_port', str(mongo_port))
    if rabbit_host:
        parser.set('assembly', 'rabbitmq_host', rabbit_host)
    if rabbit_port:
        parser.set('assembly', 'rabbitmq_port', str(rabbit_port))

    metadata = meta.MetadataConnection(
        parser.get('assembly', 'mongo_host'),
        int(parser.get('assembly', 'mongo_port')),
        parser.get('meta', 'mongo.db'), collections)

    ##### Running Job Monitor #####
    rjobmon = RunningJobsMonitor(metadata)
    cherrypy.process.plugins.Monitor(
        cherrypy.engine,
        rjobmon.purge,
        frequency=int(parser.get('monitor', 'running_job_freq'))).subscribe()

    ##### CherryPy ######
    conf = {
        'global': {
            'server.socket_host': '0.0.0.0',
            'server.socket_port': int(parser.get('assembly', 'cherrypy_port')),
            'log.screen': True,
            'ar_shock_url': parser.get('shock', 'host'),
            'environment': 'production'
        },
    }

    static_root = parser.get('web_serve', 'root')

    root = Root()
    root.user = UserResource()
    root.module = ModuleResource()
    root.recipe = RecipeResource()
    root.shock = ShockResource({"shockurl": get_upload_url()})
    root.static = StaticResource(static_root)

    #### Admin Routes ####
    rmq_host = parser.get('assembly', 'rabbitmq_host')
    rmq_mp = parser.get('rabbitmq', 'management_port')
    rmq_user = parser.get('rabbitmq', 'management_user')
    rmq_pass = parser.get('rabbitmq', 'management_pass')
    root.admin = SystemResource(rmq_host, rmq_mp, rmq_user, rmq_pass)

    cherrypy.request.hooks.attach('before_finalize', CORS)
    cherrypy.quickstart(root, '/', conf)