/***************************************************************
 *
 * Copyright (C) 1990-2007, Condor Team, Computer Sciences Department,
 * University of Wisconsin-Madison, WI.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you
 * may not use this file except in compliance with the License.  You may
 * obtain a copy of the License at
 * 
 *    http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 ***************************************************************/



// List of attributes used in ClassAds  If you find yourself using anything
// other than ATTR_<blah> to add/lookup expressions/variables *STOP*, add the
// new variable to this file and use the ATTR_<blah> symbolic constant.  --RR

#ifndef __CONDOR_ATTRIBUTES_H__
#define __CONDOR_ATTRIBUTES_H__

// Why use defines instead of a const char *?
// A const char *, or const char [], is still an entry in the symbol table and
// eats up RAM - a big concern in the schedd.  The symbol name itself is usually
// longer than the name of the attribute, and it is once in the libcondor_utils and
// once per reference.  Thus, we have the text in memory once per reference, plus
// the actual contents of the symbol (plus a pointer).
// 
// This puts the actual contents in the text segment.  This is possibly slightly
// more bloat than the most optimal case (if you can get such a thing to work on
// all compilers!), but the bloat is in the text segment - shared on all processes!

#define ATTR_ABSENT                    "Absent"
#define ATTR_ACCT_GROUP  "AcctGroup"
#define ATTR_ACCT_GROUP_USER  "AcctGroupUser"
#define ATTR_ACCOUNTING_GROUP          "AccountingGroup"
#define ATTR_ACTION_CONSTRAINT  "ActionConstraint"
#define ATTR_ACTION_IDS  "ActionIds"
#define ATTR_ACTION_RESULT  "ActionResult"
#define ATTR_ACTION_RESULT_TYPE  "ActionResultType"
#define ATTR_ACTIVITY  "Activity"
#define ATTR_ALL_REMOTE_HOSTS  "AllRemoteHosts"
#define ATTR_ANNEX_NAME  "AnnexName"
#define ATTR_APPEND_FILES  "AppendFiles"
#define ATTR_DONT_APPEND "EraseOutputAndErrorOnRestart"
#define ATTR_ARCH  "Arch"
#define ATTR_AZURE_ADMIN_USERNAME  "AzureAdminUsername"
#define ATTR_AZURE_ADMIN_KEY  "AzureAdminKey"
#define ATTR_AZURE_AUTH_FILE  "AzureAuthFile"
#define ATTR_AZURE_IMAGE  "AzureImage"
#define ATTR_AZURE_LOCATION  "AzureLocation"
#define ATTR_AZURE_SIZE  "AzureSize"
#define ATTR_AZURE_SUBSCRIPTION  "AzureSubscription"
#define ATTR_AZURE_VM_ID  "AzureVmId"
#define ATTR_BADPUT_CAUSED_BY_DRAINING  "BadputCausedByDraining"
#define ATTR_BADPUT_CAUSED_BY_PREEMPTION  "BadputCausedByPreemption"
#define ATTR_BATCH_EXTRA_SUBMIT_ARGS  "BatchExtraSubmitArgs"
#define ATTR_BATCH_PROJECT  "BatchProject"
#define ATTR_BATCH_QUEUE  "BatchQueue"
#define ATTR_BATCH_RUNTIME  "BatchRuntime"
#define ATTR_BUFFER_SIZE  "BufferSize"
#define ATTR_BUFFER_FILES  "BufferFiles"
#define ATTR_BUFFER_BLOCK_SIZE  "BufferBlockSize"
#define ATTR_BUFFER_BLOCKS_USED  "BufferBlocksUsed"
#define ATTR_BUFFER_PREFETCH_SIZE  "BufferPrefetchSize"
#define ATTR_BYTES_SENT  "BytesSent"
#define ATTR_BYTES_RECVD  "BytesRecvd"
#define ATTR_CAN_HIBERNATE  "CanHibernate"
#define ATTR_CAPABILITY  "Capability"
#define ATTR_CGROUP_ENFORCED  "CgroupEnforced"
#define ATTR_CE_REQUIREMENTS  "CERequirements"
#define ATTR_CLAIM_STARTD  "ClaimStartd"
#define ATTR_COD_CLAIMS  "CODClaims"
#define ATTR_COLLECTOR_HOST  "CollectorHost"
#define ATTR_COMMAND  "Command"
#define ATTR_COMPRESS_FILES  "CompressFiles"
#define ATTR_CONTAINER_SERVICE_NAMES "ContainerServiceNames"
#define ATTR_CONTAINER_DURATION "ContainerDuration"
#define ATTR_CONTAINER_PORT_SUFFIX "_ContainerPort"
#define ATTR_CONTAINER_TARGET_DIR "ContainerTargetDir"
#define ATTR_REQUESTED_CAPACITY  "RequestedCapacity"
#define ATTR_CHECKPOINT_SIG  "CheckpointSig"
#define ATTR_CHILD_CLAIM_IDS "ChildClaimIds"
#define ATTR_CLAIM_END_TIME "ClaimEndTime"
#define ATTR_CLAIM_ID  "ClaimId"
#define ATTR_CLAIM_IDS  "ClaimIds"
#define ATTR_PUBLIC_CLAIM_ID  "PublicClaimId"
#define ATTR_PUBLIC_CLAIM_IDS  "PublicClaimIds"
//extern const char ATTR_CHILD_REMOVE_CONSTRAINT [];
#define ATTR_CLAIM_STATE  "ClaimState"
#define ATTR_CLAIM_TYPE  "ClaimType"
#define ATTR_CLIENT_MACHINE  "ClientMachine" 
#define ATTR_CLOCK_DAY  "ClockDay"
#define ATTR_CLOCK_MIN  "ClockMin"
#define ATTR_CLUSTER_ID  "ClusterId"
#define ATTR_AUTO_CLUSTER_ID  "AutoClusterId"
#define ATTR_AUTO_CLUSTER_ATTRS  "AutoClusterAttrs"
#define ATTR_EDITED_CLUSTER_ATTRS "EditedClusterAttrs"
#define ATTR_COMPLETION_DATE  "CompletionDate"
#define ATTR_MATCHED_CONCURRENCY_LIMITS  "MatchedConcurrencyLimits"
#define ATTR_MATCHED_PSG  "Matched_PSG"
#define ATTR_CONCURRENCY_LIMITS  "ConcurrencyLimits"
#define ATTR_PREEMPTING_CONCURRENCY_LIMITS  "PreemptingConcurrencyLimits"
#define ATTR_CONDOR_LOAD_AVG			"CondorLoadAvg"
#define ATTR_CONDOR_SCRATCH_DIR			"CondorScratchDir"
#define ATTR_CONDOR_ADMIN				"CondorAdmin"
#define ATTR_CONSOLE_IDLE  "ConsoleIdle"
#define ATTR_CONTAINER_IMAGE "ContainerImage"
#define ATTR_CONTAINER_IMAGE_SOURCE "ContainerImageSource"
#define ATTR_CONTINUE  "Continue"
#define ATTR_CONTINUE_REASON  "ContinueReason"
#define ATTR_CORE_SIZE  "CoreSize"
#define ATTR_CRON_MINUTES  "CronMinute"
#define ATTR_CRON_HOURS  "CronHour"
#define ATTR_CRON_DAYS_OF_MONTH  "CronDayOfMonth"
#define ATTR_CRON_MONTHS  "CronMonth"
#define ATTR_CRON_DAYS_OF_WEEK  "CronDayOfWeek"
#define ATTR_CRON_NEXT_RUNTIME  "CronNextRunTime"
#define ATTR_CRON_CURRENT_TIME_RANGE  "CronCurrentTimeRange"
#define ATTR_CRON_PREP_TIME  "CronPrepTime"
#define ATTR_CRON_WINDOW  "CronWindow"
#define ATTR_CPU_BUSY  "CpuBusy"
#define ATTR_CPU_BUSY_TIME  "CpuBusyTime"
#define ATTR_CPU_IS_BUSY  "CpuIsBusy"
#define ATTR_CPUS  "Cpus"
#define ATTR_CPUS_USAGE  "CpusUsage"
#define ATTR_CPU_MODEL_NUMBER  "CpuModelNumber"
#define ATTR_CPU_FAMILY  "CpuFamily"
#define ATTR_CPU_CACHE_SIZE  "CpuCacheSize"
#define ATTR_CURRENT_HOSTS  "CurrentHosts"
#define ATTR_CURRENT_JOBS_RUNNING  "CurrentJobsRunning"
#define ATTR_CURRENT_RANK  "CurrentRank"
#define ATTR_CURRENT_STATUS_UNKNOWN  "CurrentStatusUnknown"
#define ATTR_CURRENT_TIME  "CurrentTime"
#define ATTR_DAEMON_LAST_RECONFIG_TIME  "DaemonLastReconfigTime"
#define ATTR_DAEMON_START_TIME  "DaemonStartTime"
#define ATTR_DAEMON_SHUTDOWN  "DaemonShutdown"
#define ATTR_DAEMON_SHUTDOWN_FAST  "DaemonShutdownFast"
#define ATTR_DAGMAN_JOB_ID  "DAGManJobId"
#define ATTR_DAGMAN_WORKFLOW_LOG  "DAGManNodesLog"
#define ATTR_DAGMAN_WORKFLOW_MASK  "DAGManNodesMask"
#define ATTR_DAG_IN_RECOVERY "DAG_InRecovery"
#define ATTR_DAG_NODE_NAME  "DAGNodeName"
#define ATTR_DAG_NODE_NAME_ALT  "dag_node_name"
#define ATTR_DAG_NODES_DONE "DAG_NodesDone"
#define ATTR_DAG_NODES_FAILED "DAG_NodesFailed"
#define ATTR_DAG_NODES_POSTRUN "DAG_NodesPostrun"
#define ATTR_DAG_NODES_PRERUN "DAG_NodesPrerun"
#define ATTR_DAG_NODES_HOLDRUN "DAG_NodesHoldrun"
#define ATTR_DAG_NODES_QUEUED "DAG_NodesQueued"
#define ATTR_DAG_NODES_READY "DAG_NodesReady"
#define ATTR_DAG_NODES_TOTAL "DAG_NodesTotal"
#define ATTR_DAG_NODES_UNREADY "DAG_NodesUnready"
#define ATTR_DAG_NODES_FUTILE "DAG_NodesFutile"
#define ATTR_DAG_JOBS_SUBMITTED "DAG_JobsSubmitted"
#define ATTR_DAG_JOBS_IDLE "DAG_JobsIdle"
#define ATTR_DAG_JOBS_RUNNING "DAG_JobsRunning"
#define ATTR_DAG_JOBS_HELD "DAG_JobsHeld"
#define ATTR_DAG_JOBS_COMPLETED "DAG_JobsCompleted"
#define ATTR_DAG_STATUS "DAG_Status"
#define ATTR_DAG_STATS "DAG_Stats"
#define ATTR_DAG_AD_UPDATE_TIME "DAG_AdUpdateTime"
#define ATTR_DAGMAN_MAXIDLE "DAGMan_MaxIdle"
#define ATTR_DAGMAN_MAXJOBS "DAGMan_MaxJobs"
#define ATTR_DAGMAN_MAXPRESCRIPTS "DAGMan_MaxPreScripts"
#define ATTR_DAGMAN_MAXPOSTSCRIPTS "DAGMan_MaxPostScripts"
#define ATTR_DAGMAN_MAXHOLDSCRIPTS "DAGMan_MaxHoldScripts"
#define ATTR_DEFERRAL_OFFSET  "DeferralOffset"
#define ATTR_DEFERRAL_PREP_TIME  "DeferralPrepTime"
#define ATTR_DEFERRAL_TIME  "DeferralTime"
#define ATTR_DEFERRAL_WINDOW  "DeferralWindow"
#define ATTR_DESTINATION  "Destination"
#define ATTR_DISABLE_REASON "DisableReason"
#define ATTR_DISK  "Disk"
#define ATTR_DISK_USAGE  "DiskUsage"
#define ATTR_SCRATCH_DIR_FILE_COUNT "ScratchDirFileCount"
#define ATTR_DOCKER_CACHED_IMAGE_SIZE "DockerCachedImageSizeMb"
#define ATTR_DOCKER_IMAGE "DockerImage"
#define ATTR_DOCKER_NETWORKS "DockerNetworks"
#define ATTR_DOCKER_NETWORK_TYPE "DockerNetworkType"
#define ATTR_DOCKER_OVERRIDE_ENTRYPOINT  "DockerOverrideEntrypoint"
#define ATTR_DOCKER_PULL_POLICY "DockerPullPolicy"
#define ATTR_DOCKER_VOLUMES "DockerVolumes"
#define ATTR_DOCKER_VERSION  "DockerVersion"
#define ATTR_EMAIL_ATTRIBUTES  "EmailAttributes"
#define ATTR_ENABLED "Enabled"
#define ATTR_ENTERED_CURRENT_ACTIVITY  "EnteredCurrentActivity"
#define ATTR_ENTERED_CURRENT_STATE  "EnteredCurrentState"
#define ATTR_ENTERED_CURRENT_STATUS  "EnteredCurrentStatus"
#define ATTR_ERROR_STRING  "ErrorString"
#define ATTR_ERROR_CODE  "ErrorCode"
#define ATTR_WARNING "Warning"
#define ATTR_EXCEPTION_HIERARCHY  "ExceptionHierarchy"
#define ATTR_EXCEPTION_NAME  "ExceptionName"
#define ATTR_EXCEPTION_TYPE  "ExceptionType"
#define ATTR_EXECUTABLE_SIZE  "ExecutableSize"
#define ATTR_EXIT_REASON  "ExitReason"
#define ATTR_FETCH_FILES  "FetchFiles"
#define ATTR_FETCH_WORK_DELAY  "FetchWorkDelay"
#define ATTR_FILE_NAME  "FileName"
#define ATTR_FILE_SIZE  "FileSize"
#define ATTR_FILE_SYSTEM_DOMAIN  "FileSystemDomain"
#define ATTR_FILE_REMAPS  "FileRemaps"
#define ATTR_FILE_READ_COUNT  "FileReadCount"
#define ATTR_FILE_READ_BYTES  "FileReadBytes"
#define ATTR_FILE_WRITE_COUNT  "FileWriteCount"
#define ATTR_FILE_WRITE_BYTES  "FileWriteBytes"
#define ATTR_BLOCK_READ_KBYTES  "BlockReadKbytes"
#define ATTR_BLOCK_WRITE_KBYTES  "BlockWriteKbytes"
#define ATTR_BLOCK_READ_BYTES  "BlockReadBytes"
#define ATTR_BLOCK_WRITE_BYTES  "BlockWriteBytes"
#define ATTR_BLOCK_READS "BlockReads"
#define ATTR_BLOCK_WRITES "BlockWrites"
#define ATTR_CLOUD_LABEL_NAMES "CloudLabelNames"
#define ATTR_CLOUD_LABEL_PREFIX "CloudLabel"
#define ATTR_FILE_SEEK_COUNT  "FileSeekCount"
#define ATTR_FLOCKED_JOBS  "FlockedJobs"
#define ATTR_FLOCK_TO "FlockTo"
#define ATTR_EFFECTIVE_FLOCK_LIST "EffectiveFlockList"
#define ATTR_FLAVOR  "Flavor"
#define ATTR_FORCE  "Force"
#define ATTR_GAHP_PID "GahpPid"
#define ATTR_GCE_ACCOUNT  "GceAccount"
#define ATTR_GCE_AUTH_FILE  "GceAuthFile"
#define ATTR_GCE_IMAGE  "GceImage"
#define ATTR_GCE_MACHINE_TYPE  "GceMachineType"
#define ATTR_GCE_METADATA  "GceMetadata"
#define ATTR_GCE_METADATA_FILE  "GceMetadataFile"
#define ATTR_GCE_PREEMPTIBLE  "GcePreemptible"
#define ATTR_GCE_JSON_FILE  "GceJsonFile"
#define ATTR_GCE_PROJECT  "GceProject"
#define ATTR_GCE_ZONE  "GceZone"
#define ATTR_GID  "Gid"
#define ATTR_GLOBAL_JOB_ID  "GlobalJobId"
#define ATTR_GZIP  "GZIP"
#define ATTR_X509_USER_PROXY  "x509userproxy"
#define ATTR_X509_USER_PROXY_EXPIRATION  "x509UserProxyExpiration"
#define ATTR_X509_USER_PROXY_SUBJECT  "x509userproxysubject"
#define ATTR_X509_USER_PROXY_EMAIL  "x509UserProxyEmail"
#define ATTR_X509_USER_PROXY_VONAME  "x509UserProxyVOName"
#define ATTR_X509_USER_PROXY_FIRST_FQAN  "x509UserProxyFirstFQAN"
#define ATTR_X509_USER_PROXY_FQAN  "x509UserProxyFQAN"
#define ATTR_TOKEN_SUBJECT "AuthTokenSubject"
#define ATTR_TOKEN_ISSUER "AuthTokenIssuer"
#define ATTR_TOKEN_GROUPS "AuthTokenGroups"
#define ATTR_TOKEN_SCOPES "AuthTokenScopes"
#define ATTR_TOKEN_ID "AuthTokenId"
#define ATTR_DELEGATED_PROXY_EXPIRATION  "DelegatedProxyExpiration"
#define ATTR_GRID_RESOURCE  "GridResource"
#define ATTR_GRID_RESOURCE_UNAVAILABLE_REASON  "GridResourceUnavailableReason"
#define ATTR_GRID_RESOURCE_UNAVAILABLE_REASON_CODE  "GridResourceUnavailableReasonCode"
#define ATTR_GRID_RESOURCE_UNAVAILABLE_TIME  "GridResourceUnavailableTime"
#define ATTR_GRID_JOB_ID  "GridJobId"
#define ATTR_GRID_JOB_STATUS  "GridJobStatus"
#define ATTR_GRIDMANAGER_SELECTION_VALUE "GridmanagerSelectionValue"
#define ATTR_MYPROXY_PASSWORD  "MyProxyPassword"
#define ATTR_HARDWARE_ADDRESS  "HardwareAddress"
#define ATTR_HAS_CHECKPOINTING  "HasCheckpointing"
#define ATTR_HAS_CONTAINER  "HasContainer"
#define ATTR_HAS_DOCKER  "HasDocker"
#define ATTR_HAS_DOCKER_URL  "HasDockerURL"
#define ATTR_HAS_START_DAEMON_AD  "HasStartDaemonAd"
#define ATTR_HAS_SANDBOX_IMAGE  "HasSandboxImage"
#define ATTR_HAS_SIF  "HasSIF"
#define ATTR_HAS_SINGULARITY_PIDNAMESPACES  "HasPidNamespaces"
#define ATTR_HAS_ENCRYPT_EXECUTE_DIRECTORY "HasEncryptExecuteDirectory"
#define ATTR_HAS_FILE_TRANSFER  "HasFileTransfer"
#define ATTR_HAS_FILE_TRANSFER_PLUGIN_METHODS  "HasFileTransferPluginMethods"
#define ATTR_HAS_JOB_TRANSFER_PLUGINS  "HasJobTransferPlugins"
#define ATTR_HAS_PER_FILE_ENCRYPTION  "HasPerFileEncryption"
#define ATTR_HAS_IO_PROXY  "HasIOProxy"
#define ATTR_HAS_JAVA  "HasJava"
#define ATTR_HAS_JIC_LOCAL_CONFIG  "HasJICLocalConfig"
#define ATTR_HAS_JIC_LOCAL_STDIN  "HasJICLocalStdin"
#define ATTR_HAS_JOB_AD  "HasJobAd"
#define ATTR_HAS_JOB_AD_FROM_FILE  "HasJobAdFromFile"
#define ATTR_HAS_JOB_DEFERRAL  "HasJobDeferral"
#define ATTR_HAS_MPI  "HasMPI"
#define ATTR_HAS_OLD_VANILLA  "HasOldVanilla"
#define ATTR_HAS_PVM  "HasPVM"
#define ATTR_HAS_RECONNECT  "HasReconnect"
#define ATTR_HAS_SELF_CHECKPOINT_TRANSFERS "HasSelfCheckpointTransfers"
#define ATTR_HAS_ROTATIONAL_SCRATCH "HasRotationalScratch"
#define ATTR_HAS_SINGULARITY "HasSingularity"
#define ATTR_HAS_TDP  "HasTDP"
#define ATTR_HAS_TRANSFER_INPUT_REMAPS "HasTransferInputRemaps"
#define ATTR_HAS_USER_NAMESPACES "HasUserNamespaces"
#define ATTR_HAS_WIN_RUN_AS_OWNER  "HasWindowsRunAsOwner"
#define ATTR_HAS_VM  "HasVM"
#define ATTR_HELD_JOBS  "HeldJobs"
#define ATTR_HIBERNATION_LEVEL  "HibernationLevel"
#define ATTR_HIBERNATION_STATE  "HibernationState"
#define ATTR_HIBERNATION_SUPPORTED_STATES  "HibernationSupportedStates"
#define ATTR_HIBERNATION_RAW_MASK  "HibernationRawMask"
#define ATTR_HIBERNATION_METHOD  "HibernationMethod"
#define ATTR_UNHIBERNATE  "Unhibernate"
#define ATTR_HOLD_KILL_SIG  "HoldKillSig"
#define ATTR_HOOK_KEYWORD  "HookKeyword"
#define ATTR_HISTORY_RECORD_SOURCE  "HistoryRecordSource"
#define ATTR_HISTORY_AD_TYPE_FILTER  "HistoryAdTypeFilter"
#define ATTR_IDLE_JOBS  "IdleJobs"
#define ATTR_IMAGE_SIZE  "ImageSize"
#define ATTR_IO_WAIT  "IOWait"
#define ATTR_RESIDENT_SET_SIZE  "ResidentSetSize"
#define ATTR_PROPORTIONAL_SET_SIZE  "ProportionalSetSizeKb"
#define ATTR_INTERACTIVE  "Interactive"
#define ATTR_IS_DAEMON_CORE  "IsDaemonCore"
#define ATTR_IS_LOCAL_STARTD  "IsLocalStartd"
#define ATTR_IS_OWNER  "IsOwner"
#define ATTR_IS_QUEUE_SUPER_USER  "IsQueueSuperUser"
#define ATTR_IS_LOCAL_USER "IsLocalUser"
#define ATTR_IS_WAKE_SUPPORTED  "IsWakeOnLanSupported"
#define ATTR_WAKE_SUPPORTED_FLAGS  "WakeOnLanSupportedFlags"
#define ATTR_IS_WAKE_ENABLED  "IsWakeOnLanEnabled"
#define ATTR_WAKE_ENABLED_FLAGS  "WakeOnLanEnabledFlags"
#define ATTR_IS_WAKEABLE  "IsWakeAble"
#define ATTR_INACTIVE  "Inactive"
#define ATTR_JAR_FILES  "JarFiles"
#define ATTR_JAVA_SPECIFICATION_VERSION  "JavaSpecificationVersion"
#define ATTR_JAVA_VENDOR  "JavaVendor"
#define ATTR_JAVA_VERSION  "JavaVersion"
#define ATTR_JOB_ACTION  "JobAction"
#define ATTR_JOB_ACTIVATION_DURATION  "ActivationDuration"
#define ATTR_JOB_ACTIVATION_EXECUTION_DURATION  "ActivationExecutionDuration"
#define ATTR_JOB_ACTIVATION_SETUP_DURATION  "ActivationSetupDuration"
#define ATTR_JOB_ACTIVATION_TEARDOWN_DURATION  "ActivationTeardownDuration"
#define ATTR_JOB_ALLOWED_JOB_DURATION  "AllowedJobDuration"
#define ATTR_JOB_ALLOWED_EXECUTE_DURATION "AllowedExecuteDuration"
#define ATTR_JOB_EPOCH_WRITE_DATE "EpochWriteDate"
#define ATTR_JOB_LAST_SHADOW_EXCEPTION    "LastShadowException"
#define ATTR_JOB_COOL_DOWN_EXPIRATION "JobCoolDownExpiration"
#define ATTR_NUM_JOB_COOL_DOWNS "NumJobCoolDowns"
#define ATTR_JOB_MATERIALIZE_DIGEST_FILE  "JobMaterializeDigestFile"
#define ATTR_JOB_MATERIALIZE_ITEMS_FILE   "JobMaterializeItemsFile"
#define ATTR_JOB_MATERIALIZE_LIMIT        "JobMaterializeLimit"
#define ATTR_JOB_MATERIALIZE_MAX_IDLE     "JobMaterializeMaxIdle"     // actually max not-running just like dagman
#define ATTR_JOB_MATERIALIZE_CONSTRAINT   "JobMaterializeConstraint"  // expression that constraints/limits materialization
#define ATTR_JOB_MATERIALIZE_NEXT_PROC_ID "JobMaterializeNextProcId"
#define ATTR_JOB_MATERIALIZE_NEXT_ROW     "JobMaterializeNextRow"
#define ATTR_JOB_MATERIALIZE_STEP_SIZE    "JobMaterializeStepSize"
#define ATTR_JOB_MATERIALIZE_PAUSED       "JobMaterializePaused"
#define ATTR_JOB_MATERIALIZE_PAUSE_REASON "JobMaterializePauseReason"
#define ATTR_JOB_ARGUMENTS1  "Args"
#define ATTR_JOB_ARGUMENTS2  "Arguments"
#define ATTR_JOB_CHECKPOINT_NUMBER  "CheckpointNumber"
#define ATTR_JOB_CHECKPOINT_DESTINATION  "CheckpointDestination"
#define ATTR_JOB_CMD  "Cmd"
#define ATTR_JOB_ORIG_CMD  "OrigCmd"
#define ATTR_JOB_DESCRIPTION "JobDescription"
#define ATTR_STACK_SIZE  "StackSize"
#define ATTR_JOB_CMD_HASH  "CmdHash"
#ifdef FIPS_MODE
#define ATTR_JOB_CMD_CHECKSUM  "CmdSHA"
#else
#define ATTR_JOB_CMD_CHECKSUM  "CmdMD5"
#endif
#define ATTR_ORIG_JOB_CMD  "OrigCmd" 
#define ATTR_JOB_CORE_DUMPED  "JobCoreDumped"
#define ATTR_JOB_CORE_FILENAME  "JobCoreFileName"
#define ATTR_JOB_CURRENT_START_DATE  "JobCurrentStartDate"
#define ATTR_JOB_CURRENT_START_EXECUTING_DATE  "JobCurrentStartExecutingDate"
#define ATTR_JOB_CURRENT_START_TRANSFER_OUTPUT_DATE  "JobCurrentStartTransferOutputDate"
#define ATTR_JOB_CURRENT_FINISH_TRANSFER_OUTPUT_DATE  "JobCurrentFinishTransferOutputDate"
#define ATTR_JOB_CURRENT_START_TRANSFER_INPUT_DATE  "JobCurrentStartTransferInputDate"
#define ATTR_JOB_CURRENT_FINISH_TRANSFER_INPUT_DATE  "JobCurrentFinishTransferInputDate"
#define ATTR_CUMULATIVE_TRANSFER_TIME  "CumulativeTransferTime"
#define ATTR_JOB_DURATION  "JobDuration"
#define ATTR_ENCRYPT_EXECUTE_DIRECTORY "EncryptExecuteDirectory"
#define ATTR_EXECUTE_DIRECTORY_ENCRYPTED "ExecuteDirWasEncrypted"
#define ATTR_JOB_ENV_V1  "Env"
#define ATTR_JOB_ENV_V1_DELIM  "EnvDelim"
#define ATTR_JOB_ENVIRONMENT  "Environment"
#define ATTR_JOB_ERROR  "Err"
#define ATTR_JOB_ORIGINAL_ERROR  "OriginalErr"
#define ATTR_JOB_ERROR_SIZE  "ErrSize"
#define ATTR_JOB_CPU_INSTRUCTIONS  "CPUInstructions"
#define ATTR_JOB_KEEP_CLAIM_IDLE  "KeepClaimIdle"
#define ATTR_JOB_KEYWORD  "JobKeyword"
#define ATTR_JOB_LEASE_DURATION  "JobLeaseDuration"
#define ATTR_JOB_LEASE_EXPIRATION  "JobLeaseExpiration"
#define ATTR_JOB_LIMIT_DIRECTORY_ACCESS "LimitDirectoryAccess"
#define ATTR_JOB_SPOOL_EXECUTABLE  "SpoolExecutable"
#define ATTR_JOB_EXIT_STATUS  "ExitStatus"
#define ATTR_JOB_EXIT_REQUIREMENTS  "ExitRequirements"
#define ATTR_JOB_ID  "JobId"
#define ATTR_JOB_FINISHED_HOOK_DONE  "JobFinishedHookDone"
#define ATTR_JOB_INPUT  "In"
#define ATTR_JOB_IWD  "Iwd"
#define ATTR_JOB_IWD_FLUSH_NFS_CACHE  "IwdFlushNFSCache"
#define ATTR_JOB_JAVA_VM_ARGS1  "JavaVMArgs"
#define ATTR_JOB_JAVA_VM_ARGS2  "JavaVMArguments"
#define ATTR_ORIG_JOB_IWD  "OrigIwd"
#define ATTR_JOB_REMOTE_IWD  "RemoteIwd"
#define ATTR_JOB_LOAD_PROFILE  "LoadProfile"
#define ATTR_JOB_RUNAS_OWNER  "RunAsOwner"
#define ATTR_JOB_LOAD_USER_PROFILE  "LoadUserProfile"
#define ATTR_JOB_LOCAL_CPU  "LocalCpu"
#define ATTR_JOB_MANAGED  "Managed"
#define ATTR_JOB_MANAGED_MANAGER  "ManagedManager"
#define ATTR_JOB_MANIFEST_DESIRED "ManifestDesired"
#define ATTR_JOB_MANIFEST_DIR "ManifestDir"
#define ATTR_JOB_NEWLY_COMMITTED_TIME "NewlyCommittedTime"
#define ATTR_JOB_NONESSENTIAL  "Nonessential"
#define ATTR_JOB_NOOP  "IsNoopJob"
#define ATTR_JOB_NOOP_EXIT_SIGNAL  "NoopJobExitSignal"
#define ATTR_JOB_NOOP_EXIT_CODE  "NoopJobExitCode"
#define ATTR_JOB_NOTIFICATION  "JobNotification"
#define ATTR_JOB_OUTPUT  "Out"
#define ATTR_JOB_ORIGINAL_OUTPUT  "OriginalOut"
#define ATTR_JOB_OUTPUT_SIZE  "OutSize"
#define ATTR_JOB_PID  "JobPid"
#define ATTR_PRE_JOB_PRIO1  "PreJobPrio1"
#define ATTR_PRE_JOB_PRIO2  "PreJobPrio2"
#define ATTR_POST_JOB_PRIO1  "PostJobPrio1"
#define ATTR_POST_JOB_PRIO2  "PostJobPrio2"
#define ATTR_JOB_PRIO  "JobPrio"
#define ATTR_JOB_PRIO_ARRAY "JobPrioArray" // optionally in submitter ad
#define ATTR_JOB_PRIO_ARRAY_OVERFLOW "JobPrioArrayOverflow"
#define ATTR_JOB_COMMITTED_TIME  "CommittedTime"
#define ATTR_JOB_LANGUAGE  "JobLanguage"
#define ATTR_JOB_LAST_START_DATE  "JobLastStartDate"
#define ATTR_JOB_LAST_CHECKPOINT_TIME "JobLastCheckpointTime"
#define ATTR_JOB_LEAVE_IN_QUEUE  "LeaveJobInQueue"
#define ATTR_JOB_REMOTE_SYS_CPU  "RemoteSysCpu"
#define ATTR_JOB_REMOTE_USER_CPU  "RemoteUserCpu"
#define ATTR_JOB_CUMULATIVE_REMOTE_SYS_CPU  "CumulativeRemoteSysCpu"
#define ATTR_JOB_CUMULATIVE_REMOTE_USER_CPU  "CumulativeRemoteUserCpu"
#define ATTR_JOB_DISCONNECTED_DATE  "JobDisconnectedDate"
#define ATTR_JOB_REMOTE_WALL_CLOCK  "RemoteWallClockTime"
#define ATTR_JOB_LAST_REMOTE_WALL_CLOCK "LastRemoteWallClockTime"
#define ATTR_JOB_RUN_COUNT  "JobRunCount"
#define ATTR_JOB_MAX_RETRIES "JobMaxRetries"
#define ATTR_JOB_SUCCESS_EXIT_CODE "JobSuccessExitCode"
#define ATTR_JOB_SANDBOX_JOBAD  "DropJobAdInSandbox"
#define ATTR_JOB_SET_ID "JobSetId"
#define ATTR_JOB_SET_NAME "JobSetName"
#define ATTR_JOB_SUBMIT_FILE  "JobSubmitFile"
#define ATTR_JOB_SUBMISSION  "Submission"
#define ATTR_JOB_SUBMISSION_ID  "SubmissionId"
#define ATTR_JOB_BATCH_ID "JobBatchId"
#define ATTR_JOB_BATCH_NAME "JobBatchName"
#define ATTR_JOB_START  "JobStart"
#define ATTR_JOB_START_DATE  "JobStartDate"
#define ATTR_JOB_STATE  "JobState"
#define ATTR_JOB_STATUS  "JobStatus"
#define ATTR_LAST_JOB_STATUS  "LastJobStatus"
#define ATTR_JOB_STARTER_DEBUG "JobStarterDebug"
#define ATTR_JOB_STARTER_LOG "JobStarterLog"
#define ATTR_JOB_TOE "ToE"  // termination of execution ad
#define ATTR_JOB_STATUS_ON_RELEASE  "JobStatusOnRelease"
#define ATTR_JOB_SUBMIT_METHOD "JobSubmitMethod"
#define ATTR_JOB_UNIVERSE  "JobUniverse"
#define ATTR_JOB_WALL_CLOCK_CKPT  "WallClockCheckpoint"
#define ATTR_JOB_QUEUE_BIRTHDATE  "JobQueueBirthdate"
#define ATTR_JOB_REQUIRES_SANDBOX  "JobRequiresSandbox"
#define ATTR_JOB_CURRENT_RECONNECT_ATTEMPT "JobCurrentReconnectAttempt"
#define ATTR_TOTAL_JOB_RECONNECT_ATTEMPTS "TotalJobReconnectAttempts"
#define ATTR_JOB_VM_TYPE  "JobVMType"
#define ATTR_JOB_VM_MEMORY  "JobVMMemory"
#define ATTR_JOB_VM_VCPUS  "JobVM_VCPUS"
#define ATTR_JOB_VM_MACADDR  "JobVM_MACADDR"
#define ATTR_JOB_VM_CHECKPOINT  "JobVMCheckpoint"
#define ATTR_JOB_VM_NETWORKING  "JobVMNetworking"
#define ATTR_JOB_VM_NETWORKING_TYPE  "JobVMNetworkingType"
#define ATTR_JOB_VM_HARDWARE_VT  "JobVMHardwareVT"
#define ATTR_JOB_VM_VNC  "JobVMVNCConsole"
#define ATTR_JOB_VM_CPU_UTILIZATION  "JobVMCpuUtilization"
#define ATTR_JOB_SEND_CREDENTIAL  "SendCredential"
#define ATTR_JOBINFO_MAXINTERVAL "_condor_JOBINFO_MAXINTERVAL" // Used in starter updates to shadow
#define ATTR_OAUTH_SERVICES_NEEDED "OAuthServicesNeeded"
#define ATTR_KEYBOARD_IDLE  "KeyboardIdle"
#define ATTR_KFLOPS  "KFlops"
#define ATTR_KILL  "Kill"
#define ATTR_KILL_SIG  "KillSig"
#define ATTR_KILL_SIG_TIMEOUT  "KillSigTimeout"
#define ATTR_LAST_AVAIL_INTERVAL  "LastAvailInterval"
#define ATTR_LAST_BENCHMARK  "LastBenchmark"
#define ATTR_LAST_CKPT_TIME  "LastCkptTime"
#define ATTR_LAST_PUBLIC_CLAIM_ID  "LastPublicClaimId"
#define ATTR_LAST_PUBLIC_CLAIM_IDS  "LastPublicClaimIds"
#define ATTR_LAST_CLAIM_STATE  "LastClaimState"
#define ATTR_LAST_FETCH_WORK_SPAWNED  "LastFetchWorkSpawned"
#define ATTR_LAST_FETCH_WORK_COMPLETED  "LastFetchWorkCompleted"
#define ATTR_LAST_FORWARDED	"LastForwarded"
#define ATTR_LAST_VACATE_TIME  "LastVacateTime"
#define ATTR_LAST_HEARD_FROM  "LastHeardFrom"
#define ATTR_LAST_HOLD_REASON  "LastHoldReason"
#define ATTR_LAST_HOLD_REASON_CODE  "LastHoldReasonCode"
#define ATTR_LAST_HOLD_REASON_SUBCODE  "LastHoldReasonSubCode"
#define ATTR_LAST_JOB_LEASE_RENEWAL  "LastJobLeaseRenewal"
#define ATTR_LAST_MATCH_TIME  "LastMatchTime"
#define ATTR_MACHINE_LAST_MATCH_TIME  "MachineLastMatchTime"
#define ATTR_LAST_MATCH_LIST_PREFIX  "LastMatchName"
#define ATTR_LAST_MATCH_LIST_LENGTH  "LastMatchListLength"
#define ATTR_LAST_REJ_MATCH_TIME  "LastRejMatchTime"
#define ATTR_LAST_REJ_MATCH_REASON  "LastRejMatchReason"
#define ATTR_LAST_PERIODIC_CHECKPOINT  "LastPeriodicCheckpoint"
#define ATTR_LAST_RELEASE_REASON  "LastReleaseReason"
#define ATTR_LAST_REMOTE_HOST  "LastRemoteHost"
#define ATTR_LAST_REMOTE_POOL  "LastRemotePool"
#define ATTR_LAST_REMOTE_STATUS_UPDATE  "LastRemoteStatusUpdate"
#define ATTR_LAST_SLOT_NAME  "LastSlotName"
#define ATTR_LAST_UPDATE  "LastUpdate"
#define ATTR_LOCAL_CREDD  "LocalCredd"
#define ATTR_LOCAL_FILES  "LocalFiles"
#define ATTR_LOCATION_QUERY  "LocationQuery"
#define ATTR_LOAD_AVG  "LoadAvg"
#define ATTR_MACHINE  "Machine"
#define ATTR_MACHINE_COUNT  "MachineCount"
#define ATTR_MICROARCH  "Microarch"
#define ATTR_REF_COUNT "RefCount"
#define ATTR_MASTER_IP_ADDR  "MasterIpAddr"
#define ATTR_MAX_HOSTS  "MaxHosts"
#define ATTR_MAX_JOB_RETIREMENT_TIME  "MaxJobRetirementTime"
#define ATTR_PARENT_SLOT_ID "ParentSlotId"
#define ATTR_DSLOT_ID "DSlotId"
#define ATTR_RETIREMENT_TIME_REMAINING "RetirementTimeRemaining"
#define ATTR_MAX_JOBS_RUNNING  "MaxJobsRunning"
#define ATTR_CURB_MATCHMAKING "CurbMatchmaking"
#define ATTR_MATCH_CLAIMED_PSLOTS "MatchClaimedPslots"
#define ATTR_MAX_CLAIM_TIME "MaxClaimTime"
#define ATTR_MEMORY  "Memory"
#define ATTR_MEMORY_USAGE  "MemoryUsage"
#define ATTR_DETECTED_MEMORY  "DetectedMemory"
#define ATTR_DETECTED_CPUS  "DetectedCpus"
#define ATTR_MIN_HOSTS  "MinHosts"
#define ATTR_MIPS  "Mips"
#define ATTR_MPI_IS_MASTER  "MPIIsMaster"
#define ATTR_MPI_MASTER_ADDR  "MPIMasterAddr"
#define ATTR_PARALLEL_IS_MASTER  "ParallelIsMaster"   
#define ATTR_PARALLEL_MASTER_ADDR  "ParallelMasterAddr" 
#define ATTR_MY_CURRENT_TIME  "MyCurrentTime"
#define ATTR_MY_TYPE  "MyType"
#define ATTR_NAME  "Name"
#define ATTR_NICE_USER_deprecated  "NiceUser"
#ifdef NO_DEPRECATE_NICE_USER
#define ATTR_NICE_USER ATTR_NICE_USER_deprecated
#endif

