Source code for pilot.info.configinfo

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Authors:
# - Alexey Anisenkov, anisyonk@cern.ch, 2018

"""
Pilot Config specific info provider mainly used to customize Queue, Site, etc data of Information Service
with details fetched directly from local Pilot instance configuration

:author: Alexey Anisenkov
:contact: anisyonk@cern.ch
:date: January 2018
"""

from ..util.config import config

import logging
logger = logging.getLogger(__name__)


[docs] class PilotConfigProvider(object): """ Info provider which is used to extract settings specific for local Pilot instance and overwrite general configuration used by Information Service """ config = None # Pilot Config instance
[docs] def __init__(self, conf=None): self.config = conf or config
[docs] def resolve_schedconf_sources(self): """ Resolve prioritized list of source names to be used for SchedConfig data load :return: prioritized list of source names """ # ## FIX ME LATER # an example of return data: # return ['AGIS', 'LOCAL', 'CVMFS'] return None # ## Not implemented yet
[docs] def resolve_queuedata(self, pandaqueue, **kwargs): """ Resolve queue data details :param pandaqueue: name of PandaQueue :return: dict of settings for given PandaQueue as a key """ import ast data = { 'maxwdir_broken': self.config.Pilot.maximum_input_file_sizes, # ## Config API is broken -- FIXME LATER #'container_type': 'singularity:pilot;docker:wrapper', # ## for testing #'container_options': '-B /cvmfs,/scratch,/etc/grid-security --contain', ## for testing #'catchall': "singularity_options='-B /cvmfs000' catchx=1", ## for testing 'es_stageout_gap': 601, # in seconds, for testing: FIXME LATER, } if hasattr(self.config.Information, 'acopytools'): ## FIX ME LATER: Config API should reimplemented/fixed later data['acopytools'] = ast.literal_eval(self.config.Information.acopytools) logger.info('queuedata: following keys will be overwritten by config values: %s' % data) return {pandaqueue: data}