'Gets called by the KB when one of the plugins writes something to it.
We\'ve subscribed using kb.kb.add_observer()
:return: None, the information we\'ll show to the user is stored in an
internal variable.'

def append(self, location_a, location_b, info_inst, ignore_type=False):

    if (not isinstance(info_inst, Info)):
        return
    obj_name = info_inst.get_name()
    obj_severity = info_inst.get_severity()
    obj_type = TYPES_OBJ.get(type(info_inst))
    color_tuple = (obj_type, obj_severity)
    color_level = helpers.KB_COLOR_LEVEL.get(color_tuple, 0)
    idinstance = info_inst.get_uniq_id()
    vuln_id = info_inst.get_id()
    InfoData = namedtuple('InfoData', 'location_a    location_b    obj_name    obj_type    color_level    idinstance    severity    vuln_id')
    data = InfoData(location_a, location_b, obj_name, obj_type, color_level, idinstance, obj_severity, vuln_id)
    self.kb_tree.pending_insert.put(data)