#define ATTR_NEGOTIATOR_JOB_CONSTRAINT  "NegotiatorJobConstraint"
#define ATTR_NEGOTIATOR_NAME  "NegotiatorName"
#define ATTR_NEGOTIATOR_REQUIREMENTS  "NegotiatorRequirements"
#define ATTR_NETWORK_IN  "NetworkInputMb"
#define ATTR_NETWORK_OUT  "NetworkOutputMb"
#define ATTR_NEXT_CLUSTER_NUM  "NextClusterNum"
//#define ATTR_NEXT_JOBSET_NUM "NextJobSetNum"	// TJ removed NextJobSetNum, will use NextClusterNum to allocate jobset ids
#define ATTR_NEXT_FETCH_WORK_DELAY  "NextFetchWorkDelay"
#define ATTR_NEXT_JOB_START_DELAY  "NextJobStartDelay"
#define ATTR_NODE  "Node"
#define ATTR_ARC_APPLICATION  "ArcApplication"
#define ATTR_ARC_DATA_STAGING  "ArcDataStaging"
#define ATTR_ARC_RTE  "ArcRte"
#define ATTR_ARC_RESOURCES  "ArcResources"
#define ATTR_NOTIFY_USER  "NotifyUser"
#define ATTR_NT_DOMAIN  "NTDomain"
#define ATTR_TRANSFER_QUEUE_USER_EXPR "TransferQueueUserExpr"
//extern const char ATTR_WINDOWS_VERSION [];
#define ATTR_WINDOWS_MAJOR_VERSION  "WindowsMajorVersion"
#define ATTR_WINDOWS_MINOR_VERSION  "WindowsMinorVersion"
#define ATTR_WINDOWS_BUILD_NUMBER  "WindowsBuildNumber"
#define ATTR_WINDOWS_SERVICE_PACK_MAJOR  "WindowsServicePackMajorVersion"
#define ATTR_WINDOWS_SERVICE_PACK_MINOR  "WindowsServicePackMinorVersion"
#define ATTR_WINDOWS_PRODUCT_TYPE  "WindowsProductType"
#define ATTR_NUM_ADS "NumAds"
#define ATTR_NUM_COD_CLAIMS  "NumCODClaims"
#define ATTR_NUM_CKPTS  "NumCkpts"
#define ATTR_NUM_CKPTS_RAW  "NumCkpts_RAW"
#define ATTR_NUM_DYNAMIC_SLOTS  "NumDynamicSlots"
#define ATTR_NUM_MATCHES  "NumJobMatches"
#define ATTR_LIMIT_RESULTS "LimitResults"
#define ATTR_NUM_HOLDS "NumHolds"
#define ATTR_NUM_HOLDS_BY_REASON "NumHoldsByReason"
#define ATTR_NUM_JOB_STARTS  "NumJobStarts"
#define ATTR_NUM_JOB_COMPLETIONS "NumJobCompletions"
#define ATTR_NUM_JOB_RECONNECTS  "NumJobReconnects"
#define ATTR_NUM_PIDS  "NumPids"
#define ATTR_NUM_RESTARTS  "NumRestarts"
#define ATTR_NUM_SHADOW_EXCEPTIONS  "NumShadowExceptions"
#define ATTR_NUM_SHADOW_STARTS  "NumShadowStarts"
#define ATTR_NUM_SYSTEM_HOLDS  "NumSystemHolds"
#define ATTR_NUM_USERS  "NumUsers"
#define ATTR_NUM_OWNERS "NumOwners"
#define ATTR_OFFLINE  "Offline"
#define ATTR_OPSYS  "OpSys"
#define ATTR_OPSYSVER  "OpSysVer"
#define ATTR_OPSYS_AND_VER  "OpSysAndVer"
#define ATTR_OPSYS_MAJOR_VER  "OpSysMajorVer"
#define ATTR_OPSYS_NAME  "OpSysName"
#define ATTR_OPSYS_LONG_NAME  "OpSysLongName"
#define ATTR_OPSYS_SHORT_NAME  "OpSysShortName"
#define ATTR_OPSYS_LEGACY  "OpSysLegacy"
#define ATTR_ORIG_MAX_HOSTS  "OrigMaxHosts"
#define ATTR_OTHER_JOB_REMOVE_REQUIREMENTS  "OtherJobRemoveRequirements" 
#define ATTR_OUTPUT_DESTINATION  "OutputDestination"
#define ATTR_OWNER  "Owner" 
#define ATTR_PARALLEL_SCHEDULING_GROUP  "ParallelSchedulingGroup"
#define ATTR_PARALLEL_SCRIPT_SHADOW  "ParallelScriptShadow"  
#define ATTR_PARALLEL_SCRIPT_STARTER  "ParallelScriptStarter" 
#define ATTR_PARALLEL_SHUTDOWN_POLICY  "ParallelShutdownPolicy" 
#define ATTR_PERIODIC_CHECKPOINT  "PeriodicCheckpoint"
#define ATTR_PLATFORM					"CondorPlatform"
#define ATTR_PREEMPTING_ACCOUNTING_GROUP  "PreemptingAccountingGroup"
#define ATTR_PREEMPTING_RANK  "PreemptingRank"
#define ATTR_PREEMPTING_OWNER  "PreemptingOwner"
#define ATTR_PREEMPTING_USER  "PreemptingUser"
#define ATTR_PREEMPT_STATE_  "PreemptState"
#define ATTR_PREFERENCES  "Preferences"
#define ATTR_PREFER_PARALLEL_SCHEDULING_GROUP  "PreferParallelSchedulingGroup"
#define ATTR_PREV_SEND_ESTIMATE  "PrevSendEstimate"
#define ATTR_PREV_RECV_ESTIMATE  "PrevRecvEstimate"
#define ATTR_PROC_ID  "ProcId"
#define ATTR_TOTAL_SUBMIT_PROCS "TotalSubmitProcs"
#define ATTR_PSLOT_ROLLUP_INFORMATION "PslotRollupInformation"
#define ATTR_SUB_PROC_ID  "SubProcId"
#define ATTR_PRIVATE_NETWORK_NAME  "PrivateNetworkName"
#define ATTR_Q_DATE  "QDate"
#define ATTR_RANK  "Rank"
#define ATTR_REAL_UID  "RealUid"
#define ATTR_RELEASE_CLAIM  "ReleaseClaim"
#define ATTR_RELEASE_REASON  "ReleaseReason"
#define ATTR_REMOTE_ADMIN_CAPABILITY "_condor_PrivRemoteAdminCapability"
#define ATTR_REMOTE_AUTOREGROUP  "RemoteAutoregroup"
#define ATTR_REMOTE_GROUP  "RemoteGroup"
#define ATTR_REMOTE_GROUP_RESOURCES_IN_USE  "RemoteGroupResourcesInUse"
#define ATTR_REMOTE_GROUP_QUOTA  "RemoteGroupQuota"
#define ATTR_REMOTE_HOST  "RemoteHost"
#define ATTR_REMOTE_HOSTS  "RemoteHosts"
#define ATTR_REMOTE_NEGOTIATING_GROUP  "RemoteNegotiatingGroup"
#define ATTR_REMOTE_OWNER  "RemoteOwner"
#define ATTR_REMOTE_POOL  "RemotePool"
#define ATTR_REMOTE_SCHEDD_NAME  "RemoteScheddName"
#define ATTR_REMOTE_SLOT_ID  "RemoteSlotID"
#define ATTR_REMOTE_SPOOL_DIR  "RemoteSpoolDir"
#define ATTR_REMOTE_USER  "RemoteUser"
#define ATTR_REMOTE_USER_PRIO  "RemoteUserPrio"
#define ATTR_REMOTE_USER_RESOURCES_IN_USE  "RemoteUserResourcesInUse"
#define ATTR_REMOVE_KILL_SIG  "RemoveKillSig"
#define ATTR_REMOVE_REASON  "RemoveReason"
#define ATTR_REQUEUE_REASON  "RequeueReason"
#define ATTR_REQUIREMENTS  "Requirements"
#define ATTR_CUDA_VERSION "CUDAVersion"
#define ATTR_QUERY_Q_IDS                "IDs"
#define ATTR_QUERY_Q_INCLUDE_CLUSTER_AD "IncludeClusterAd"
#define ATTR_QUERY_Q_INCLUDE_JOBSET_ADS "IncludeJobsetAds"
#define ATTR_QUERY_Q_NO_PROC_ADS        "NoProcAds"
#define ATTR_RESOURCE_REQUEST_CONSTRAINT "_condor_RESOURCE_CONSTRAINT"  // used in resource request ad
#define ATTR_RESOURCE_REQUEST_COUNT "_condor_RESOURCE_COUNT"  // used in resource request ad
#define ATTR_RESOURCE_REQUEST_CLUSTER "_condor_RESOURCE_CLUSTER"
#define ATTR_RESOURCE_REQUEST_PROC "_condor_RESOURCE_PROC"
#define ATTR_RESTRICT_TO_AUTHENTICATED_IDENTITY "RestrictToAuthenticatedIdentity"
#define ATTR_SLOT_TYPE  "SlotType"
#define ATTR_SLOT_TYPE_ID  "SlotTypeID"
#define ATTR_SLOT_WEIGHT  "SlotWeight"
#define ATTR_RESULT  "Result"
#define ATTR_RSC_BYTES_SENT  "RSCBytesSent"
#define ATTR_RSC_BYTES_RECVD  "RSCBytesRecvd"
#define ATTR_RUNNING_JOBS  "RunningJobs"
#define ATTR_RUNNING_COD_JOB  "RunningCODJob"
#define ATTR_RUN_BENCHMARKS  "RunBenchmarks"
#define ATTR_SHADOW_IP_ADDR  "ShadowIpAddr"
#define ATTR_MY_ADDRESS  "MyAddress"
#define ATTR_ADDRESS_V1 "AddressV1"
#define ATTR_NUM_JOB_STARTS_DELAYED  "NumJobStartsDelayed"
#define ATTR_NUM_PENDING_CLAIMS  "NumPendingClaims"
#define ATTR_SCHEDD_SWAP_EXHAUSTED  "ScheddSwapExhausted"
#define ATTR_SCHEDD_INTERVAL  "ScheddInterval"
#define ATTR_SCHEDD_IP_ADDR  "ScheddIpAddr"
#define ATTR_SCHEDD_NAME  "ScheddName"
#define ATTR_SCHEDDS_ARE_SUBMITTERS  "ScheddsAreSubmitters"
#define ATTR_SCHEDULER  "Scheduler"
#define ATTR_SHADOW_WAIT_FOR_DEBUG  "ShadowWaitForDebug"
#define ATTR_SHOULD_FORWARD	"ShouldForward"
#define ATTR_SCITOKENS_FILE "ScitokensFile"
#define ATTR_SEND_PRIVATE_ATTRIBUTES "SendPrivateAttributes"
#define ATTR_SEND_SERVER_TIME "SendServerTime"
#define ATTR_SINGULARITY_VERSION "SingularityVersion"
#define ATTR_SLOT_ID  "SlotID"
#define ATTR_SLOT_PARTITIONABLE  "PartitionableSlot"
#define ATTR_SLOT_BACKFILL  "BackfillSlot"
#define ATTR_SLOT_DYNAMIC  "DynamicSlot"
#define ATTR_SOURCE  "Source"
#define ATTR_STAGE_IN_START  "StageInStart"
#define ATTR_STAGE_IN_FINISH  "StageInFinish"
#define ATTR_STAGE_OUT_START  "StageOutStart"
#define ATTR_STAGE_OUT_FINISH  "StageOutFinish"
#define ATTR_START  "Start"
#define ATTR_START_LOCAL_UNIVERSE  "StartLocalUniverse"
#define ATTR_START_SCHEDULER_UNIVERSE  "StartSchedulerUniverse"
#define ATTR_STARTD_IP_ADDR  "StartdIpAddr"
#define ATTR_STARTD_PRINCIPAL  "StartdPrincipal"
#define ATTR_STARTD_SENDS_ALIVES  "StartdSendsAlives"
#define ATTR_STARTER_EXIT_STATUS "StarterExitStatus"
#define ATTR_STARTER_HANDLES_ALIVES "_condor_StartdHandlesAlives"
#define ATTR_STATE  "State"
#define ATTR_STARTER_IP_ADDR  "StarterIpAddr"
#define ATTR_STARTER_ABILITY_LIST  "StarterAbilityList"
#define ATTR_STARTER_ULOG_FILE  "StarterUserLog"
#define ATTR_STARTER_ULOG_USE_XML  "StarterUserLogUseXML"
#define ATTR_STARTER_WAIT_FOR_DEBUG  "StarterWaitForDebug"
#define ATTR_STATUS  "Status"
#define ATTR_STREAM_INPUT  "StreamIn"
#define ATTR_STREAM_OUTPUT  "StreamOut"
#define ATTR_STREAM_ERROR  "StreamErr"
#define ATTR_SUBMIT_EVENT_NOTES  "SubmitEventNotes"
#define ATTR_SUBMIT_EVENT_USER_NOTES  "SubmitEventUserNotes"
#define ATTR_SUBMITTER "Submitter"
#define ATTR_SUBMITTER_GLOBAL_JOB_ID  "SubmitterGlobalJobId"
#define ATTR_SUBMITTER_ID  "SubmitterId"
#define ATTR_SUBMITTER_TAG  "SubmitterTag"
#define ATTR_SUBMITTOR_PRIO  "SubmittorPrio"   // old-style for ATTR_SUBMITTER_USER_PRIO
#define ATTR_SUBMITTER_USER_PRIO  "SubmitterUserPrio"   // new-style for ATTR_SUBMITTOR_PRIO
#define ATTR_SUBMITTER_USER_RESOURCES_IN_USE  "SubmitterUserResourcesInUse"
#define ATTR_SUBMITTER_AUTOREGROUP  "SubmitterAutoregroup"
#define ATTR_SUBMITTER_GROUP  "SubmitterGroup"
#define ATTR_SUBMITTER_GROUP_RESOURCES_IN_USE  "SubmitterGroupResourcesInUse"
#define ATTR_SUBMITTER_GROUP_QUOTA  "SubmitterGroupQuota"
#define ATTR_SUBMITTER_NEGOTIATING_GROUP  "SubmitterNegotiatingGroup"
#define ATTR_SUBNET  "Subnet"
#define ATTR_SUBNET_MASK  "SubnetMask"
#define ATTR_SUSPEND  "Suspend"
#define ATTR_SUSPEND_REASON  "SuspendReason"
#define ATTR_SUSPEND_JOB_AT_EXEC  "SuspendJobAtExec"
#define ATTR_TARGET_TYPE  "TargetType"
#define ATTR_TIME_TO_LIVE  "TimeToLive"
#define ATTR_TOOL_DAEMON_ARGS1  "ToolDaemonArgs"
#define ATTR_TOOL_DAEMON_ARGS2  "ToolDaemonArguments"
#define ATTR_TOOL_DAEMON_CMD  "ToolDaemonCmd"
#define ATTR_TOOL_DAEMON_ERROR  "ToolDaemonError"
#define ATTR_TOOL_DAEMON_INPUT  "ToolDaemonInput"
#define ATTR_TOOL_DAEMON_OUTPUT  "ToolDaemonOutput"
#define ATTR_TOTAL_CLAIM_RUN_TIME  "TotalClaimRunTime"
#define ATTR_TOTAL_CLAIM_SUSPEND_TIME  "TotalClaimSuspendTime"
#define ATTR_TOTAL_CLUSTER_ADS  "TotalClusterAds"
#define ATTR_TOTAL_CONDOR_LOAD_AVG			"TotalCondorLoadAvg"
#define ATTR_TOTAL_CPUS  "TotalCpus"
#define ATTR_TOTAL_SLOT_CPUS  "TotalSlotCpus"
#define ATTR_TOTAL_DISK  "TotalDisk"
#define ATTR_TOTAL_SLOT_DISK  "TotalSlotDisk"
#define ATTR_TOTAL_FLOCKED_JOBS  "TotalFlockedJobs"
#define ATTR_TOTAL_REMOVED_JOBS  "TotalRemovedJobs"
#define ATTR_TOTAL_COMPLETED_JOBS "TotalCompletedJobs"
#define ATTR_TOTAL_HELD_JOBS  "TotalHeldJobs"
#define ATTR_TOTAL_IDLE_JOBS  "TotalIdleJobs"
#define ATTR_TOTAL_JOB_ADS  "TotalJobAds"
#define ATTR_TOTAL_JOB_RUN_TIME  "TotalJobRunTime"
#define ATTR_TOTAL_JOB_SUSPEND_TIME  "TotalJobSuspendTime"
#define ATTR_TOTAL_LOAD_AVG  "TotalLoadAvg"
#define ATTR_TOTAL_MEMORY  "TotalMemory"
#define ATTR_TOTAL_SLOT_MEMORY  "TotalSlotMemory"
#define ATTR_TOTAL_RUNNING_JOBS  "TotalRunningJobs"
#define ATTR_TOTAL_LOCAL_RUNNING_JOBS  "TotalLocalJobsRunning"
#define ATTR_TOTAL_LOCAL_IDLE_JOBS  "TotalLocalJobsIdle"
#define ATTR_TOTAL_LOCAL_HELD_JOBS  "TotalLocalJobsHeld"
#define ATTR_TOTAL_SCHEDULER_RUNNING_JOBS  "TotalSchedulerJobsRunning"
#define ATTR_TOTAL_SCHEDULER_IDLE_JOBS  "TotalSchedulerJobsIdle"
#define ATTR_TOTAL_SCHEDULER_HELD_JOBS  "TotalSchedulerJobsHeld"
//extern const char ATTR_JOBS_SUBMITTED_CUMULATIVE [];
//extern const char ATTR_JOBS_STARTED_CUMULATIVE [];
//extern const char ATTR_JOBS_EXITED_CUMULATIVE [];
//extern const char ATTR_JOBS_COMPLETED_CUMULATIVE [];
//extern const char ATTR_SHADOW_EXCEPTIONS_CUMULATIVE [];
//extern const char ATTR_MEAN_TIME_TO_START_CUMULATIVE [];
//extern const char ATTR_SUM_TIME_TO_START_CUMULATIVE [];
//extern const char ATTR_MEAN_RUNNING_TIME_CUMULATIVE [];
//extern const char ATTR_SUM_RUNNING_TIME_CUMULATIVE [];
//extern const char ATTR_EXIT_CODE_CUMULATIVE [];
//extern const char ATTR_JOBS_SUBMITTED [];
//extern const char ATTR_JOBS_STARTED [];
//extern const char ATTR_JOB_START_RATE [];
//extern const char ATTR_JOB_SUBMISSION_RATE [];
//extern const char ATTR_JOBS_COMPLETED [];
//extern const char ATTR_JOB_COMPLETION_RATE [];
//extern const char ATTR_JOBS_EXITED [];
//extern const char ATTR_SHADOW_EXCEPTIONS [];
//extern const char ATTR_MEAN_TIME_TO_START [];
//extern const char ATTR_MEAN_RUNNING_TIME [];
//extern const char ATTR_EXIT_CODE [];
#define ATTR_TOTAL_SLOTS  "TotalSlots"
#define ATTR_TOTAL_TIME_IN_CYCLE  "TotalTimeInCycle"
#define ATTR_TOTAL_TIME_BACKFILL_BUSY  "TotalTimeBackfillBusy"
#define ATTR_TOTAL_TIME_BACKFILL_IDLE  "TotalTimeBackfillIdle"
#define ATTR_TOTAL_TIME_BACKFILL_KILLING  "TotalTimeBackfillKilling"
#define ATTR_TOTAL_TIME_CLAIMED_BUSY  "TotalTimeClaimedBusy"
#define ATTR_TOTAL_TIME_CLAIMED_IDLE  "TotalTimeClaimedIdle"
#define ATTR_TOTAL_TIME_CLAIMED_RETIRING  "TotalTimeClaimedRetiring"
#define ATTR_TOTAL_TIME_CLAIMED_SUSPENDED  "TotalTimeClaimedSuspended"
#define ATTR_TOTAL_TIME_MATCHED_IDLE  "TotalTimeMatchedIdle"
#define ATTR_TOTAL_TIME_OWNER_IDLE  "TotalTimeOwnerIdle"
#define ATTR_TOTAL_TIME_PREEMPTING_KILLING  "TotalTimePreemptingKilling"
#define ATTR_TOTAL_TIME_PREEMPTING_VACATING  "TotalTimePreemptingVacating"
#define ATTR_TOTAL_TIME_UNCLAIMED_BENCHMARKING  "TotalTimeUnclaimedBenchmarking"
#define ATTR_TOTAL_TIME_UNCLAIMED_IDLE  "TotalTimeUnclaimedIdle"
#define ATTR_TOTAL_TIME_DRAINED_IDLE  "TotalTimeDrainedIdle"
#define ATTR_TOTAL_TIME_DRAINED_RETIRING  "TotalTimeDrainedRetiring"

