diff --git a/tools/burnin b/tools/burnin
index a432d4d74d54afed7cf3f1f654b6140e1b12f351..11a70424191e37465b3e2b7516169c2409f55c46 100755
--- a/tools/burnin
+++ b/tools/burnin
@@ -38,6 +38,7 @@ from ganeti import errors
 from ganeti import utils
 from ganeti import hypervisor
 from ganeti import compat
+from ganeti import pathutils
 
 from ganeti.confd import client as confd_client
 
@@ -747,7 +748,7 @@ class Burner(object):
                                       shutdown=True)
       rem_op = opcodes.OpInstanceRemove(instance_name=instance,
                                         ignore_failures=True)
-      imp_dir = utils.PathJoin(constants.EXPORT_DIR, full_name)
+      imp_dir = utils.PathJoin(pathutils.EXPORT_DIR, full_name)
       imp_op = opcodes.OpInstanceCreate(instance_name=instance,
                                         disks=[{"size": size}
                                                for size in self.disk_size],
@@ -1120,7 +1121,7 @@ def main():
   """Main function.
 
   """
-  utils.SetupLogging(constants.LOG_BURNIN, sys.argv[0],
+  utils.SetupLogging(pathutils.LOG_BURNIN, sys.argv[0],
                      debug=False, stderr_logging=True)
 
   return Burner().BurninCluster()
diff --git a/tools/cfgupgrade b/tools/cfgupgrade
index 7b7fbca0b72d659be57a1d70412f29dbe5b4a669..604d8aa29a89ab92853a807186a031f984b68688 100755
--- a/tools/cfgupgrade
+++ b/tools/cfgupgrade
@@ -40,6 +40,7 @@ from ganeti import cli
 from ganeti import bootstrap
 from ganeti import config
 from ganeti import netutils
+from ganeti import pathutils
 
 
 options = None
@@ -114,8 +115,8 @@ def main():
                     action="store_true", default=False,
                     help="Don't abort if hostname doesn't match")
   parser.add_option("--path", help="Convert configuration in this"
-                    " directory instead of '%s'" % constants.DATA_DIR,
-                    default=constants.DATA_DIR, dest="data_dir")
+                    " directory instead of '%s'" % pathutils.DATA_DIR,
+                    default=pathutils.DATA_DIR, dest="data_dir")
   parser.add_option("--no-verify",
                     help="Do not verify configuration after upgrade",
                     action="store_true", dest="no_verify", default=False)
diff --git a/tools/cfgupgrade12 b/tools/cfgupgrade12
index 5bf426dfb229092729e0f7c4551535385ff100e9..fd70ee1e2417bfa0e007685289f41e9c5a37304f 100755
--- a/tools/cfgupgrade12
+++ b/tools/cfgupgrade12
@@ -47,6 +47,7 @@ from ganeti import constants
 from ganeti import serializer
 from ganeti import utils
 from ganeti import cli
+from ganeti import pathutils
 
 
 options = None
@@ -195,7 +196,7 @@ def Cluster12To20(cluster):
 
   # file storage
   if "file_storage_dir" not in cluster:
-    cluster["file_storage_dir"] = constants.DEFAULT_FILE_STORAGE_DIR
+    cluster["file_storage_dir"] = pathutils.DEFAULT_FILE_STORAGE_DIR
 
   # candidate pool size
   if "candidate_pool_size" not in cluster:
@@ -296,8 +297,8 @@ def main():
   parser.add_option(cli.DEBUG_OPT)
   parser.add_option(cli.VERBOSE_OPT)
   parser.add_option("--path", help="Convert configuration in this"
-                    " directory instead of '%s'" % constants.DATA_DIR,
-                    default=constants.DATA_DIR, dest="data_dir")
+                    " directory instead of '%s'" % pathutils.DATA_DIR,
+                    default=pathutils.DATA_DIR, dest="data_dir")
   (options, args) = parser.parse_args()
 
   # We need to keep filenames locally because they might be renamed between
