diff --git a/lib/ssconf.py b/lib/ssconf.py
index 19368376f6d7c4f303849586eacd91b07ccf69e3..8f24f9dc7c9b7e2b6f3f573309d5764891251c06 100644
--- a/lib/ssconf.py
+++ b/lib/ssconf.py
@@ -27,14 +27,11 @@ configuration data, which is mostly static and available to all nodes.
 """
 
 import sys
-import os
 import errno
 
 from ganeti import errors
 from ganeti import constants
 from ganeti import utils
-from ganeti import serializer
-from ganeti import objects
 from ganeti import netutils
 from ganeti import pathutils
 
@@ -42,224 +39,6 @@ from ganeti import pathutils
 SSCONF_LOCK_TIMEOUT = 10
 
 
-class SimpleConfigReader(object):
-  """Simple class to read configuration file.
-
-  """
-  def __init__(self, file_name=pathutils.CLUSTER_CONF_FILE):
-    """Initializes this class.
-
-    @type file_name: string
-    @param file_name: Configuration file path
-
-    """
-    self._file_name = file_name
-    self._last_inode = None
-    self._last_mtime = None
-    self._last_size = None
-
-    self._config_data = None
-    self._inst_ips_by_link = None
-    self._ip_to_inst_by_link = None
-    self._instances_ips = None
-    self._mc_primary_ips = None
-    self._nodes_primary_ips = None
-
-    # we need a forced reload at class init time, to initialize _last_*
-    self._Load(force=True)
-
-  def _Load(self, force=False):
-    """Loads (or reloads) the config file.
-
-    @type force: boolean
-    @param force: whether to force the reload without checking the mtime
-    @rtype: boolean
-    @return: boolean value that says whether we reloaded the configuration or
-             not (because we decided it was already up-to-date)
-
-    """
-    try:
-      cfg_stat = os.stat(self._file_name)
-    except EnvironmentError, err:
-      raise errors.ConfigurationError("Cannot stat config file %s: %s" %
-                                      (self._file_name, err))
-    inode = cfg_stat.st_ino
-    mtime = cfg_stat.st_mtime
-    size = cfg_stat.st_size
-
-    if (force or inode != self._last_inode or
-        mtime > self._last_mtime or
-        size != self._last_size):
-      self._last_inode = inode
-      self._last_mtime = mtime
-      self._last_size = size
-    else:
-      # Don't reload
-      return False
-
-    try:
-      self._config_data = serializer.Load(utils.ReadFile(self._file_name))
-    except EnvironmentError, err:
-      raise errors.ConfigurationError("Cannot read config file %s: %s" %
-                                      (self._file_name, err))
-    except ValueError, err:
-      raise errors.ConfigurationError("Cannot load config file %s: %s" %
-                                      (self._file_name, err))
-
-    self._ip_to_inst_by_link = {}
-    self._instances_ips = []
-    self._inst_ips_by_link = {}
-    c_nparams = self._config_data["cluster"]["nicparams"][constants.PP_DEFAULT]
-    for iname in self._config_data["instances"]:
-      instance = self._config_data["instances"][iname]
-      for nic in instance["nics"]:
-        if "ip" in nic and nic["ip"]:
-          params = objects.FillDict(c_nparams, nic["nicparams"])
-          if not params["link"] in self._inst_ips_by_link:
-            self._inst_ips_by_link[params["link"]] = []
-            self._ip_to_inst_by_link[params["link"]] = {}
-          self._ip_to_inst_by_link[params["link"]][nic["ip"]] = iname
-          self._inst_ips_by_link[params["link"]].append(nic["ip"])
-
-    self._nodes_primary_ips = []
-    self._mc_primary_ips = []
-    for node_name in self._config_data["nodes"]:
-      node = self._config_data["nodes"][node_name]
-      self._nodes_primary_ips.append(node["primary_ip"])
-      if node["master_candidate"]:
-        self._mc_primary_ips.append(node["primary_ip"])
-
-    return True
-
-  # Clients can request a reload of the config file, so we export our internal
-  # _Load function as Reload.
-  Reload = _Load
-
-  def GetClusterName(self):
-    return self._config_data["cluster"]["cluster_name"]
-
-  def GetHostKey(self):
-    return self._config_data["cluster"]["rsahostkeypub"]
-
-  def GetMasterNode(self):
-    return self._config_data["cluster"]["master_node"]
-
-  def GetMasterIP(self):
-    return self._config_data["cluster"]["master_ip"]
-
-  def GetMasterNetdev(self):
-    return self._config_data["cluster"]["master_netdev"]
-
-  def GetMasterNetmask(self):
-    return self._config_data["cluster"]["master_netmask"]
-
-  def GetFileStorageDir(self):
-    return self._config_data["cluster"]["file_storage_dir"]
-
-  def GetSharedFileStorageDir(self):
-    return self._config_data["cluster"]["shared_file_storage_dir"]
-
-  def GetNodeList(self):
-    return self._config_data["nodes"].keys()
-
-  def GetConfigSerialNo(self):
-    return self._config_data["serial_no"]
-
-  def GetClusterSerialNo(self):
-    return self._config_data["cluster"]["serial_no"]
-
-  def GetDefaultNicParams(self):
-    return self._config_data["cluster"]["nicparams"][constants.PP_DEFAULT]
-
-  def GetDefaultNicLink(self):
-    return self.GetDefaultNicParams()[constants.NIC_LINK]
-
-  def GetNodeStatusFlags(self, node):
-    """Get a node's status flags
-
-    @type node: string
-    @param node: node name
-    @rtype: (bool, bool, bool)
-    @return: (master_candidate, drained, offline) (or None if no such node)
-
-    """
-    if node not in self._config_data["nodes"]:
-      return None
-
-    master_candidate = self._config_data["nodes"][node]["master_candidate"]
-    drained = self._config_data["nodes"][node]["drained"]
-    offline = self._config_data["nodes"][node]["offline"]
-    return master_candidate, drained, offline
-
-  def GetInstanceByLinkIp(self, ip, link):
-    """Get instance name from its link and ip address.
-
-    @type ip: string
-    @param ip: ip address
-    @type link: string
-    @param link: nic link
-    @rtype: string
-    @return: instance name
-
-    """
-    if not link:
-      link = self.GetDefaultNicLink()
-    if not link in self._ip_to_inst_by_link:
-      return None
-    if not ip in self._ip_to_inst_by_link[link]:
-      return None
-    return self._ip_to_inst_by_link[link][ip]
-
-  def GetNodePrimaryIp(self, node):
-    """Get a node's primary ip
-
-    @type node: string
-    @param node: node name
-    @rtype: string, or None
-    @return: node's primary ip, or None if no such node
-
-    """
-    if node not in self._config_data["nodes"]:
-      return None
-    return self._config_data["nodes"][node]["primary_ip"]
-
-  def GetInstancePrimaryNode(self, instance):
-    """Get an instance's primary node
-
-    @type instance: string
-    @param instance: instance name
-    @rtype: string, or None
-    @return: primary node, or None if no such instance
-
-    """
-    if instance not in self._config_data["instances"]:
-      return None
-    return self._config_data["instances"][instance]["primary_node"]
-
-  def GetNodesPrimaryIps(self):
-    return self._nodes_primary_ips
-
-  def GetMasterCandidatesPrimaryIps(self):
-    return self._mc_primary_ips
-
-  def GetInstancesIps(self, link):
-    """Get list of nic ips connected to a certain link.
-
-    @type link: string
-    @param link: nic link
-    @rtype: list
-    @return: list of ips connected to that link
-
-    """
-    if not link:
-      link = self.GetDefaultNicLink()
-
-    if link in self._inst_ips_by_link:
-      return self._inst_ips_by_link[link]
-    else:
-      return []
-
-
 class SimpleStore(object):
   """Interface to static cluster data.