#define ATTR_TOTAL_VIRTUAL_MEMORY  "TotalVirtualMemory"
#define ATTR_UID  "Uid"
#define ATTR_UID_DOMAIN  "UidDomain"
#define ATTR_ULOG_FILE  "UserLog"
#define ATTR_ULOG_USE_XML  "UserLogUseXML"
#define ATTR_ULOG_EXECUTE_EVENT_ATTRS "UserLogExecuteEventAttrs"
#define ATTR_UPDATE_INTERVAL  "UpdateInterval"
#define ATTR_CLASSAD_LIFETIME  "ClassAdLifetime"
#define ATTR_UPDATE_PRIO  "UpdatePrio"
#define ATTR_UPDATE_SEQUENCE_NUMBER  "UpdateSequenceNumber"
#define ATTR_USE_PARROT  "UseParrot"
#define ATTR_USER  "User"
#define ATTR_USERREC_OPT_prefix "_userrec_opt_"
#define ATTR_USERREC_OPT_CREATE "_userrec_opt_create"
#define ATTR_USERREC_OPT_UPDATE "_userrec_opt_update"
#define ATTR_USERREC_OPT_ME "_userrec_opt_me"
#define ATTR_USERREC_OPT_CREATE_DEPRECATED "create"
#define ATTR_VACATE  "Vacate"
#define ATTR_VACATE_REASON  "VacateReason"
#define ATTR_VACATE_REASON_CODE  "VacateReasonCode"
#define ATTR_VACATE_REASON_SUBCODE  "VacateReasonSubCode"
#define ATTR_VACATE_TYPE  "VacateType"
#define ATTR_VIRTUAL_MEMORY  "VirtualMemory"
#define ATTR_VISA_TIMESTAMP  "VisaTimestamp"
#define ATTR_VISA_DAEMON_TYPE  "VisaDaemonType"
#define ATTR_VISA_DAEMON_PID  "VisaDaemonPID"
#define ATTR_VISA_HOSTNAME  "VisaHostname"
#define ATTR_VISA_IP  "VisaIpAddr"
#define ATTR_WOL_PORT  "WakePort"
#define ATTR_WANT_CONTAINER  "WantContainer"
#define ATTR_WANT_FT_ON_CHECKPOINT "WantFTOnCheckpoint"
#define ATTR_WANT_CLAIMING  "WantClaiming"
#define ATTR_WANT_IO_PROXY  "WantIOProxy"
#define ATTR_WANT_REMOTE_UPDATES "WantRemoteUpdates"
#define ATTR_WANT_DELAYED_UPDATES "WantDelayedUpdates"
#define ATTR_WANT_MATCH_DIAGNOSTICS  "WantMatchDiagnostics"
#define ATTR_WANT_PARALLEL_SCHEDULING  "WantParallelScheduling"
#define ATTR_WANT_PARALLEL_SCHEDULING_GROUPS  "WantParallelSchedulingGroups"
#define ATTR_WANT_CHECKPOINT_SIGNAL  "WantCheckpointSignal"
#define ATTR_WANT_PSLOT_PREEMPTION  "WantPslotPreemption"
#define ATTR_WANT_SCHEDD_COMPLETION_VISA  "WantCompletionVisaFromSchedD"
#define ATTR_WANT_STARTER_EXECUTION_VISA  "WantExecutionVisaFromStarter"
#define ATTR_WANT_AD_REVAULATE  "WantAdRevaluate"
#define ATTR_WANT_DOCKER  "WantDocker"
#define ATTR_WANT_DOCKER_IMAGE  "WantDockerImage"
#define ATTR_WANT_SANDBOX_IMAGE  "WantSandboxImage"
#define ATTR_WANT_SIF  "WantSIF"
#define ATTR_COLLECTOR_IP_ADDR  "CollectorIpAddr"
#define ATTR_NEGOTIATOR_IP_ADDR  "NegotiatorIpAddr"
#define ATTR_CREDD_IP_ADDR  "CredDIpAddr"
#define ATTR_NUM_HOSTS_TOTAL  "HostsTotal"
#define ATTR_NUM_HOSTS_CLAIMED  "HostsClaimed"
#define ATTR_NUM_HOSTS_UNCLAIMED  "HostsUnclaimed"
#define ATTR_NUM_HOSTS_OWNER  "HostsOwner"
#define ATTR_MAX_RUNNING_JOBS  "MaxRunningJobs"
#define ATTR_VERSION					"CondorVersion"
#define ATTR_SHADOW_VERSION  "ShadowVersion"
#define ATTR_SHOULD_TRANSFER_FILES  "ShouldTransferFiles"
#define ATTR_WHEN_TO_TRANSFER_OUTPUT  "WhenToTransferOutput"
#define ATTR_TRANSFER_TYPE  "TransferType"
#define ATTR_TRANSFER_KEY  "TransferKey"
#define ATTR_TRANSFER_CONTAINER  "TransferContainer"
#define ATTR_TRANSFER_EXECUTABLE  "TransferExecutable"
#define ATTR_TRANSFER_INPUT  "TransferIn"
#define ATTR_TRANSFER_OUTPUT  "TransferOut"
#define ATTR_TRANSFER_ERROR  "TransferErr"
#define ATTR_TRANSFER_INPUT_FILES  "TransferInput"
#define ATTR_TRANSFER_INPUT_REMAPS  "TransferInputRemaps"
#define ATTR_TRANSFER_INPUT_STATS  "TransferInputStats"
#define ATTR_TRANSFER_Q_URL_IN_LIST "TransferQueueInputList"
#define ATTR_TRANSFER_PLUGINS  "TransferPlugins"
#define ATTR_WANT_TRANSFER_PLUGIN_METHODS  "WantTransferPluginMethods"
#define ATTR_TRANSFER_INPUT_SIZE_MB  "TransferInputSizeMB"
#define ATTR_PUBLIC_INPUT_FILES  "PublicInputFiles"
#define ATTR_MAX_TRANSFER_INPUT_MB "MaxTransferInputMB"
#define ATTR_MAX_TRANSFER_OUTPUT_MB "MaxTransferOutputMB"
#define ATTR_TRANSFER_INTERMEDIATE_FILES  "TransferIntermediate"
#define ATTR_TRANSFER_OUTPUT_FILES  "TransferOutput"
#define ATTR_TRANSFER_OUTPUT_REMAPS  "TransferOutputRemaps"
#define ATTR_TRANSFER_OUTPUT_STATS  "TransferOutputStats"
#define ATTR_TRANSFERRING_INPUT "TransferringInput"
#define ATTR_TRANSFERRING_OUTPUT "TransferringOutput"
#define ATTR_TRANSFER_QUEUED "TransferQueued"
#define ATTR_PRESERVE_RELATIVE_EXECUTABLE  "PreserveRelativeExecutable"
#define ATTR_SPOOLED_OUTPUT_FILES  "SpooledOutputFiles"
#define ATTR_ENCRYPT_INPUT_FILES  "EncryptInputFiles"
#define ATTR_ENCRYPT_OUTPUT_FILES  "EncryptOutputFiles"
#define ATTR_DONT_ENCRYPT_INPUT_FILES  "DontEncryptInputFiles"
#define ATTR_DONT_ENCRYPT_OUTPUT_FILES  "DontEncryptOutputFiles"

