database.model

Admin Database Tables

accre.database.model.ACCOUNTS = Table('accounts', MetaData(), Column('name', String(), table=<accounts>, primary_key=True, nullable=False), Column('department', String(), ForeignKey('departments.name'), table=<accounts>, nullable=False), Column('division', String(), ForeignKey('departments.division'), table=<accounts>, nullable=False), Column('organization', String(), ForeignKey('departments.organization'), table=<accounts>, nullable=False), Column('scheduler_account', Boolean(), table=<accounts>, nullable=False), Column('fairshare', Integer(), table=<accounts>), Column('max_cpu', Integer(), table=<accounts>), Column('max_mem', String(), table=<accounts>), Column('max_runmins', Integer(), table=<accounts>), Column('qos', String(), table=<accounts>), Column('active', Boolean(), table=<accounts>, nullable=False), Column('join_date', DateTime(), table=<accounts>), schema=None)

(Parent) ACCOUNTS are sets of groups that share resources in slurm

accre.database.model.ACCOUNTS_NON_GPU_PARTITION_HISTORY_USAGE = Table('accounts_non_gpu_partition_history_usage', MetaData(), Column('account', String(), ForeignKey('accounts.name'), table=<accounts_non_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('partitions.name'), table=<accounts_non_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('data_time_tag', String(), table=<accounts_non_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('n_total_jobs', Integer(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), Column('n_finished_jobs', Integer(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), Column('medium_waiting_time', Float(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), Column('average_waiting_time', Float(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), Column('total_used_cores', Integer(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), Column('fairshare_util_rate', Float(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), Column('total_computation_time', Float(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), Column('resource_usage_per_users', JSON(), table=<accounts_non_gpu_partition_history_usage>, nullable=False), schema=None)

ACCOUNTS_NON_GPU_PARTITION_USAGE tracks fairshare usage in terms of history usage of (Parent) ACCOUNTS on non-accelerated slurm PARTITIONS

accre.database.model.ACCOUNTS_NON_GPU_PARTITION_RECENT_USAGE = Table('accounts_non_gpu_partition_recent_usage', MetaData(), Column('account', String(), ForeignKey('accounts.name'), table=<accounts_non_gpu_partition_recent_usage>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('partitions.name'), table=<accounts_non_gpu_partition_recent_usage>, primary_key=True, nullable=False), Column('data_time', DateTime(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('n_pending_jobs', Integer(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('n_running_jobs', Integer(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('n_finished_jobs', Integer(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('medium_waiting_time', Float(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('average_waiting_time', Float(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('total_used_cores', Integer(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('fairshare_util_rate', Float(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('total_computation_time', Float(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), Column('resource_usage_per_users', JSON(), table=<accounts_non_gpu_partition_recent_usage>, nullable=False), schema=None)

ACCOUNTS_NON_GPU_PARTITION_USAGE tracks fairshare recent usage of (Parent) ACCOUNTS on non-accelerated slurm PARTITIONS

accre.database.model.ACCOUNTS_PIS = Table('accounts_pis', MetaData(), Column('name', String(), ForeignKey('accounts.name'), table=<accounts_pis>, primary_key=True, nullable=False), Column('pi', String(), ForeignKey('pis.vunetid'), table=<accounts_pis>, primary_key=True, nullable=False), schema=None)

ACCOUNTS_PIS stores associations of which PIS are (co-)owners of various accounts

accre.database.model.ACCOUNT_LOGS = Table('accounts_logs', MetaData(), Column('name', String(), ForeignKey('accounts.name'), table=<accounts_logs>, primary_key=True, nullable=False), Column('date', DateTime(), table=<accounts_logs>, primary_key=True, nullable=False), Column('comment', String(), table=<accounts_logs>, nullable=False), schema=None)

ACCOUNT_LOGS stores actions performed on ACCOUNTS

accre.database.model.ACC_PARTITIONS = Table('acc_partitions', MetaData(), Column('name', String(), table=<acc_partitions>, primary_key=True, nullable=False), schema=None)

ACC_PARTITIONS are special slurm partitions for GPU accelerated hardware

accre.database.model.CUSTOM_SERVERS = Table('custom_servers', MetaData(), Column('hostname', String(), table=<custom_servers>, primary_key=True, nullable=False), Column('servertype', String(), ForeignKey('custom_server_types.name'), table=<custom_servers>, nullable=False), Column('group', String(), ForeignKey('groups.name'), table=<custom_servers>, nullable=False), Column('virtual', Boolean(), table=<custom_servers>, nullable=False), Column('opendcim_deviceid', Integer(), table=<custom_servers>), Column('active', Boolean(), table=<custom_servers>, nullable=False), schema=None)

CUSTOM_SERVERS are special servers purchased by a group and managed by ACCRE

accre.database.model.CUSTOM_SERVER_TYPES = Table('custom_server_types', MetaData(), Column('name', String(), table=<custom_server_types>, primary_key=True, nullable=False), Column('description', String(), table=<custom_server_types>, nullable=False), schema=None)

CUSTOM_SERVER_TYPES contains the general types of custom servers that groups can purchase (gateways, fileservers, etc…) and descriptions of each type

accre.database.model.DEPARTMENTS = Table('departments', MetaData(), Column('name', String(), table=<departments>, primary_key=True, nullable=False), Column('formatted_name', String(), table=<departments>, nullable=False), Column('division', String(), ForeignKey('divisions.name'), table=<departments>, primary_key=True, nullable=False), Column('organization', String(), ForeignKey('divisions.organization'), table=<departments>, primary_key=True, nullable=False), schema=None)

DEPARTMENTS are subgroups of DIVISIONS, usually academic departments

accre.database.model.DIVISIONS = Table('divisions', MetaData(), Column('name', String(), table=<divisions>, primary_key=True, nullable=False), Column('formatted_name', String(), table=<divisions>, nullable=False), Column('organization', String(), ForeignKey('organizations.name'), table=<divisions>, primary_key=True, nullable=False), schema=None)

DIVISIONS are subgroups within ORGANIZATIONS, for VU typically different colleges (i.e. arts & science, engineering, etc…)

accre.database.model.EVENTBRITE_ATTENDEES = Table('eventbrite_attendees', MetaData(), Column('email', String(), table=<eventbrite_attendees>, primary_key=True, nullable=False), Column('event_id', String(), ForeignKey('eventbrite_events.eb_id'), table=<eventbrite_attendees>, primary_key=True, nullable=False), Column('first_name', String(), table=<eventbrite_attendees>, nullable=False), Column('last_name', String(), table=<eventbrite_attendees>, nullable=False), Column('checked_in', Boolean(), table=<eventbrite_attendees>, nullable=False), schema=None)

EVENTBRITE_ATTENDEES is deprecated and no longer tracked

accre.database.model.EVENTBRITE_EVENTS = Table('eventbrite_events', MetaData(), Column('eb_id', String(), table=<eventbrite_events>, primary_key=True, nullable=False), Column('name', String(), table=<eventbrite_events>, nullable=False), Column('series_id', String(), table=<eventbrite_events>), Column('start', DateTime(), table=<eventbrite_events>), schema=None)

EVENTBRITE_EVENTS is deprecated and no longer tracked

accre.database.model.GPFS_FILESETS = Table('gpfs_filesets', MetaData(), Column('filesystem', String(), table=<gpfs_filesets>, primary_key=True, nullable=False), Column('name', String(), table=<gpfs_filesets>, primary_key=True, nullable=False), Column('fileset', String(), table=<gpfs_filesets>, primary_key=True, nullable=False), Column('block_quota', BigInteger(), table=<gpfs_filesets>, nullable=False), Column('block_limit', BigInteger(), table=<gpfs_filesets>, nullable=False), Column('file_quota', BigInteger(), table=<gpfs_filesets>, nullable=False), Column('file_limit', BigInteger(), table=<gpfs_filesets>, nullable=False), Column('gid', Integer(), table=<gpfs_filesets>, nullable=False), Column('path', String(), table=<gpfs_filesets>, nullable=False), Column('user_path', String(), table=<gpfs_filesets>, nullable=False), Column('active', Boolean(), table=<gpfs_filesets>, nullable=False), Column('join_date', DateTime(), table=<gpfs_filesets>), schema=None)

GPFS_FILESETS tracks the limits and ownership of filesets in the GPFS storage system

accre.database.model.GPFS_LONG_WAITERS = Table('gpfs_long_waiters', MetaData(), Column('hostname', String(), table=<gpfs_long_waiters>, primary_key=True, nullable=False), Column('last_check', DateTime(), table=<gpfs_long_waiters>, nullable=False), Column('length', Float(), table=<gpfs_long_waiters>), Column('reason', String(), table=<gpfs_long_waiters>), Column('node', String(), table=<gpfs_long_waiters>), schema=None)

GPFS_LONG_WAITERS stores information collected from nodes on currently long running waiters

accre.database.model.GPFS_QUOTA_CONTACTS = Table('quota_contacts', MetaData(), Column('entity', String(), table=<quota_contacts>, primary_key=True, nullable=False), Column('etype', String(), table=<quota_contacts>, primary_key=True, nullable=False), Column('email', String(), table=<quota_contacts>, primary_key=True, nullable=False), schema=None)

GPFS_QUOTA_CONTACTS contains alternate (to the PI) email addresses for gpfs resource owners

accre.database.model.GPFS_USAGE = Table('gpfs_usage', MetaData(), Column('filesystem', String(), table=<gpfs_usage>, primary_key=True, nullable=False), Column('name', String(), table=<gpfs_usage>, primary_key=True, nullable=False), Column('fileset', String(), table=<gpfs_usage>, primary_key=True, nullable=False), Column('last_check', DateTime(), table=<gpfs_usage>, nullable=False), Column('type', String(), table=<gpfs_usage>, nullable=False), Column('block_usage', BigInteger(), table=<gpfs_usage>, nullable=False), Column('block_quota', BigInteger(), table=<gpfs_usage>, nullable=False), Column('block_limit', BigInteger(), table=<gpfs_usage>, nullable=False), Column('block_grace', String(), table=<gpfs_usage>, nullable=False), Column('file_usage', BigInteger(), table=<gpfs_usage>, nullable=False), Column('file_quota', BigInteger(), table=<gpfs_usage>, nullable=False), Column('file_limit', BigInteger(), table=<gpfs_usage>, nullable=False), Column('file_grace', String(), table=<gpfs_usage>, nullable=False), schema=None)

GPFS_USAGE tracks recent usage on gpfs filesets

accre.database.model.GROUPS = Table('groups', MetaData(), Column('name', String(), table=<groups>, primary_key=True, nullable=False), Column('group_id', Integer(), table=<groups>, nullable=False), Column('formatted_name', String(), table=<groups>, nullable=False), Column('pi', String(), ForeignKey('pis.vunetid'), table=<groups>, nullable=False), Column('account', String(), ForeignKey('accounts.name'), table=<groups>, nullable=False), Column('active', Boolean(), table=<groups>, nullable=False), Column('posix', Boolean(), table=<groups>, nullable=False), Column('scheduler', Boolean(), table=<groups>, nullable=False), Column('fairshare', Integer(), table=<groups>, nullable=False), Column('qos', String(), table=<groups>, nullable=False), Column('max_cpu', Integer(), table=<groups>), Column('max_mem', String(), table=<groups>), Column('max_runmins', Integer(), table=<groups>), Column('join_date', DateTime(), table=<groups>), Column('user_primary', Boolean(), table=<groups>), schema=None)

GROUPS represent posix groups and/or slurm groups on the cluster, and are the primary way in which access to resources is managed for ACCRE clients

accre.database.model.GROUPS_ACC_PARTITIONS = Table('groups_acc_partitions', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_acc_partitions>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('acc_partitions.name'), table=<groups_acc_partitions>, primary_key=True, nullable=False), Column('gpus', Integer(), table=<groups_acc_partitions>), schema=None)

GROUPS_ACC_PARTITIONS are associations between GROUPS and ACC_PARTITIONS that they should have access to

accre.database.model.GROUPS_AFFILIATES = Table('groups_affiliates', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_affiliates>, primary_key=True, nullable=False), Column('affiliate', String(), ForeignKey('groups.name'), table=<groups_affiliates>, primary_key=True, nullable=False), schema=None)

GROUPS_AFFILIATES are assoications between GROUPS and additional GROUPS that all users of the primary group should always have access to

accre.database.model.GROUPS_GPU_PARTITION_HISTORY_USAGE = Table('groups_gpu_partition_history_usage', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('acc_partitions.name'), table=<groups_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('data_time_tag', String(), table=<groups_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('n_total_jobs', Integer(), table=<groups_gpu_partition_history_usage>, nullable=False), Column('n_finished_jobs', Integer(), table=<groups_gpu_partition_history_usage>, nullable=False), Column('medium_waiting_time', Float(), table=<groups_gpu_partition_history_usage>, nullable=False), Column('average_waiting_time', Float(), table=<groups_gpu_partition_history_usage>, nullable=False), Column('total_used_gpus', Integer(), table=<groups_gpu_partition_history_usage>, nullable=False), Column('gpu_util_rate', Float(), table=<groups_gpu_partition_history_usage>, nullable=False), Column('total_computation_time', Float(), table=<groups_gpu_partition_history_usage>, nullable=False), Column('resource_usage_per_users', JSON(), table=<groups_gpu_partition_history_usage>, nullable=False), schema=None)

GROUPS_GPU_PARTITION_USAGE tracks fairshare history usage of GROUPS on accelerated slurm ACC_PARTITIONS

accre.database.model.GROUPS_GPU_PARTITION_RECENT_USAGE = Table('groups_gpu_partition_recent_usage', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_gpu_partition_recent_usage>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('acc_partitions.name'), table=<groups_gpu_partition_recent_usage>, primary_key=True, nullable=False), Column('data_time', DateTime(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('n_pending_jobs', Integer(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('n_running_jobs', Integer(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('n_finished_jobs', Integer(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('medium_waiting_time', Float(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('average_waiting_time', Float(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('total_used_gpus', Integer(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('gpu_util_rate', Float(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('total_computation_time', Float(), table=<groups_gpu_partition_recent_usage>, nullable=False), Column('resource_usage_per_users', JSON(), table=<groups_gpu_partition_recent_usage>, nullable=False), schema=None)

GROUPS_GPU_PARTITION_USAGE tracks fairshare recent usage of GROUPS on accelerated slurm ACC_PARTITIONS

accre.database.model.GROUPS_MANAGERS = Table('groups_managers', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_managers>, primary_key=True, nullable=False), Column('manager', String(), ForeignKey('pis.vunetid'), table=<groups_managers>, primary_key=True, nullable=False, onupdate=ColumnDefault('RESTRICT')), schema=None)

GROUPS_MANAGERS associates groups with additional trusted PIS (also called delegates) authorized to make administrative decisions on behalf of the group owner

accre.database.model.GROUPS_NON_GPU_PARTITION_HISTORY_USAGE = Table('groups_non_gpu_partition_history_usage', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_non_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('partitions.name'), table=<groups_non_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('data_time_tag', String(), table=<groups_non_gpu_partition_history_usage>, primary_key=True, nullable=False), Column('n_total_jobs', Integer(), table=<groups_non_gpu_partition_history_usage>, nullable=False), Column('n_finished_jobs', Integer(), table=<groups_non_gpu_partition_history_usage>, nullable=False), Column('medium_waiting_time', Float(), table=<groups_non_gpu_partition_history_usage>, nullable=False), Column('average_waiting_time', Float(), table=<groups_non_gpu_partition_history_usage>, nullable=False), Column('total_used_cores', Integer(), table=<groups_non_gpu_partition_history_usage>, nullable=False), Column('total_computation_time', Float(), table=<groups_non_gpu_partition_history_usage>, nullable=False), Column('resource_usage_per_users', JSON(), table=<groups_non_gpu_partition_history_usage>, nullable=False), schema=None)

GROUPS_NON_GPU_PARTITION_USAGE tracks fairshare history usage of GROUPS on non-accelerated slurm PARTITIONS

accre.database.model.GROUPS_NON_GPU_PARTITION_RECENT_USAGE = Table('groups_non_gpu_partition_recent_usage', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_non_gpu_partition_recent_usage>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('partitions.name'), table=<groups_non_gpu_partition_recent_usage>, primary_key=True, nullable=False), Column('data_time', DateTime(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('n_pending_jobs', Integer(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('n_running_jobs', Integer(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('n_finished_jobs', Integer(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('medium_waiting_time', Float(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('average_waiting_time', Float(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('total_used_cores', Integer(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('total_computation_time', Float(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), Column('resource_usage_per_users', JSON(), table=<groups_non_gpu_partition_recent_usage>, nullable=False), schema=None)

GROUPS_NON_GPU_PARTITION_USAGE tracks fairshare recent usage of GROUPS on non-accelerated slurm PARTITIONS

accre.database.model.GROUPS_PARTITIONS = Table('groups_partitions', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<groups_partitions>, primary_key=True, nullable=False), Column('partition', String(), ForeignKey('partitions.name'), table=<groups_partitions>, primary_key=True, nullable=False), Column('fairshare', Integer(), table=<groups_partitions>), Column('qos', String(), table=<groups_partitions>), Column('max_cpu', Integer(), table=<groups_partitions>), Column('max_mem', String(), table=<groups_partitions>), Column('max_runmins', Integer(), table=<groups_partitions>), schema=None)

GROUPS_PARTITIONS are associations between groups and the PARTITIONS that they should have access to

accre.database.model.GROUP_DISCLOSURES = Table('group_disclosures', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<group_disclosures>, primary_key=True, nullable=False), Column('pi_vunetid', String(), table=<group_disclosures>, nullable=False), Column('pi_name', String(), table=<group_disclosures>, nullable=False), Column('pi_email', String(), table=<group_disclosures>, nullable=False), Column('data_classification', Integer(), table=<group_disclosures>, nullable=False), Column('delegate_email', String(), table=<group_disclosures>), Column('delegate_name', String(), table=<group_disclosures>), Column('delegate_vunetid', String(), table=<group_disclosures>), Column('department', String(), table=<group_disclosures>), Column('usage_description', String(), table=<group_disclosures>), Column('preferred_group_name', String(), table=<group_disclosures>, nullable=False), Column('disclosure_data', JSON(), table=<group_disclosures>, nullable=False), Column('creation_time', DateTime(), table=<group_disclosures>, nullable=False), Column('renewal_time', DateTime(), table=<group_disclosures>, nullable=False), schema=None)

GROUP_DISCLOSURES stores the most recent ACCRE disclosures for each GROUP

accre.database.model.GROUP_LOGS = Table('group_logs', MetaData(), Column('name', String(), ForeignKey('groups.name'), table=<group_logs>, primary_key=True, nullable=False), Column('date', DateTime(), table=<group_logs>, primary_key=True, nullable=False), Column('comment', String(), table=<group_logs>, nullable=False), schema=None)

GROUP_LOGS stores actions performed on GROUPS

accre.database.model.MANAGED_HOSTS = Table('managed_hosts', MetaData(), Column('hostname', String(), table=<managed_hosts>, primary_key=True, nullable=False), Column('internal_ip', String(), table=<managed_hosts>, nullable=False), Column('last_check', DateTime(), table=<managed_hosts>, nullable=False), Column('ext_neighbor', String(), table=<managed_hosts>), Column('ext_neighbor_port', String(), table=<managed_hosts>), Column('kernel', String(), table=<managed_hosts>), Column('int_neighbor', String(), table=<managed_hosts>), Column('int_neighbor_port', String(), table=<managed_hosts>), Column('ipmi_ip', String(), table=<managed_hosts>), Column('ipmi_mac', String(), table=<managed_hosts>), Column('sys_make', String(), table=<managed_hosts>), Column('sys_model', String(), table=<managed_hosts>), Column('sys_serial', String(), table=<managed_hosts>), Column('sys_uuid', String(), table=<managed_hosts>), schema=None)

MANAGED_HOSTS are compute or infrastructure hosts on the ACCRE internal network

accre.database.model.ORGANIZATIONS = Table('organizations', MetaData(), Column('name', String(), table=<organizations>, primary_key=True, nullable=False), Column('formatted_name', String(), table=<organizations>, nullable=False), schema=None)

ORGANIZATIONS are separate business entities, i.e. VU and VUMC

accre.database.model.PANFS_USAGE = Table('panfs_usage', MetaData(), Column('bladeset', String(), table=<panfs_usage>, primary_key=True, nullable=False), Column('name', String(), table=<panfs_usage>, primary_key=True, nullable=False), Column('soft_quota', BigInteger(), table=<panfs_usage>, nullable=False), Column('hard_quota', BigInteger(), table=<panfs_usage>, nullable=False), Column('user', String(), ForeignKey('users.vunetid'), table=<panfs_usage>), Column('space_used', BigInteger(), table=<panfs_usage>, nullable=False), Column('last_check', DateTime(timezone=True), table=<panfs_usage>, onupdate=ColumnDefault(<sqlalchemy.sql.functions.now at 0x7fdbecdcebb0; now>), server_default=DefaultClause(<sqlalchemy.sql.functions.now at 0x7fdbecdceb80; now>, for_update=False)), Column('extra_info', JSON(), table=<panfs_usage>), schema=None)

PANFS_USAGE table will keep track of the usage of different groups and users

accre.database.model.PANFS_VOLUMES = Table('panfs_volumes', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<panfs_volumes>, nullable=False), Column('bladeset', String(), table=<panfs_volumes>, primary_key=True, nullable=False), Column('name', String(), table=<panfs_volumes>, primary_key=True, nullable=False), Column('soft_quota', BigInteger(), table=<panfs_volumes>, nullable=False), Column('hard_quota', BigInteger(), table=<panfs_volumes>, nullable=False), Column('path', String(), table=<panfs_volumes>, nullable=False), Column('user_path', String(), table=<panfs_volumes>, nullable=False), Column('active', Boolean(), table=<panfs_volumes>, nullable=False), Column('join_date', DateTime(), table=<panfs_volumes>), schema=None)

PANFS_VOLUMES tracks the limits and ownership of filesets in the PANFS storage system

accre.database.model.PARTITIONS = Table('partitions', MetaData(), Column('name', String(), table=<partitions>, primary_key=True, nullable=False), schema=None)

PARTITIONS are slurm cluster partitions

accre.database.model.PIS = Table('pis', MetaData(), Column('vunetid', String(), table=<pis>, primary_key=True, nullable=False), Column('department', String(), ForeignKey('departments.name'), table=<pis>, nullable=False), Column('division', String(), ForeignKey('departments.division'), table=<pis>, nullable=False), Column('organization', String(), ForeignKey('departments.organization'), table=<pis>, nullable=False), Column('email', String(), table=<pis>, nullable=False), Column('name', String(), table=<pis>, nullable=False), Column('active', Boolean(), table=<pis>, nullable=False), Column('join_date', DateTime(), table=<pis>), schema=None)

PIS are principle investigators of university labs or otherwise the authoritative point of contact and owner of GROUPS

accre.database.model.PI_LOGS = Table('pi_logs', MetaData(), Column('vunetid', String(), ForeignKey('pis.vunetid'), table=<pi_logs>, primary_key=True, nullable=False), Column('date', DateTime(), table=<pi_logs>, primary_key=True, nullable=False), Column('comment', String(), table=<pi_logs>, nullable=False), schema=None)

PI_LOGS stores actions performed on PIS

accre.database.model.SAPI_REQUESTS = Table('sapi_requests', MetaData(), Column('id', Integer(), table=<sapi_requests>, primary_key=True, nullable=False), Column('action', String(), table=<sapi_requests>, nullable=False), Column('payload', String(), table=<sapi_requests>, nullable=False), Column('ticket', Integer(), table=<sapi_requests>, nullable=False), Column('requester', String(), table=<sapi_requests>, nullable=False), Column('status', String(), table=<sapi_requests>, nullable=False), Column('stage', Integer(), table=<sapi_requests>, nullable=False), Column('creation_time', DateTime(), table=<sapi_requests>, nullable=False), Column('modification_time', DateTime(), table=<sapi_requests>, nullable=False), schema=None)

SAPI_REQUESTS stores all current and historical Service API (SAPI) requests

accre.database.model.SECONDARY_GROUPS = Table('secondary_groups', MetaData(), Column('group', String(), ForeignKey('groups.name'), table=<secondary_groups>, primary_key=True, nullable=False), Column('vunetid', String(), ForeignKey('users.vunetid'), table=<secondary_groups>, primary_key=True, nullable=False), schema=None)

SECONDARY_GROUPS are associations between USERS and additional GROUPS that they should have access to

accre.database.model.SLURM_RESERVATIONS = Table('slurm_reservations', MetaData(), Column('id', Integer(), table=<slurm_reservations>, primary_key=True, nullable=False, server_default=DefaultClause(<sqlalchemy.sql.elements.TextClause object>, for_update=False)), Column('group', String(), ForeignKey('groups.name'), table=<slurm_reservations>, nullable=False), Column('slurm_id', Integer(), table=<slurm_reservations>, nullable=False), Column('start_time', DateTime(), table=<slurm_reservations>, nullable=False), Column('end_time', DateTime(), table=<slurm_reservations>, nullable=False), schema=None)

SLURM_RESERVATIONS are reservations created on the slurm scheduler

accre.database.model.USERS = Table('users', MetaData(), Column('vunetid', String(), table=<users>, primary_key=True, nullable=False), Column('user_id', Integer(), table=<users>, nullable=False), Column('group', String(), ForeignKey('groups.name'), table=<users>, nullable=False), Column('email', String(), table=<users>, nullable=False), Column('first_name', String(), table=<users>, nullable=False), Column('last_name', String(), table=<users>, nullable=False), Column('attended_unix', Boolean(), table=<users>, nullable=False), Column('attended_cluster', Boolean(), table=<users>, nullable=False), Column('attended_slurm', Boolean(), table=<users>, nullable=False), Column('active', Boolean(), table=<users>, nullable=False), Column('join_date', DateTime(), table=<users>), schema=None)

USERS stores ACCRE cluster login accounts including robots

accre.database.model.USER_LOGS = Table('user_logs', MetaData(), Column('vunetid', String(), ForeignKey('users.vunetid'), table=<user_logs>, primary_key=True, nullable=False), Column('date', DateTime(), table=<user_logs>, primary_key=True, nullable=False), Column('comment', String(), table=<user_logs>, nullable=False), schema=None)

USER_LOGS stores actions performed on USERS