/*****************************************************************************\
 *  job_state_reason.c
 *****************************************************************************
 *  Copyright (C) SchedMD LLC.
 *
 *  This file is part of Slurm, a resource management program.
 *  For details, see <https://slurm.schedmd.com/>.
 *  Please also read the included file: DISCLAIMER.
 *
 *  Slurm is free software; you can redistribute it and/or modify it under
 *  the terms of the GNU General Public License as published by the Free
 *  Software Foundation; either version 2 of the License, or (at your option)
 *  any later version.
 *
 *  In addition, as a special exception, the copyright holders give permission
 *  to link the code of portions of this program with the OpenSSL library under
 *  certain conditions as described in each individual source file, and
 *  distribute linked combinations including the two. You must obey the GNU
 *  General Public License in all respects for all of the code used other than
 *  OpenSSL. If you modify file(s) with this exception, you may extend this
 *  exception to your version of the file(s), but you are not obligated to do
 *  so. If you do not wish to do so, delete this exception statement from your
 *  version.  If you delete this exception statement from all source files in
 *  the program, then also delete it here.
 *
 *  Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
 *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 *  details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with Slurm; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
\*****************************************************************************/

#include "src/common/job_state_reason.h"
#include "src/common/xstring.h"
#include "src/common/xassert.h"

/*
 * Any strong_alias() needs to be defined in slurm_xlator.h as well.
 */
strong_alias(job_state_reason_string, slurm_job_state_reason_string);
strong_alias(job_state_reason_num, slurm_job_state_reason_num);
strong_alias(job_state_reason_check, slurm_job_state_reason_check);

typedef struct {
	uint32_t flags;
	const char *str;
} entry_t;