#define ATTR_CONDOR_VERSION "CondorVersion"
#define ATTR_CHECKPOINT_FILES "TransferCheckpoint"
#define ATTR_PRESERVE_RELATIVE_PATHS "PreserveRelativePaths"
#define ATTR_FAILURE_FILES "FailureFiles"

#define ATTR_TRANSFER_SOCKET  "TransferSocket"
#define ATTR_SERVER_TIME  "ServerTime"
#define ATTR_SHADOW_BIRTHDATE  "ShadowBday"
#define ATTR_HOLD_REASON  "HoldReason"
#define ATTR_HOLD_REASON_CODE  "HoldReasonCode"
#define ATTR_HOLD_REASON_SUBCODE  "HoldReasonSubCode"
#define ATTR_HOLD_COPIED_FROM_TARGET_JOB  "HoldCopiedFromTargetJob"
#define ATTR_WANT_MATCHING  "WantMatching"
#define ATTR_WANT_RESOURCE_AD  "WantResAd"
#define ATTR_TOTAL_SUSPENSIONS  "TotalSuspensions"
#define ATTR_LAST_SUSPENSION_TIME  "LastSuspensionTime"
#define ATTR_CUMULATIVE_SUSPENSION_TIME  "CumulativeSuspensionTime"
#define ATTR_COMMITTED_SUSPENSION_TIME  "CommittedSuspensionTime"
#define ATTR_UNCOMMITTED_SUSPENSION_TIME  "UncommittedSuspensionTime"

