'Read the configuration file and load each tool.  The following tags are currently supported:
.. raw:: xml
<toolbox>
<tool file="data_source/upload.xml"/>                 # tools outside sections
<label text="Basic Tools" id="basic_tools" />         # labels outside sections
<workflow id="529fd61ab1c6cc36" />                    # workflows outside sections
<section name="Get Data" id="getext">                 # sections
<tool file="data_source/biomart.xml" />           # tools inside sections
<label text="In Section" id="in_section" />       # labels inside sections
<workflow id="adb5f5c93f827949" />                # workflows inside sections
<tool file="data_source/foo.xml" labels="beta" /> # label for a single tool
</section>
</toolbox>'

def _init_tools_from_config(self, config_filename):

    log.info(('Parsing    the    tool    configuration    %s' % config_filename))
    tool_conf_source = get_toolbox_parser(config_filename)
    tool_path = tool_conf_source.parse_tool_path()
    parsing_shed_tool_conf = tool_conf_source.is_shed_tool_conf()
    if parsing_shed_tool_conf:
        config_elems = []
    tool_path = self.__resolve_tool_path(tool_path, config_filename)
    load_panel_dict = (not self._integrated_tool_panel_config_has_contents)
    for item in tool_conf_source.parse_items():
        index = self._index
        self._index += 1
        if parsing_shed_tool_conf:
            config_elems.append(item.elem)
        self.load_item(item, tool_path=tool_path, load_panel_dict=load_panel_dict, guid=item.get('guid'), index=index, internal=True)
    if parsing_shed_tool_conf:
        shed_tool_conf_dict = dict(config_filename=config_filename, tool_path=tool_path, config_elems=config_elems)
        self._dynamic_tool_confs.append(shed_tool_conf_dict)
