Source code for glideinwms.frontend.tools.lib.frontenvparse

# SPDX-FileCopyrightText: 2009 Fermi Research Alliance, LLC
# SPDX-License-Identifier: Apache-2.0

# Project:
#   glideinWMS
#
# Description:
#   This module provide common functions needed to parse
#   the arguments used by the frontend environment setting
#   tools
#
# Author:
#   Igor Sfiligoi
#

import os

from glideinwms.frontend import glideinFrontendConfig


[docs] class FEConfig:
[docs] def config_optparse(self, argparser): """ Configure a optparse.OptionParser object """ argparser.add_option( "-d", "--work-dir", dest="work_dir", help="Frontend work dir (default: $FE_WORK_DIR)", metavar="DIR", default=os.environ.get("FE_WORK_DIR"), ) argparser.add_option( "-g", "--group-name", dest="group_name", help="Frontend group name (default: $FE_GROUP_NAME)", metavar="GROUP_NAME", default=os.environ.get("FE_GROUP_NAME"), )
[docs] def load_frontend_config(self, options): """ Given the reulst of a optparse.OptionParser.parge_args call extract the relevant info, load the frontend config and return a glideinFrontendConfig.ElementMergedDescript object """ self.options = options self.validate_options() self.elementDescript = glideinFrontendConfig.ElementMergedDescript( self.options.work_dir, self.options.group_name ) return self.elementDescript
[docs] def set_environment(self, wpilots=True): """ Set the environment to mimic what happens in the Frontend. If wpilots is True, also add the pilot DNs in the mapfile. Note: Assumes load_frontend_config() was already called. """ self.wpilots = wpilots os.environ["CONDOR_CONFIG"] = self.elementDescript.frontend_data["CondorConfig"] if self.wpilots: os.environ["_CONDOR_CERTIFICATE_MAPFILE"] = self.elementDescript.element_data["MapFileWPilots"] else: os.environ["_CONDOR_CERTIFICATE_MAPFILE"] = self.elementDescript.element_data["MapFile"] os.environ["X509_USER_PROXY"] = self.elementDescript.frontend_data["ClassAdProxy"] os.environ["FE_WORK_DIR"] = self.options.work_dir os.environ["FE_GROUP_NAME"] = self.options.group_name
# INTERNAL
[docs] def validate_options(self): if self.options.work_dir is None: raise ValueError("FE work dir not specified (neither -d nor FE_WORK_DIR used), aborting") if not os.path.isfile(os.path.join(self.options.work_dir, "frontend.descript")): raise ValueError("%s is not a valid FE work dir" % self.options.work_dir) if self.options.group_name is None: raise ValueError("FE group name not specified (neither -g nor FE_GROUP_NAME used), aborting") if not os.path.isfile(os.path.join(self.options.work_dir, "group_%s/group.descript" % self.options.group_name)): raise ValueError( "%s is not a valid FE group name (no valid group_%s subdir found)" % (self.options.group_name, self.options.group_name) )