#define ATTR_ON_EXIT_BY_SIGNAL  "ExitBySignal"
#define ATTR_ON_EXIT_CODE  "ExitCode"
#define ATTR_ON_EXIT_HOLD_CHECK  "OnExitHold"
#define ATTR_ON_EXIT_HOLD_REASON  "OnExitHoldReason"
#define ATTR_ON_EXIT_HOLD_SUBCODE  "OnExitHoldSubCode"
#define ATTR_ON_EXIT_REMOVE_REASON  "OnExitRemoveReason"
#define ATTR_ON_EXIT_REMOVE_CHECK  "OnExitRemove"
#define ATTR_ON_EXIT_SIGNAL  "ExitSignal"
#define ATTR_POST_ON_EXIT_BY_SIGNAL  "PostExitBySignal"
#define ATTR_POST_ON_EXIT_SIGNAL  "PostExitSignal"
#define ATTR_POST_ON_EXIT_CODE  "PostExitCode"
#define ATTR_POST_EXIT_REASON  "PostExitReason"
#define ATTR_PERIODIC_HOLD_CHECK  "PeriodicHold"
#define ATTR_PERIODIC_HOLD_REASON  "PeriodicHoldReason"
#define ATTR_PERIODIC_HOLD_SUBCODE  "PeriodicHoldSubCode"
#define ATTR_PERIODIC_RELEASE_REASON  "PeriodicReleaseReason"
#define ATTR_PERIODIC_REMOVE_REASON  "PeriodicRemoveReason"
#define ATTR_PERIODIC_VACATE_REASON  "PeriodicVacateReason"
#define ATTR_PERIODIC_RELEASE_CHECK  "PeriodicRelease"
#define ATTR_PERIODIC_REMOVE_CHECK  "PeriodicRemove"
#define ATTR_PERIODIC_VACATE_CHECK  "PeriodicVacate"
#define ATTR_TIMER_REMOVE_CHECK  "TimerRemove"
#define ATTR_TIMER_REMOVE_CHECK_SENT  "TimerRemoveSent"