diff --git a/tools/cluster-merge b/tools/cluster-merge
index bc5e10e99127f3cb40ec1337d785176028d69c30..1ff4b64e68b184013f12315842091613eb031091 100755
--- a/tools/cluster-merge
+++ b/tools/cluster-merge
@@ -40,6 +40,7 @@ from ganeti import constants
 from ganeti import errors
 from ganeti import ssh
 from ganeti import utils
+from ganeti import pathutils
 
 
 _GROUPS_MERGE = "merge"
@@ -209,7 +210,7 @@ class Merger(object):
                                  (cluster, result.fail_reason, result.output))
       instances = result.stdout.splitlines()
 
-      path = utils.PathJoin(constants.DATA_DIR, "ssconf_%s" %
+      path = utils.PathJoin(pathutils.DATA_DIR, "ssconf_%s" %
                             constants.SS_MASTER_NODE)
       result = self._RunCmd(cluster, "cat %s" % path, private_key=key_path)
       if result.failed:
@@ -321,7 +322,7 @@ class Merger(object):
     """Stop all daemons on merging nodes.
 
     """
-    cmd = "%s stop-all" % constants.DAEMON_UTIL
+    cmd = "%s stop-all" % pathutils.DAEMON_UTIL
     for data in self.merger_data:
       for node in data.nodes:
         result = self._RunCmd(node, cmd, max_attempts=3)
@@ -339,7 +340,7 @@ class Merger(object):
     """
     for data in self.merger_data:
       result = self._RunCmd(data.cluster, "cat %s" %
-                                          constants.CLUSTER_CONF_FILE)
+                                          pathutils.CLUSTER_CONF_FILE)
 
       if result.failed:
         raise errors.RemoteError("Unable to retrieve remote config on %s."
@@ -358,7 +359,7 @@ class Merger(object):
     @raise errors.CommandError: If unable to kill
 
     """
-    result = utils.RunCmd([constants.DAEMON_UTIL, "stop-master"])
+    result = utils.RunCmd([pathutils.DAEMON_UTIL, "stop-master"])
     if result.failed:
       raise errors.CommandError("Unable to stop master daemons."
                                 " Fail reason: %s; output: %s" %
@@ -634,7 +635,7 @@ class Merger(object):
     if no_vote:
       env["EXTRA_MASTERD_ARGS"] = "--no-voting --yes-do-it"
 
-    result = utils.RunCmd([constants.DAEMON_UTIL, "start-master"], env=env)
+    result = utils.RunCmd([pathutils.DAEMON_UTIL, "start-master"], env=env)
     if result.failed:
       raise errors.CommandError("Couldn't start ganeti master."
                                 " Fail reason: %s; output: %s" %
@@ -730,7 +731,7 @@ class Merger(object):
 
       rbsteps.append("Restore %s from another master candidate"
                      " and restart master daemon" %
-                     constants.CLUSTER_CONF_FILE)
+                     pathutils.CLUSTER_CONF_FILE)
       self._MergeConfig()
       self._StartMasterDaemon(no_vote=True)
 
diff --git a/tools/confd-client b/tools/confd-client
index 34b8b522cc4544305eb107a582dcb014a768066e..13dd89ecb36b672086cb0ede0e099aa27df1eab2 100755
--- a/tools/confd-client
+++ b/tools/confd-client
@@ -33,6 +33,7 @@ import time
 from ganeti import constants
 from ganeti import cli
 from ganeti import utils
+from ganeti import pathutils
 
 from ganeti.confd import client as confd_client
 
@@ -125,7 +126,7 @@ class TestClient(object):
       Usage()
 
     if options.hmac is None:
-      options.hmac = utils.ReadFile(constants.CONFD_HMAC_KEY)
+      options.hmac = utils.ReadFile(pathutils.CONFD_HMAC_KEY)
     self.hmac_key = options.hmac
 
     self.mc_list = [options.mc]
diff --git a/tools/sanitize-config b/tools/sanitize-config
index f94e67084c48082b08b8dd5ba0a2ecd0092c6251..d70204ac23764405b3d0a6f913e8e35f0bd5105c 100755
--- a/tools/sanitize-config
+++ b/tools/sanitize-config
@@ -33,6 +33,7 @@ import optparse
 from ganeti import constants
 from ganeti import serializer
 from ganeti import utils
+from ganeti import pathutils
 from ganeti import cli
 from ganeti.cli import cli_option
 
@@ -40,8 +41,8 @@ from ganeti.cli import cli_option
 OPTS = [
   cli.VERBOSE_OPT,
   cli_option("--path", help="Convert this configuration file"
-             " instead of '%s'" % constants.CLUSTER_CONF_FILE,
-             default=constants.CLUSTER_CONF_FILE, dest="CONFIG_DATA_PATH"),
+             " instead of '%s'" % pathutils.CLUSTER_CONF_FILE,
+             default=pathutils.CLUSTER_CONF_FILE, dest="CONFIG_DATA_PATH"),
   cli_option("--sanitize-names", default="yes", type="bool",
              help="Randomize the cluster, node and instance names [yes]"),
   cli_option("--sanitize-ips", default="yes", type="bool",
diff --git a/tools/setup-ssh b/tools/setup-ssh
index 4e09078158300786a6b21a1e7f1f796367066382..62cbd4a58d2ddd0af5e80d4b3086631126643a6a 100755
--- a/tools/setup-ssh
+++ b/tools/setup-ssh
@@ -47,6 +47,7 @@ from ganeti import netutils
 from ganeti import ssconf
 from ganeti import ssh
 from ganeti import utils
+from ganeti import pathutils
 
 
 class RemoteCommandError(errors.GenericError):
@@ -89,7 +90,7 @@ def _CheckJoin(transport):
   ss_cluster_name_path = ss.KeyToFilename(constants.SS_CLUSTER_NAME)
 
   cluster_files = [
-    (constants.NODED_CERT_FILE, utils.ReadFile(constants.NODED_CERT_FILE)),
+    (pathutils.NODED_CERT_FILE, utils.ReadFile(pathutils.NODED_CERT_FILE)),
     (ss_cluster_name_path, utils.ReadFile(ss_cluster_name_path)),
     ]
 
@@ -141,7 +142,7 @@ def _InvokeDaemonUtil(transport, command):
   @param command: The daemon-util command to be run
 
   """
-  _RunRemoteCommand(transport, "%s %s" % (constants.DAEMON_UTIL, command))
+  _RunRemoteCommand(transport, "%s %s" % (pathutils.DAEMON_UTIL, command))
 
 
 def _ReadSftpFile(sftp, filename):
@@ -184,10 +185,10 @@ def SetupSSH(transport):
   """
   priv_key, pub_key, auth_keys = ssh.GetUserFiles(constants.GANETI_RUNAS)
   keyfiles = [
-    (constants.SSH_HOST_DSA_PRIV, 0600),
-    (constants.SSH_HOST_DSA_PUB, 0644),
-    (constants.SSH_HOST_RSA_PRIV, 0600),
-    (constants.SSH_HOST_RSA_PUB, 0644),
+    (pathutils.SSH_HOST_DSA_PRIV, 0600),
+    (pathutils.SSH_HOST_DSA_PUB, 0644),
+    (pathutils.SSH_HOST_RSA_PRIV, 0600),
+    (pathutils.SSH_HOST_RSA_PUB, 0644),
     (priv_key, 0600),
     (pub_key, 0644),
     ]
@@ -273,7 +274,7 @@ def SetupLogging(options):
 
   formatter = logging.Formatter(fmt)
 
-  file_handler = logging.FileHandler(constants.LOG_SETUP_SSH)
+  file_handler = logging.FileHandler(pathutils.LOG_SETUP_SSH)
   stderr_handler = logging.StreamHandler()
   stderr_handler.setFormatter(formatter)
   file_handler.setFormatter(formatter)