Bundle Management Requirements¶
- Updated - timestamp indicating when record was created/changed
- Storage - long or short
- Run - boolean, true if a collector should be currently running by invoker
- Udp - boolean, true if udp messages should be sent from collector
- Writable - boolean, true if this bundle may have a collector
- Hosts - computer(s) on which the collect can be run
- Ifb_group - the group which 'owns' and may edit this record
Each bundle has an unordered list of devices associated with it
Bundle modification log¶
Every bundle modification transaction must be recorded in the database with the record containing:
- username of the person made the modification
- optional comment - why the change was made
- new state of the bundle, including all the attributes
- new list of devices
There should be a way to browse through the list of modifications of the bundle, e.g. a table with clickable row per transaction
Users and Permissions¶
There are 3 types of users
- Unauthenticated user (or user) - can read any information about any bundle, but can not make any modifications
- Authenticated admin - a designated representative of the experiment who can modify only non-collectable bundles, created for one of the groups the admin belongs to (see below)
- Superuser (Root) - Superuser can modify any bundle, including collectable bundles
Each admin belongs to one or more groups. Group maps to an experiment (e.g. Minerva, NOvA, MINOS, etc.) or it can be some other group. Every bundle must belong to a group.
Superuser belongs to a default group called 'root', but can create/alter records for any group.
When a bundle is created by an admin through the GUI, it is associated with one of the groups the admin belongs to (GUI displays a select list of groups). Once the bundle is created, its group association can not be modified. Only admins who belong to the same group can modify this bundle.
Bundles create by a superuser for the group 'root' can only be modified by a superuser.
(An option to consider: have a "superuser" group) <-- became the group 'root'
groups = Minerva NOvA, MINOS
Minerva = vittone
NOvA = vittone podstvkv
MINOS = podstvkv
root = swhite ivm
- groups - defines all groups to which an normal administrator can belong
- each group is defined with its list of admins
- The superusers are defined to the root group
Note: admin is no longer used in the config file (if your in a group, your an admin)
New PostgreSQL Tables¶
The tables snapshot_bundles and snapshot_bundle_variables have been added. The latest record(s) show the current state of bundles and bundle_variables showing a complete history at all times.snapshot_bundles contains all data defined for bundles plus
- snapshot_id - sequence number and unique key for the table
- updated_by - who created/updated the record
- delete - boolean flag that is set to true if the record was deleted from bundles.
snapshot_bundle_variables contains all data in bundle_variables plus snapshot_id.