#define ATTR_SEC_AUTHENTICATED_NAME  "AuthenticatedName"
#define ATTR_SEC_AUTHENTICATION_METHODS_LIST  "AuthMethodsList"
#define ATTR_SEC_AUTHENTICATION_METHODS  "AuthMethods"
#define ATTR_SEC_CRYPTO_METHODS  "CryptoMethods"
#define ATTR_SEC_CRYPTO_METHODS_LIST  "CryptoMethodsList"
#define ATTR_SEC_AUTHENTICATION  "Authentication"
#define ATTR_SEC_AUTHENTICATION_NEW  "AuthenticationNew"
#define ATTR_SEC_AUTH_REQUIRED  "AuthRequired"
#define ATTR_SEC_ENCRYPTION  "Encryption"
#define ATTR_SEC_INTEGRITY  "Integrity"
#define ATTR_SEC_ENACT  "Enact"
#define ATTR_SEC_RESPOND  "Respond"
#define ATTR_SEC_COMMAND  "Command"
#define ATTR_SEC_AUTH_COMMAND  "AuthCommand"
#define ATTR_SEC_SID  "Sid"
#define ATTR_SEC_SUBSYSTEM  "Subsystem"
#define ATTR_SEC_REMOTE_VERSION  "RemoteVersion"
#define ATTR_SEC_SHORT_VERSION  "ShortVersion"
#define ATTR_SEC_SERVER_ENDPOINT  "ServerEndpoint"
#define ATTR_SEC_SERVER_COMMAND_SOCK  "ServerCommandSock"
#define ATTR_SEC_SERVER_PID  "ServerPid"
#define ATTR_SERVER_PUBLIC_CERT  "ServerPublicCert"
#define ATTR_SEC_CONNECT_SINFUL  "ConnectSinful"
#define ATTR_SEC_PARENT_UNIQUE_ID  "ParentUniqueID"
#define ATTR_SEC_PACKET_COUNT  "PacketCount"
#define ATTR_SEC_NEGOTIATION  "OutgoingNegotiation"
#define ATTR_SEC_VALID_COMMANDS  "ValidCommands"
#define ATTR_SEC_SESSION_DURATION  "SessionDuration"
#define ATTR_SEC_SESSION_EXPIRES  "SessionExpires"
#define ATTR_SEC_SESSION_LEASE  "SessionLease"
#define ATTR_SEC_USER  "User"
#define ATTR_SEC_MY_REMOTE_USER_NAME  "MyRemoteUserName"
#define ATTR_SEC_NEW_SESSION  "NewSession"
#define ATTR_SEC_NONCE  "Nonce"
#define ATTR_SEC_USE_SESSION  "UseSession"
#define ATTR_SEC_COOKIE  "Cookie"
extern const char ATTR_SEC_AUTHENTICATED_USER [];
#define ATTR_SEC_TRIED_AUTHENTICATION  "TriedAuthentication"
#define ATTR_SEC_AUTHORIZATION_SUCCEEDED  "AuthorizationSucceeded"
#define ATTR_SEC_RETURN_CODE  "ReturnCode"
#define ATTR_SEC_ISSUER_KEYS "IssuerKeys"
#define ATTR_SEC_LIMIT_AUTHORIZATION "LimitAuthorization"
#define ATTR_SEC_TOKEN "Token"
#define ATTR_SEC_TOKEN_LIFETIME "TokenLifetime"
#define ATTR_SEC_TRUST_DOMAIN "TrustDomain"
#define ATTR_SEC_CLIENT_ID "ClientId"
#define ATTR_SEC_REQUEST_ID "RequestId"
#define ATTR_SEC_LIFETIME "Lifetime"
#define ATTR_SEC_REQUESTED_KEY "RequestedKey"
#define ATTR_SEC_ECDH_PUBLIC_KEY "ECDHPublicKey"
#define ATTR_SEC_RESUME_RESPONSE "ResumeResponse"
#define ATTR_SEC_NEGOTIATED_SESSION "NegotiatedSession"

