docs: def add_node_connection(self, link, nodes):
          """
          Add a connection to a node
  
          :param dict link: link definition
          :param list nodes: list of nodes from :py:meth:`generate_nodes`
          """
          # Description
          src_desc = 'connected to %s on port %s' % \
                     (self.get_node_name_from_id(link['destination_node_id'],
                                                 nodes),
                      self.get_port_name_from_id(link['destination_node_id'],
                                                 link['destination_port_id'],
                                                 nodes))
          dest_desc = 'connected to %s on port %s' % \
                      (self.get_node_name_from_id(link['source_node_id'],
                                                  nodes),
                       self.get_port_name_from_id(link['source_node_id'],
                                                  link['source_port_id'],
                                                  nodes))
          # Add source connections
          for node in nodes:
              if node['id'] == link['source_node_id']:
                  for port in node['ports']:
                      if port['id'] == link['source_port_id']:
                          port['link_id'] = link['id']
                          port['description'] = src_desc
                          break
              elif node['id'] == link['destination_node_id']:
                  for port in node['ports']:
                      if port['id'] == link['destination_port_id']:
                          port['link_id'] = link['id']
                          port['description'] = dest_desc
                          break