const static entry_t jsra[] = {
	[WAIT_NO_REASON] = {
		.str = "None",
	},
	[WAIT_PROLOG] = {
		.str = "Prolog",
	},
	[WAIT_PRIORITY] = {
		.str = "Priority",
	},
	[WAIT_DEPENDENCY] = {
		.str = "Dependency",
	},
	[WAIT_RESOURCES] = {
		.str = "Resources",
	},
	[WAIT_PART_NODE_LIMIT] = {
		.flags = JSR_PART,
		.str = "PartitionNodeLimit",
	},
	[WAIT_PART_TIME_LIMIT] = {
		.flags = JSR_PART,
		.str = "PartitionTimeLimit",
	},
	[WAIT_PART_DOWN] = {
		.flags = JSR_PART,
		.str = "PartitionDown",
	},
	[WAIT_PART_INACTIVE] = {
		.flags = JSR_PART,
		.str = "PartitionInactive",
	},
	[WAIT_HELD] = {
		.str = "JobHeldAdmin",
	},
	[WAIT_HELD_USER] = {
		.str = "JobHeldUser",
	},
	[WAIT_TIME] = {
		.str = "BeginTime",
	},
	[WAIT_LICENSES] = {
		.str = "Licenses",
	},
	[WAIT_ASSOC_JOB_LIMIT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssociationJobLimit",
	},
	[WAIT_ASSOC_RESOURCE_LIMIT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssociationResourceLimit",
	},
	[WAIT_ASSOC_TIME_LIMIT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssociationTimeLimit",
	},
	[WAIT_RESERVATION] = {
		.str = "Reservation",
	},
	[WAIT_NODE_NOT_AVAIL] = {
		.flags = JSR_MISC,
		.str = "ReqNodeNotAvail",
	},
	[FAIL_DEFER] = {
		.str = "SchedDefer",
	},
	[FAIL_DOWN_PARTITION] = {
		.str = "PartitionDown",
	},
	[FAIL_DOWN_NODE] = {
		.str = "NodeDown",
	},
	[FAIL_BAD_CONSTRAINTS] = {
		.str = "BadConstraints",
	},
	[FAIL_SYSTEM] = {
		.str = "SystemFailure",
	},
	[FAIL_LAUNCH] = {
		.str = "JobLaunchFailure",
	},
	[FAIL_EXIT_CODE] = {
		.str = "NonZeroExitCode",
	},
	[FAIL_SIGNAL] = {
		.str = "RaisedSignal",
	},
	[FAIL_TIMEOUT] = {
		.str = "TimeLimit",
	},
	[FAIL_INACTIVE_LIMIT] = {
		.str = "InactiveLimit",
	},
	[FAIL_ACCOUNT] = {
		.flags = JSR_MISC,
		.str = "InvalidAccount",
	},
	[FAIL_QOS] = {
		.flags = JSR_MISC,
		.str = "InvalidQOS",
	},
	[WAIT_QOS_THRES] = {
		.flags = JSR_QOS_ASSOC | JSR_PART,
		.str = "QOSUsageThreshold",
	},
	[WAIT_QOS_JOB_LIMIT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSJobLimit",
	},
	[WAIT_QOS_RESOURCE_LIMIT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSResourceLimit",
	},
	[WAIT_QOS_TIME_LIMIT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSTimeLimit",
	},
	[WAIT_CLEANING] = {
		.str = "Cleaning",
	},
	[WAIT_QOS] = {
		.str = "QOSNotAllowed",
	},
	[WAIT_ACCOUNT] = {
		.str = "AccountNotAllowed",
	},
	[WAIT_DEP_INVALID] = {
		.str = "DependencyNeverSatisfied",
	},
	[WAIT_QOS_GRP_CPU] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpCpuLimit",
	},
	[WAIT_QOS_GRP_CPU_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpCPUMinutesLimit",
	},
	[WAIT_QOS_GRP_CPU_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpCPURunMinutesLimit",
	},
	[WAIT_QOS_GRP_JOB] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpJobsLimit"
	},
	[WAIT_QOS_GRP_MEM] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpMemLimit",
	},
	[WAIT_QOS_GRP_NODE] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpNodeLimit",
	},
	[WAIT_QOS_GRP_SUB_JOB] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpSubmitJobsLimit",
	},
	[WAIT_QOS_GRP_WALL] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpWallLimit",
	},
	[WAIT_QOS_MAX_CPU_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxCpuPerJobLimit",
	},
	[WAIT_QOS_MAX_CPU_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxCpuMinutesPerJobLimit",
	},
	[WAIT_QOS_MAX_NODE_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxNodePerJobLimit",
	},
	[WAIT_QOS_MAX_WALL_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxWallDurationPerJobLimit",
	},
	[WAIT_QOS_MAX_CPU_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxCpuPerUserLimit",
	},
	[WAIT_QOS_MAX_JOB_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxJobsPerUserLimit",
	},
	[WAIT_QOS_MAX_NODE_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxNodePerUserLimit",
	},
	[WAIT_QOS_MAX_SUB_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxSubmitJobPerUserLimit",
	},
	[WAIT_QOS_MIN_CPU] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinCpuNotSatisfied",
	},
	[WAIT_ASSOC_GRP_CPU] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpCpuLimit",
	},
	[WAIT_ASSOC_GRP_CPU_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpCPUMinutesLimit",
	},
	[WAIT_ASSOC_GRP_CPU_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpCPURunMinutesLimit",
	},
	[WAIT_ASSOC_GRP_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpJobsLimit"
	},
	[WAIT_ASSOC_GRP_MEM] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpMemLimit",
	},
	[WAIT_ASSOC_GRP_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpNodeLimit",
	},
	[WAIT_ASSOC_GRP_SUB_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpSubmitJobsLimit",
	},
	[WAIT_ASSOC_GRP_WALL] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpWallLimit",
	},
	[WAIT_ASSOC_MAX_JOBS] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxJobsLimit",
	},
	[WAIT_ASSOC_MAX_CPU_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxCpuPerJobLimit",
	},
	[WAIT_ASSOC_MAX_CPU_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxCpuMinutesPerJobLimit",
	},
	[WAIT_ASSOC_MAX_NODE_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxNodePerJobLimit",
	},
	[WAIT_ASSOC_MAX_WALL_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxWallDurationPerJobLimit",
	},
	[WAIT_ASSOC_MAX_SUB_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxSubmitJobLimit",
	},
	[WAIT_MAX_REQUEUE] = {
		.str = "JobHoldMaxRequeue",
	},
	[WAIT_ARRAY_TASK_LIMIT] = {
		.str = "JobArrayTaskLimit",
	},
	[WAIT_BURST_BUFFER_RESOURCE] = {
		.str = "BurstBufferResources",
	},
	[WAIT_BURST_BUFFER_STAGING] = {
		.str = "BurstBufferStageIn",
	},
	[FAIL_BURST_BUFFER_OP] = {
		.str = "BurstBufferOperation",
	},
	[WAIT_ASSOC_GRP_UNK] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpUnknown",
	},
	[WAIT_ASSOC_GRP_UNK_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpUnknownMinutes",
	},
	[WAIT_ASSOC_GRP_UNK_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpUnknownRunMinutes",
	},
	[WAIT_ASSOC_MAX_UNK_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxUnknownPerJob",
	},
	[WAIT_ASSOC_MAX_UNK_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxUnknownPerNode",
	},
	[WAIT_ASSOC_MAX_UNK_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxUnknownMinutesPerJob",
	},
	[WAIT_ASSOC_MAX_CPU_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxCpuPerNode",
	},
	[WAIT_ASSOC_GRP_MEM_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpMemMinutes",
	},
	[WAIT_ASSOC_GRP_MEM_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpMemRunMinutes",
	},
	[WAIT_ASSOC_MAX_MEM_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxMemPerJob",
	},
	[WAIT_ASSOC_MAX_MEM_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxMemPerNode",
	},
	[WAIT_ASSOC_MAX_MEM_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxMemMinutesPerJob",
	},
	[WAIT_ASSOC_GRP_NODE_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpNodeMinutes",
	},
	[WAIT_ASSOC_GRP_NODE_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpNodeRunMinutes",
	},
	[WAIT_ASSOC_MAX_NODE_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxNodeMinutesPerJob",
	},
	[WAIT_ASSOC_GRP_ENERGY] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpEnergy",
	},
	[WAIT_ASSOC_GRP_ENERGY_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpEnergyMinutes",
	},
	[WAIT_ASSOC_GRP_ENERGY_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpEnergyRunMinutes",
	},
	[WAIT_ASSOC_MAX_ENERGY_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxEnergyPerJob",
	},
	[WAIT_ASSOC_MAX_ENERGY_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxEnergyPerNode",
	},
	[WAIT_ASSOC_MAX_ENERGY_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxEnergyMinutesPerJob",
	},
	[WAIT_ASSOC_GRP_GRES] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpGRES",
	},
	[WAIT_ASSOC_GRP_GRES_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpGRESMinutes",
	},
	[WAIT_ASSOC_GRP_GRES_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpGRESRunMinutes",
	},
	[WAIT_ASSOC_MAX_GRES_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxGRESPerJob",
	},
	[WAIT_ASSOC_MAX_GRES_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxGRESPerNode",
	},
	[WAIT_ASSOC_MAX_GRES_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxGRESMinutesPerJob",
	},
	[WAIT_ASSOC_GRP_LIC] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpLicense",
	},
	[WAIT_ASSOC_GRP_LIC_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpLicenseMinutes",
	},
	[WAIT_ASSOC_GRP_LIC_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpLicenseRunMinutes",
	},
	[WAIT_ASSOC_MAX_LIC_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxLicensePerJob",
	},
	[WAIT_ASSOC_MAX_LIC_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxLicenseMinutesPerJob",
	},
	[WAIT_ASSOC_GRP_BB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpBB",
	},
	[WAIT_ASSOC_GRP_BB_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpBBMinutes",
	},
	[WAIT_ASSOC_GRP_BB_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpBBRunMinutes",
	},
	[WAIT_ASSOC_MAX_BB_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxBBPerJob",
	},
	[WAIT_ASSOC_MAX_BB_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxBBPerNode",
	},
	[WAIT_ASSOC_MAX_BB_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxBBMinutesPerJob",
	},
	[WAIT_QOS_GRP_UNK] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpUnknown",
	},
	[WAIT_QOS_GRP_UNK_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpUnknownMinutes",
	},
	[WAIT_QOS_GRP_UNK_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpUnknownRunMinutes",
	},
	[WAIT_QOS_MAX_UNK_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxUnknownPerJob",
	},
	[WAIT_QOS_MAX_UNK_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxUnknownPerNode",
	},
	[WAIT_QOS_MAX_UNK_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxUnknownPerUser",
	},
	[WAIT_QOS_MAX_UNK_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxUnknownMinutesPerJob",
	},
	[WAIT_QOS_MIN_UNK] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinUnknown",
	},
	[WAIT_QOS_MAX_CPU_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxCpuPerNode",
	},
	[WAIT_QOS_GRP_MEM_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpMemoryMinutes",
	},
	[WAIT_QOS_GRP_MEM_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpMemoryRunMinutes",
	},
	[WAIT_QOS_MAX_MEM_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxMemoryPerJob",
	},
	[WAIT_QOS_MAX_MEM_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxMemoryPerNode",
	},
	[WAIT_QOS_MAX_MEM_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxMemoryPerUser",
	},
	[WAIT_QOS_MAX_MEM_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxMemoryMinutesPerJob",
	},
	[WAIT_QOS_MIN_MEM] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinMemory",
	},
	[WAIT_QOS_GRP_NODE_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpNodeMinutes",
	},
	[WAIT_QOS_GRP_NODE_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpNodeRunMinutes",
	},
	[WAIT_QOS_MAX_NODE_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxNodeMinutesPerJob",
	},
	[WAIT_QOS_MIN_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinNode",
	},
	[WAIT_QOS_GRP_ENERGY] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpEnergy",
	},
	[WAIT_QOS_GRP_ENERGY_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpEnergyMinutes",
	},
	[WAIT_QOS_GRP_ENERGY_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpEnergyRunMinutes",
	},
	[WAIT_QOS_MAX_ENERGY_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxEnergyPerJob",
	},
	[WAIT_QOS_MAX_ENERGY_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxEnergyPerNode",
	},
	[WAIT_QOS_MAX_ENERGY_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxEnergyPerUser",
	},
	[WAIT_QOS_MAX_ENERGY_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxEnergyMinutesPerJob",
	},
	[WAIT_QOS_MIN_ENERGY] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinEnergy",
	},
	[WAIT_QOS_GRP_GRES] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpGRES",
	},
	[WAIT_QOS_GRP_GRES_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpGRESMinutes",
	},
	[WAIT_QOS_GRP_GRES_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpGRESRunMinutes",
	},
	[WAIT_QOS_MAX_GRES_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxGRESPerJob",
	},
	[WAIT_QOS_MAX_GRES_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxGRESPerNode",
	},
	[WAIT_QOS_MAX_GRES_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxGRESPerUser",
	},
	[WAIT_QOS_MAX_GRES_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxGRESMinutesPerJob",
	},
	[WAIT_QOS_MIN_GRES] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinGRES",
	},
	[WAIT_QOS_GRP_LIC] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpLicense",
	},
	[WAIT_QOS_GRP_LIC_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpLicenseMinutes",
	},
	[WAIT_QOS_GRP_LIC_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpLicenseRunMinutes",
	},
	[WAIT_QOS_MAX_LIC_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxLicensePerJob",
	},
	[WAIT_QOS_MAX_LIC_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxLicensePerUser",
	},
	[WAIT_QOS_MAX_LIC_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxLicenseMinutesPerJob",
	},
	[WAIT_QOS_MIN_LIC] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinLicense",
	},
	[WAIT_QOS_GRP_BB] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpBB",
	},
	[WAIT_QOS_GRP_BB_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpBBMinutes",
	},
	[WAIT_QOS_GRP_BB_RUN_MIN] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpBBRunMinutes",
	},
	[WAIT_QOS_MAX_BB_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxBBPerJob",
	},
	[WAIT_QOS_MAX_BB_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxBBPerNode",
	},
	[WAIT_QOS_MAX_BB_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxBBPerUser",
	},
	[WAIT_QOS_MAX_BB_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxBBMinutesPerJob",
	},
	[WAIT_QOS_MIN_BB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinBB",
	},
	[FAIL_DEADLINE] = {
		.str = "DeadLine",
	},
	[WAIT_QOS_MAX_BB_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxBBPerAccount",
	},
	[WAIT_QOS_MAX_CPU_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxCpuPerAccount",
	},
	[WAIT_QOS_MAX_ENERGY_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxEnergyPerAccount",
	},
	[WAIT_QOS_MAX_GRES_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxGRESPerAccount",
	},
	[WAIT_QOS_MAX_NODE_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxNodePerAccount",
	},
	[WAIT_QOS_MAX_LIC_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxLicensePerAccount",
	},
	[WAIT_QOS_MAX_MEM_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxMemoryPerAccount",
	},
	[WAIT_QOS_MAX_UNK_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxUnknownPerAccount",
	},
	[WAIT_QOS_MAX_JOB_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxJobsPerAccount",
	},
	[WAIT_QOS_MAX_SUB_JOB_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxSubmitJobsPerAccount",
	},
	[WAIT_PART_CONFIG] = {
		.str = "PartitionConfig",
	},
	[WAIT_ACCOUNT_POLICY] = {
		.str = "AccountingPolicy",
	},
	[WAIT_FED_JOB_LOCK] = {
		.str = "FedJobLock",
	},
	[FAIL_OOM] = {
		.str = "OutOfMemory",
	},
	[WAIT_PN_MEM_LIMIT] = {
		.str = "MaxMemPerLimit",
	},
	[WAIT_ASSOC_GRP_BILLING] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpBilling",
	},
	[WAIT_ASSOC_GRP_BILLING_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpBillingMinutes",
	},
	[WAIT_ASSOC_GRP_BILLING_RUN_MIN] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocGrpBillingRunMinutes",
	},
	[WAIT_ASSOC_MAX_BILLING_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxBillingPerJob",
	},
	[WAIT_ASSOC_MAX_BILLING_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxBillingPerNode",
	},
	[WAIT_ASSOC_MAX_BILLING_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "AssocMaxBillingMinutesPerJob",
	},
	[WAIT_QOS_GRP_BILLING] = {
		.flags = JSR_QOS_GRP | JSR_QOS_ASSOC,
		.str = "QOSGrpBilling",
	},
	[WAIT_QOS_GRP_BILLING_MIN] = {
		.flags = JSR_QOS_GRP| JSR_QOS_ASSOC,
		.str = "QOSGrpBillingMinutes",
	},
	[WAIT_QOS_GRP_BILLING_RUN_MIN] = {
		.flags = JSR_QOS_GRP| JSR_QOS_ASSOC,
		.str = "QOSGrpBillingRunMinutes",
	},
	[WAIT_QOS_MAX_BILLING_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxBillingPerJob",
	},
	[WAIT_QOS_MAX_BILLING_PER_NODE] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxBillingPerNode",
	},
	[WAIT_QOS_MAX_BILLING_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxBillingPerUser",
	},
	[WAIT_QOS_MAX_BILLING_MINS_PER_JOB] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMaxBillingMinutesPerJob",
	},
	[WAIT_QOS_MAX_BILLING_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxBillingPerAccount",
	},
	[WAIT_QOS_MIN_BILLING] = {
		.flags = JSR_QOS_ASSOC,
		.str = "QOSMinBilling",
	},
	[WAIT_RESV_DELETED] = {
		.str = "ReservationDeleted",
	},
	[WAIT_RESV_INVALID] = {
		.str = "ReservationInvalid",
	},
	[FAIL_CONSTRAINTS] = {
		.str = "Constraints",
	},
	[WAIT_QOS_MAX_BB_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxBBRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_BILLING_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxBillingRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_CPU_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxCpuRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_ENERGY_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxEnergyRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_GRES_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxGRESRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_NODE_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxNodeRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_LIC_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxLicenseRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_MEM_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxMemoryRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_UNK_RUN_MINS_PER_ACCT] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxUnknownRunMinsPerAccount",
	},
	[WAIT_QOS_MAX_BB_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxBBRunMinsPerUser",
	},
	[WAIT_QOS_MAX_BILLING_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxBillingRunMinsPerUser",
	},
	[WAIT_QOS_MAX_CPU_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxCpuRunMinsPerUser",
	},
	[WAIT_QOS_MAX_ENERGY_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxEnergyRunMinsPerUser",
	},
	[WAIT_QOS_MAX_GRES_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxGRESRunMinsPerUser",
	},
	[WAIT_QOS_MAX_NODE_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxNodeRunMinsPerUser",
	},
	[WAIT_QOS_MAX_LIC_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxLicenseRunMinsPerUser",
	},
	[WAIT_QOS_MAX_MEM_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxMemoryRunMinsPerUser",
	},
	[WAIT_QOS_MAX_UNK_RUN_MINS_PER_USER] = {
		.flags = JSR_QOS_ASSOC,
		.str = "MaxUnknownRunMinsPerUser",
	},
	[WAIT_MAX_POWERED_NODES] = {
		.flags = JSR_MISC,
		.str = "MaxPoweredUpNodes",
	},
	[WAIT_MPI_PORTS_BUSY] = {
		.str = "MpiPortsBusy",
	},
};

extern const char *job_state_reason_string(enum job_state_reason inx)
{
	const char *ret_str = "InvalidReason";

	if ((inx < REASON_END) && jsra[inx].str)
		ret_str = jsra[inx].str;

	return ret_str;
}

extern enum job_state_reason job_state_reason_num(char *reason)
{
	for (int inx = 0; inx < REASON_END; inx++) {
		if (!xstrcasecmp(reason, jsra[inx].str))
			return inx;
	}

	return NO_VAL;
}

extern bool job_state_reason_check(enum job_state_reason inx, uint32_t flags)
{
	xassert(inx < REASON_END);

	if (jsra[inx].flags & flags)
		return true;

	return false;
}
