Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-26 08:40:24

0001 """Global template context for lightweight monitor state."""
0002 
0003 from .system_status import status_summary
0004 
0005 
0006 def _active_nav(request):
0007     match = getattr(request, 'resolver_match', None)
0008     namespace = getattr(match, 'namespace', '') or ''
0009     url_name = getattr(match, 'url_name', '') or ''
0010     kwargs = getattr(match, 'kwargs', {}) or {}
0011     tag_type = kwargs.get('tag_type')
0012 
0013     pcs_questionnaire_names = {
0014         'questionnaires_list',
0015         'questionnaire_import',
0016         'questionnaire_detail',
0017         'questionnaire_match_add',
0018         'questionnaire_match_remove',
0019     }
0020     pcs_catalog_names = {
0021         'pcs_catalog',
0022         'pcs_catalog_csv_update',
0023         'pcs_catalog_past_update',
0024         'pcs_catalog_rucio_update',
0025         'pcs_catalog_evgen_update',
0026         'pcs_catalog_set_current',
0027         'pcs_catalog_set_last',
0028     }
0029     pcs_tag_names = {
0030         'physics_categories_list',
0031         'physics_category_create',
0032         'tag_compose',
0033         'param_defs_api',
0034         'tags_list',
0035         'tags_datatable_ajax',
0036         'tag_detail',
0037         'tag_edit',
0038         'tag_delete',
0039         'tag_lock',
0040         'tag_datasets',
0041     }
0042     pcs_dataset_names = {
0043         'datasets_compose',
0044         'datasets_list',
0045         'datasets_datatable_ajax',
0046         'dataset_create',
0047         'dataset_detail',
0048         'dataset_add_block',
0049         'compose_dataset_detail',
0050         'rucio_did_detail',
0051         'rucio_did_files',
0052     }
0053     pcs_config_names = {
0054         'prod_configs_compose',
0055         'prod_configs_list',
0056         'prod_configs_datatable_ajax',
0057         'prod_config_create',
0058         'prod_config_detail',
0059         'prod_config_edit',
0060     }
0061     pcs_task_names = {
0062         'prod_task_compose',
0063         'prod_tasks_list',
0064         'prod_tasks_datatable_ajax',
0065         'prod_task_detail',
0066         'prod_task_delete',
0067         'prod_task_generate_commands',
0068         'compose_task_detail',
0069     }
0070     pcs_names = (
0071         {'pcs_hub'}
0072         | pcs_tag_names
0073         | pcs_dataset_names
0074         | pcs_config_names
0075         | pcs_task_names
0076     )
0077 
0078     workflow_names = {
0079         'workflows_home',
0080         'workflow_definitions_list',
0081         'workflow_definitions_datatable_ajax',
0082         'workflow_definitions_filter_counts',
0083         'workflow_definition_detail',
0084         'workflow_executions_list',
0085         'workflow_executions_datatable_ajax',
0086         'workflow_executions_filter_counts',
0087         'workflow_execution_detail',
0088         'namespaces_list',
0089         'namespaces_datatable_ajax',
0090         'namespace_detail',
0091     }
0092     file_names = {
0093         'stf_files_list',
0094         'stf_files_datatable_ajax',
0095         'stf_file_detail',
0096         'fastmon_files_list',
0097         'fastmon_files_datatable_ajax',
0098         'tf_slices_list',
0099         'tf_slices_datatable_ajax',
0100     }
0101     log_names = {
0102         'log_summary',
0103         'log_summary_datatable_ajax',
0104         'log_list',
0105         'logs_datatable_ajax',
0106         'log_filter_counts',
0107         'log_detail',
0108     }
0109     database_names = {
0110         'database_tables_list',
0111         'database_tables_datatable_ajax',
0112         'database_table_list',
0113         'database_table_datatable_ajax',
0114     }
0115     panda_rucio_names = {
0116         'panda_hub',
0117         'panda_activity',
0118         'panda_jobs_list',
0119         'panda_jobs_datatable_ajax',
0120         'panda_jobs_filter_counts',
0121         'panda_job_detail',
0122         'panda_payload_log',
0123         'epicprod_job_detail',
0124         'epicprod_job_refresh',
0125         'panda_view_text',
0126         'panda_tasks_list',
0127         'panda_tasks_datatable_ajax',
0128         'panda_tasks_filter_counts',
0129         'panda_task_detail',
0130         'panda_errors_list',
0131         'panda_errors_datatable_ajax',
0132         'panda_diagnostics_list',
0133         'panda_diagnostics_datatable_ajax',
0134         'epic_queues_list',
0135         'epic_queue_detail',
0136         'panda_queues_list',
0137         'panda_queue_detail',
0138         'panda_database_tables_list',
0139         'panda_database_table_list',
0140         'idds_database_tables_list',
0141         'idds_database_table_list',
0142         'rucio_endpoints_list',
0143         'rucio_endpoint_detail',
0144     }
0145     panda_database_names = {
0146         'panda_database_tables_list',
0147         'panda_database_tables_datatable_ajax',
0148         'panda_database_table_list',
0149         'panda_database_table_datatable_ajax',
0150     }
0151     idds_database_names = {
0152         'idds_database_tables_list',
0153         'idds_database_tables_datatable_ajax',
0154         'idds_database_table_list',
0155         'idds_database_table_datatable_ajax',
0156     }
0157     rucio_endpoint_names = {
0158         'rucio_endpoints_list',
0159         'rucio_endpoints_datatable_ajax',
0160         'rucio_endpoint_detail',
0161     }
0162     alarm_names = {
0163         'alarms_dashboard',
0164         'alarm_event_detail',
0165         'alarm_config_edit',
0166         'alarm_config_save',
0167         'alarm_config_version',
0168         'alarm_test',
0169         'alarm_run_report',
0170         'alarm_task_history',
0171         'team_create',
0172         'team_new',
0173         'team_edit',
0174         'team_save',
0175         'team_version',
0176     }
0177 
0178     return {
0179         'requests': namespace == 'pcs' and url_name in pcs_questionnaire_names,
0180         'pcs': namespace == 'pcs' and url_name in pcs_names,
0181         'pcs_hub': namespace == 'pcs' and url_name == 'pcs_hub',
0182         'pcs_categories': namespace == 'pcs' and url_name in {
0183             'physics_categories_list',
0184             'physics_category_create',
0185         },
0186         'pcs_tags': namespace == 'pcs' and url_name in pcs_tag_names,
0187         'pcs_physics_tags': namespace == 'pcs' and url_name in pcs_tag_names and tag_type == 'p',
0188         'pcs_evgen_tags': namespace == 'pcs' and url_name in pcs_tag_names and tag_type == 'e',
0189         'pcs_simu_tags': namespace == 'pcs' and url_name in pcs_tag_names and tag_type == 's',
0190         'pcs_reco_tags': namespace == 'pcs' and url_name in pcs_tag_names and tag_type == 'r',
0191         'pcs_background_tags': namespace == 'pcs' and url_name in pcs_tag_names and tag_type == 'k',
0192         'pcs_datasets': namespace == 'pcs' and url_name in pcs_dataset_names,
0193         'pcs_configs': namespace == 'pcs' and url_name in pcs_config_names,
0194         'pcs_tasks': namespace == 'pcs' and url_name in pcs_task_names,
0195         'campaigns': namespace == 'pcs' and url_name in pcs_catalog_names,
0196         'workflows': namespace == 'monitor_app' and url_name in workflow_names,
0197         'files': namespace == 'monitor_app' and url_name in file_names,
0198         'agents': namespace == 'monitor_app' and url_name in {
0199             'workflow_agents_list',
0200             'workflow_agents_datatable_ajax',
0201             'agent_detail',
0202         },
0203         'subscribers': namespace == 'monitor_app' and url_name in {
0204             'subscribers_list',
0205             'subscribers_datatable_ajax',
0206             'subscribers_filter_counts',
0207             'subscriber_detail',
0208         },
0209         'messages': namespace == 'monitor_app' and url_name in {
0210             'workflow_messages',
0211             'workflow_messages_datatable_ajax',
0212             'workflow_messages_filter_counts',
0213             'message_detail',
0214         },
0215         'logs': namespace == 'monitor_app' and url_name in log_names,
0216         'database': namespace == 'monitor_app' and url_name in database_names,
0217         'state': namespace == 'monitor_app' and url_name == 'persistent_state',
0218         'panda_rucio': namespace == 'monitor_app' and url_name in panda_rucio_names,
0219         'panda_hub': namespace == 'monitor_app' and url_name == 'panda_hub',
0220         'panda_activity': namespace == 'monitor_app' and url_name == 'panda_activity',
0221         'panda_tasks': namespace == 'monitor_app' and url_name in {
0222             'panda_tasks_list',
0223             'panda_tasks_datatable_ajax',
0224             'panda_tasks_filter_counts',
0225             'panda_task_detail',
0226         },
0227         'panda_jobs': namespace == 'monitor_app' and url_name in {
0228             'panda_jobs_list',
0229             'panda_jobs_datatable_ajax',
0230             'panda_jobs_filter_counts',
0231             'panda_job_detail',
0232             'panda_payload_log',
0233             'epicprod_job_detail',
0234             'epicprod_job_refresh',
0235         },
0236         'panda_errors': namespace == 'monitor_app' and url_name in {
0237             'panda_errors_list',
0238             'panda_errors_datatable_ajax',
0239         },
0240         'panda_diagnostics': namespace == 'monitor_app' and url_name in {
0241             'panda_diagnostics_list',
0242             'panda_diagnostics_datatable_ajax',
0243         },
0244         'panda_queues': namespace == 'monitor_app' and url_name in {
0245             'epic_queues_list',
0246             'epic_queue_detail',
0247         },
0248         'alarms': namespace == 'monitor_app' and url_name in alarm_names,
0249         'panda_database': namespace == 'monitor_app' and url_name in panda_database_names,
0250         'idds_database': namespace == 'monitor_app' and url_name in idds_database_names,
0251         'rucio_endpoints': namespace == 'monitor_app' and url_name in rucio_endpoint_names,
0252         'system': namespace == 'monitor_app' and url_name in {
0253             'system_status',
0254             'system_status_root',
0255         },
0256         'about': namespace == 'monitor_app' and url_name == 'about',
0257         'account': namespace == 'monitor_app' and url_name == 'account',
0258     }
0259 
0260 
0261 def system_status_nav(request):
0262     summary = status_summary()
0263     return {
0264         'active_nav': _active_nav(request),
0265         'system_status_overall': summary.get('overall_status', 'unknown'),
0266         'system_status_reason': summary.get('overall_reason', ''),
0267         'system_status_latest_checked_at': summary.get('latest_checked_at'),
0268     }