|
| _db |
| Reference to the database object to use for queries.
|
|
| _dry_run |
| If we're in dry run mode be less critical about globaltag states (just show warnings) but refuse to do any actual update.
|
|
| _valid_from |
| First valid run for the update.
|
|
| _mode |
| True if we want to allow payloads in the staging tag to be closed, for example when retiring a payload.
|
|
| _allow_closed |
| Do we allow closed iovs in staging?
|
|
| _fix_closed |
| Do we want to automatically open closed iovs?
|
|
| _staging_coverage |
| Dictionary mapping payload names in the staging tag to the coverage they have in the staging tag, filled by check_staging_tag.
|
|
| _operations |
| Operations for the update, filled by calculate_update()
|
|
| _running_info |
| Globaltag information for the running tag.
|
|
| _staging_info |
| Globaltag information for the staging tag.
|
|
| _running_payloads |
| Payloads currently in the running tag.
|
|
| _staging_payloads |
| Payloads currently in the staging tag.
|
|
| _staging_first_iovs |
| First iov per payload name in staging to not close and open the same revision.
|
|
Calculate and apply the necessary changes to update a running globaltag
For this we take two globaltags: the running one and a staging one
containing all the payloads and iovs to be added to the running tag. We then
1. Make sure they are in the correct states (RUNNING and VALIDATED)
2. Make sure all payloads in the running tag start and end (except for open
iovs) before the given ``valid_from`` run
3. Make sure the staging tag is overlap and gap free
4. Make all payloads in staging start at either 0,0 or on/after the given
``valid_from`` run
5. Make sure all payloads in staging are unbound unless the mode is
``ALLOW_CLOSED`` or ``FIX_CLOSED``. In case of ``FIX_CLOSED`` extend the
last iov to infinity
6. Close all payloads to be updated in the running tag that are open just
before the validity in the staging tag.
Definition at line 56 of file runningupdate.py.
def __init__ |
( |
|
self, |
|
|
|
db, |
|
|
|
running, |
|
|
|
staging, |
|
|
|
valid_from, |
|
|
|
mode, |
|
|
|
dry_run = False |
|
) |
| |
Initialize the class
Arguments:
db (ConditionsDB): reference to the database object
running (str): name of the running tag
staging (str): name of the staging tag
valid_from (tuple(int,int)): first valid exp,run
mode (RunningTagUpdateMode): the mode of the update
dry_run (bool): If true only check, don't do anything.
But be more lenient with globaltag state of staging.
Definition at line 76 of file runningupdate.py.
76 def __init__(self, db, running, staging, valid_from, mode, dry_run=False):
77 """Initialize the class
80 db (ConditionsDB): reference to the database object
81 running (str): name of the running tag
82 staging (str): name of the staging tag
83 valid_from (tuple(int,int)): first valid exp,run
84 mode (RunningTagUpdateMode): the mode of the update
85 dry_run (bool): If true only check, don't do anything.
86 But be more lenient with globaltag state of staging.
93 valid_from = tuple(map(int, valid_from))
94 if len(valid_from) != 2:
95 raise ValueError(
"exp,run number needs to have two elements")
96 except Exception
as e:
97 raise RunningTagUpdaterError(
"No first valid run for the update specified", error=str(e))
from e
101 self._dry_run = dry_run
103 self._valid_from = valid_from
109 self._allow_closed = mode
in (RunningTagUpdateMode.ALLOW_CLOSED, RunningTagUpdateMode.FIX_CLOSED,
110 RunningTagUpdateMode.FULL_REPLACEMENT)
112 self._fix_closed = (mode == RunningTagUpdateMode.FIX_CLOSED)
115 self._staging_coverage =
None
117 self._operations =
None
120 self._running_info = db.get_globalTagInfo(running)
122 self._staging_info = db.get_globalTagInfo(staging)
124 self._check_state(running, self._running_info,
"RUNNING")
125 self._check_state(staging, self._staging_info,
"VALIDATED")
129 self._running_payloads = db.get_all_iovs(self._running_info[
'name'])
131 self._staging_payloads = db.get_all_iovs(self._staging_info[
'name'])
133 self._staging_first_iovs = {}