Belle II Software  release-05-02-19
RunningTagUpdater Class Reference

Public Member Functions

def __init__ (self, db, running, staging, valid_from, mode)
 
def calculate_update (self)
 
def apply_update (self)
 

Private Member Functions

def _check_state (self, tagname, taginfo, required)
 
def _check_all (self)
 
def _check_running_tag (self, tagname, payloads)
 
def _check_staging_tag_simple (self, tagname, payloads)
 
def _check_staging_tag (self, tagname, payloads)
 

Private Attributes

 _db
 Reference to the database object to use for queries.
 
 _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 retireing 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.
 

Detailed Description

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 47 of file runningupdate.py.

Member Function Documentation

◆ _check_all()

def _check_all (   self)
private
Run all necessary checks on all globaltags

Definition at line 132 of file runningupdate.py.

132  def _check_all(self):
133  """Run all necessary checks on all globaltags"""
134  # And check both tags
135  self._check_running_tag(self._running_info['name'], self._running_payloads)
136  # and check the staging tag
137  if self._mode == RunningTagUpdateMode.SIMPLE:
138  # the simple mode is so much simpler that a different method is best
139  self._check_staging_tag_simple(self._staging_info['name'], self._staging_payloads)
140  else:
141  # all other modes are covered here
142  self._check_staging_tag(self._staging_info['name'], self._staging_payloads)
143 

◆ _check_running_tag()

def _check_running_tag (   self,
  tagname,
  payloads 
)
private
Check that all payloads in the running tag start and end (or are open)
before the first valid run for the update

Definition at line 144 of file runningupdate.py.

◆ _check_staging_tag()

def _check_staging_tag (   self,
  tagname,
  payloads 
)
private
Check if the staging tag is
    1. overlap free
    2. gap free
    3. all payloads are open (unless the mode allows closed payloads)
    4. all payloads start at 0,0 or after the first valid run for the update

Arguments:
    tagname (str): Name of the globaltag for error messages
    payloads (list(conditions_db.PayloadInformation)): List of payloads in the tag

Definition at line 200 of file runningupdate.py.

◆ _check_staging_tag_simple()

def _check_staging_tag_simple (   self,
  tagname,
  payloads 
)
private
Extra simple case where we want to have a very simple staging tag just
consisting of (0,0,-1,-1) iovs, one per payload

Definition at line 171 of file runningupdate.py.

◆ _check_state()

def _check_state (   self,
  tagname,
  taginfo,
  required 
)
private
Check the state of a globaltag given the tag information object returned by the database

1) that it's found and
2) that it has the same state as in ``required``

Parameters:
    tagname: name of the tag for error messages
    taginfo: tag information returned from the database, None if the tag could not be found
    required: required state for the tag.

Raises:
    an `RunningTagUpdaterError` if any condition is not fulfilled

Definition at line 112 of file runningupdate.py.

◆ apply_update()

def apply_update (   self)
Apply a previously calculated update to the globaltag

Warning:
    This action cannot be undone, only call it after checking the
    operations returned by the calculation of the update

Definition at line 346 of file runningupdate.py.

◆ calculate_update()

def calculate_update (   self)
Calculate the operations needed to merge staging into the running base tag

Definition at line 297 of file runningupdate.py.


The documentation for this class was generated from the following file: