From 869b4302910be4a2972cb625c50cfaf08e1464bf Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Sun, 25 Jul 2021 18:26:00 +0200
Subject: [PATCH] update project

---
 CHANGELOG                              |  55 +++
 agent_based/inv_cisco_bug.py           |   4 +-
 agent_based/inv_cisco_psirt.py         |  15 +-
 agent_based/utils/ciscoapi.py          |   2 +-
 inv_cisco_support.mkp                  | Bin 31953 -> 29638 bytes
 packages/inv_cisco_support             |  10 +-
 web/htdocs/css/inv_cisco_support.css   |  25 +
 web/plugins/views/inv_cisco_support.py | 648 ++++++++-----------------
 web/plugins/wato/inv_cisco_bug.py      |  27 +-
 web/plugins/wato/inv_cisco_contract.py |   5 +-
 web/plugins/wato/inv_cisco_eox.py      |   4 +-
 web/plugins/wato/inv_cisco_psirt.py    |   4 +-
 12 files changed, 314 insertions(+), 485 deletions(-)
 create mode 100644 CHANGELOG
 create mode 100644 web/htdocs/css/inv_cisco_support.css

diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..9868eef
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,55 @@
+EoX
+2017-03-20: initial version EoX
+2017-05-29: fixed empty pid handling
+            added serial number cleanup
+2018-04-09: removed import
+2018-09-04: changes for CMK 1.5.x (inv_tree --> inv_tree_list)
+2018-09-05: changes for CMK 1.5.x (replaced global variable g_hostname with api call host_name())
+2018-08-13: changed variable host_name to _hostname for cmk 1.5
+2020-08-04: code cleanup (_create_eox_record function)
+            moved node tree from hardware.system.support to hardware.system
+2021-07-23: rewrite for CMK 2.0
+
+
+Contract
+2017-03-20: initial version EoX
+2017-05-29: fixed empty pid handling
+            added serial number cleanup
+2018-04-09: removed import
+2018-09-04: changes for CMK 1.5.x (inv_tree --> inv_tree_list)
+2018-09-05: changes for CMK 1.5.x (replaced global variable g_hostname with api call host_name())
+2019-08-13: chaged variable host_anme to _hostname for cmk1.5
+2020-08-04: moved node tree from hardware.system.support to hardware.system
+            cleanup create_sn2info_record
+
+
+PSIRT
+2017-07-05: initial release
+2018-04-09: removed import
+2018-09-04: changes for CMK 1.5.x (inv_tree --> inv_tree_list)
+2018-09-05: changes for CMK 1.5.x (replaced global variable g_hostname with api call host_name())
+2018-01-06: minor changes, added status info for removed advisories (not updated, older than, ...)
+2019-08-13: changed for cmk 1.5
+            #node = inv_tree_list('software.support.cisco_psirt.')
+            node = inv_tree('software.support.cisco_psirt.')
+            changed variable host_name to _hostname for cmk 1.5
+
+
+Suggestion
+2017-07-13: initial release
+2018-04-09 : removed import
+2018-09-04 : changes for CMK 1.5.x (inv_tree --> inv_tree_list)
+2018-09-05 : changes for CMK 1.5.x (replaced global variable g_hostname with api call host_name())
+2019-08-13 : changes for cmk 1.5.x varianle host_name changed to _hotname
+
+
+Bug
+2018-12-26: initial release
+2019-08-03: changes for cmk 1.5:  inv_tree_list to inv_tree, comment out split for cmk 1.5
+                   #bug['known_fixed_releases'] = bug['known_fixed_releases'].split(' ')
+                   #bug['known_affected_releases'] = bug['known_affected_releases'].split(' ')
+
+
+All
+2021-07-23: rewritten for CMK 2.0
+2021-07-25: removed sugestion and api_status plugins
\ No newline at end of file
diff --git a/agent_based/inv_cisco_bug.py b/agent_based/inv_cisco_bug.py
index 7182d59..1119282 100644
--- a/agent_based/inv_cisco_bug.py
+++ b/agent_based/inv_cisco_bug.py
@@ -221,8 +221,8 @@ def inventory_cisco_bug(params, section) -> InventoryResult:
             for bug in bugs:
                 if bug.get('bug_id') not in bug_ids:
                     bug_ids.append(bug.get('bug_id'))
-                    #bug['known_fixed_releases'] = bug['known_fixed_releases'].split(' ')
-                    #bug['known_affected_releases'] = bug['known_affected_releases'].split(' ')
+                    bug['known_fixed_releases'] = ', '.join(bug['known_fixed_releases'].split(' '))
+                    bug['known_affected_releases'] = ', '.join(bug['known_affected_releases'].split(' '))
                     bug['status'] = get_bug_status(bug['status'])
                     bug['behavior_changed'] = get_bug_behavior_changed(bug['behavior_changed'])
                     logging.info('remove columns: %s' % optionalcolumns)
diff --git a/agent_based/inv_cisco_psirt.py b/agent_based/inv_cisco_psirt.py
index ea74331..f337914 100644
--- a/agent_based/inv_cisco_psirt.py
+++ b/agent_based/inv_cisco_psirt.py
@@ -62,7 +62,7 @@ def parse_inv_cisco_psirt(string_table: List[StringTable]):
 
 
 def inventory_cisco_psirt(params, section) -> InventoryResult:
-    def create_psirt_record(filepath, filename, not_updated, dont_show_older_then):
+    def create_psirt_record(filepath, filename, not_updated, dont_show_older_then, optionalcolumns):
         psirtfile = filepath + filename
         advisories = {}
         if os.path.isfile(psirtfile):
@@ -80,14 +80,21 @@ def inventory_cisco_psirt(params, section) -> InventoryResult:
                     advisory.update({'installed_version': filename})
                     advisory.update({'lastUpdated': advisory.get('lastUpdated', 'T1980-01-01').split('T')[0]})
                     advisory.update({'firstPublished': advisory.get('firstPublished', 'T1980-01-01').split('T')[0]})
-                    advisory.update({'bugIDs': ' '.join(advisory.get('bugIDs', ''))})
+                    advisory.update({'bugIDs': ', '.join(advisory.get('bugIDs', ''))})
                     advisory.update({'firstFixed': ', '.join(advisory.get('firstFixed', ''))})
                     advisory.update({'cves': ', '.join(advisory.get('cves', ''))})
                     advisory.update({'cwe': ', '.join(advisory.get('cwe', ''))})
+
+                    keys = advisory.keys()
+                    for column in optionalcolumns:
+                        if column in keys:
+                            advisory.pop(column)
                 else:
                     # add old advisories to remove list
                     remove_advisories.insert(0, advisories.index(advisory))
 
+
+
             # remove advisories older then not_updated
             # if len(remove_advisories) > 0:
             #    node['removed_advisories'] = len(remove_advisories)
@@ -253,9 +260,9 @@ def inventory_cisco_psirt(params, section) -> InventoryResult:
 
         # create psirt advisory list
         if product_family in ['IOS', 'IOS-XE']:  # do not remove entrys from IOS(XE)
