Source code for glideinwms.factory.glideFactoryPidLib
# SPDX-FileCopyrightText: 2009 Fermi Research Alliance, LLC
# SPDX-License-Identifier: Apache-2.0
#
# Project:
# glideinWMS
#
# File Version:
#
# Description:
# Handle factory pids
#
# Author:
# Igor Sfiligoi
#
import os
import os.path
from glideinwms.lib import pidSupport
############################################################
[docs]
class FactoryPidSupport(pidSupport.PidSupport):
def __init__(self, startup_dir):
lock_file = os.path.join(startup_dir, "lock/glideinWMS.lock")
pidSupport.PidSupport.__init__(self, lock_file)
# raise an exception if not running
[docs]
def get_factory_pid(startup_dir):
pid_obj = FactoryPidSupport(startup_dir)
pid_obj.load_registered()
if not pid_obj.lock_in_place:
raise RuntimeError("Factory not running")
if pid_obj.mypid is None:
raise RuntimeError("Factory process not found")
return pid_obj.mypid
############################################################
[docs]
class EntryPidSupport(pidSupport.PidWParentSupport):
def __init__(self, startup_dir, entry_name):
lock_file = os.path.join(startup_dir, f"{startup_dir}/entry_{entry_name}/lock/factory.lock")
pidSupport.PidWParentSupport.__init__(self, lock_file)
# raise an exception if not running
[docs]
def get_entry_pid(startup_dir, entry_name):
pid_obj = EntryPidSupport(startup_dir, entry_name)
pid_obj.load_registered()
if not pid_obj.lock_in_place:
raise RuntimeError("Entry not running")
if pid_obj.mypid is None:
raise RuntimeError("Entry process not found")
if pid_obj.parent_pid is None:
raise RuntimeError("Entry has no parent???")
return (pid_obj.mypid, pid_obj.parent_pid)
############################################################
[docs]
class EntryGroupPidSupport(pidSupport.PidWParentSupport):
def __init__(self, startup_dir, group_name):
lock_file = os.path.join(startup_dir, f"{startup_dir}/lock/{group_name}.lock")
pidSupport.PidWParentSupport.__init__(self, lock_file)
# raise an exception if not running
[docs]
def get_entrygroup_pid(startup_dir, group_name):
pid_obj = EntryGroupPidSupport(startup_dir, group_name)
pid_obj.load_registered()
if not pid_obj.lock_in_place:
raise RuntimeError("Entry Group %s not running" % group_name)
if pid_obj.mypid is None:
raise RuntimeError("Entry Group %s process not found" % group_name)
if pid_obj.parent_pid is None:
raise RuntimeError("Entry Group %s has no parent" % group_name)