#define ATTR_MULTIPLE_TASKS_PER_PVMD  "MultipleTasksPerPvmd"

#define ATTR_UPDATESTATS_TOTAL  "UpdatesTotal"
#define ATTR_UPDATESTATS_SEQUENCED  "UpdatesSequenced"
#define ATTR_UPDATESTATS_LOST  "UpdatesLost"
#define ATTR_UPDATESTATS_HISTORY  "UpdatesHistory"

#define ATTR_CHECKPOINT_EXIT_CODE  "SuccessCheckpointExitCode"
#define ATTR_CHECKPOINT_EXIT_SIGNAL  "SuccessCheckpointExitSignal"
#define ATTR_CHECKPOINT_EXIT_BY_SIGNAL  "SuccessCheckpointExitBySignal"

#define ATTR_WITHIN_RESOURCE_LIMITS  "WithinResourceLimits"

#define ATTR_HAD_IS_ACTIVE  "HadIsActive"
#define ATTR_HAD_LIST  "HadList"
#define ATTR_HAD_INDEX  "HadIndex"
#define ATTR_HAD_SELF_ID  "HadSelfID"
#define ATTR_HAD_CONTROLLEE_NAME  "HadControlleeName"
#define ATTR_TERMINATION_PENDING  "TerminationPending"
#define ATTR_TERMINATION_EXITREASON  "TerminationExitReason"

#define ATTR_REPLICATION_LIST  "ReplicationList"

#define ATTR_NEGOTIATOR_MATCH_EXPR  "NegotiatorMatchExpr"

#define ATTR_VM_TYPE  "VM_Type"
#define ATTR_VM_MEMORY  "VM_Memory"
#define ATTR_VM_NETWORKING  "VM_Networking"
#define ATTR_VM_NETWORKING_TYPES  "VM_Networking_Types"
#define ATTR_VM_HARDWARE_VT  "VM_HardwareVT"
#define ATTR_VM_AVAIL_NUM  "VM_AvailNum"
#define ATTR_VM_ALL_GUEST_MACS  "VM_All_Guest_Macs"
#define ATTR_VM_ALL_GUEST_IPS  "VM_All_Guest_IPs"
#define ATTR_VM_GUEST_MAC  "VM_Guest_Mac"
#define ATTR_VM_GUEST_IP  "VM_Guest_IP"
#define ATTR_VM_GUEST_MEM  "VM_Guest_Mem"
#define ATTR_VM_CKPT_MAC  "VM_CkptMac"
#define ATTR_VM_CKPT_IP  "VM_CkptIP"

#define ATTR_WEIGHTED_IDLE_JOBS "WeightedIdleJobs"
#define ATTR_WEIGHTED_RUNNING_JOBS "WeightedRunningJobs"
#define ATTR_IDLE_LOCAL_JOBS "LocalJobsIdle"
#define ATTR_RUNNING_LOCAL_JOBS "LocalJobsRunning"
#define ATTR_IDLE_SCHEDULER_JOBS "SchedulerJobsIdle"
#define ATTR_RUNNING_SCHEDULER_JOBS "SchedulerJobsRunning"

//************* Added for EC2 Jobs ***************************//
#define ATTR_EC2_ACCESS_KEY_ID  "EC2AccessKeyId"
#define ATTR_EC2_SECRET_ACCESS_KEY  "EC2SecretAccessKey"
#define ATTR_EC2_SESSION_TOKEN  "EC2SessionToken"
#define ATTR_EC2_AMI_ID  "EC2AmiID"
#define ATTR_EC2_KEY_PAIR  "EC2KeyPair"
#define ATTR_EC2_KEY_PAIR_FILE  "EC2KeyPairFile"
#define ATTR_EC2_SECURITY_GROUPS  "EC2SecurityGroups"
#define ATTR_EC2_SECURITY_IDS  "EC2SecurityIDs"
#define ATTR_EC2_USER_DATA  "EC2UserData"
#define ATTR_EC2_USER_DATA_FILE  "EC2UserDataFile"
#define ATTR_EC2_REMOTE_VM_NAME  "EC2RemoteVirtualMachineName"
#define ATTR_EC2_INSTANCE_TYPE  "EC2InstanceType"
#define ATTR_EC2_INSTANCE_NAME  "EC2InstanceName"
#define ATTR_EC2_ELASTIC_IP  "EC2ElasticIp"
#define ATTR_EC2_AVAILABILITY_ZONE  "EC2AvailabilityZone"
#define ATTR_EC2_EBS_VOLUMES  "EC2ElasticBlockStorageVolumes"
#define ATTR_EC2_VPC_SUBNET  "EC2VpcSubnet"
#define ATTR_EC2_VPC_IP  "EC2VpcIp"
#define ATTR_EC2_TAG_NAMES  "EC2TagNames"
#define ATTR_EC2_TAG_PREFIX  "EC2Tag"
#define ATTR_EC2_SPOT_PRICE  "EC2SpotPrice"
#define ATTR_EC2_SPOT_REQUEST_ID  "EC2SpotRequestID"
#define ATTR_EC2_STATUS_REASON_CODE  "EC2StatusReasonCode"
#define ATTR_EC2_SERVER_TYPE  "EC2ServerType"
#define ATTR_EC2_BLOCK_DEVICE_MAPPING "EC2BlockDeviceMapping"
#define ATTR_EC2_PARAM_NAMES  "EC2ParamNames"
#define ATTR_EC2_PARAM_PREFIX  "EC2Param"
#define ATTR_EC2_IAM_PROFILE_ARN  "EC2IamProfileArn"
#define ATTR_EC2_IAM_PROFILE_NAME  "EC2IamProfileName"
#define ATTR_AWS_REGION "AWSRegion"

//************* End of changes for EC2 Jobs *****************//

// Provisioner jobs
#define ATTR_PROVISIONER_STATE "ProvisionerState"
#define ATTR_PROVISIONER_RESOURCE_ID "ProvisionerResourceID"

#define ATTR_REQUEST_CPUS  "RequestCpus"
#define ATTR_REQUEST_MEMORY  "RequestMemory"
#define ATTR_REQUEST_DISK  "RequestDisk"
#define ATTR_REQUEST_GPUS  "RequestGPUs"
#define ATTR_REQUIRE_GPUS  "RequireGPUs"
#define ATTR_REQUIRE_PREFIX "Require"
#define ATTR_REQUEST_VIRTUAL_MEMORY  "RequestVirtualMemory"
// GPUs property constraints
#define ATTR_GPUS_MIN_MEMORY "GPUsMinMemory"
#define ATTR_GPUS_MIN_CAPABILITY "GPUsMinCapability"
#define ATTR_GPUS_MAX_CAPABILITY "GPUsMaxCapability"
#define ATTR_GPUS_MIN_RUNTIME "GPUsMinRuntime"

// machine resource prefixes
#define ATTR_REQUEST_PREFIX  "Request"
#define ATTR_DETECTED_PREFIX  "Detected"
#define ATTR_OFFLINE_PREFIX  "Offline"
#define ATTR_TOTAL_PREFIX  "Total"
#define ATTR_TOTAL_SLOT_PREFIX  "TotalSlot"
#define ATTR_MACHINE_RESOURCES  "MachineResources"

// multiclaim / negside resource consumption
#define ATTR_NUM_CLAIMS "NumClaims"
#define ATTR_CLAIM_ID_LIST "ClaimIdList"
#define ATTR_CONSUMPTION_PREFIX "Consumption"

// Valid settings for ATTR_JOB_MANAGED.
	// Managed by an external process (gridmanager)
#define MANAGED_EXTERNAL  "External"
	// Schedd should manage as normal
#define MANAGED_SCHEDD  "Schedd"
	// Schedd should manage as normal.  External process doesn't want back.
#define MANAGED_DONE  "ScheddDone"

#define COLLECTOR_REQUIREMENTS  "COLLECTOR_REQUIREMENTS"
#define ATTR_PREV_LAST_HEARD_FROM  "PrevLastHeardFrom"

#define ATTR_TRY_AGAIN  "TryAgain"
#define ATTR_DOWNLOADING  "Downloading"
#define ATTR_TIMEOUT  "Timeout"
#define ATTR_CCBID  "CCBID"
#define ATTR_REQUEST_ID  "RequestID"
#define ATTR_SESSION_INFO  "SessionInfo"
#define ATTR_SSH_PUBLIC_SERVER_KEY  "SSHPublicServerKey"
#define ATTR_SSH_PRIVATE_CLIENT_KEY  "SSHPrivateClientKey"
#define ATTR_SHELL  "Shell"
#define ATTR_RETRY  "Retry"
#define ATTR_SSH_KEYGEN_ARGS  "SSHKeyGenArgs"
#define ATTR_SOCK  "sock"
#define ATTR_ALIAS "alias"
#define ATTR_JOB_AD_INFORMATION_ATTRS  "JobAdInformationAttrs"