-            advisories = create_psirt_record(path_found, psirt, 10000000, '2000-01-01')
+            advisories = create_psirt_record(path_found, psirt, 10000000, '2000-01-01', optionalcolumns)
         else:
-            advisories = create_psirt_record(path_found, psirt, not_updated, dont_show_older_then)
+            advisories = create_psirt_record(path_found, psirt, not_updated, dont_show_older_then, optionalcolumns)
             if dont_show_older_then != '0000-00-00':
                 yield Attributes(
                     path=path,
diff --git a/agent_based/utils/ciscoapi.py b/agent_based/utils/ciscoapi.py
index 86f322c..4ae674c 100644
--- a/agent_based/utils/ciscoapi.py
+++ b/agent_based/utils/ciscoapi.py
@@ -24,7 +24,7 @@ from typing import List
 # list of PIDs to drop
 g_PID_black_list = ['BUILT-IN', 'MICRON', 'C400-MTFDD']
 # list of PIDs to try by serial number
-g_PID_bad_list = ['UNSPECIFIED', 'FABRIC', 'ASA', 'C2611XM-2FE', 'FTLX8570D3BCL', 'FTLF8519P2BCL', 'FTLX8571D3BCL', 'FTRJ-8519-7D', 'PLRXPL-SC-S43']
+g_PID_bad_list = ['UNSPECIFIED', 'FABRIC', 'ASA', 'C2611XM-2FE', 'FTLX8570D3BCL', 'FTLF8519P2BCL', 'FTLX8571D3BCL', 'FTRJ-8519-7D', 'PLRXPL-SC-S43']  #
 # list of S/Ns to drop
 g_SN_black_list = []
 
diff --git a/inv_cisco_support.mkp b/inv_cisco_support.mkp
index a35d91cf9c8c5856fa3fb242f70e1ef3309153fa..98beed0b82237bae5dcfe94088455d38b073dd97 100644
GIT binary patch
literal 29638
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

literal 31953
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
aiabNtdE);)&bt+W;4un+)Il7<LH-M)vB}i{

diff --git a/packages/inv_cisco_support b/packages/inv_cisco_support
index 5721f1f..d374c2a 100644
--- a/packages/inv_cisco_support
+++ b/packages/inv_cisco_support
@@ -12,7 +12,8 @@
                 'detection in PSIRT (WLC, Nexus, APIC, ASA, ...)\n'
                 'v.0.0.11: fixes for CMK 1.5.x\n'
                 '\n'
-                'v0.1: rewrite for CMK 2.0\n',
+                'v0.1: rewrite for CMK 2.0\n'
+                '          - suggestion and api_status removed\n',
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['inv_cisco_eox.py',
                            'inv_cisco_contract.py',
@@ -29,12 +30,13 @@
                    'plugins/wato/inv_cisco_bug.py',
                    'plugins/wato/inv_cisco_eox.py',
                    'plugins/wato/inv_cisco_contract.py',
-                   'plugins/wato/inv_cisco_psirt.py']},
+                   'plugins/wato/inv_cisco_psirt.py',
+                   'htdocs/css/inv_cisco_support.css']},
  'name': 'inv_cisco_support',
- 'num_files': 16,
+ 'num_files': 17,
  'title': 'Inventory for Cisco Bug, EoX, contract status, PSIRT advisories and '
           'suggested software',
- 'version': '2021-07-23.v0.1',
+ 'version': '2021-07-25.v0.1a',
  'version.min_required': '2.0.0',
  'version.packaged': '2021.07.14',
  'version.usable_until': None}
\ No newline at end of file
diff --git a/web/htdocs/css/inv_cisco_support.css b/web/htdocs/css/inv_cisco_support.css
new file mode 100644
index 0000000..5d463b0
--- /dev/null
+++ b/web/htdocs/css/inv_cisco_support.css
@@ -0,0 +1,25 @@
+/* for cisco_support */
+td.date_default {
+    background-color: #00c020 !important; /* green */
+    box-shadow: 0px 0px 3px #ccffcc inset;
+    color: #000000 !important;
+}
+
+td.date_warn {
+    background-color: #ffff00 !important; /* yellow */
+    box-shadow: 0px 0px 2px #000 inset;
+    color: #000000 !important;
+}
+
+td.date_crit {
+    background-color: #ff0000 !important; /* red */
+    box-shadow: 0px 0px 2px #000 inset;
+
+}
+
+
+a.href_blue {
+   color: limegreen !important;
+   text-decoration: underline !important;
+}
+
diff --git a/web/plugins/views/inv_cisco_support.py b/web/plugins/views/inv_cisco_support.py
index 7f3b889..01cfe89 100644
--- a/web/plugins/views/inv_cisco_support.py
+++ b/web/plugins/views/inv_cisco_support.py
@@ -12,441 +12,168 @@
 # 2021-07-23: rewrite for CMK 2.0
 #             suggestion removed --> table to complicated :-(
 #
-#
-# ToDo: add render_inv_bugids, needed to add html link to bug IDs, paint does not work (like suggestion)
-#       (https://bst.cloudapps.cisco.com/bugsearch/bug/CSCuh91645)
-#
+# 2021-07-25: removed inv_cisco_suggestion
+#             rework painter section
 
-# import random  # needed for quickinfo tables
 import time
 
 from cmk.gui.plugins.views.inventory import (
     declare_invtable_view,
     decorate_inv_paint,
 )
-from cmk.gui.plugins.visuals.inventory import (
-    FilterInvtableText,
-)
+
 from cmk.gui.i18n import _
 
 from cmk.gui.plugins.views import (
     inventory_displayhints,
 )
-
-
-
+from cmk.gui.htmllib import HTML
 
 #
 # ToDo: move painters to local tree
 # painters are at the moment hard coded in lib/python/cmk/gui/plugins/views/inventory.py
 #
-
-# from cmk.gui.plugins.views.inventory import (
-#     declare_invtable_view,
-#     decorate_inv_paint,
-# )
-#
-# import time
-#
-# from cmk.utils.regex import regex
-# import cmk.utils.defines as defines
-# import cmk.utils.render
-#
-# import cmk.gui.pages
-# import cmk.gui.config as config
-# import cmk.gui.sites as sites
-# import cmk.gui.inventory as inventory
-# from cmk.gui.i18n import _
-# from cmk.gui.globals import html, current_app
-# from cmk.gui.htmllib import HTML
-# from cmk.gui.valuespec import Dictionary, Checkbox, Hostname
-# from cmk.gui.exceptions import MKUserError
-#
-# from cmk.gui.plugins.visuals import (
-#     filter_registry,
-#     VisualInfo,
-#     visual_info_registry,
-# )
-# from cmk.gui.plugins.visuals.inventory import (
-#     FilterInvText,
-#     FilterInvBool,
-#     FilterInvFloat,
-#     FilterInvtableText,
-#     FilterInvtableIDRange,
-# )
-#
-# from cmk.gui.plugins.views import (
-#     data_source_registry,
-#     DataSource,
-#     RowTable,
-#     painter_registry,
-#     Painter,
-#     register_painter,
-#     register_sorter,
-#     display_options,
-#     painter_option_registry,
-#     PainterOption,
-#     PainterOptions,
-#     inventory_displayhints,
-#     multisite_builtin_views,
-#     view_is_enabled,
-#     paint_age,
-#     declare_1to1_sorter,
-#     cmp_simple_number,
-#     render_labels,
-# )
-
-# @decorate_inv_paint
-# def inv_paint_date_status(date_string):
-#
-#     warn_days = -90
-#     crit_days = -30
-#
-#     #  check if date_sting not None, if so return no CSS Class and None
-#     if date_string is None:
-#         return '', ''
-#
-#     try:
-#         days = int((time.time() - time.mktime(time.strptime(date_string, '%Y-%m-%d'))) / 86400)
-#     except ValueError:
-#         return '', date_string
-#
-#     if days > crit_days:
-#         css_class = 'date_crit'
-#     elif days > warn_days:
-#         css_class = 'date_warn'
-#     else:
-#         css_class = 'date_default'
-#
-#     return css_class, '%s' % date_string
-
-
-# @decorate_inv_paint
-# def inv_paint_last_checked_status(date_string):
-#     warn_days = 32
-#     crit_days = 40
-#     if date_string is None:
-#         return '', ''
-#     try:
-#         days = int((time.time() - time.mktime(time.strptime(date_string, '%Y-%m-%d'))) / 86400)
-#     except ValueError:
-#         return '', date_string
-#     if days <= warn_days:
-#         css_class = ''
-#     elif days >= crit_days:
-#         css_class = 'date_crit'
-#     else:
-#         css_class = 'date_warn'
-#     return css_class, ' %s' % date_string
-
-
-# @decorate_inv_paint
-# def inv_paint_psirt_advisoryId(advisoryId):
-#     psirt_url = '<a class="href_blue" target="_blank" href="https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/%s">%s</a>' % (advisoryId, advisoryId)
-#     return '', psirt_url
-
-
-# @decorate_inv_paint
-# def inv_paint_eox_eolid(eolid):
-#     if eolid is not None:
-#         search_eolid_url = '<a class="href_blue" target="_blank" href="https://search.cisco.com/search?query=%s">%s</a>' % (eolid, eolid)
-#     else:
-#         search_eolid_url = ''
-#     return '', search_eolid_url
-
-
-# @decorate_inv_paint
-# def inv_paint_bug_bugid(bugid):
-#     if bugid is not None:
-#         search_bugid_url = '<a class="href_blue" target="_blank" href="https://bst.cloudapps.cisco.com/bugsearch/bug/%s">%s</a>' % (bugid, bugid)
-#     else:
-#         search_bugid_url = ''
-#     return '', search_bugid_url
-
-
-# def render_inv_dicttable_suggestion_noqf(hostname, tree_id, invpath, node):
-#     # In delta mode node is a pair of (old_items, new_items)
-#     if type(node) == tuple:
-#         html.write(_("Removed entries") + ":")
-#         html.write("<span class=invold>")
-#         render_inv_dicttable_suggestion_noqf(hostname, tree_id, invpath, node[0])
-#         html.write("</span>")
-#
-#         html.write(_("New entries") + ":")
-#         html.write("<span class=invnew>")
-#         render_inv_dicttable_suggestion_noqf(hostname, tree_id, invpath, node[1])
-#         html.write("</span>")
-#         return
-#
-#     hint = inv_display_hint(invpath)
-#     keyorder = hint.get("keyorder", []) # well known keys
-#
-#     # Add titles for those keys
-#     titles = []
-#     for key in keyorder:
-#         invpath_sub = invpath + "0." + key
-#         icon, title = inv_titleinfo(invpath_sub, None)
-#         sub_hint = inv_display_hint(invpath_sub)
-#         short_title = sub_hint.get("short", title)
-#         titles.append((short_title, key))
-#
-#     # Determine *all* keys, in order to find unknown ones
-#     keys = set([])
-#     for entry in node:
-#         keys.update(entry.keys())
-#
-#     # Order not well-known keys alphabetically
-#     extratitles = []
-#     for key in keys:
-#         if key not in keyorder:
-#             icon, title = inv_titleinfo(invpath + "0." + key, None)
-#             extratitles.append((title, key))
-#     extratitles.sort()
-#     titles += extratitles
-#
-#     # Link to Multisite view with exactly this table
-#     if "view" in hint:
-#         url = html.makeuri_contextless([
-#             ("view_name", hint["view"] ),
-#             ("host", hostname)],
-#             filename="view.py")
-#         html.write('<div class=invtablelink><a href="%s">%s</a></div>' %
-#             (url, _("Open this table for filtering / sorting")))
-#
-#     # We cannot use table here, since html.plug() does not work recursively
-#     html.write('<table class=data>')
-#     html.write('<tr>')
-#     for title, key in titles:
-#         html.write('<th>%s</th>' % title)
-#     html.write('</tr>')
-#
-#     for nr, entry in enumerate(node):
-#         html.write('<tr class=even0>')
-#         for title, key in titles:
-#             value = entry.get(key)
-#             invpath_sub = invpath + "%d.%s" % (nr, key)
-#             if type(value) == dict:
-#                 invpath_sub += "."
-#             elif type(value) == list or (type(value) == tuple and type(value[0]) == list):
-#                 invpath_sub += ":"
-#
-#             hint = inv_display_hint(invpath_sub)
-#             if "paint_function" in hint:
-#                 td_class, text = hint["paint_function"](value)
-#                 classtext = ' class="%s"' % td_class
-#             else:
-#                 classtext = ""
-#
-#             html.write('<td%s>' % classtext)
-# #            render_inv_subtree(hostname, tree_id, invpath_sub, value)
-#             # render suggestions as not foldable
-#             if key == 'suggestion' and type(value) == list:
-#                 render_inv_subtree_container(hostname, tree_id, invpath_sub, value)
-#             else:
-#                 render_inv_subtree(hostname, tree_id, invpath_sub, value)
-#             html.write('</td>')
-#         html.write('</tr>')
-#     html.write('</table>')
-#
-#
-# def render_inv_dicttable_suggestion(hostname, tree_id, invpath, node):
-#     # In delta mode node is a pair of (old_items, new_items)
-#     if type(node) == tuple:
-#         html.write(_("Removed entries") + ":")
-#         html.write("<span class=invold>")
-#         render_inv_dicttable_suggestion(hostname, tree_id, invpath, node[0])
-#         html.write("</span>")
-#
-#         html.write(_("New entries") + ":")
-#         html.write("<span class=invnew>")
-#         render_inv_dicttable_suggestion(hostname, tree_id, invpath, node[1])
-#         html.write("</span>")
-#         return
-#
-#     hint = inv_display_hint(invpath)
-#     keyorder = hint.get("keyorder", []) # well known keys
-#
-#     # Add titles for those keys
-#     titles = []
-#     for key in keyorder:
-#         invpath_sub = invpath + "0." + key
-#         icon, title = inv_titleinfo(invpath_sub, None)
-#         sub_hint = inv_display_hint(invpath_sub)
-#         short_title = sub_hint.get("short", title)
-#         titles.append((short_title, key))
-#
-#     # Determine *all* keys, in order to find unknown ones
-#     keys = set([])
-#     for entry in node:
-#         keys.update(entry.keys())
-#
-#     # Order not well-known keys alphabetically
-#     extratitles = []
-#     for key in keys:
-#         if key not in keyorder:
-#             icon, title = inv_titleinfo(invpath + "0." + key, None)
-#             extratitles.append((title, key))
-#     extratitles.sort()
-#     titles += extratitles
+# to enable painters you must add the painter functions to ~/lib/python/cmk/gui/plugins/views/inventory.py
+# and set ENABLE_PAINTERS to True
 #
-#     # Link to Multisite view with exactly this table
-#     if "view" in hint:
-#         url = html.makeuri_contextless([
-#             ("view_name", hint["view"] ),
-#             ("host", hostname)],
-#             filename="view.py")
-#         html.write('<div class=invtablelink><a href="%s">%s</a></div>' %
-#             (url, _("Open this table for filtering / sorting")))
-#
-#     #
-#     # Th.L.: insert jscript for quickfilter
-#     #
-#     qfurl = html.makeuri([],filename="TableFilter/tablefilter.js", delvars=["host","selection","site","view_name"])
-#     html.write('<script language="javascript" type="text/javascript" src="%s"></script>' % qfurl)
-#
-#     # Th.L.: create random table id
-#     qf_table_id = "qf_id_" + "".join(random.SystemRandom().choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') for _ in range(10))
-#
-#     # We cannot use table here, since html.plug() does not work recursively
-#     #    html.write('<table class=data>')
-#     html.write('<table id=%s class=data>' % qf_table_id)
-#     # html.write('<tr>')
-#     html.write('<thead><tr>')  # Th.L.:  added thead for quickfilter (sort)
-#     for title, key in titles:
-#         html.write('<th>%s</th>' % title)
-#     #html.write('</tr>')
-#     html.write('</tr></thead><tbody>')  # Th.L.:  added thead and tbody for quickfilter (sort)
-#
-#     for nr, entry in enumerate(node):
-#         html.write('<tr class=even0>')
-#         for title, key in titles:
-#             value = entry.get(key)
-#             invpath_sub = invpath + "%d.%s" % (nr, key)
-#             if type(value) == dict:
-#                 invpath_sub += "."
-#             elif type(value) == list or (type(value) == tuple and type(value[0]) == list):
-#                 invpath_sub += ":"
-#
-#             hint = inv_display_hint(invpath_sub)
-#             if "paint_function" in hint:
-#                 td_class, text = hint["paint_function"](value)
-#                 classtext = ' class="%s"' % td_class
-#             else:
-#                 classtext = ""
+
+ENABLE_PAINTERS = False
+
+# #################################################################################
 #
-#             html.write('<td%s>' % classtext)
-# #            render_inv_subtree(hostname, tree_id, invpath_sub, value)
-#             # render suggestions as not foldable
-#             if key == 'suggestion' and type(value) == list:
-#                 render_inv_subtree_container(hostname, tree_id, invpath_sub, value)
-#             else:
-#                 render_inv_subtree(hostname, tree_id, invpath_sub, value)
-#             html.write('</td>')
-#         html.write('</tr>')
-#     #html.write('</table>')
-#     html.write('</tbody></table>')  # Th.L.:  added tbody for quickfilter (sort)
+# Painter functions START
 #
-#     #
-#     # Th.L.: add jscript for quickfilter
-#     #
-#     html.write('<script data-config>\n')
-#     html.write('    var filtersConfig = {\n')
-#     html.write('        base_path: "TableFilter/",\n')
-#     html.write('        alternate_rows: true,\n')
-#     html.write('        rows_counter: true,\n')
-#     html.write('        btn_reset: true,\n')
-#     html.write('        bnt_reset_text: "Clear all",\n')
-#     html.write('        loader: true,\n')
-#     html.write('        status_bar: true,\n')
-#     html.write('        status_bar_text : "status:",\n')
-#     html.write('        loader : true,\n')
-#     html.write('        mark_active_columns: true,\n')
-#     html.write('        highlight_keywords: true,\n')
-#     html.write('        auto_filter: true,\n')
-#     html.write('        auto_filter_delay: 100,\n')
-#     html.write('        paging: true,\n')
-#     html.write('        mark_active_columns: true,\n')
-#     html.write('        results_per_page: [" Results per page",[10,25,50,100,250,500,1000]],\n')
-#     html.write('        no_results_message: true,\n')
-#     html.write('        extensions:[{ name: "sort"},\n')
-#     html.write('                    { name: "colsVisibility",\n')
-#     html.write('                      tick_to_hide: false,\n')
-#     html.write('                      at_start: [11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],\n')
-#     html.write('                      text: "Displayed columns: ",\n')
-#     html.write('                      enable_tick_all: true,\n')
-#     html.write('                      btn_html: "<button>Columns manager &#9660;</button>",\n')
-#     html.write('                      btn_close_html: "<button>Close</button>",\n')
-#     html.write('                      enable_hover: false,\n')
-#     html.write('                    },\n')
-# #    html.write('                    {name: "filtersVisibility"}
-#     html.write('                   ]\n')
-#     html.write('    };\n')
-#     html.write('\n')
-#     html.write('    var tf = new TableFilter("%s", filtersConfig);\n'  % qf_table_id)
-#     html.write('    tf.init();\n')
-#     html.write('\n')
-#     html.write('</script>\n')
-
-
-# def inv_paint_bug_status(bug_status):
-#     _bug_status = {
-#         'F': 'Fixed',
-#         'O': 'Open',
-#         'T': 'Terminated'
-#     }
-#     return '', _bug_status.get(bug_status, bug_status)
+
+
+@decorate_inv_paint()
+def inv_paint_date_status(date_string):
+
+    warn_days = -90
+    crit_days = -30
+
+    #  check if date_sting not None, if so return no CSS Class and None
+    if date_string is None:
+        return '', ''
+
+    try:
+        days = int((time.time() - time.mktime(time.strptime(date_string, '%Y-%m-%d'))) / 86400)
+    except ValueError:
+        return '', date_string
+
+    if days > crit_days:
+        css_class = 'date_crit'
+    elif days > warn_days:
+        css_class = 'date_warn'
+    else:
+        css_class = 'date_default'
+
+    return css_class, '%s' % date_string
+
+
+@decorate_inv_paint()
+def inv_paint_last_checked_status(date_string):
+    warn_days = 32
+    crit_days = 40
+    if date_string is None:
+        return '', ''
+    try:
+        days = int((time.time() - time.mktime(time.strptime(date_string, '%Y-%m-%d'))) / 86400)
+    except ValueError:
+        return '', date_string
+    if days <= warn_days:
+        css_class = ''
+    elif days >= crit_days:
+        css_class = 'date_crit'
+    else:
+        css_class = 'date_warn'
+    return css_class, ' %s' % date_string
+
+
+@decorate_inv_paint()
+def inv_paint_psirt_advisoryid(advisoryId):
+    psirt_url = HTML(
+        f'<a class="href_blue" target="_blank" '
+        f'href="https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/{advisoryId}">{advisoryId}</a>')
+    return '', psirt_url
+
+
+@decorate_inv_paint()
+def inv_paint_eox_eolid(eolid):
+    if eolid is not None:
+        search_eolid_url = HTML(
+            f'<a class="href_blue" target="_blank" '
+            f'href="https://search.cisco.com/search?query={eolid}%s">{eolid}</a>')
+    else:
+        search_eolid_url = ''
+    return '', search_eolid_url
+
+
+@decorate_inv_paint()
+def inv_paint_bug_bugid(bugid):
+    if bugid is not None:
+        search_bugid_url = HTML(
+            f'<a class="href_blue" target="_blank" '
+            f'href="https://bst.cloudapps.cisco.com/bugsearch/bug/{bugid}">{bugid}</a>')
+    else:
+        search_bugid_url = ''
+    return '', search_bugid_url
+
+
+@decorate_inv_paint()
+def inv_paint_psirt_bugid(bugids):
+    search_bugid_url = ''
+    bugids = bugids.split(',')
+    if bugids:
+        search_bugid_url = []
+        for bugid in bugids:
+            bugid = bugid.strip(' ')
+            search_bugid_url.append(f'<a class="href_blue" target="_blank" href="https://bst.cloudapps.cisco.com/bugsearch/bug/{bugid}">{bugid}</a>')
+        search_bugid_url = HTML(', '.join(search_bugid_url))
+    return '', search_bugid_url
+
 #
