Merge branch 'stable-2.8' into stable-2.9
[ganeti-local] / lib / constants.py
index 91ca41b..0e721ba 100644 (file)
@@ -104,6 +104,8 @@ RAPI_USER = _autoconf.RAPI_USER
 RAPI_GROUP = _autoconf.RAPI_GROUP
 CONFD_USER = _autoconf.CONFD_USER
 CONFD_GROUP = _autoconf.CONFD_GROUP
+LUXID_USER = _autoconf.LUXID_USER
+LUXID_GROUP = _autoconf.LUXID_GROUP
 NODED_USER = _autoconf.NODED_USER
 NODED_GROUP = _autoconf.NODED_GROUP
 MOND_USER = _autoconf.MOND_USER
@@ -143,9 +145,9 @@ RUN_DIRS_MODE = 0775
 SECURE_DIR_MODE = 0700
 SECURE_FILE_MODE = 0600
 ADOPTABLE_BLOCKDEV_ROOT = "/dev/disk/"
-ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE
 ENABLE_SHARED_FILE_STORAGE = _autoconf.ENABLE_SHARED_FILE_STORAGE
 ENABLE_CONFD = _autoconf.ENABLE_CONFD
+ENABLE_MOND = _autoconf.ENABLE_MOND
 ENABLE_SPLIT_QUERY = _autoconf.ENABLE_SPLIT_QUERY
 ENABLE_RESTRICTED_COMMANDS = _autoconf.ENABLE_RESTRICTED_COMMANDS
 
@@ -155,6 +157,7 @@ SCP = "scp"
 
 NODED = "ganeti-noded"
 CONFD = "ganeti-confd"
+LUXID = "ganeti-luxid"
 RAPI = "ganeti-rapi"
 MASTERD = "ganeti-masterd"
 MOND = "ganeti-mond"