#define ATTR_LAST_NEGOTIATION_CYCLE_TIME  "LastNegotiationCycleTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_END  "LastNegotiationCycleEnd"
#define ATTR_LAST_NEGOTIATION_CYCLE_PERIOD  "LastNegotiationCyclePeriod"
#define ATTR_LAST_NEGOTIATION_CYCLE_DURATION  "LastNegotiationCycleDuration"
#define ATTR_LAST_NEGOTIATION_CYCLE_DURATION_PHASE1  "LastNegotiationCyclePhase1Duration"
#define ATTR_LAST_NEGOTIATION_CYCLE_DURATION_PHASE2  "LastNegotiationCyclePhase2Duration"
#define ATTR_LAST_NEGOTIATION_CYCLE_DURATION_PHASE3  "LastNegotiationCyclePhase3Duration"
#define ATTR_LAST_NEGOTIATION_CYCLE_DURATION_PHASE4  "LastNegotiationCyclePhase4Duration"
#define ATTR_LAST_NEGOTIATION_CYCLE_TOTAL_SLOTS  "LastNegotiationCycleTotalSlots"
#define ATTR_LAST_NEGOTIATION_CYCLE_TRIMMED_SLOTS  "LastNegotiationCycleTrimmedSlots"
#define ATTR_LAST_NEGOTIATION_CYCLE_CANDIDATE_SLOTS  "LastNegotiationCycleCandidateSlots"
#define ATTR_LAST_NEGOTIATION_CYCLE_SLOT_SHARE_ITER  "LastNegotiationCycleSlotShareIter"
#define ATTR_LAST_NEGOTIATION_CYCLE_NUM_SCHEDULERS  "LastNegotiationCycleNumSchedulers"
#define ATTR_LAST_NEGOTIATION_CYCLE_NUM_IDLE_JOBS  "LastNegotiationCycleNumIdleJobs"
#define ATTR_LAST_NEGOTIATION_CYCLE_NUM_JOBS_CONSIDERED  "LastNegotiationCycleNumJobsConsidered"
#define ATTR_LAST_NEGOTIATION_CYCLE_MATCHES  "LastNegotiationCycleMatches"
#define ATTR_LAST_NEGOTIATION_CYCLE_REJECTIONS  "LastNegotiationCycleRejections"
#define ATTR_LAST_NEGOTIATION_CYCLE_SUBMITTERS_FAILED  "LastNegotiationCycleSubmittersFailed"
#define ATTR_LAST_NEGOTIATION_CYCLE_SUBMITTERS_OUT_OF_TIME  "LastNegotiationCycleSubmittersOutOfTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_SUBMITTERS_SHARE_LIMIT  "LastNegotiationCycleSubmittersShareLimit"
#define ATTR_LAST_NEGOTIATION_CYCLE_ACTIVE_SUBMITTER_COUNT  "LastNegotiationCycleActiveSubmitterCount"
#define ATTR_LAST_NEGOTIATION_CYCLE_MATCH_RATE  "LastNegotiationCycleMatchRate"
#define ATTR_LAST_NEGOTIATION_CYCLE_MATCH_RATE_SUSTAINED  "LastNegotiationCycleMatchRateSustained"
#define ATTR_LAST_NEGOTIATION_CYCLE_PIES  "LastNegotiationCyclePies"
#define ATTR_LAST_NEGOTIATION_CYCLE_PIE_SPINS  "LastNegotiationCyclePieSpins"
#define ATTR_LAST_NEGOTIATION_CYCLE_PREFETCH_DURATION  "LastNegotiationCyclePrefetchDuration"
#define ATTR_LAST_NEGOTIATION_CYCLE_PREFETCH_CPU_TIME  "LastNegotiationCyclePrefetchCpuTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_SCHEDDS_OUT_OF_TIME  "LastNegotiationCycleScheddsOutOfTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_CPU_TIME  "LastNegotiationCycleCpuTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_PHASE1_CPU_TIME  "LastNegotiationCyclePhase1CpuTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_PHASE2_CPU_TIME  "LastNegotiationCyclePhase2CpuTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_PHASE3_CPU_TIME  "LastNegotiationCyclePhase3CpuTime"
#define ATTR_LAST_NEGOTIATION_CYCLE_PHASE4_CPU_TIME  "LastNegotiationCyclePhase4CpuTime"

#define ATTR_JOB_MACHINE_ATTRS  "JobMachineAttrs"
#define ATTR_MACHINE_ATTR_PREFIX  "MachineAttr"
#define ATTR_JOB_MACHINE_ATTRS_HISTORY_LENGTH  "JobMachineAttrsHistoryLength"
#define ATTR_JOB_MACHINE_ATTR_SLOT_WEIGHT0  "MachineAttrSlotWeight0"
#define ATTR_CUMULATIVE_SLOT_TIME  "CumulativeSlotTime"
#define ATTR_COMMITTED_SLOT_TIME  "CommittedSlotTime"

#define ATTR_HASH_NAME  "HashName"
#define ATTR_AUTHENTICATED_IDENTITY  "AuthenticatedIdentity"
#define ATTR_AUTHENTICATION_METHOD  "AuthenticationMethod"
#define ATTR_DELEGATE_JOB_GSI_CREDENTIALS_LIFETIME  "DelegateJobGSICredentialsLifetime"

#define ATTR_DOTNET_VERSIONS  "DotNetVersions"

#define ATTR_TRANSFER_QUEUE_NUM_UPLOADING  "TransferQueueNumUploading"
#define ATTR_TRANSFER_QUEUE_NUM_DOWNLOADING  "TransferQueueNumDownloading"
#define ATTR_TRANSFER_QUEUE_MAX_UPLOADING  "TransferQueueMaxUploading"
#define ATTR_TRANSFER_QUEUE_MAX_DOWNLOADING  "TransferQueueMaxDownloading"
#define ATTR_TRANSFER_QUEUE_NUM_WAITING_TO_UPLOAD  "TransferQueueNumWaitingToUpload"
#define ATTR_TRANSFER_QUEUE_NUM_WAITING_TO_DOWNLOAD  "TransferQueueNumWaitingToDownload"
#define ATTR_TRANSFER_QUEUE_UPLOAD_WAIT_TIME  "TransferQueueUploadWaitTime"
#define ATTR_TRANSFER_QUEUE_DOWNLOAD_WAIT_TIME  "TransferQueueDownloadWaitTime"
#define ATTR_SANDBOX_SIZE "SandboxSize"
#define ATTR_FILE_TRANSFER_UPLOAD_BYTES_PER_SECOND "FileTransferUploadBytesPerSecond"
#define ATTR_FILE_TRANSFER_DOWNLOAD_BYTES_PER_SECOND "FileTransferDownloadBytesPerSecond"
#define ATTR_FILE_TRANSFER_UPLOAD_DISK_LOAD "FileTransferUploadDiskLoad"
#define ATTR_FILE_TRANSFER_DOWNLOAD_DISK_LOAD "FileTransferDownloadDiskLoad"
#define ATTR_FILE_TRANSFER_UPLOAD_NET_LOAD "FileTransferUploadNetLoad"
#define ATTR_FILE_TRANSFER_DOWNLOAD_NET_LOAD "FileTransferDownloadNetLoad"
#define ATTR_FILE_TRANSFER_DISK_THROTTLE_LOW "FileTransferDiskThrottleLow"
#define ATTR_FILE_TRANSFER_DISK_THROTTLE_HIGH "FileTransferDiskThrottleHigh"
#define ATTR_FILE_TRANSFER_DISK_THROTTLE_LIMIT "FileTransferDiskThrottleLimit"
#define ATTR_FILE_TRANSFER_DISK_THROTTLE_EXCESS "FileTransferDiskThrottleExcess"
#define ATTR_FILE_TRANSFER_DISK_THROTTLE_SHORTFALL "FileTransferDiskThrottleShortfall"
#define ATTR_MACHINE_MAX_VACATE_TIME  "MachineMaxVacateTime"
#define ATTR_JOB_MAX_VACATE_TIME  "JobMaxVacateTime"
#define ATTR_WANT_GRACEFUL_REMOVAL  "WantGracefulRemoval"
#define ATTR_HOW_FAST  "HowFast"
#define ATTR_DRAIN_REASON "DrainReason"
#define ATTR_RESUME_ON_COMPLETION  "ResumeOnCompletion"
#define ATTR_DRAINING  "Draining"
#define ATTR_DRAINING_REQUEST_ID  "DrainingRequestId"
#define ATTR_DRAINING_DEADLINE "DrainingDeadline"
#define ATTR_EXPECTED_MACHINE_GRACEFUL_DRAINING_COMPLETION  "ExpectedMachineGracefulDrainingCompletion"
#define ATTR_EXPECTED_MACHINE_QUICK_DRAINING_COMPLETION  "ExpectedMachineQuickDrainingCompletion"
#define ATTR_EXPECTED_MACHINE_GRACEFUL_DRAINING_BADPUT  "ExpectedMachineGracefulDrainingBadput"
#define ATTR_EXPECTED_MACHINE_QUICK_DRAINING_BADPUT  "ExpectedMachineQuickDrainingBadput"
#define ATTR_TOTAL_MACHINE_DRAINING_BADPUT  "TotalMachineDrainingBadput"
#define ATTR_TOTAL_MACHINE_DRAINING_UNCLAIMED_TIME  "TotalMachineDrainingUnclaimedTime"
#define ATTR_CHECK_EXPR  "CheckExpr"
#define ATTR_START_EXPR  "StartExpr"
#define ATTR_PROJECTION  "Projection"
#define ATTR_LAST_DRAIN_START_TIME  "LastDrainStartTime"
#define ATTR_LAST_DRAIN_STOP_TIME  "LastDrainStopTime"

#define ATTR_RECENT_DRAINS_LIST  "RecentDrainsList"
#define ATTR_RECENT_CANCELS_LIST "RecentCancelsList"

#define ATTR_SHARED_PORT_COMMAND_SINFULS "SharedPortCommandSinfuls"

// temporary attributes for raw utsname info
#define ATTR_UTSNAME_SYSNAME  "UtsnameSysname"
#define ATTR_UTSNAME_NODENAME  "UtsnameNodename"
#define ATTR_UTSNAME_RELEASE  "UtsnameRelease"
#define ATTR_UTSNAME_VERSION  "UtsnameVersion"
#define ATTR_UTSNAME_MACHINE  "UtsnameMachine"

// Introduced for configurable sorting of accounting groups
#define ATTR_GROUP_QUOTA  "GroupQuota"
#define ATTR_GROUP_RESOURCES_ALLOCATED  "GroupResourcesAllocated"
#define ATTR_GROUP_RESOURCES_IN_USE  "GroupResourcesInUse"
#define ATTR_SORT_EXPR "SortExpr"
#define ATTR_SORT_EXPR_STRING "SortExprString"

#define ATTR_MAX_TRANSFER_BYTES "MaxTransferBytes"

#define ATTR_REPORT_INTERVAL "ReportInterval"

// Attributes related to the data reuse directory code.
#define ATTR_EXPIRATION_TIME "ExpirationTime"
#define ATTR_RESERVED_SPACE "ReservedSpace"
#define ATTR_UUID "UUID"
#define ATTR_TAG "Tag"
#define ATTR_SIZE "Size"
#define ATTR_CHECKSUM "Checksum"
#define ATTR_CHECKSUM_TYPE "ChecksumType"

// Attributes related to dataflow jobs
#define ATTR_SKIP_IF_DATAFLOW "SkipIfDataflow"
#define ATTR_DATAFLOW_JOB_SKIPPED "DataflowJobSkipped"

#ifdef LINUX
#define ATTR_LINUX_CAPS "LinuxCapabilities"
#endif

#if 0
// Enumerate the ones that can't be constant strings..
typedef enum
{
	ATTRE_CONDOR_LOAD_AVG = 0,
	ATTRE_CONDOR_ADMIN,
	ATTRE_PLATFORM,
	ATTRE_TOTAL_LOAD,
	ATTRE_VERSION,
	// ....
} CONDOR_ATTR;

// Prototypes
int AttrInit( void );
const char *AttrGetName( CONDOR_ATTR );
#endif

// ------------------------------------------------------
// Stuff private to the environment variable manager
// ------------------------------------------------------
#if 0 // defined _CONDOR_ATTR_MAIN

// Flags available
typedef enum
{
	ATTR_FLAG_NONE = 0,			// No special treatment
	ATTR_FLAG_DISTRO,			// Plug in the distribution name
	ATTR_FLAG_DISTRO_UC,		// Plug in the UPPER CASE distribution name
	ATTR_FLAG_DISTRO_CAP,		// Plug in the Capitolized distribution name
} CONDOR_ATTR_FLAGS;

// Data on each env variable
typedef struct
{
	CONDOR_ATTR			sanity;		// Used to sanity check
	const char			*string;	// My format string
	CONDOR_ATTR_FLAGS	flag;		// Flags
	const char			*cached;	// Cached answer
} CONDOR_ATTR_ELEM;

// The actual list of variables indexed by CONDOR_ATTR
static CONDOR_ATTR_ELEM CondorAttrList[] =
{
	{ ATTRE_CONDOR_LOAD_AVG,"%sLoadAvg",		ATTR_FLAG_DISTRO_CAP, 0 },
	{ ATTRE_CONDOR_ADMIN,	"%sAdmin",			ATTR_FLAG_DISTRO_CAP, 0 },
	{ ATTRE_PLATFORM,		"%sPlatform",		ATTR_FLAG_DISTRO_CAP, 0 },
	{ ATTRE_TOTAL_LOAD,		"Total%sLoadAvg",	ATTR_FLAG_DISTRO_CAP, 0 },
	{ ATTRE_VERSION,		"%sVersion",		ATTR_FLAG_DISTRO_CAP, 0 },
	// ....
};
#endif		// _CONDOR_ATTR_MAIN

#endif