+# Painter functions END
 #
-# def inv_paint_bug_behavior_changed(behavior_changed):
-#     _behavior_changed = {
-#         'Y': 'yes',
-#         'N': 'no',
-#     }
-#     return '', _behavior_changed.get(behavior_changed, behavior_changed)
+# #################################################################################
+
 
 # EoX display hints
 inventory_displayhints.update({
-    '.hardware.support.cisco_eox:': {'title': _('Cisco EoX'),
-                                            'keyorder': ['pid', 'serial_number', 'ProductIDDescription', 'Last_checked',
-                                                         'EOXExternalAnnouncementDate', 'EndOfSaleDate',
-                                                         'LastDateOfSupport', 'EndOfSvcAttachDate', 'UpdatedTimeStamp',
-                                                         'ProductBulletinNumber',
-                                                         ],
-                                            'view': 'invciscoeox_of_host',
-                                            },
+    '.hardware.support.cisco_eox:': {
+        'title': _('Cisco EoX'),
+        'keyorder':
+            [
+                'pid', 'serial_number', 'ProductIDDescription', 'Last_checked', 'ProductBulletinNumber',
+                'EOXExternalAnnouncementDate', 'EndOfSaleDate', 'LastDateOfSupport', 'EndOfSvcAttachDate',
+                'UpdatedTimeStamp',
+            ],
+        'view': 'invciscoeox_of_host',
+    },
     '.hardware.support.cisco_eox:*.pid': {'title': _('PID (EoX)'), },
     '.hardware.support.cisco_eox:*.serial_number': {'title': _('Serial number'), },
     '.hardware.support.cisco_eox:*.ProductIDDescription': {'title': _('Description'), },
-    '.hardware.support.cisco_eox:*.EOXExternalAnnouncementDate': {'title': _('EOL Announcement'), 'filter': FilterInvtableText,},  # 'filter': FilterInvtableText, 'paint': 'date_status',
-    '.hardware.support.cisco_eox:*.EndOfSaleDate': {'title': _('End of sale'), },  # 'filter': FilterInvtableText, 'paint': 'date_status',
-    '.hardware.support.cisco_eox:*.EndOfSvcAttachDate': {'title': _('End of service attachment'), },  # 'filter': FilterInvtableText, 'paint': 'date_status',
-    '.hardware.support.cisco_eox:*.LastDateOfSupport': {'title': _('End of support'), },  # 'filter': FilterInvtableText, 'paint': 'date_status',
-    '.hardware.support.cisco_eox:*.ProductBulletinNumber': {'title': _('EOL bulletin ID'), }, # 'filter': FilterInvtableText, 'paint': 'eox_eolid',
     '.hardware.support.cisco_eox:*.LinkToProductBulletinURL': {'title': _('EOL bulletin URL'), },
     '.hardware.support.cisco_eox:*.UpdatedTimeStamp': {'title': _('EOL bulletin last update'), },
-    '.hardware.support.cisco_eox:*.EndOfSecurityVulSupportDate': {'title': _('End of service vulnerability support'), },  # 'filter': FilterInvtableText, 'paint': 'date_status',
-    '.hardware.support.cisco_eox:*.EndOfSWMaintenanceReleases': {'title': _('End of software maintenace releases'), },  # 'filter': FilterInvtableText, 'paint': 'date_status',
-    '.hardware.support.cisco_eox:*.EndOfRoutineFailureAnalysisDate': {'title': _('End of routine failure analysis'), },  # 'filter': FilterInvtableText, 'paint': 'date_status',
     '.hardware.support.cisco_eox:*.MigrationProductId': {'title': _('Migration PID'), },
     '.hardware.support.cisco_eox:*.MigrationInformation': {'title': _('Migration information'), },
     '.hardware.support.cisco_eox:*.MigrationProductInfoURL': {'title': _('Migration PID URL'), },
     '.hardware.support.cisco_eox:*.MigrationProductName': {'title': _('Migration product name'), },
-    '.hardware.support.cisco_eox:*.Last_checked': {'title': _('Last checked'), },  # 'filter': FilterInvtableText, 'paint': 'last_checked_status',
+    '.hardware.support.cisco_eox:*.Last_checked': {'title': _('Last checked'), 'paint': 'last_checked_status'},  #
 })
 
 # SN2Info (contract) display hints
 inventory_displayhints.update({
-    '.hardware.support.cisco_contract:': {'title': _('Cisco contract status'),
-                                                 'keyorder': ['pid', 'serial_number', 'ProductIDDescription',
-                                                              'Last_checked', 'is_covered', 'service_contract_number',
-                                                              'covered_product_line_end_date',
-                                                              ],
-                                                 'view': 'invciscocontract_of_host',
-                                                 },
+    '.hardware.support.cisco_contract:': {
+        'title': _('Cisco contract status'),
+        'keyorder': [
+            'pid', 'serial_number', 'ProductIDDescription', 'Last_checked', 'is_covered', 'service_contract_number',
+            'covered_product_line_end_date',
+        ],
+        'view': 'invciscocontract_of_host',
+    },
     '.hardware.support.cisco_contract:*.pid': {'title': _('PID (contract)'), },
     '.hardware.support.cisco_contract:*.serial_number': {'title': _('Serial number'), },
     '.hardware.support.cisco_contract:*.ProductIDDescription': {'title': _('Description'), },
-    '.hardware.support.cisco_contract:*.Last_checked': {'title': _('Last checked'), },  # 'filter': FilterInvtableText,'paint': 'last_checked_status',
     '.hardware.support.cisco_contract:*.is_covered': {'title': _('is covered'), },
     '.hardware.support.cisco_contract:*.contract_site_customer_name': {'title': _('Customer name'), },
     '.hardware.support.cisco_contract:*.contract_site_address1': {'title': _('Address'), },
@@ -455,7 +182,6 @@ inventory_displayhints.update({
     '.hardware.support.cisco_contract:*.contract_site_country': {'title': _('Country'), },
     '.hardware.support.cisco_contract:*.service_line_descr': {'title': _('Service description'), },
     '.hardware.support.cisco_contract:*.service_contract_number': {'title': _('Contract number'), },
-    '.hardware.support.cisco_contract:*.covered_product_line_end_date': {'title': _('Contract end date'), },  # 'filter': FilterInvtableText, 'paint': 'date_status',
     '.hardware.support.cisco_contract:*.parent_sr_no': {'title': _('Parent S/N'), },
     '.hardware.support.cisco_contract:*.warranty_type': {'title': _('Warranty type'), },
     '.hardware.support.cisco_contract:*.warranty_type_description': {'title': _('Warranty Description'), },
@@ -469,20 +195,22 @@ inventory_displayhints.update({
     '.software.support.cisco_bug.missing_records': {'title': _('Records missing'), },
     '.software.support.cisco_bug.PID': {'title': _('PID'), },
     '.software.support.cisco_bug.os_version': {'title': _('OS version'), },
-    '.software.support.cisco_bug.bugs:': {'title': _('Cisco BUG IDs'),
-                                                  'keyorder': ['bug_id',  'last_modified_date', 'headline', 'severity', 'status', 'support_case_count', 'behavior_changed', ],
-                                                  'view': 'invciscobugs_of_host',
-                                          },
-    '.software.support.cisco_bug.bugs:*.status': {'title': _('Status'), },  # 'filter': FilterInvtableText,
+    '.software.support.cisco_bug.bugs:': {
+        'title': _('Cisco BUG IDs'),
+        'keyorder': [
+            'bug_id', 'severity', 'status', 'last_modified_date', 'headline', 'support_case_count', 'behavior_changed',
+        ],
+        'view': 'invciscobugs_of_host',
+    },
+    '.software.support.cisco_bug.bugs:*.status': {'title': _('Status'), },
     '.software.support.cisco_bug.bugs:*.product': {'title': _('Product'), },
     '.software.support.cisco_bug.bugs:*.description': {'title': _('Description'), },
     '.software.support.cisco_bug.bugs:*.headline': {'title': _('Headline'), },
     '.software.support.cisco_bug.bugs:*.support_case_count': {'title': _('Support case count'), },
     '.software.support.cisco_bug.bugs:*.last_modified_date': {'title': _('Last modified date'), },
-    '.software.support.cisco_bug.bugs:*.behavior_changed': {'title': _('Behavior changed'),  }, # 'filter': FilterInvtableText,
-    '.software.support.cisco_bug.bugs:*.bug_id': {'title': _('Bug ID'),  },  # 'paint': 'bug_bugid',
+    '.software.support.cisco_bug.bugs:*.behavior_changed': {'title': _('Behavior changed'), },
     '.software.support.cisco_bug.bugs:*.base_pid': {'title': _('Base PID'), },
-    '.software.support.cisco_bug.bugs:*.known_fixed_releases': {'title': _('Known fixed releases'),  }, # 'filter': FilterInvtableText,
+    '.software.support.cisco_bug.bugs:*.known_fixed_releases': {'title': _('Known fixed releases'), },
     '.software.support.cisco_bug.bugs:*.id': {'title': _('ID'), },
     '.software.support.cisco_bug.bugs:*.known_affected_releases': {'title': _('known affected releases'), },
     '.software.support.cisco_bug.bugs:*.severity': {'title': _('Severity'), },
@@ -491,16 +219,17 @@ inventory_displayhints.update({
 # PSIRT display hints
 inventory_displayhints.update({
     '.software.support.cisco_psirt.dont_show_older_than': {'title': _('Don\'t show advisories not updated since'), },
-    '.software.support.cisco_psirt.dont_show_not_updated_since': {'title': _('Don\'t show advisories not updated for X days'), },
+    '.software.support.cisco_psirt.dont_show_not_updated_since': {
+        'title': _('Don\'t show advisories not updated for X days'), },
     '.software.support.cisco_psirt.removed_advisories': {'title': _('Advisories removed'), },
-    '.software.support.cisco_psirt.advisories:': {'title': _('Cisco PSIRT advisories'),
-                                                  'keyorder': ['advisoryId', 'sir', 'cvssBaseScore', 'advisoryTitle',
-                                                               ],
-                                                  'view': 'invciscopsirt_of_host',
-                                                  },
-    '.software.support.cisco_psirt.advisories:*.advisoryId': {'title': _('Advisory ID'),  },  # 'filter': FilterInvtableText, , 'paint': 'psirt_advisoryId',
+    '.software.support.cisco_psirt.advisories:': {
+        'title': _('Cisco PSIRT advisories'),
+        'keyorder': [
+            'advisoryId', 'sir', 'cvssBaseScore', 'advisoryTitle',
+        ],
+        'view': 'invciscopsirt_of_host',
+    },
     '.software.support.cisco_psirt.advisories:*.advisoryTitle': {'title': _('Advisory Title'), },
-    '.software.support.cisco_psirt.advisories:*.bugIDs': {'title': _('Bug IDs'), },  #  'filter': FilterInvtableText, , 'paint': 'psirt_bugid',
     '.software.support.cisco_psirt.advisories:*.cvssBaseScore': {'title': _('CVSS base Score'), },
     '.software.support.cisco_psirt.advisories:*.firstFixed': {'title': _('First fixed in'), },
     '.software.support.cisco_psirt.advisories:*.firstPublished': {'title': _('First Published'), },
@@ -510,51 +239,68 @@ inventory_displayhints.update({
     '.software.support.cisco_psirt.advisories:*.sir': {'title': _('Severity'), },
     '.software.support.cisco_psirt.advisories:*.summary': {'title': _('Summary'), },
     '.software.support.cisco_psirt.advisories:*.cwe': {'title': _('CWE'), },
-    '.software.support.cisco_psirt.advisories:*.cves': {'title': _('CVEs'),},
+    '.software.support.cisco_psirt.advisories:*.cves': {'title': _('CVEs'), },
     '.software.support.cisco_psirt.advisories:*.productNames': {'title': _('Product names'), },
-    '.software.support.cisco_psirt.advisories:*.ipsSignatures': {'title': _('IPS signatures'), },
-    '.software.support.cisco_psirt.advisories:*.cvrfUrl': {'title': _('CVRF URL'), },
-    '.software.support.cisco_psirt.advisories:*.ovalUrl': {'title': _('OVAL URL'), },
-    '.software.support.cisco_psirt.os_version': {'title': _('OS version'), },
-    '.software.support.cisco_psirt.Last_checked': {'title': _('Last checked'),  },  # 'filter': FilterInvtableText,, 'paint': 'last_checked_status',
-    '.software.support.cisco_psirt.not_updated_for_x_days': {'title': _('don\'t show advisories not updated for X days'), },
-    '.software.support.cisco_psirt.dont_show_older_then': {'title': _('don\'t show advisories not updated after'), },
+    '.software.support.cisco_psirt.advisories:*.ipsSignatures': {'title': _('IPS signatures')},
+    '.software.support.cisco_psirt.advisories:*.cvrfUrl': {'title': _('CVRF URL')},
+    '.software.support.cisco_psirt.advisories:*.ovalUrl': {'title': _('OVAL URL')},
+    '.software.support.cisco_psirt.os_version': {'title': _('OS version')},
+    '.software.support.cisco_psirt.not_updated_for_x_days': {'title': _('don\'t show advisories not updated for X days')},
+    '.software.support.cisco_psirt.dont_show_older_then': {'title': _('don\'t show advisories not updated after')},
 })
 
-# SUGGESTION display hints
-# inventory_displayhints.update({
-#     '.software.support.cisco_suggestion:': {'title': _('Cisco suggested software'),
-#                                             # 'render': render_inv_dicttable_suggestion,
-#                                             'keyorder': ['pid', 'ProductIDDescription', 'Last_checked',
-#                                                          ],
-#                                             'view'    : 'invciscosuggestion_of_host',
-#                                             },
-#     '.software.support.cisco_suggestion:*.pid': {'title': _('PID (suggestion)'), },
-#     '.software.support.cisco_suggestion:*.ProductIDDescription': {'title': _('Description'), },
-#     '.software.support.cisco_suggestion:*.Last_checked': {'title': _('Last checked'), 'filter': FilterInvtableText, 'paint': 'last_checked_status',},  #
-#     '.software.support.cisco_suggestion:*.suggestion': {'title': _('Suggestion(s)'), },
-#     # '.software.support.cisco_suggestion:*.suggestion:': {'render': render_inv_dicttable_suggestion_noqf, 'keyorder': ['productName', 'softwareType']},
-#     '.software.support.cisco_suggestion:*.suggestion:': {'keyorder': ['productName', 'softwareType']},
-#     '.software.support.cisco_suggestion:*.suggestion:*.productName': {'title': _('Product name'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.softwareType': {'title': _('Software type'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion': {'title': _('Suggestion(s)'), },
-#     # '.software.support.cisco_suggestion:*.suggestion:*.suggestion:': {'render': render_inv_dicttable_suggestion_noqf, 'keyorder': ['id', 'releaseFormat2', 'releaseDate']},
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:': {'keyorder': ['id', 'releaseFormat2', 'releaseDate']},
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.id': {'title': _('ID'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.releaseDate': {'title': _('Release date'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.releaseFormat2': {'title': _('Version'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.releaseLifeCycle': {'title': _('Life cycle'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.isSuggested': {'title': _('is suggested'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.majorRelease': {'title': _('major release'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.relDispName': {'title': _('release display name'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.releaseFormat1': {'title': _('release format1'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.releaseTrain': {'title': _('release train'), },
-#     '.software.support.cisco_suggestion:*.suggestion:*.suggestion:*.trainDispName': {'title': _('train display name'), }
-# })
+
+if ENABLE_PAINTERS:
+    inventory_displayhints.update({
+        # EoX
+        '.hardware.support.cisco_eox:*.EOXExternalAnnouncementDate': {'title': _('EOL Announcement'), 'paint': 'date_status'},
+        '.hardware.support.cisco_eox:*.EndOfSvcAttachDate': {'title': _('End of service attachment'), 'paint': 'date_status'},
+        '.hardware.support.cisco_eox:*.EndOfSecurityVulSupportDate': {'title': _('End of service vulnerability support'), 'paint': 'date_status'},
+        '.hardware.support.cisco_eox:*.EndOfSWMaintenanceReleases': {'title': _('End of software maintenace releases'), 'paint': 'date_status'},
+        '.hardware.support.cisco_eox:*.EndOfRoutineFailureAnalysisDate': {'title': _('End of routine failure analysis'), 'paint': 'date_status'},
+        '.hardware.support.cisco_eox:*.EndOfSaleDate': {'title': _('End of sale'), 'paint': 'date_status'},
+        '.hardware.support.cisco_eox:*.LastDateOfSupport': {'title': _('End of support'), 'paint': 'date_status'},
+        '.hardware.support.cisco_eox:*.ProductBulletinNumber': {'title': _('EOL bulletin ID'), 'paint': 'eox_eolid'},
+
+        # SN2Info
+        '.hardware.support.cisco_contract:*.Last_checked': {'title': _('Last checked'), 'paint': 'last_checked_status'},
+        '.hardware.support.cisco_contract:*.covered_product_line_end_date': {'title': _('Contract end date'), 'paint': 'date_status'},
+
+        # Bug
+        '.software.support.cisco_bug.bugs:*.bug_id': {'title': _('Bug ID'), 'paint': 'bug_bugid'},
+
+        # Psirt
+        '.software.support.cisco_psirt.advisories:*.advisoryId': {'title': _('Advisory ID'), 'paint': 'psirt_advisoryid'},
+        '.software.support.cisco_psirt.advisories:*.bugIDs': {'title': _('Bug IDs'), 'paint': 'psirt_bugid'},
+        '.software.support.cisco_psirt.Last_checked': {'title': _('Last checked'), 'paint': 'last_checked_status'},
+    })
+else:
+    inventory_displayhints.update(({
+        # EoX
+        '.hardware.support.cisco_eox:*.EOXExternalAnnouncementDate': {'title': _('EOL Announcement')},
+        '.hardware.support.cisco_eox:*.EndOfSvcAttachDate': {'title': _('End of service attachment')},
+        '.hardware.support.cisco_eox:*.EndOfSecurityVulSupportDate': {'title': _('End of service vulnerability support')},
+        '.hardware.support.cisco_eox:*.EndOfSWMaintenanceReleases': {'title': _('End of software maintenace releases')},
+        '.hardware.support.cisco_eox:*.EndOfRoutineFailureAnalysisDate': {'title': _('End of routine failure analysis')},
+        '.hardware.support.cisco_eox:*.EndOfSaleDate': {'title': _('End of sale')},
+        '.hardware.support.cisco_eox:*.LastDateOfSupport': {'title': _('End of support')},
+        '.hardware.support.cisco_eox:*.ProductBulletinNumber': {'title': _('EOL bulletin ID')},
+
+        # SN2Info
+        '.hardware.support.cisco_contract:*.Last_checked': {'title': _('Last checked')},
+        '.hardware.support.cisco_contract:*.covered_product_line_end_date': {'title': _('Contract end date')},
+
+        # Bug
+        '.software.support.cisco_bug.bugs:*.bug_id': {'title': _('Bug ID')},
+
+        # Psirt
+        '.software.support.cisco_psirt.advisories:*.advisoryId': {'title': _('Advisory ID')},
+        '.software.support.cisco_psirt.advisories:*.bugIDs': {'title': _('Bug IDs')},
+        '.software.support.cisco_psirt.Last_checked': {'title': _('Last checked')},
+    }))
+
 
 declare_invtable_view('invciscoeox', '.hardware.support.cisco_eox:', _('Cisco EoX status'), _('Cisco EoX status'))
 declare_invtable_view('invciscocontract', '.hardware.support.cisco_contract:', _('Cisco contract status'), _('Cisco contract status'))
 declare_invtable_view('invciscopsirt', '.software.support.cisco_psirt.advisories:', _('Cisco PSIRT advisories'), _('Cisco PSIRT advisories'))
 declare_invtable_view('invciscobugs', '.software.support.cisco_bug.bugs:', _('Cisco BUG IDs'), _('Cisco Bug IDs'))
-##declare_invtable_view('invciscosuggestion', '.software.support.cisco_suggestion:', _('Cisco suggested software'), _('Cisco suggested software'))
-
diff --git a/web/plugins/wato/inv_cisco_bug.py b/web/plugins/wato/inv_cisco_bug.py
index e9ce841..4d4a754 100644
--- a/web/plugins/wato/inv_cisco_bug.py
+++ b/web/plugins/wato/inv_cisco_bug.py
@@ -25,39 +25,32 @@ from cmk.gui.plugins.wato.inventory import (
     RulespecGroupInventory,
 )
 
-_removecolumns = [
-    #    ('status', 'Status'),
+_removecolumns_inv_cisco_bug = [
+    # ('status', 'Status'),
     ('product', 'Product'),
     ('description', 'Description'),
-    ('headline', 'Headline'),
-    ('support_case_count', 'Support case count'),
-    ('last_modified_date', 'Last modified date'),
-    ('behavior_changed', 'Behavior changed'),
-    #    ('bug_id', 'Bug ID'),
+    # ('headline', 'Headline'),
+    # ('support_case_count', 'Support case count'),
+    # ('last_modified_date', 'Last modified date'),
+    # ('behavior_changed', 'Behavior changed'),
+    # ('bug_id', 'Bug ID'),
     ('base_pid', 'Base PID'),
     ('known_fixed_releases', 'Known fixed releases'),
     ('id', 'ID'),
     ('known_affected_releases', 'known affected releases'),
-    ('severity', 'Severity'),
+    # ('severity', 'Severity'),
 ]
 
 
 def _valuespec_inv_cisco_bug():
     return Dictionary(
-        title=_('Cisco bug advisories'),
+        title=_('Cisco bugs'),
         elements=[
-            ('disable_bug',
-             FixedValue(
-                 True,
-                 title=_('disable Cisco bug information'),
-                 help=_('if true, CMK will not request bug information from Cisco'),
-                 default_value=False,
-             )),
             ('removecolumns',
              ListChoice(
                  title=_('remove columns'),
                  help=_('remove information from report'),
-                 choices=_removecolumns,
+                 choices=_removecolumns_inv_cisco_bug,
                  default_value=[
                      'base_pid',
                      'description',
diff --git a/web/plugins/wato/inv_cisco_contract.py b/web/plugins/wato/inv_cisco_contract.py
index 1627896..4c71f6e 100644
--- a/web/plugins/wato/inv_cisco_contract.py
+++ b/web/plugins/wato/inv_cisco_contract.py
@@ -18,13 +18,14 @@ from cmk.gui.plugins.wato import (
 from cmk.gui.valuespec import (
     Dictionary,
     ListChoice,
+    ListOfStrings,
 )
 
 from cmk.gui.plugins.wato.inventory import (
     RulespecGroupInventory,
 )
 
-_removecolumns = [
+_removecolumns_inv_cisco_contract = [
     ('contract_site_address1', 'Address'),
     ('contract_site_city', 'City'),
     ('contract_site_country', 'Country'),
@@ -46,7 +47,7 @@ def _valuespec_inv_cisco_contract():
              ListChoice(
                  title=_('remove columns'),
                  help=_('remove information from report'),
-                 choices=_removecolumns,
+                 choices=_removecolumns_inv_cisco_contract,
                  default_value=[
                      'contract_site_state_province',
                      'warranty_type_description',
diff --git a/web/plugins/wato/inv_cisco_eox.py b/web/plugins/wato/inv_cisco_eox.py
index aae8828..b0f775a 100644
--- a/web/plugins/wato/inv_cisco_eox.py
+++ b/web/plugins/wato/inv_cisco_eox.py
@@ -26,7 +26,7 @@ from cmk.gui.plugins.wato.inventory import (
     RulespecGroupInventory,
 )
 
-_removecolumns = [
+_removecolumns_inv_cisco_eox = [
     #    ('ProductIDDescription', 'PID Description'),
     ('LinkToProductBulletinURL', 'EOL bulletin URL'),
     ('EndOfSecurityVulSupportDate', 'End of service vulnerability support'),
@@ -54,7 +54,7 @@ def _valuespec_inv_cisco_eox():
              ListChoice(
                  title=_('remove columns'),
                  help=_('remove information from EoX report'),
-                 choices=_removecolumns,
+                 choices=_removecolumns_inv_cisco_eox,
                  default_value=[
                      'EndOfSecurityVulSupportDate',
                      'EndOfSWMaintenanceReleases',
diff --git a/web/plugins/wato/inv_cisco_psirt.py b/web/plugins/wato/inv_cisco_psirt.py
index 95772b2..5674516 100644
--- a/web/plugins/wato/inv_cisco_psirt.py
+++ b/web/plugins/wato/inv_cisco_psirt.py
@@ -28,7 +28,7 @@ from cmk.gui.plugins.wato.inventory import (
     RulespecGroupInventory,
 )
 
-_removecolumns = [
+_removecolumns_inv_cisco_psirt = [
     ('bugIDs', 'Cisco Bug IDs'),
     ('firstFixed', 'First fixed in'),
     ('firstPublished', 'First Published'),
@@ -54,7 +54,7 @@ def _valuespec_inv_cisco_psirt():
              ListChoice(
                  title=_('remove columns'),
                  help=_('remove information from report'),
-                 choices=_removecolumns,
+                 choices=_removecolumns_inv_cisco_psirt,
                  default_value=[
                      'publicationUrl',
                      'summary',
-- 
GitLab