Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions python/daqconf/get_session_env_var.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import conffwk
import confmodel_dal
import sys

def get_session_env_var(oksfile, session_name, requested_env_var_name):
"""Script to get the value of an environment variable in the specified Session of the
specified OKS database file"""
db = conffwk.Configuration("oksconflibs:" + oksfile)
if session_name == "":
print(f"Error: the session name needs to be specified", file=sys.stderr)
return
else:
try:
session = db.get_dal("Session", session_name)
except:
print(f"Error: could not find Session \"{session_name}\" in file \"{oksfile}\"", file=sys.stderr)
return

schemafiles = [
"schema/confmodel/dunedaq.schema.xml"
]
dal = conffwk.dal.module("dal", schemafiles)

# Check if the requested env var is defined for the specified OKS Session
existing_env_var = None
for entry in session.environment:
if isinstance(entry, dal.VariableSet):
for subentry in entry.contains:
if subentry.name == requested_env_var_name:
existing_env_var = subentry
break
else:
if entry.name == requested_env_var_name:
existing_env_var = entry

if existing_env_var is not None:
break

# Return the value, or complain and return None if the env var was not found
if existing_env_var is None:
print(f"Error: could not find env var \"{requested_env_var_name}\" in Session \"{session_name}\"", file=sys.stderr)
return
else:
value = existing_env_var.value
return value
8 changes: 4 additions & 4 deletions python/daqconf/set_session_env_var.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
import conffwk
import confmodel_dal
import sys

def set_session_env_var(oksfile, session_name, requested_env_var_name, requested_env_var_value, overwrite=True):
"""Script to set the value of an environment variable in the specified Session of the
specified OKS database file"""
db = conffwk.Configuration("oksconflibs:" + oksfile)
if session_name == "":
print(f"Error: the session name needs to be specified")
print(f"Error: the session name needs to be specified", file=sys.stderr)
return
else:
try:
session = db.get_dal("Session", session_name)
except:
print(f"Error could not find Session {session_name} in file {oksfile}")
print(f"Error: could not find Session \"{session_name}\" in file \"{oksfile}\"", file=sys.stderr)
return

schemafiles = [
Expand All @@ -27,12 +28,10 @@ def set_session_env_var(oksfile, session_name, requested_env_var_name, requested
for subentry in entry.contains:
if subentry.name == requested_env_var_name:
existing_env_var = subentry
existing_env_var.value = requested_env_var_value
break
else:
if entry.name == requested_env_var_name:
existing_env_var = entry
existing_env_var.value = requested_env_var_value

if existing_env_var is not None:
break
Expand All @@ -43,6 +42,7 @@ def set_session_env_var(oksfile, session_name, requested_env_var_name, requested

# if we found an existing env var, update the DB with the new value
if existing_env_var is not None:
existing_env_var.value = requested_env_var_value
db.update_dal(existing_env_var)

# otherwise, create a new env var and assign it to the OKS Session
Expand Down
17 changes: 17 additions & 0 deletions scripts/daqconf_get_session_env_var
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/env python3
import click
from daqconf.get_session_env_var import get_session_env_var

@click.command()
@click.argument('oks_session_name')
@click.argument('oksfile')
@click.argument('env_var_name', required=True, nargs=1)
def daqconf_get_session_env_var(oksfile, oks_session_name, env_var_name):
"""Script to get the value of an environment variable in the specified Session of the
specified OKS database file. If the env var does not exist, '<None>' is returned."""
value = get_session_env_var(oksfile, oks_session_name, env_var_name)
if value:
print(value)

if __name__ == '__main__':
daqconf_get_session_env_var()