Parse the haproxy config file

        Raises:
            Exception: when there are unsupported section

        Returns:
            config.Configuration: haproxy config object

def build_configuration(self):
        """Parse the haproxy config file

        Raises:
            Exception: when there are unsupported section

        Returns:
            config.Configuration: haproxy config object
        """
        configuration = config.Configuration()
        pegtree = pegnode.parse(self.filestring)
        for section_node in pegtree:
            if isinstance(section_node, pegnode.GlobalSection):
                configuration.globall = self.build_global(section_node)
            elif isinstance(section_node, pegnode.FrontendSection):
                configuration.frontends.append(
                    self.build_frontend(section_node))
            elif isinstance(section_node, pegnode.DefaultsSection):
                configuration.defaults.append(
                    self.build_defaults(section_node))
            elif isinstance(section_node, pegnode.ListenSection):
                configuration.listens.append(
                    self.build_listen(section_node))
            elif isinstance(section_node, pegnode.UserlistSection):
                configuration.userlists.append(
                    self.build_userlist(section_node))
            elif isinstance(section_node, pegnode.BackendSection):
                configuration.backends.append(
                    self.build_backend(section_node))

        return configuration