'Initializes the config manager.
This method is used to add more config options to the manager. The config
can be given as one of the parameters as described in the Args section.
Args:
filename: The name of the configuration file to use.
data: The configuration given directly as a long string of data.
fd: A file descriptor of a configuration file.
reset: If true, the previous configuration will be erased.
must_exist: If true the data source must exist and be a valid
configuration file, or we raise an exception.
parser: The parser class to use (i.e. the format of the file). If not
specified guess from the filename.
Raises:
RuntimeError: No configuration was passed in any of the parameters.
ConfigFormatError: Raised when the configuration file is invalid or does
not exist..'

def Initialize(self, filename=None, data=None, fd=None, reset=True, must_exist=False, parser=ConfigFileParser):

    self.FlushCache()
    if reset:
        self.raw_data = OrderedYamlDict()
        self.writeback_data = OrderedYamlDict()
        self.writeback = None
        self.initialized = False
    if (fd is not None):
        self.parser = self.LoadSecondaryConfig(parser=parser(fd=fd))
    elif (filename is not None):
        self.parser = self.LoadSecondaryConfig(filename)
        if (must_exist and (not self.parser.parsed)):
            raise ConfigFormatError(('Unable    to    parse    config    file    %s' % filename))
    elif (data is not None):
        self.parser = self.LoadSecondaryConfig(parser=parser(data=data))
    elif must_exist:
        raise RuntimeError('Registry    path    not    provided.')
    self.initialized = True