@@ -162,6 +165,7 @@ MOND = "ganeti-mond"
 DAEMONS = compat.UniqueFrozenset([
   NODED,
   CONFD,
+  LUXID,
   RAPI,
   MASTERD,
   MOND,
@@ -187,6 +191,7 @@ LAST_DRBD_PORT = 14999
 DAEMONS_LOGBASE = {
   NODED: "node-daemon",
   CONFD: "conf-daemon",
+  LUXID: "luxi-daemon",
   RAPI: "rapi-daemon",
   MASTERD: "master-daemon",
   MOND: "monitoring-daemon",
@@ -249,8 +254,6 @@ XEN_KERNEL = _autoconf.XEN_KERNEL
 XEN_INITRD = _autoconf.XEN_INITRD
 XEN_CMD_XM = "xm"
 XEN_CMD_XL = "xl"
-# FIXME: This will be made configurable using hvparams in Ganeti 2.7
-XEN_CMD = _autoconf.XEN_CMD
 
 KNOWN_XEN_COMMANDS = compat.UniqueFrozenset([
   XEN_CMD_XM,
@@ -373,9 +376,27 @@ HKR_FAIL = 1
 HKR_SUCCESS = 2
 
 # Storage types
+ST_BLOCK = "blockdev"
+ST_DISKLESS = "diskless"
+ST_EXT = "ext"
 ST_FILE = "file"
 ST_LVM_PV = "lvm-pv"
 ST_LVM_VG = "lvm-vg"
+ST_RADOS = "rados"
+
+STORAGE_TYPES = compat.UniqueFrozenset([
+  ST_BLOCK,
+  ST_DISKLESS,
+  ST_EXT,
+  ST_FILE,
+  ST_LVM_PV,
+  ST_LVM_VG,
+  ST_RADOS,
+  ])
+
+# the set of storage types for which storage reporting is available
+# FIXME: Remove this, once storage reporting is available for all types.
+STS_REPORT = compat.UniqueFrozenset([ST_FILE, ST_LVM_PV, ST_LVM_VG])
 
 # Storage fields
 # first two are valid in LU context only, not passed to backend
@@ -401,12 +422,6 @@ VALID_STORAGE_FIELDS = compat.UniqueFrozenset([
   SF_ALLOCATABLE,
   ])
 
-VALID_STORAGE_TYPES = compat.UniqueFrozenset([
-  ST_FILE,
-  ST_LVM_PV,
-  ST_LVM_VG,
-  ])
-
 MODIFIABLE_STORAGE_FIELDS = {
   ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
   }
@@ -421,15 +436,65 @@ VALID_STORAGE_OPERATIONS = {
  LDS_UNKNOWN,
  LDS_FAULTY) = range(1, 4)
 
+LDS_NAMES = {
+  LDS_OKAY: "ok",
+  LDS_UNKNOWN: "unknown",
+  LDS_FAULTY: "faulty",
+}
+
 # disk template types
+DT_BLOCK = "blockdev"
 DT_DISKLESS = "diskless"
-DT_PLAIN = "plain"
 DT_DRBD8 = "drbd"
+DT_EXT = "ext"
 DT_FILE = "file"
-DT_SHARED_FILE = "sharedfile"
-DT_BLOCK = "blockdev"
+DT_PLAIN = "plain"
 DT_RBD = "rbd"
-DT_EXT = "ext"
+DT_SHARED_FILE = "sharedfile"
+
+# This is used to order determine the default disk template when the list
+# of enabled disk templates is inferred from the current state of the cluster.
+# This only happens on an upgrade from a version of Ganeti that did not
+# support the 'enabled_disk_templates' so far.
+DISK_TEMPLATE_PREFERENCE = [
+  DT_BLOCK,
+  DT_DISKLESS,
+  DT_DRBD8,
+  DT_EXT,
+  DT_FILE,
+  DT_PLAIN,
+  DT_RBD,
+  DT_SHARED_FILE,
+  ]
+
+DISK_TEMPLATES = compat.UniqueFrozenset([
+  DT_DISKLESS,
+  DT_PLAIN,
+  DT_DRBD8,
+  DT_FILE,
+  DT_SHARED_FILE,
+  DT_BLOCK,
+  DT_RBD,
+  DT_EXT
+  ])
+
+# disk templates that are enabled by default
+DEFAULT_ENABLED_DISK_TEMPLATES = [
+  DT_DRBD8,
+  DT_PLAIN,
+  ]
+
+# mapping of disk templates to storage types
+MAP_DISK_TEMPLATE_STORAGE_TYPE = {
+  DT_BLOCK: ST_BLOCK,
+  DT_DISKLESS: ST_DISKLESS,
+  DT_DRBD8: ST_LVM_VG,
+  DT_EXT: ST_EXT,
+  DT_FILE: ST_FILE,
+  DT_PLAIN: ST_LVM_VG,
+  DT_RBD: ST_RADOS,
+  DT_SHARED_FILE: ST_FILE,
+  }
 
 # the set of network-mirrored disk templates
 DTS_INT_MIRROR = compat.UniqueFrozenset([DT_DRBD8])
@@ -481,6 +546,14 @@ DTS_FILEBASED = compat.UniqueFrozenset([
   DT_SHARED_FILE,
   ])
 
+# the set of disk templates that can be moved by copying
+# Note: a requirement is that they're not accessed externally or shared between
+# nodes; in particular, sharedfile is not suitable.
+DTS_COPYABLE = compat.UniqueFrozenset([
+  DT_FILE,
+  DT_PLAIN,
+  ])
+
 # the set of disk templates that are supported by exclusive_storage
 DTS_EXCL_STORAGE = compat.UniqueFrozenset([DT_PLAIN])
 
@@ -518,7 +591,8 @@ LDS_BLOCK = compat.UniqueFrozenset([
 
 # drbd constants
 DRBD_HMAC_ALG = "md5"
-DRBD_NET_PROTOCOL = "C"
+DRBD_DEFAULT_NET_PROTOCOL = "C"
+DRBD_MIGRATION_NET_PROTOCOL = "C"
 DRBD_STATUS_FILE = "/proc/drbd"
 
 #: Size of DRBD meta block device
@@ -606,17 +680,6 @@ RIE_CONNECT_RETRIES = 10
 #: Give child process up to 5 seconds to exit after sending a signal
 CHILD_LINGER_TIMEOUT = 5.0
 
-DISK_TEMPLATES = compat.UniqueFrozenset([
-  DT_DISKLESS,
-  DT_PLAIN,
-  DT_DRBD8,
-  DT_FILE,
-  DT_SHARED_FILE,
-  DT_BLOCK,
-  DT_RBD,
-  DT_EXT
-  ])
-
 FILE_DRIVER = compat.UniqueFrozenset([FD_LOOP, FD_BLKTAP])
 
 # import/export config options
@@ -893,6 +956,10 @@ HV_VGA = "vga"
 HV_KVM_EXTRA = "kvm_extra"
 HV_KVM_MACHINE_VERSION = "machine_version"
 HV_KVM_PATH = "kvm_path"
+HV_VIF_TYPE = "vif_type"
+HV_VIF_SCRIPT = "vif_script"
+HV_XEN_CMD = "xen_cmd"
+HV_VNET_HDR = "vnet_hdr"
 
 
 HVS_PARAMETER_TYPES = {
@@ -962,6 +1029,10 @@ HVS_PARAMETER_TYPES = {
   HV_VGA: VTYPE_STRING,
   HV_KVM_EXTRA: VTYPE_STRING,
   HV_KVM_MACHINE_VERSION: VTYPE_STRING,
+  HV_VIF_TYPE: VTYPE_STRING,
+  HV_VIF_SCRIPT: VTYPE_STRING,
+  HV_XEN_CMD: VTYPE_STRING,
+  HV_VNET_HDR: VTYPE_BOOL,
   }
 
 HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
@@ -1100,6 +1171,7 @@ ISPECS_PARAMETER_TYPES = {
 
 ISPECS_PARAMETERS = frozenset(ISPECS_PARAMETER_TYPES.keys())
 
+ISPECS_MINMAX = "minmax"
 ISPECS_MIN = "min"
 ISPECS_MAX = "max"
 ISPECS_STD = "std"
@@ -1107,10 +1179,9 @@ IPOLICY_DTS = "disk-templates"
 IPOLICY_VCPU_RATIO = "vcpu-ratio"
 IPOLICY_SPINDLE_RATIO = "spindle-ratio"
 
-IPOLICY_ISPECS = compat.UniqueFrozenset([
+ISPECS_MINMAX_KEYS = compat.UniqueFrozenset([
   ISPECS_MIN,
   ISPECS_MAX,
-  ISPECS_STD,
   ])
 
 IPOLICY_PARAMETERS = compat.UniqueFrozenset([
@@ -1118,9 +1189,8 @@ IPOLICY_PARAMETERS = compat.UniqueFrozenset([
   IPOLICY_SPINDLE_RATIO,
   ])
 
-IPOLICY_ALL_KEYS = (IPOLICY_ISPECS |
-                    IPOLICY_PARAMETERS |
-                    frozenset([IPOLICY_DTS]))
+IPOLICY_ALL_KEYS = (IPOLICY_PARAMETERS |
+                    frozenset([ISPECS_MINMAX, ISPECS_STD, IPOLICY_DTS]))
 
 # Node parameter names
 ND_OOB_PROGRAM = "oob_program"
@@ -1149,6 +1219,7 @@ LDP_NO_META_FLUSH = "disable-meta-flush"
 LDP_DEFAULT_METAVG = "default-metavg"
 LDP_DISK_CUSTOM = "disk-custom"
 LDP_NET_CUSTOM = "net-custom"
+LDP_PROTOCOL = "protocol"
 LDP_DYNAMIC_RESYNC = "dynamic-resync"
 LDP_PLAN_AHEAD = "c-plan-ahead"
 LDP_FILL_TARGET = "c-fill-target"
@@ -1164,6 +1235,7 @@ DISK_LD_TYPES = {
   LDP_DEFAULT_METAVG: VTYPE_STRING,
   LDP_DISK_CUSTOM: VTYPE_STRING,
   LDP_NET_CUSTOM: VTYPE_STRING,
+  LDP_PROTOCOL: VTYPE_STRING,
   LDP_DYNAMIC_RESYNC: VTYPE_BOOL,
   LDP_PLAN_AHEAD: VTYPE_INT,
   LDP_FILL_TARGET: VTYPE_INT,
@@ -1184,6 +1256,7 @@ DRBD_META_BARRIERS = "meta-barriers"
 DRBD_DEFAULT_METAVG = "metavg"
 DRBD_DISK_CUSTOM = "disk-custom"
 DRBD_NET_CUSTOM = "net-custom"
+DRBD_PROTOCOL = "protocol"
 DRBD_DYNAMIC_RESYNC = "dynamic-resync"
 DRBD_PLAN_AHEAD = "c-plan-ahead"
 DRBD_FILL_TARGET = "c-fill-target"
@@ -1201,6 +1274,7 @@ DISK_DT_TYPES = {
   DRBD_DEFAULT_METAVG: VTYPE_STRING,
   DRBD_DISK_CUSTOM: VTYPE_STRING,
   DRBD_NET_CUSTOM: VTYPE_STRING,
+  DRBD_PROTOCOL: VTYPE_STRING,
   DRBD_DYNAMIC_RESYNC: VTYPE_BOOL,
   DRBD_PLAN_AHEAD: VTYPE_INT,
   DRBD_FILL_TARGET: VTYPE_INT,
@@ -1275,18 +1349,22 @@ NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
 
 # IDISK_* constants are used in opcodes, to create/change disks
 IDISK_SIZE = "size"
+IDISK_SPINDLES = "spindles"
 IDISK_MODE = "mode"
 IDISK_ADOPT = "adopt"
 IDISK_VG = "vg"
 IDISK_METAVG = "metavg"
 IDISK_PROVIDER = "provider"
+IDISK_NAME = "name"
 IDISK_PARAMS_TYPES = {
   IDISK_SIZE: VTYPE_SIZE,
+  IDISK_SPINDLES: VTYPE_INT,
   IDISK_MODE: VTYPE_STRING,
   IDISK_ADOPT: VTYPE_STRING,
   IDISK_VG: VTYPE_STRING,
   IDISK_METAVG: VTYPE_STRING,
   IDISK_PROVIDER: VTYPE_STRING,
+  IDISK_NAME: VTYPE_MAYBE_STRING,
   }
 IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
 
@@ -1296,12 +1374,14 @@ INIC_IP = "ip"
 INIC_MODE = "mode"
 INIC_LINK = "link"
 INIC_NETWORK = "network"
+INIC_NAME = "name"
 INIC_PARAMS_TYPES = {
   INIC_IP: VTYPE_MAYBE_STRING,
   INIC_LINK: VTYPE_STRING,
   INIC_MAC: VTYPE_STRING,
   INIC_MODE: VTYPE_STRING,
   INIC_NETWORK: VTYPE_MAYBE_STRING,
+  INIC_NAME: VTYPE_MAYBE_STRING,
   }
 INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
 
@@ -1355,6 +1435,15 @@ HT_KVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
   HT_NIC_PARAVIRTUAL,
   ])
 
+# Vif types
+# default vif type in xen-hvm
+HT_HVM_VIF_IOEMU = "ioemu"
+HT_HVM_VIF_VIF = "vif"
+HT_HVM_VALID_VIF_TYPES = compat.UniqueFrozenset([
+  HT_HVM_VIF_IOEMU,
+  HT_HVM_VIF_VIF,
+  ])
+
 # Disk types
 HT_DISK_IOEMU = "ioemu"
 HT_DISK_IDE = "ide"
@@ -1523,8 +1612,13 @@ CV_EINSTANCEPOLICY = \
 CV_EINSTANCEUNSUITABLENODE = \
   (CV_TINSTANCE, "EINSTANCEUNSUITABLENODE",
    "Instance running on nodes that are not suitable for it")
+CV_EINSTANCEMISSINGCFGPARAMETER = \
+  (CV_TINSTANCE, "EINSTANCEMISSINGCFGPARAMETER",
+   "A configuration parameter for an instance is missing")
 CV_ENODEDRBD = \
   (CV_TNODE, "ENODEDRBD", "Error parsing the DRBD status file")
+CV_ENODEDRBDVERSION = \
+  (CV_TNODE, "ENODEDRBDVERSION", "DRBD version mismatch within a node group")
 CV_ENODEDRBDHELPER = \
   (CV_TNODE, "ENODEDRBDHELPER", "Error caused by the DRBD helper")
 CV_ENODEFILECHECK = \
@@ -1564,6 +1658,8 @@ CV_ENODEUSERSCRIPTS = \
   (CV_TNODE, "ENODEUSERSCRIPTS", "User scripts not present or not executable")
 CV_ENODEFILESTORAGEPATHS = \
   (CV_TNODE, "ENODEFILESTORAGEPATHS", "Detected bad file storage paths")
+CV_ENODEFILESTORAGEPATHUNUSABLE = \
+  (CV_TNODE, "ENODEFILESTORAGEPATHUNUSABLE", "File storage path unusable")
 
 CV_ALL_ECODES = compat.UniqueFrozenset([
   CV_ECLUSTERCFG,
@@ -1598,6 +1694,7 @@ CV_ALL_ECODES = compat.UniqueFrozenset([
   CV_ENODEOOBPATH,
   CV_ENODEUSERSCRIPTS,
   CV_ENODEFILESTORAGEPATHS,
+  CV_ENODEFILESTORAGEPATHUNUSABLE,
   ])
 
 CV_ALL_ECODES_STRINGS = \
@@ -1606,10 +1703,13 @@ CV_ALL_ECODES_STRINGS = \
 # Node verify constants
 NV_BRIDGES = "bridges"
 NV_DRBDHELPER = "drbd-helper"
+NV_DRBDVERSION = "drbd-version"
 NV_DRBDLIST = "drbd-list"
 NV_EXCLUSIVEPVS = "exclusive-pvs"
 NV_FILELIST = "filelist"
-NV_FILE_STORAGE_PATHS = "file-storage-paths"
+NV_ACCEPTED_STORAGE_PATHS = "allowed-file-storage-paths"
+NV_FILE_STORAGE_PATH = "file-storage-path"
+NV_SHARED_FILE_STORAGE_PATH = "shared-file-storage-path"
 NV_HVINFO = "hvinfo"
 NV_HVPARAMS = "hvparms"
 NV_HYPERVISOR = "hypervisor"
@@ -1721,6 +1821,7 @@ NODE_EVAC_MODES = compat.UniqueFrozenset([
 # Job queue
 JOB_QUEUE_VERSION = 1
 JOB_QUEUE_SIZE_HARD_LIMIT = 5000
+JOB_QUEUE_FILES_PERMS = 0640
 
 JOB_ID_TEMPLATE = r"\d+"
 JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
@@ -1932,6 +2033,26 @@ SS_UID_POOL = "uid_pool"
 SS_NODEGROUPS = "nodegroups"
 SS_NETWORKS = "networks"
 
+# This is not a complete SSCONF key, but the prefix for the hypervisor keys
+SS_HVPARAMS_PREF = "hvparams_"
+
+# Hvparams keys:
+SS_HVPARAMS_XEN_PVM = SS_HVPARAMS_PREF + HT_XEN_PVM
+SS_HVPARAMS_XEN_FAKE = SS_HVPARAMS_PREF + HT_FAKE
+SS_HVPARAMS_XEN_HVM = SS_HVPARAMS_PREF + HT_XEN_HVM
+SS_HVPARAMS_XEN_KVM = SS_HVPARAMS_PREF + HT_KVM
+SS_HVPARAMS_XEN_CHROOT = SS_HVPARAMS_PREF + HT_CHROOT
+SS_HVPARAMS_XEN_LXC = SS_HVPARAMS_PREF + HT_LXC
+
+VALID_SS_HVPARAMS_KEYS = compat.UniqueFrozenset([
+  SS_HVPARAMS_XEN_PVM,
+  SS_HVPARAMS_XEN_FAKE,
+  SS_HVPARAMS_XEN_HVM,
+  SS_HVPARAMS_XEN_KVM,
+  SS_HVPARAMS_XEN_CHROOT,
+  SS_HVPARAMS_XEN_LXC,
+  ])
+
 SS_FILE_PERMS = 0444
 
 # cluster wide default parameters
@@ -1953,6 +2074,8 @@ HVC_DEFAULTS = {
     HV_CPU_MASK: CPU_PINNING_ALL,
     HV_CPU_CAP: 0,
     HV_CPU_WEIGHT: 256,
+    HV_VIF_SCRIPT: "",
+    HV_XEN_CMD: XEN_CMD_XM,
     },
   HT_XEN_HVM: {
     HV_BOOT_ORDER: "cd",
@@ -1974,6 +2097,9 @@ HVC_DEFAULTS = {
     HV_CPU_MASK: CPU_PINNING_ALL,
     HV_CPU_CAP: 0,
     HV_CPU_WEIGHT: 256,
+    HV_VIF_TYPE: HT_HVM_VIF_IOEMU,
+    HV_VIF_SCRIPT: "",
+    HV_XEN_CMD: XEN_CMD_XM,
     },
   HT_KVM: {
     HV_KVM_PATH: KVM_PATH,
@@ -2032,8 +2158,11 @@ HVC_DEFAULTS = {
     HV_VGA: "",
     HV_KVM_EXTRA: "",
     HV_KVM_MACHINE_VERSION: "",
+    HV_VNET_HDR: True,
     },
-  HT_FAKE: {},
+  HT_FAKE: {
+    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
+  },
   HT_CHROOT: {
     HV_INIT_SCRIPT: "/ganeti-chroot",
     },
@@ -2046,6 +2175,7 @@ HVC_GLOBALS = compat.UniqueFrozenset([
   HV_MIGRATION_PORT,
   HV_MIGRATION_BANDWIDTH,
   HV_MIGRATION_MODE,
+  HV_XEN_CMD,
   ])
 
 BEC_DEFAULTS = {
@@ -2075,6 +2205,7 @@ DISK_LD_DEFAULTS = {
     LDP_DEFAULT_METAVG: DEFAULT_VG,
     LDP_DISK_CUSTOM: "",
     LDP_NET_CUSTOM: "",
+    LDP_PROTOCOL: DRBD_DEFAULT_NET_PROTOCOL,
     LDP_DYNAMIC_RESYNC: False,
 
     # The default values for the DRBD dynamic resync speed algorithm
@@ -2116,6 +2247,7 @@ DISK_DT_DEFAULTS = {
     DRBD_DEFAULT_METAVG: _DRBD_DEFAULTS[LDP_DEFAULT_METAVG],
     DRBD_DISK_CUSTOM: _DRBD_DEFAULTS[LDP_DISK_CUSTOM],
     DRBD_NET_CUSTOM: _DRBD_DEFAULTS[LDP_NET_CUSTOM],
+    DRBD_PROTOCOL: _DRBD_DEFAULTS[LDP_PROTOCOL],
     DRBD_DYNAMIC_RESYNC: _DRBD_DEFAULTS[LDP_DYNAMIC_RESYNC],
     DRBD_PLAN_AHEAD: _DRBD_DEFAULTS[LDP_PLAN_AHEAD],
     DRBD_FILL_TARGET: _DRBD_DEFAULTS[LDP_FILL_TARGET],
@@ -2143,7 +2275,7 @@ NICC_DEFAULTS = {
 
 # All of the following values are quite arbitrarily - there are no
 # "good" defaults, these must be customised per-site
-IPOLICY_DEFAULTS = {
+ISPECS_MINMAX_DEFAULTS = {
   ISPECS_MIN: {
     ISPEC_MEM_SIZE: 128,
     ISPEC_CPU_COUNT: 1,
@@ -2160,6 +2292,9 @@ IPOLICY_DEFAULTS = {
     ISPEC_NIC_COUNT: MAX_NICS,
     ISPEC_SPINDLE_USE: 12,
     },
+  }
+IPOLICY_DEFAULTS = {
+  ISPECS_MINMAX: [ISPECS_MINMAX_DEFAULTS],
   ISPECS_STD: {
     ISPEC_MEM_SIZE: 128,
     ISPEC_CPU_COUNT: 1,
@@ -2379,19 +2514,25 @@ AUTO_REPAIR_ALL_RESULTS = frozenset([
 # The version identifier for builtin data collectors
 BUILTIN_DATA_COLLECTOR_VERSION = "B"
 
-# The source reasons for the change of state of an instance
-INSTANCE_REASON_SOURCE_CLI = "cli"
-INSTANCE_REASON_SOURCE_RAPI = "rapi"
-INSTANCE_REASON_SOURCE_UNKNOWN = "unknown"
+# The reason trail opcode parameter name
+OPCODE_REASON = "reason"
+
+# The source reasons for the execution of an OpCode
+OPCODE_REASON_SRC_CLIENT = "gnt:client"
+OPCODE_REASON_SRC_NODED = "gnt:daemon:noded"
+OPCODE_REASON_SRC_OPCODE = "gnt:opcode"
+OPCODE_REASON_SRC_RLIB2 = "gnt:library:rlib2"
+OPCODE_REASON_SRC_USER = "gnt:user"
 
-INSTANCE_REASON_SOURCES = compat.UniqueFrozenset([
-  INSTANCE_REASON_SOURCE_CLI,
-  INSTANCE_REASON_SOURCE_RAPI,
-  INSTANCE_REASON_SOURCE_UNKNOWN,
+OPCODE_REASON_SOURCES = compat.UniqueFrozenset([
+  OPCODE_REASON_SRC_CLIENT,
+  OPCODE_REASON_SRC_NODED,
+  OPCODE_REASON_SRC_OPCODE,
+  OPCODE_REASON_SRC_RLIB2,
+  OPCODE_REASON_SRC_USER,
   ])
 
-# The default reasons for the change of state of an instance
-INSTANCE_REASON_REBOOT = "reboot"
+DISKSTATS_FILE = "/proc/diskstats"
 
 # Do not re-export imported modules
 del re, _vcsversion, _autoconf, socket, pathutils, compat