static void _validate_config(void) { hot_spare_info = _xlate_hot_spares(hot_spare_count_str, &hot_spare_info_cnt); user_drain_deny = _xlate_users(user_drain_deny_str, &user_drain_deny_cnt); if (user_drain_deny) { if (!user_drain_allow_str) user_drain_allow_str = xstrdup("ALL"); if (strcasecmp(user_drain_allow_str, "ALL")) fatal("nonstop.conf: Bad UserDrainAllow/Deny values"); } user_drain_allow = _xlate_users(user_drain_allow_str, &user_drain_allow_cnt); if ((ctx = munge_ctx_create()) == NULL) fatal("nonstop.conf: munge_ctx_create failed"); }
/* * restore_front_end_state - restore frontend node state * IN recover - replace job, node and/or partition data with latest * available information depending upon value * 0 = use no saved state information, rebuild everything from * slurm.conf contents * 1 = recover saved job and trigger state, * node DOWN/DRAIN/FAIL state and reason information * 2 = recover all saved state */ extern void restore_front_end_state(int recover) { #ifdef HAVE_FRONT_END slurm_conf_frontend_t *slurm_conf_fe_ptr; ListIterator iter; uint16_t state_base, state_flags, tree_width; int i; last_front_end_update = time(NULL); if (recover == 0) purge_front_end_state(); if (front_end_list == NULL) return; /* No front ends in slurm.conf */ iter = list_iterator_create(front_end_list); while ((slurm_conf_fe_ptr = (slurm_conf_frontend_t *) list_next(iter))) { if (slurm_conf_fe_ptr->frontends == NULL) { fatal("FrontendName is NULL"); return; /* Prevent CLANG false positive */ } for (i = 0; i < front_end_node_cnt; i++) { if (strcmp(front_end_nodes[i].name, slurm_conf_fe_ptr->frontends) == 0) break; } if (i >= front_end_node_cnt) { front_end_node_cnt++; xrealloc(front_end_nodes, sizeof(front_end_record_t) * front_end_node_cnt); front_end_nodes[i].name = xstrdup(slurm_conf_fe_ptr->frontends); front_end_nodes[i].magic = FRONT_END_MAGIC; } xfree(front_end_nodes[i].allow_gids); xfree(front_end_nodes[i].allow_groups); if (slurm_conf_fe_ptr->allow_groups) { front_end_nodes[i].allow_groups = xstrdup(slurm_conf_fe_ptr->allow_groups); front_end_nodes[i].allow_gids = _xlate_groups(slurm_conf_fe_ptr->allow_groups, "AllowGroups"); } xfree(front_end_nodes[i].allow_uids); xfree(front_end_nodes[i].allow_users); if (slurm_conf_fe_ptr->allow_users) { front_end_nodes[i].allow_users = xstrdup(slurm_conf_fe_ptr->allow_users); front_end_nodes[i].allow_uids = _xlate_users(slurm_conf_fe_ptr->allow_users, "AllowUsers"); } xfree(front_end_nodes[i].deny_gids); xfree(front_end_nodes[i].deny_groups); if (slurm_conf_fe_ptr->deny_groups) { front_end_nodes[i].deny_groups = xstrdup(slurm_conf_fe_ptr->deny_groups); front_end_nodes[i].deny_gids = _xlate_groups(slurm_conf_fe_ptr->deny_groups, "DenyGroups"); } xfree(front_end_nodes[i].deny_uids); xfree(front_end_nodes[i].deny_users); if (slurm_conf_fe_ptr->deny_users) { front_end_nodes[i].deny_users = xstrdup(slurm_conf_fe_ptr->deny_users); front_end_nodes[i].deny_uids = _xlate_users(slurm_conf_fe_ptr->deny_users, "DenyUsers"); } xfree(front_end_nodes[i].comm_name); if (slurm_conf_fe_ptr->addresses) { front_end_nodes[i].comm_name = xstrdup(slurm_conf_fe_ptr->addresses); } else { front_end_nodes[i].comm_name = xstrdup(front_end_nodes[i].name); } state_base = front_end_nodes[i].node_state & NODE_STATE_BASE; state_flags = front_end_nodes[i].node_state & NODE_STATE_FLAGS; if ((state_base == 0) || (state_base == NODE_STATE_UNKNOWN)) { front_end_nodes[i].node_state = slurm_conf_fe_ptr->node_state | state_flags; } if ((front_end_nodes[i].reason == NULL) && (slurm_conf_fe_ptr->reason != NULL)) { front_end_nodes[i].reason = xstrdup(slurm_conf_fe_ptr->reason); } if (slurm_conf_fe_ptr->port) front_end_nodes[i].port = slurm_conf_fe_ptr->port; else front_end_nodes[i].port = slurmctld_conf.slurmd_port; slurm_set_addr(&front_end_nodes[i].slurm_addr, front_end_nodes[i].port, front_end_nodes[i].comm_name); } list_iterator_destroy(iter); if (front_end_node_cnt == 0) fatal("No front end nodes defined"); tree_width = slurm_get_tree_width(); if (front_end_node_cnt > tree_width) { fatal("front_end_node_cnt > tree_width (%u > %u)", front_end_node_cnt, tree_width); } if (slurmctld_conf.debug_flags & DEBUG_FLAG_FRONT_END) log_front_end_state(); #endif }