diff --git a/README.md b/README.md
index 044422c..cb2d832 100644
--- a/README.md
+++ b/README.md
@@ -4,12 +4,20 @@
 
 # Local run
 It is pretty simple: 
-- deploy on cfg node
-- check your local.env file for parameters
-- ...run: `cfg_check -h`
+- deploy on cfg node, using root creds, on /root/
+```bash
+git clone https://github.com/savex/salt-cfg-checker
+cd salt-cfg-checker
+virtualenv .cfgcheck
+source .cfgcheck/bin/activate
+pip install -r requirements.txt
+```
+- you can check your local.env file for parameters (no need to update for running on cfg node)
+- packages report (HTML): `mcp_check packages report --html cloud-packages.html`
+- packages report (CSV): `mcp_check packages report --csv cloud-packages.csv`
 
 # External cloud
-Be sure to 
+You can also create your env file to connect to env
  - create your *.env file
    or supply environment vars to module other way
  - in the `env` file set host and user for SSH. 
@@ -17,11 +25,16 @@
  - if node listing fails, execute `salt-key` on master 
    and create an `etc/nodes.list` file with minions list
 
+# Version history
+- [*Done*] Update messages to same style
+- [*Done*] Release versions support with customizable updates
+- [*Done*] Upgrades, errors and downgrades detection
+- [*Done*] Proper Debian package [version](https://www.debian.org/doc/debian-policy/ch-controlfields.html#version) naming convention support
+
 TODO:
 - Check root on startup, exit
 - Prepare script to create venv
 - Format reclass compare file
-- Update messages to same style
+
 
 Cheers!
-
diff --git a/cfg_checker/cfg_check.py b/cfg_checker/cfg_check.py
index a0df7e6..678724e 100644
--- a/cfg_checker/cfg_check.py
+++ b/cfg_checker/cfg_check.py
@@ -64,11 +64,6 @@
         help="Set CLI logging level to DEBUG"
     )
     parser.add_argument(
-        '-f',
-        '--file',
-        help="HTML filename to save report"
-    )
-    parser.add_argument(
         '-s',
         '--sudo',
         action='store_true', default=True,
@@ -86,6 +81,21 @@
         'report',
         help="Report package versions to HTML file"
     )
+    pkg_report_parser.add_argument(
+        '--full',
+        metavar='packages_html_filename',
+        help="HTML report will have all of the packages, not just errors"
+    )
+    pkg_report_parser.add_argument(
+        '--html',
+        metavar='packages_html_filename',
+        help="HTML filename to save report"
+    )
+    pkg_report_parser.add_argument(
+        '--csv',
+        metavar='packages_csv_filename',
+        help="CSV filename to save report"
+    )
 
     # networking
     net_parser = subparsers.add_parser(
@@ -103,6 +113,12 @@
         'report',
         help="Generate network check report"
     )
+
+    net_report_parser.add_argument(
+        '--html',
+        metavar='network_html_filename',
+        help="HTML filename to save report"
+    )
     
     # reclass
     reclass_parser = subparsers.add_parser(
@@ -135,6 +151,12 @@
         required=True,
         help="Model B <path>. Model name is the folder name"
     )
+    reclass_diff_parser.add_argument(
+        '--html',
+        metavar='reclass_html_filename',
+        help="HTML filename to save report"
+    )
+
 
 
     #parse arguments
diff --git a/cfg_checker/common/const.py b/cfg_checker/common/const.py
index 4142ea7..8ca0d8c 100644
--- a/cfg_checker/common/const.py
+++ b/cfg_checker/common/const.py
@@ -9,8 +9,40 @@
 NODE_DOWN = next(_cnt)
 NODE_UP = next(_cnt)
 
+# version const order is important!
+# biggest get shown in report top row
+VERSION_NA = next(_cnt)
+VERSION_OK = next(_cnt)
+VERSION_UP = next(_cnt)
+VERSION_DOWN = next(_cnt)
+VERSION_ERR = next(_cnt)
+
+# action const order is important!
+# biggest get shown in report top row
+ACT_NA = next(_cnt)
+ACT_UPGRADE = next(_cnt)
+ACT_NEED_UP = next(_cnt)
+ACT_NEED_DOWN = next(_cnt)
+ACT_REPO = next(_cnt)
+
 del _cnt
 
+all_actions = {
+    ACT_UPGRADE: "upgrade possible",
+    ACT_NEED_UP: "needs upgrade",
+    ACT_NEED_DOWN: "needs downgrade",
+    ACT_REPO: "needs repo update",
+    ACT_NA: ""
+}
+
+all_statuses = {
+    VERSION_OK: "ok",
+    VERSION_UP: "upgraded",
+    VERSION_DOWN: "downgraded",
+    VERSION_ERR: "error",
+    VERSION_NA: "no status"
+}
+
 all_roles_map = {
     "apt": "repository",
     "bmk": "validation",
diff --git a/cfg_checker/common/settings.py b/cfg_checker/common/settings.py
index 30cc7f2..8d8111c 100644
--- a/cfg_checker/common/settings.py
+++ b/cfg_checker/common/settings.py
@@ -31,6 +31,8 @@
         self.date_format = "%Y-%m-%d %H:%M:%S.%f%z"
         self.default_tz = "UTC"
 
+        self.pkg_versions_map = 'versions_map.csv'
+
         self.ssh_uses_sudo = False
         self.ssh_key = os.environ.get('SSH_KEY', None)
         self.ssh_user = os.environ.get('SSH_USER', None)
diff --git a/cfg_checker/helpers/args_utils.py b/cfg_checker/helpers/args_utils.py
index d7b694d..f8453e4 100644
--- a/cfg_checker/helpers/args_utils.py
+++ b/cfg_checker/helpers/args_utils.py
@@ -3,11 +3,20 @@
 from cfg_checker.common.exception import ConfigException
 
 
-def get_file_arg(args):
-    if args.file:
-        return args.file
+def get_arg(args, str_arg):
+    _attr = getattr(args, str_arg)
+    if _attr:
+        return _attr
     else:
-        raise ConfigException("No report filename supplied")
+        _c = args.command if hasattr(args, 'command') else ''
+        _t = args.type if hasattr(args, 'type') else ''
+        raise ConfigException(
+            "Argument '{}' not found executing: mcp_check {} {}".format(
+                str_arg,
+                _c,
+                _t
+            )
+        )
 
 
 def get_path_arg(path):
@@ -15,3 +24,15 @@
         return path
     else:
         raise ConfigException("'{}' not exists".format(path))
+
+
+def get_report_type_and_filename(args):
+    if args.html or args.csv:
+        if args.html and args.csv:
+            raise ConfigException("Multuple report types not supported")
+        if args.html is not None:
+            return 'html', args.html
+        if args.csv is not None:
+            return 'csv', args.csv
+    else:
+        raise ConfigException("Report type and filename not set")
diff --git a/cfg_checker/helpers/console_utils.py b/cfg_checker/helpers/console_utils.py
new file mode 100644
index 0000000..33e1a39
--- /dev/null
+++ b/cfg_checker/helpers/console_utils.py
@@ -0,0 +1,30 @@
+from time import sleep
+import sys
+
+
+class Progress(object):
+    def __init__(self, max_index, bar_size=21):
+        self.total = max_index
+        # bar size in symbols
+        self.bar_size = bar_size
+
+    def write_progress(self, index, note=''):
+        #calc index and percent values
+        _percent = (100 * index) / self.total
+        _index = (self.bar_size * index) / self.total
+        # clear the line
+        sys.stdout.write('\r')
+        # print new progress
+        _format = "[{:"+str(self.bar_size-1)+"}] {}/{} ({}%) {}"
+        sys.stdout.write(_format.format(
+            '='*_index,
+            index,
+            self.total,
+            _percent,
+            note
+        ))
+        sys.stdout.flush()
+    
+    @staticmethod
+    def newline():
+        sys.stdout.write('\n')
diff --git a/cfg_checker/modules/network/__init__.py b/cfg_checker/modules/network/__init__.py
index 8074a71..6217b1a 100644
--- a/cfg_checker/modules/network/__init__.py
+++ b/cfg_checker/modules/network/__init__.py
@@ -3,22 +3,26 @@
 from cfg_checker.helpers import args_utils
 from cfg_checker.common import logger_cli
 
+def _prepare_check():
+    _checker_class = checker.NetworkChecker()
+    _checker_class.collect_reclass_networks()
+    _checker_class.collect_network_info()
+    return _checker_class
+
 def do_check(args):
-    logger_cli.info("# Network check (CLI output)")
-    netChecker = checker.NetworkChecker()
-    netChecker.collect_reclass_networks()
-    netChecker.collect_network_info()
+    logger_cli.info("# Network check to console")
+    netChecker = _prepare_check()
     netChecker.print_network_report()
 
     return
 
 
 def do_report(args):
-    logger_cli.info("# Network check (HTML report: '{}')".format(args.file))
-    _filename = args_utils.get_file_arg(args)
+    logger_cli.info("# Network report")
 
-    netChecker = checker.NetworkChecker()
-    netChecker.collect_network_info()
+    _filename = args_utils.get_arg(args, 'html')
+    
+    netChecker = _prepare_check()
     netChecker.create_html_report(_filename)
 
     return
diff --git a/cfg_checker/modules/network/checker.py b/cfg_checker/modules/network/checker.py
index 362b877..b0056c8 100644
--- a/cfg_checker/modules/network/checker.py
+++ b/cfg_checker/modules/network/checker.py
@@ -249,6 +249,9 @@
         )
         _report({
             "nodes": self.nodes,
-            "diffs": {}
+            "network": {},
+            "mcp_release": self.mcp_release,
+            "openstack_release": self.openstack_release
+
         })
         logger_cli.info("-> Done")
diff --git a/cfg_checker/modules/packages/__init__.py b/cfg_checker/modules/packages/__init__.py
index 0e2d956..774e674 100644
--- a/cfg_checker/modules/packages/__init__.py
+++ b/cfg_checker/modules/packages/__init__.py
@@ -4,12 +4,12 @@
 
 
 def do_report(args):
-    """Create package versions report
+    """Create package versions report, HTML
 
     :args: - parser arguments
     :return: - no return value
     """
-    _filename = args_utils.get_file_arg(args)
+    _type, _filename = args_utils.get_report_type_and_filename(args)
 
     # init connection to salt and collect minion data
     pChecker = checker.CloudPackageChecker()
@@ -18,4 +18,4 @@
     # diff installed and candidates
     pChecker.collect_packages()
     # report it
-    pChecker.create_html_report(_filename)
+    pChecker.create_report(_filename, rtype=_type, full=args.full)
diff --git a/cfg_checker/modules/packages/checker.py b/cfg_checker/modules/packages/checker.py
index 4956a52..8a3456d 100644
--- a/cfg_checker/modules/packages/checker.py
+++ b/cfg_checker/modules/packages/checker.py
@@ -4,14 +4,119 @@
 
 from copy import deepcopy
 
-from cfg_checker.reports import reporter
+from cfg_checker.common.exception import ConfigException
 from cfg_checker.common import utils, const
 from cfg_checker.common import config, logger, logger_cli, pkg_dir
 from cfg_checker.common import salt_utils
+from cfg_checker.helpers.console_utils import Progress
 from cfg_checker.nodes import SaltNodes, node_tmpl
+from cfg_checker.reports import reporter
+
+from versions import PkgVersions, DebianVersion, VersionCmpResult
 
 
 class CloudPackageChecker(SaltNodes):
+    @staticmethod
+    def presort_packages(all_packages, full=None):
+        logger_cli.info("-> Presorting packages")
+        # labels
+        _data = {}
+        _data = {
+            "cs": {
+                "ok": const.VERSION_OK,
+                "up": const.VERSION_UP,
+                "down": const.VERSION_DOWN,
+                "err": const.VERSION_ERR
+            },
+            "ca": {
+                "na": const.ACT_NA,
+                "up": const.ACT_UPGRADE,
+                "need_up": const.ACT_NEED_UP,
+                "need_down": const.ACT_NEED_DOWN,
+                "repo": const.ACT_REPO
+            }
+        }
+        _data['status_err'] = const.VERSION_ERR
+        _data['status_down'] = const.VERSION_DOWN
+
+        # Presort packages
+        _data['critical'] = {}
+        _data['system'] = {}
+        _data['other'] = {}
+        _data['unlisted'] = {}
+
+        _l = len(all_packages)
+        _progress = Progress(_l)
+        _progress_index = 0
+        # counters
+        _ec = _es = _eo = _eu = 0
+        _dc = _ds = _do = _du = 0
+        while _progress_index < _l:
+            # progress bar
+            _progress_index += 1
+            _progress.write_progress(_progress_index)
+            # sort packages
+            _pn, _val = all_packages.popitem()
+            _c = _val['desc']['component']
+            if full:
+                # Check if this packet has errors
+                # if all is ok -> just skip it
+                _max_status = max(_val['results'].keys())
+                if _max_status <= const.VERSION_OK:
+                    _max_action = max(_val['results'][_max_status].keys())
+                    if _max_action == const.ACT_NA:
+                        # this package do not ha any comments
+                        # ...just skip it from report
+                        continue
+
+            if len(_c) > 0 and _c == 'unlisted':
+                # not listed package in version lib
+                _data['unlisted'].update({
+                    _pn: _val
+                })
+                _eu += _val['results'].keys().count(const.VERSION_ERR)
+                _du += _val['results'].keys().count(const.VERSION_DOWN)
+            # mirantis/critical
+            elif len(_c) > 0 and _c != 'System':
+                # not blank and not system
+                _data['critical'].update({
+                    _pn: _val
+                })
+                _ec += _val['results'].keys().count(const.VERSION_ERR)
+                _dc += _val['results'].keys().count(const.VERSION_DOWN)
+            # system
+            elif _c == 'System':
+                _data['system'].update({
+                    _pn: _val
+                })
+                _es += _val['results'].keys().count(const.VERSION_ERR)
+                _ds += _val['results'].keys().count(const.VERSION_DOWN)
+            # rest
+            else:
+                _data['other'].update({
+                    _pn: _val
+                })
+                _eo += _val['results'].keys().count(const.VERSION_ERR)
+                _do += _val['results'].keys().count(const.VERSION_DOWN)
+
+        
+        _progress.newline()
+
+        _data['errors'] = {
+            'mirantis': _ec,
+            'system': _es,
+            'other': _eo,
+            'unlisted': _eu
+        }
+        _data['downgrades'] = {
+            'mirantis': _dc,
+            'system': _ds,
+            'other': _do,
+            'unlisted': _du
+        }
+
+        return _data
+
     def collect_installed_packages(self):
         """
         Collect installed packages on each node
@@ -50,46 +155,115 @@
 
         :return: no return values, all date put to dict in place
         """
+        # Preload OpenStack release versions
+        _desc = PkgVersions()
+        
+        logger_cli.info("# Cross-comparing: Installed vs Candidates vs Release")
+        _progress = Progress(len(self.nodes.keys()))
+        _progress_index = 0
+        _total_processed = 0
         # Collect packages from all of the nodes in flat dict
-        _diff_packages = {}
+        _all_packages = {}
         for node_name, node_value in self.nodes.iteritems():
+            _uniq_len = len(_all_packages.keys())
+            _progress_index += 1
+            # progress will jump from node to node
+            # it is very costly operation to execute it for each pkg
+            _progress.write_progress(
+                _progress_index,
+                note="/ {} uniq out of {} packages found".format(
+                    _uniq_len,
+                    _total_processed
+                )
+            )
             for _name, _value in node_value['packages'].iteritems():
-                if _name not in _diff_packages:
-                    _diff_packages[_name] = {}
-                    _diff_packages[_name]['df_nodes'] = {}
-                    _diff_packages[_name]['eq_nodes'] = []
-                
-                # compare packages, mark if equal
-                if _value['installed'] != _value['candidate']:
-                    # Saving compare value so we not do str compare again
-                    _value['is_equal'] = False
-                    # add node name to list
-                    _diff_packages[_name]['df_nodes'][node_name] = {
-                        'i': _value['installed'],
-                        'c': _value['candidate'],
-                        'raw': _value['raw']
+                _total_processed += 1
+                # Parse versions
+                _ver_ins = DebianVersion(_value['installed'])
+                _ver_can = DebianVersion(_value['candidate'])
+
+                # All packages list with version and node list
+                if _name not in _all_packages:
+                    # shortcuts for this cloud values
+                    _os = self.openstack_release
+                    _mcp = self.mcp_release
+                    _pkg_desc = {}
+                    if _desc[_name]:
+                        # shortcut to version library
+                        _vers = _desc[_name]['versions']
+                        _pkg_desc = _desc[_name]
+                    else:
+                        # no description - no library :)
+                        _vers = {}
+                        _pkg_desc = _desc.dummy_desc
+                    
+                    # get specific set for this OS release if present
+                    if _os in _vers:
+                        _v = _vers[_os] 
+                    elif 'any' in _vers:
+                        _v = _vers['any']
+                    else:
+                        _v = {}
+                    # Finally, get specific version
+                    _release = DebianVersion(_v[_mcp] if _mcp in _v else '')
+                    # Populate package info
+                    _all_packages[_name] = {
+                        "desc": _pkg_desc,
+                        "results": {},
+                        "r": _release,
                     }
-                else:
-                    # Saving compare value so we not do str compare again
-                    _value['is_equal'] = True
-                    _diff_packages[_name]['eq_nodes'].append(node_name)
+                
+                _cmp = VersionCmpResult(
+                    _ver_ins,
+                    _ver_can,
+                    _all_packages[_name]['r']
+                )
+                
+                # shortcut to results
+                _res = _all_packages[_name]['results']
+                # update status
+                if _cmp.status not in _res:
+                    _res[_cmp.status] = {}
+                # update action
+                if _cmp.action not in _res[_cmp.status]:
+                    _res[_cmp.status][_cmp.action] = {}
+                # update node
+                if node_name not in _res[_cmp.status][_cmp.action]:
+                    _res[_cmp.status][_cmp.action][node_name] = {}
+                # put result
+                _res[_cmp.status][_cmp.action][node_name] = {
+                    'i': _ver_ins,
+                    'c': _ver_can,
+                    'res': _cmp,
+                    'raw': _value['raw']
+                }
 
-        self.diff_packages = _diff_packages
+        self._packages = _all_packages
+        _progress.newline()
+    
 
-    def create_html_report(self, filename):
+    def create_report(self, filename, rtype, full=None):
         """
         Create static html showing packages diff per node
 
         :return: buff with html
         """
         logger_cli.info("# Generating report to '{}'".format(filename))
+        if rtype == 'html':
+            _type = reporter.HTMLPackageCandidates()
+        elif rtype == 'csv':
+            _type = reporter.CSVAllPackages()
+        else:
+            raise ConfigException("Report type not set")
         _report = reporter.ReportToFile(
-            reporter.HTMLPackageCandidates(),
+            _type,
             filename
         )
-        _report({
+        payload = {
             "nodes": self.nodes,
-            "rc_diffs": {},
-            "pkg_diffs": self.diff_packages
-        })
+            "mcp_release": self.mcp_release,
+            "openstack_release": self.openstack_release
+        }
+        payload.update(self.presort_packages(self._packages, full))
+        _report(payload)
         logger_cli.info("-> Done")
diff --git a/cfg_checker/modules/packages/versions.py b/cfg_checker/modules/packages/versions.py
new file mode 100644
index 0000000..10f65dc
--- /dev/null
+++ b/cfg_checker/modules/packages/versions.py
@@ -0,0 +1,345 @@
+import csv
+import os
+
+from cfg_checker.common import config, logger, logger_cli, pkg_dir, const
+
+
+class PkgVersions(object):
+    _labels = []
+    _list = {}
+
+    dummy_desc = {
+        "component": "unlisted",
+        "app": "-",
+        "repo": "-",
+        "versions": {}
+    }
+
+    def __init__(self):
+        # preload csv file
+        logger_cli.info("# Preloading MCP release versions")
+        with open(os.path.join(pkg_dir, 'etc', config.pkg_versions_map)) as f:
+            _reader = csv.reader(f, delimiter=',')
+            # load packages
+            for row in _reader:
+                # load release version labels
+                if _reader.line_num == 1:
+                    self._labels = [v for v in row[5:]]
+                    continue
+                # package_name,component,application_or_service,repo,openstack_release,2018.4.0,2018.11.0,2019.2.0,2019.2.1,2019.2.2
+                # reassign for code readability
+                _pkg = row[0]
+                _component = row[1]
+                _app = row[2]
+                _repo = row[3]
+                # if release cell empty - use keyword 'any'
+                _os_release = row[4] if len(row[4]) > 0 else 'any' 
+
+                # prepare versions dict
+                _l = self._labels
+                _versions = {_l[i]:row[5+i] for i in range(0, len(row[5:]))}
+                
+                if _pkg in self._list:
+                    if _os_release in self._list[_pkg]["versions"]:
+                        # all pkg/os_releases should be uniq. If found, latest one used
+                        logger_cli.info(
+                            "-> WARNING: Duplicate package info found "
+                            "'{}' (line {})".format(
+                                _pkg,
+                                _reader.line_num
+                            )
+                        )
+                else:
+                    # update pkg data in list
+                    self._list.update({
+                        _pkg: {
+                            "component": _component,
+                            "app": _app,
+                            "repo": _repo,
+                            "versions": {}
+                        }
+                    })
+                
+                # and finally, update the versions for this release
+                self._list[_pkg]["versions"].update({
+                    _os_release: _versions
+                })
+    
+    def __getitem__(self, pkg_name):
+        if pkg_name in self._list:        
+            return self._list[pkg_name]
+        else:
+            #return self._dummy_desc
+            return None
+
+
+class DebianVersion(object):
+    epoch = None
+    epoch_status = const.VERSION_NA
+    upstream = None
+    upstream_rev = None
+    upstream_status = const.VERSION_NA
+    debian = None
+    debian_rev = None
+    debian_status = const.VERSION_NA
+
+    status = ""
+    version = ""
+
+    @staticmethod
+    def split_revision(version_fragment):
+        # The symbols are -, +, ~
+        _symbols = ['-', '+', '~']
+        # nums, coz it is faster then regex
+        _chars = [46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]
+        _ord_map = [ord(ch) not in _chars for ch in version_fragment]
+        # if there is nothing to extract, return at once
+        if not any([_s in version_fragment for _s in _symbols]) \
+            and not any(_ord_map):
+            # no revisions
+            return version_fragment, ""
+        else:
+            _main = _rev = ""
+            # get indices
+            _indices = []
+            for _s in _symbols:
+                if _s in version_fragment:
+                    _indices.append(version_fragment.index(_s))
+            for _s in version_fragment:
+                if ord(_s) not in _chars:
+                    _indices.append(version_fragment.index(_s))
+            # sort indices
+            _indices.sort()
+            # extract starting from the lowest one
+            _main = version_fragment[:_indices[0]]
+            _rev = version_fragment[_indices[0]:]
+            return _main, _rev
+    
+    def __init__(self, version_string):
+        # save
+        if len(version_string) < 1:
+            self.epoch = None
+            self.upstream = None
+            self.debian = None
+            self.version = 'n/a'
+            return
+        else:
+            # do parse the main versions
+            _v = version_string
+            # colon presence, means epoch present
+            _e = _v.split(':', 1)[0] if ':' in _v else ''
+            # if epoch was there, upstream should be cut
+            _m = _v if ':' not in _v else _v.split(':', 1)[1]
+            # dash presence, means debian present
+            _d = _m.rsplit('-', 1)[1] if '-' in _m else ''
+            # if debian was there, upstream version should be cut
+            _m = _m if '-' not in _m else _m.rsplit('-', 1)[0]
+
+            self.epoch = _e
+            self.upstream, self.upstream_rev = self.split_revision(_m)
+            self.debian, self.debian_rev = self.split_revision(_d)
+            self.version = version_string
+    
+    # Following functions is a freestyle python mimic of apt's upstream, enjoy
+    # https://github.com/chaos/apt/blob/master/apt/apt-pkg/deb/debversion.cc#L42
+    # mimic produced in order not to pull any packages or call external code
+    @staticmethod
+    def _cmp_fragment(lhf, rhf):
+        # search for difference
+        # indices
+        _li = _ri = 0
+        # pre-calc len
+        _lL = len(lhf)
+        _rL = len(rhf)
+        # bool for compare found
+        _diff = False
+        while _li < _lL and _ri < _rL:
+            # iterate lists
+            _num = lhf[_li] - rhf[_ri]
+            if _num:
+                return _num
+            _li += 1
+            _ri += 1
+        
+        # diff found? lens equal?
+        if not _diff and _lL != _rL:
+            # lens not equal? Longer - later
+            return _lL - _rL
+        else:
+            # equal
+            return 0
+    
+    def _cmp_num(self, lf, rf):
+        # split fragments into lists
+        _lhf = lf.split('.') if '.' in lf else list(lf)
+        _rhf = rf.split('.') if '.' in rf else list(rf)
+        # cast them to ints, delete empty strs
+        _lhf = [int(n) for n in _lhf if len(n)]
+        _rhf = [int(n) for n in _rhf if len(n)]
+
+        return self._cmp_fragment(_lhf, _rhf)
+    
+    def _cmp_lex(self, lf, rf):
+        # cast each item into its ORD value
+        _lhf = [ord(n) for n in lf]
+        _rhf = [ord(n) for n in rf]
+
+        return self._cmp_fragment(_lhf, _rhf)        
+   # end of cmps
+
+    # main part compared using splitted numbers
+    # if equal, revision is compared using lexical comparizon
+    def __lt__(self, v):
+        if self._cmp_num(self.epoch, v.epoch) < 0:
+            return True
+        elif self._cmp_num(self.upstream, v.upstream) < 0:
+            return True
+        elif self._cmp_lex(self.upstream_rev, v.upstream_rev) < 0:
+            return True
+        else:
+            return False
+
+    def __eq__(self, v):
+        # compare all portions
+        _result = []
+        _result.append(self._cmp_num(self.epoch, v.epoch))
+        _result.append(self._cmp_num(self.upstream, v.upstream))
+        _result.append(self._cmp_lex(self.upstream_rev, v.upstream_rev))
+        # if there is any non-zero, its not equal
+        return not any(_result)
+
+    def __gt__(self, v):
+        if self._cmp_num(self.epoch, v.epoch) > 0:
+            return True
+        elif self._cmp_num(self.upstream, v.upstream) > 0:
+            return True
+        elif self._cmp_lex(self.upstream_rev, v.upstream_rev) > 0:
+            return True
+        else:
+            return False
+    
+    def update_parts(self, target, status):
+        # updating parts of version statuses
+        if self._cmp_num(self.epoch, target.epoch) != 0:
+            self.epoch_status = status
+        else:
+            self.epoch_status = const.VERSION_OK
+
+        if self._cmp_num(self.upstream, target.upstream) != 0 \
+            or self._cmp_lex(self.upstream_rev, target.upstream_rev) != 0:
+            self.upstream_status = status
+        else:
+            self.upstream_status = const.VERSION_OK
+
+        if self._cmp_lex(self.debian, target.debian) != 0 \
+            or self._cmp_lex(self.debian_rev, target.debian_rev) != 0:
+            self.debian_status = status
+        else:
+            self.debian_status = const.VERSION_OK
+
+
+class VersionCmpResult(object):
+    status = ""
+    action = ""
+
+    source = None
+    target = None
+
+
+    def __init__(self, i, c, r):
+        # compare three versions and write a result
+        self.source = i
+        self.status = const.VERSION_NA
+        self.action = const.ACT_NA
+        
+        # Check if there is a release version present
+        if r and len(r.version) > 0 and r.version != 'n/a':
+            # I < C, installed version is older
+            if i < c:
+                self.target = c
+                if i == r:
+                    # installed version is equal vs release version
+                    self.status = const.VERSION_OK
+                    self.action = const.ACT_UPGRADE
+                elif i > r:
+                    # installed version is newer vs release version
+                    self.status = const.VERSION_UP
+                    self.action = const.ACT_UPGRADE
+                elif i < r and r < c:
+                    # installed version is older vs release version
+                    self.status = const.VERSION_ERR
+                    self.action = const.ACT_NEED_UP
+                    self.target = r
+                elif i < r and c == r:
+                    # installed version is older vs release version
+                    self.status = const.VERSION_ERR
+                    self.action = const.ACT_NEED_UP
+                    self.target = c
+                elif c < r:
+                    # installed and repo versions older vs release version
+                    self.status = const.VERSION_ERR
+                    self.action = const.ACT_REPO
+            # I > C
+            # installed version is newer
+            elif i > c:
+                self.target = c
+                if c == r:
+                    # some unknown version installed
+                    self.status = const.VERSION_ERR
+                    self.action = const.ACT_NEED_DOWN
+                elif c > r:
+                    # installed and repo versions newer than release
+                    self.status = const.VERSION_UP
+                    self.action = const.ACT_NEED_DOWN
+                elif c < r and r < i:
+                    # repo is older vs release and both older vs installed
+                    self.status = const.VERSION_UP
+                    self.action = const.ACT_REPO
+                elif c < r and r == i:
+                    # repo is older vs release, but release version installed
+                    self.status = const.VERSION_OK
+                    self.action = const.ACT_REPO
+                elif i < r:
+                    # both repo and installed older vs release, new target
+                    self.status = const.VERSION_DOWN
+                    self.action = const.ACT_REPO
+                    self.target = r
+            # I = C
+            # installed and linked repo is inline,
+            elif i == c:
+                self.target = c
+                if i < r:
+                    # both are old, new target
+                    self.status = const.VERSION_ERR
+                    self.action = const.ACT_REPO
+                    self.target = r
+                elif i > r:
+                    # both are newer, same target
+                    self.status = const.VERSION_UP
+                    self.action = const.ACT_NA
+                elif i == r:
+                    # all is ok
+                    self.status = const.VERSION_OK
+                    self.action = const.ACT_NA
+        else:
+            # no release version present
+            self.target = c
+            if i < c:
+                self.status = const.VERSION_OK
+                self.action = const.ACT_UPGRADE
+            elif i > c:
+                self.status = const.VERSION_UP
+                self.action = const.ACT_NEED_DOWN
+            elif i == c:
+                self.status = const.VERSION_OK
+                self.action = const.ACT_NA
+        
+        # and we need to update per-part status
+        self.source.update_parts(self.target, self.status)
+
+    @staticmethod
+    def deb_lower(_s, _t):
+        if _t.debian and _t.debian > _s.debian:
+            return True
+        else:
+            return false
diff --git a/cfg_checker/modules/reclass/__init__.py b/cfg_checker/modules/reclass/__init__.py
index 66576b6..0dcf426 100644
--- a/cfg_checker/modules/reclass/__init__.py
+++ b/cfg_checker/modules/reclass/__init__.py
@@ -10,7 +10,9 @@
 
 def do_list(args):
     logger_cli.info("# Reclass list")
-    _path = args_utils.get_path_arg(args.models_path)
+    _arg_path = args_utils.get_arg(args, 'models_path')
+    logger_cli.info("-> Current path is: {}".format(_arg_path))
+    _path = args_utils.get_path_arg(_arg_path)
     
     logger_cli.info("# ...models path is '{}'".format(args.models_path))
     
@@ -38,7 +40,7 @@
 
 def do_diff(args):
     logger_cli.info("# Reclass comparer (HTML report: '{}'".format(args.file))
-    _filename = args_utils.get_file_arg(args)
+    _filename = args_utils.get_arg(args, 'html')
 
     # checking folder params
     _model1 = args_utils.get_path_arg(args.model1)
diff --git a/cfg_checker/nodes.py b/cfg_checker/nodes.py
index b2bfd88..776c8b2 100644
--- a/cfg_checker/nodes.py
+++ b/cfg_checker/nodes.py
@@ -22,7 +22,7 @@
         logger_cli.info("# Collecting nodes")
         # simple salt rest client
         self.salt = salt_utils.SaltRemote()
-
+        
         # Keys for all nodes
         # this is not working in scope of 2016.8.3, will overide with list
         logger_cli.debug("...collecting node names existing in the cloud")
@@ -82,6 +82,22 @@
                 self.nodes
             )
         )
+        # get master node fqdn
+        self.master_node = filter(
+            lambda nd: self.nodes[nd]['role'] == const.all_roles_map['cfg'],
+            self.nodes
+        )[0]
+        
+        # OpenStack versions
+        self.mcp_release = self.salt.pillar_get(
+            self.master_node,
+            "_param:apt_mk_version"
+        )[self.master_node]
+        self.openstack_release = self.salt.pillar_get(
+            self.master_node,
+            "_param:openstack_version"
+        )[self.master_node]
+
 
     def skip_node(self, node):
         # Add node to skip list
diff --git a/cfg_checker/reports/reporter.py b/cfg_checker/reports/reporter.py
index e1d6b6f..377c061 100644
--- a/cfg_checker/reports/reporter.py
+++ b/cfg_checker/reports/reporter.py
@@ -1,35 +1,82 @@
-import jinja2
-import six
 import abc
+import jinja2
 import os
+import six
+import time
 
 from cfg_checker.common import const
+from cfg_checker.common import logger, logger_cli
+from cfg_checker.helpers.console_utils import Progress
 
 pkg_dir = os.path.dirname(__file__)
 pkg_dir = os.path.join(pkg_dir, os.pardir, os.pardir)
 pkg_dir = os.path.normpath(pkg_dir)
 
 
-def shortname(node_fqdn):
-    # form shortname out of node fqdn
-    return node_fqdn.split(".", 1)[0]
-
-
-def is_equal(pkg_dict):
-    # compare versions of given package
-    return pkg_dict['installed'] == pkg_dict['candidate']
-
-
-def is_active(node_dict):
-    # check node status in node dict
-    return node_dict['status'] == const.NODE_UP
-
-
 def line_breaks(text):
     # replace python linebreaks with html breaks
     return text.replace("\n", "<br />")
 
 
+def get_sorted_keys(td):
+    # detect if we can sort by desc
+    # Yes, this is slow, but bullet-proof from empty desc
+    _desc = all([bool(td[k]['desc']) for k in td.keys()])
+    # Get sorted list
+    if not _desc:
+        return sorted(td.keys())
+    else:
+        return sorted(
+            td.keys(),
+            key=lambda k: (
+                td[k]['desc']['component'],
+                td[k]['desc']['app'],
+                k
+            )
+        )
+
+
+def get_max(_list):
+    return sorted(_list)[-1]
+
+
+def make_action_label(act):
+    _act_labels = {
+        const.ACT_UPGRADE: "Upgrade possible",
+        const.ACT_NEED_UP: "Needs upgrade",
+        const.ACT_NEED_DOWN: "Needs downgrade",
+        const.ACT_REPO: "Needs repo update",
+        const.ACT_NA: ""
+    }
+    return _act_labels[act]
+
+
+def make_action_class(act):
+    _act_classes = {
+        const.ACT_UPGRADE: "possible",
+        const.ACT_NEED_UP: "needs_up",
+        const.ACT_NEED_DOWN: "needs_down",
+        const.ACT_REPO: "needs_repo",
+        const.ACT_NA: ""
+    }
+    return _act_classes[act]
+
+
+def make_status_label(sts):
+    _status_labels = {
+        const.VERSION_OK: "OK",
+        const.VERSION_UP: "Upgraded",
+        const.VERSION_DOWN: "Downgraded",
+        const.VERSION_ERR: "ERROR",
+        const.VERSION_NA: "N/A"
+    }
+    return _status_labels[sts]
+
+
+def make_status_class(sts):
+    return const.all_statuses[sts]
+
+
 @six.add_metaclass(abc.ABCMeta)
 class _Base(object):
     def __init__(self):
@@ -59,14 +106,9 @@
     def __call__(self, payload):
         # init data structures
         data = self.common_data()
-        # payload should have pre-sorted structure
-        # system, nodes, clusters, and the rest in other
-        data.update({
-            "nodes": payload['nodes'],
-            "rc_diffs": payload['rc_diffs'],
-            "pkg_diffs": payload['pkg_diffs'],
-            "tabs": {}
-        })
+        # payload should have pre-sorted structure according to report called
+        # nodes, openstack_release, mcp_release, etc...
+        data.update(payload)
 
         # add template specific data
         self._extend_data(data)
@@ -75,83 +117,40 @@
         self._count_totals(data)
 
         # specific filters
-        self.jinja2_env.filters['shortname'] = shortname
-        self.jinja2_env.filters['is_equal'] = is_equal
-        self.jinja2_env.filters['is_active'] = is_active
         self.jinja2_env.filters['linebreaks'] = line_breaks
+        self.jinja2_env.filters['get_max'] = get_max
+
+        self.jinja2_env.filters['get_sorted_keys'] = get_sorted_keys
+        self.jinja2_env.filters['make_status_label'] = make_status_label
+        self.jinja2_env.filters['make_status_class'] = make_status_class
+        self.jinja2_env.filters['make_action_label'] = make_action_label
+        self.jinja2_env.filters['make_action_class'] = make_action_class
 
         # render!
+        logger_cli.info("-> Using template: {}".format(self.tmpl))
         tmpl = self.jinja2_env.get_template(self.tmpl)
+        logger_cli.info("-> Rendering")
         return tmpl.render(data)
 
     def common_data(self):
         return {
             'counters': {},
-            'salt_info': {}
+            'salt_info': {},
+            'gen_date': time.strftime("%m/%d/%Y %H:%M:%S")
         }
 
     def _extend_data(self, data):
         pass
 
 
-# Package versions report
+# HTML Package versions report
+class CSVAllPackages(_TMPLBase):
+    tmpl = "pkg_versions_csv.j2"
+
+
+# HTML Package versions report
 class HTMLPackageCandidates(_TMPLBase):
-    tmpl = "pkg_versions_tmpl.j2"
-
-    @staticmethod
-    def is_fail_uniq(p_dict, p_name, nodes, node_name):
-        # look up package fail for nodes with similar role
-        _tgroup = nodes[node_name]['node_group']
-        # filter all nodes with the same role
-        _nodes_list = filter(
-            lambda nd: nodes[nd]['node_group'] == _tgroup and nd != node_name,
-            nodes
-        )
-        # lookup same package
-        _fail_uniq = False
-        for _node_name in _nodes_list:
-            # check if there is a package present on node
-            _nd = nodes[_node_name]['packages']
-            if p_name not in _nd:
-                continue
-            # if both backages has same version and differ from candidate
-            if p_dict['candidate'] == _nd[p_name]['candidate'] \
-                    and _nd[p_name]['candidate'] == _nd[p_name]['installed']:
-                # it is not uniq, mark and break
-                _fail_uniq = True
-        return _fail_uniq
-
-    def _extend_data(self, data):
-        # Count values on per-node basis
-        for key, value in data['nodes'].iteritems():
-            # count differences
-            data['counters'][key] = {}
-            data['counters'][key]['packages'] = len(value['packages'].keys())
-            data['counters'][key]['package_diff'] = 0
-            data['counters'][key]['package_eq'] = 0
-
-            # Lookup if this fail is uniq for this node
-            for pkg_name, pkg_value in value['packages'].iteritems():
-                if pkg_value['is_equal']:
-                    pkg_value['fail_uniq'] = False
-                    data['counters'][key]['package_eq'] += 1
-                else:
-                    pkg_value['fail_uniq'] = self.is_fail_uniq(
-                        pkg_value,
-                        pkg_name,
-                        data['nodes'],
-                        key
-                    )
-                    data['counters'][key]['package_diff'] += 1
-       
-        # Count values on all-diffs basis
-        for key, value in data['pkg_diffs'].iteritems():
-            data['counters'][key] = {}
-            data['counters'][key]['df_nodes'] = len(value['df_nodes'].keys())
-            data['counters'][key]['eq_nodes'] = len(value['eq_nodes'])
-
-        # Save all packages counter
-        data['counters']['total_packages'] = data['pkg_diffs'].keys()
+    tmpl = "pkg_versions_html.j2"
 
 
 # Package versions report
@@ -171,10 +170,6 @@
 class HTMLNetworkReport(_TMPLBase):
     tmpl = "network_check_tmpl.j2"
 
-    def _extend_data(self, data):
-
-        return
-
 
 class ReportToFile(object):
     def __init__(self, report, target):
diff --git a/etc/versions_map.csv b/etc/versions_map.csv
new file mode 100644
index 0000000..21b0e3b
--- /dev/null
+++ b/etc/versions_map.csv
@@ -0,0 +1,1491 @@
+package_name,component,application_or_service,repo,openstack_release,2018.4.0,2018.11.0,2019.2.0,2019.2.1,2019.2.2
+accountsservice,,,,,,,,,
+acl,,,,,,,,,
+acpid,,,,,,,,,
+adduser,,,,,,,,,
+alembic,,,,,,,,,
+amd64-microcode,,,,,,,,,
+apache2,System,WebCGI,,,,,,,
+apache2-bin,System,WebCGI,,,,,,,
+apache2-data,System,WebCGI,,,,,,,
+apache2-utils,System,WebCGI,,,,,,,
+apparmor,System,Virtualization,,,,,,,
+apport,,,,,,,,,
+apport-symptoms,,,,,,,,,
+apt,DriveTrain,Aptly,mirantis,,,,,,
+apt-transport-https,DriveTrain,Aptly,mirantis,,,,,,
+apt-utils,DriveTrain,Aptly,mirantis,,,,,,
+archdetect-deb,,,,,,,,,
+at,,,,,,,,,
+attr,,,,,,,,,
+augeas-lenses,,,,,,,,,
+authbind,,,,,,,,,
+avahi-daemon,,,,,,,,,
+avahi-utils,,,,,,,,,
+backupninja,,,,,,,,,
+base-files,,,,,,,,,
+base-passwd,,,,,,,,,
+bash,System,Shell,,,,,,,
+bash-completion,System,Shell,,,,,,,
+bc,,,,,,,,,
+bcache-tools,,,,,,,,,
+bind9,,,,,,,,,
+bind9-host,,,,,,,,,
+bind9utils,,,,,,,,,
+binutils,,,,,,,,,
+bridge-utils,,,,,,,,,
+bsd-mailx,,,,,,,,,
+bsdmainutils,,,,,,,,,
+bsdutils,,,,,,,,,
+btrfs-tools,,,,,,,,,
+busybox-initramfs,,,,,,,,,
+busybox-static,,,,,,,,,
+byobu,System,Shell,,,,,,,
+bzip2,,,,,,,,,
+ca-certificates,System,SSL,,,,,,,
+ca-certificates-java,System,SSL,,,,,,,
+ceph-base,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+ceph-common,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+ceph-mgr,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+ceph-mon,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+ceph-osd,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+cinder-api,OpenStack,Cinder,mirantis,Pike,,2:11.1.0-1~u16.04+mcp59,,,
+cinder-backup,OpenStack,Cinder,mirantis,Pike,,2:11.1.0-1~u16.04+mcp59,,,
+cinder-api,OpenStack,Cinder,mirantis,,,,,,
+cinder-backup,OpenStack,Cinder,mirantis,,,,,,
+cinder-common,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96 [5],,
+cinder-scheduler,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96 [5],,
+cinder-volume,OpenStack,Cinder,mirantis,Queens,,12.0.4-2~u16.04+mcp69,2:12.0.4-2~u16.04+mcp96 [5],,
+cloud-guest-utils,,,,,,,,,
+cloud-initramfs-copymods,,,,,,,,,
+cloud-initramfs-dyn-netconf,,,,,,,,,
+command-not-found,,,,,,,,,
+command-not-found-data,,,,,,,,,
+conntrack,,,,,,,,,
+console-setup,,,,,,,,,
+console-setup-linux,,,,,,,,,
+coreutils,,,,,,,,,
+cpio,,,,,,,,,
+crda,,,,,,,,,
+cron,,,,,,,,,
+cryptsetup,,,,,,,,,
+cryptsetup-bin,,,,,,,,,
+curl,,,,,,,,,
+curtin-common,,,,,,,,,
+daemon,,,,,,,,,
+dash,,,,,,,,,
+dbconfig-common,,,,,,,,,
+dbconfig-pgsql,,,,,,,,,
+dbus,,,,,,,,,
+dctrl-tools,,,,,,,,,
+debconf,,,,,,,,,
+debconf-i18n,,,,,,,,,
+debconf-utils,,,,,,,,,
+debianutils,,,,,,,,,
+debootstrap,,,,,,,,,
+default-jre-headless,,,,,,,,,
+dh-python,,,,,,,,,
+dialog,,,,,,,,,
+diffutils,,,,,,,,,
+distro-info,,,,,,,,,
+distro-info-data,,,,,,,,,
+dmeventd,,,,,,,,,
+dmidecode,,,,,,,,,
+dmsetup,,,,,,,,,
+dns-root-data,,,,,,,,,
+dnsmasq-base,System,Networking,,,,,,,
+dnsmasq-utils,System,Networking,,,,,,,
+dnsutils,System,Networking,,,,,,,
+docker-ce,System,Docker,mirror,,,18.06.1,5:18.09.0~3-0~ubuntu-xenial,,
+docutils-common,,,,,,,,,
+dosfstools,,,,,,,,,
+dpkg,System,Packaging,,,,,,,
+dpkg-dev,System,Packaging,,,,,,,
+e2fslibs,,,,,,,,,
+e2fsprogs,,,,,,,,,
+eatmydata,,,,,,,,,
+ebtables,,,,,,,,,
+ed,,,,,,,,,
+eject,,,,,,,,,
+elasticsearch,StackLight LMA,Elasticsearch,mirror,,,5.6.12,6.5.2,,
+elasticsearch-curator,StackLight LMA,Elasticsearch,,,,,,,
+erlang-asn1,System,Erlang,,,,,,,
+erlang-base-hipe,System,Erlang,,,,,,,
+erlang-corba,System,Erlang,,,,,,,
+erlang-crypto,System,Erlang,,,,,,,
+erlang-diameter,System,Erlang,,,,,,,
+erlang-edoc,System,Erlang,,,,,,,
+erlang-eldap,System,Erlang,,,,,,,
+erlang-erl-docgen,System,Erlang,,,,,,,
+erlang-eunit,System,Erlang,,,,,,,
+erlang-ic,System,Erlang,,,,,,,
+erlang-inets,System,Erlang,,,,,,,
+erlang-mnesia,System,Erlang,,,,,,,
+erlang-nox,System,Erlang,,,,,,,
+erlang-odbc,System,Erlang,,,,,,,
+erlang-os-mon,System,Erlang,,,,,,,
+erlang-parsetools,System,Erlang,,,,,,,
+erlang-public-key,System,Erlang,,,,,,,
+erlang-runtime-tools,System,Erlang,,,,,,,
+erlang-snmp,System,Erlang,,,,,,,
+erlang-ssh,System,Erlang,,,,,,,
+erlang-ssl,System,Erlang,,,,,,,
+erlang-syntax-tools,System,Erlang,,,,,,,
+erlang-tools,System,Erlang,,,,,,,
+erlang-xmerl,System,Erlang,,,,,,,
+ethtool,,,,,,,,,
+extlinux,,,,,,,,,
+fcgiwrap,,,,,,,,,
+file,,,,,,,,,
+findutils,,,,,,,,,
+fontconfig,,,,,,,,,
+fontconfig-config,,,,,,,,,
+fonts-dejavu-core,,,,,,,,,
+fonts-font-awesome,,,,,,,,,
+fonts-lato,,,,,,,,,
+fonts-materialdesignicons-webfont,,,,,,,,,
+fonts-roboto-fontface,,,,,,,,,
+fonts-ubuntu-font-family-console,,,,,,,,,
+formencode-i18n,,,,,,,,,
+freeipmi-common,,,,,,,,,
+freeipmi-tools,,,,,,,,,
+friendly-recovery,,,,,,,,,
+ftp,,,,,,,,,
+fuse,,,,,,,,,
+galera-3,System,Galera,mirror,,,25.3.14,25.3.14,,
+gawk,,,,,,,,,
+gcc-5-base,System,Compilers,,,,,,,
+gcc-6-base,System,Compilers,,,,,,,
+gdb,,,,,,,,,
+gdisk,,,,,,,,,
+genisoimage,,,,,,,,,
+geoip-database,,,,,,,,,
+gettext-base,,,,,,,,,
+gir1.2-glib-2.0,,,,,,,,,
+git,System,Git,mirror,,,2.7.4,2.7.4,,
+git-core,System,Git,mirror,,,2.7.4,2.7.4,,
+git-man,System,Git,mirror,,,2.7.4,2.7.4,,
+glance,OpenStack,Glance,mirantis,Queens,,16.0.1-2~u16.04+mcp21,2:16.0.1-2~u16.04+mcp23,,
+glance-api,OpenStack,Glance,mirantis,Queens,,16.0.1-2~u16.04+mcp21,2:16.0.1-2~u16.04+mcp23,,
+glance-common,OpenStack,Glance,mirantis,Queens,,16.0.1-2~u16.04+mcp21,2:16.0.1-2~u16.04+mcp23,,
+glance-registry,OpenStack,Glance,mirantis,Queens,,16.0.1-2~u16.04+mcp21,2:16.0.1-2~u16.04+mcp23,,
+glance-store-common,OpenStack,Glance,,,,,,,
+glusterfs-client,System,GlusterFS,mirror,,,3.8.15,3.8.15,,
+glusterfs-common,System,GlusterFS,mirror,,,3.8.15,3.8.15,,
+glusterfs-server,System,GlusterFS,mirror,,,3.8.15,3.8.15,,
+gnupg,,,,,,,,,
+gpgv,,,,,,,,,
+grep,,,,,,,,,
+groff-base,,,,,,,,,
+grub-common,,,,,,,,,
+grub-gfxpayload-lists,,,,,,,,,
+grub-legacy-ec2,,,,,,,,,
+grub-pc,,,,,,,,,
+grub-pc-bin,,,,,,,,,
+grub2-common,,,,,,,,,
+gzip,,,,,,,,,
+haproxy,System,HAProxy,mirror,,,1.6.3,1.6.3,,
+haveged,,,,,,,,,
+hdparm,,,,,,,,,
+heat-api,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
+heat-api-cfn,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
+heat-common,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
+heat-engine,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
+hostname,,,,,,,,,
+htop,,,,,,,,,
+ieee-data,,,,,,,,,
+ifenslave,,,,,,,,,
+ifenslave-2.6,,,,,,,,,
+ifupdown,,,,,,,,,
+influxdb-relay,,,,,,,,,
+info,,,,,,,,,
+init,,,,,,,,,
+init-system-helpers,,,,,,,,,
+initramfs-tools,,,,,,,,,
+initramfs-tools-bin,,,,,,,,,
+initramfs-tools-core,,,,,,,,,
+initscripts,,,,,,,,,
+insserv,,,,,,,,,
+install-info,,,,,,,,,
+intel-microcode,,,,,,,,,
+iperf,,,,,,,,,
+iperf3,,,,,,,,,
+ipmitool,,,,,,,,,
+iproute2,,,,,,,,,
+ipset,,,,,,,,,
+iptables,System,Firewall,,,,,,,
+iptables-persistent,System,Firewall,,,,,,,
+iputils-arping,,,,,,,,,
+iputils-ping,,,,,,,,,
+iputils-tracepath,,,,,,,,,
+ipxe-qemu,,,,,,,,,
+ipxe-qemu-256k-compat-efi-roms,,,,,,,,,
+irqbalance,,,,,,,,,
+isc-dhcp-client,,,,,,,,,
+isc-dhcp-common,,,,,,,,,
+isc-dhcp-server,,,,,,,,,
+isdct,,,,,,,,,
+iso-codes,,,,,,,,,
+iucode-tool,,,,,,,,,
+iw,,,,,,,,,
+java-common,,,,,,,,,
+javascript-common,,,,,,,,,
+jeepyb,,,,,,,,,
+jenkins,,,,,,,,,
+jq,,,,,,,,,
+kbd,,,,,,,,,
+keepalived,,,,,,,,,
+keyboard-configuration,,,,,,,,,
+keystone,OpenStack,Keystone,mirantis,Queens,,13.0.1-3~u16.04+mcp18,2:13.0.2-3~u16.04+mcp15,,
+kibana,StackLight LMA,Kibana,mirror,,,5.6.12,6.5.2,,
+klibc-utils,,,,,,,,,
+kmod,,,,,,,,,
+kpartx,,,,,,,,,
+krb5-locales,,,,,,,,,
+language-selector-common,,,,,,,,,
+ldap-utils,,,,,,,,,
+ledmon,,,,,,,,,
+less,,,,,,,,,
+libaccountsservice0,,,,,,,,,
+libacl1,,,,,,,,,
+libacl1-dev,,,,,,,,,
+libaio1,,,,,,,,,
+libapache2-mod-wsgi,,,,,,,,,
+libapparmor-perl,System,Virtualization,,,,,,,
+libapparmor1,System,Virtualization,,,,,,,
+libapr1,,,,,,,,,
+libaprutil1,,,,,,,,,
+libaprutil1-dbd-sqlite3,,,,,,,,,
+libaprutil1-ldap,,,,,,,,,
+libapt-inst2.0,,,,,,,,,
+libapt-pkg5.0,,,,,,,,,
+libasn1-8-heimdal,,,,,,,,,
+libasound2,,,,,,,,,
+libasound2-data,,,,,,,,,
+libasprintf0v5,,,,,,,,,
+libasyncns0,,,,,,,,,
+libatk1.0-0,,,,,,,,,
+libatk1.0-data,,,,,,,,,
+libatm1,,,,,,,,,
+libattr1,,,,,,,,,
+libattr1-dev,,,,,,,,,
+libaudit-common,,,,,,,,,
+libaudit1,,,,,,,,,
+libaugeas0,,,,,,,,,
+libavahi-client3,,,,,,,,,
+libavahi-common-data,,,,,,,,,
+libavahi-common3,,,,,,,,,
+libavahi-core7,,,,,,,,,
+libbabeltrace-ctf1,,,,,,,,,
+libbabeltrace1,,,,,,,,,
+libbind9-140,,,,,,,,,
+libblas-common,,,,,,,,,
+libblas3,,,,,,,,,
+libblkid1,,,,,,,,,
+libbluetooth3,,,,,,,,,
+libboost-filesystem1.58.0,,,,,,,,,
+libboost-iostreams1.58.0,,,,,,,,,
+libboost-program-options1.58.0,,,,,,,,,
+libboost-random1.58.0,,,,,,,,,
+libboost-system1.58.0,,,,,,,,,
+libboost-thread1.58.0,,,,,,,,,
+libbrlapi0.6,,,,,,,,,
+libbsd0,,,,,,,,,
+libbz2-1.0,,,,,,,,,
+libc-bin,,,,,,,,,
+libc-dev-bin,,,,,,,,,
+libc6,,,,,,,,,
+libc6-dev,,,,,,,,,
+libcaca0,,,,,,,,,
+libcacard0,,,,,,,,,
+libcairo2,,,,,,,,,
+libcap-ng0,,,,,,,,,
+libcap2,,,,,,,,,
+libcap2-bin,,,,,,,,,
+libcephfs2,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+libcomerr2,,,,,,,,,
+libconfig-general-perl,,,,,,,,,
+libcryptsetup4,,,,,,,,,
+libcups2,,,,,,,,,
+libcurl3,,,,,,,,,
+libcurl3-gnutls,,,,,,,,,
+libdaemon0,,,,,,,,,
+libdatrie1,,,,,,,,,
+libdb5.3,,,,,,,,,
+libdbd-mysql,,,,,,,,,
+libdbd-mysql-perl,,,,,,,,,
+libdbi-perl,,,,,,,,,
+libdbi1,,,,,,,,,
+libdbus-1-3,,,,,,,,,
+libdbus-glib-1-2,,,,,,,,,
+libdebconfclient0,,,,,,,,,
+libdebian-installer4,,,,,,,,,
+libdevmapper-event1.02.1,,,,,,,,,
+libdevmapper1.02.1,,,,,,,,,
+libdns-export162,,,,,,,,,
+libdns162,,,,,,,,,
+libdpkg-perl,,,,,,,,,
+libdrm-amdgpu1,,,,,,,,,
+libdrm-common,,,,,,,,,
+libdrm-intel1,,,,,,,,,
+libdrm-nouveau2,,,,,,,,,
+libdrm-radeon1,,,,,,,,,
+libdrm2,,,,,,,,,
+libdumbnet1,,,,,,,,,
+libeatmydata1,,,,,,,,,
+libecap3,,,,,,,,,
+libedit2,,,,,,,,,
+libelf1,,,,,,,,,
+liberror-perl,,,,,,,,,
+libestr0,,,,,,,,,
+libev4,,,,,,,,,
+libevent-2.0-5,,,,,,,,,
+libexpat1,,,,,,,,,
+libfcgi0ldbl,,,,,,,,,
+libfdisk1,,,,,,,,,
+libfdt1,,,,,,,,,
+libffi6,,,,,,,,,
+libflac8,,,,,,,,,
+libfontconfig1,,,,,,,,,
+libfreeipmi16,,,,,,,,,
+libfreetype6,,,,,,,,,
+libfribidi0,,,,,,,,,
+libfuse2,,,,,,,,,
+libgcc1,,,,,,,,,
+libgcrypt20,,,,,,,,,
+libgd3,,,,,,,,,
+libgdbm3,,,,,,,,,
+libgdk-pixbuf2.0-0,,,,,,,,,
+libgdk-pixbuf2.0-common,,,,,,,,,
+libgeoip1,,,,,,,,,
+libgfortran3,,,,,,,,,
+libgif7,,,,,,,,,
+libgirepository-1.0-1,,,,,,,,,
+libgl1-mesa-dri,,,,,,,,,
+libgl1-mesa-glx,,,,,,,,,
+libglapi-mesa,,,,,,,,,
+libglib2.0-0,,,,,,,,,
+libglib2.0-data,,,,,,,,,
+libgmp10,,,,,,,,,
+libgnutls-openssl27,,,,,,,,,
+libgnutls30,,,,,,,,,
+libgoogle-perftools4,,,,,,,,,
+libgpg-error0,,,,,,,,,
+libgpm2,,,,,,,,,
+libgraphite2-3,,,,,,,,,
+libgssapi-krb5-2,,,,,,,,,
+libgssapi3-heimdal,,,,,,,,,
+libgtk2.0-0,,,,,,,,,
+libgtk2.0-common,,,,,,,,,
+libguestfs0,,,,,,,,,
+libharfbuzz0b,,,,,,,,,
+libhavege1,,,,,,,,,
+libhcrypto4-heimdal,,,,,,,,,
+libheimbase1-heimdal,,,,,,,,,
+libheimntlm0-heimdal,,,,,,,,,
+libhivex0,,,,,,,,,
+libhogweed4,,,,,,,,,
+libhx509-5-heimdal,,,,,,,,,
+libibverbs1,,,,,,,,,
+libicu55,,,,,,,,,
+libidn11,,,,,,,,,
+libiperf0,,,,,,,,,
+libipmiconsole2,,,,,,,,,
+libipmidetect0,,,,,,,,,
+libipset3,,,,,,,,,
+libirs-export141,,,,,,,,,
+libirs141,,,,,,,,,
+libisc-export160,,,,,,,,,
+libisc160,,,,,,,,,
+libisccc140,,,,,,,,,
+libisccfg-export140,,,,,,,,,
+libisccfg140,,,,,,,,,
+libiscsi2,,,,,,,,,
+libjansson4,,,,,,,,,
+libjbig0,,,,,,,,,
+libjpeg-turbo8,,,,,,,,,
+libjpeg8,,,,,,,,,
+libjs-angular-file-upload,System,Web,,,,,,,
+libjs-angular-gettext,System,Web,,,,,,,
+libjs-angularjs,System,Web,,,,,,,
+libjs-angularjs-smart-table,System,Web,,,,,,,
+libjs-bootswatch,System,Web,,,,,,,
+libjs-d3,System,Web,,,,,,,
+libjs-jquery,System,Web,,,,,,,
+libjs-jquery-cookie,System,Web,,,,,,,
+libjs-jquery-metadata,System,Web,,,,,,,
+libjs-jquery-tablesorter,System,Web,,,,,,,
+libjs-jquery-ui,System,Web,,,,,,,
+libjs-jquery.quicksearch,System,Web,,,,,,,
+libjs-jsencrypt,System,Web,,,,,,,
+libjs-lrdragndrop,System,Web,,,,,,,
+libjs-magic-search,System,Web,,,,,,,
+libjs-modernizr,System,Web,,,,,,,
+libjs-rickshaw,System,Web,,,,,,,
+libjs-sphinxdoc,System,Web,,,,,,,
+libjs-spin.js,System,Web,,,,,,,
+libjs-swfobject,System,Web,,,,,,,
+libjs-term.js,System,Web,,,,,,,
+libjs-twitter-bootstrap,System,Web,,,,,,,
+libjs-twitter-bootstrap-datepicker,System,Web,,,,,,,
+libjs-underscore,System,Web,,,,,,,
+libjs-yui3-common,System,Web,,,,,,,
+libjs-yui3-full,System,Web,,,,,,,
+libjs-yui3-min,System,Web,,,,,,,
+libjson-c2,,,,,,,,,
+libk5crypto3,,,,,,,,,
+libkeyutils1,,,,,,,,,
+libklibc,,,,,,,,,
+libkmod2,,,,,,,,,
+libkrb5-26-heimdal,,,,,,,,,
+libkrb5-3,,,,,,,,,
+libkrb5support0,,,,,,,,,
+liblapack3,,,,,,,,,
+liblcms2-2,,,,,,,,,
+libldap-2.4-2,,,,,,,,,
+libleveldb1v5,,,,,,,,,
+libllvm6.0,,,,,,,,,
+liblocale-gettext-perl,,,,,,,,,
+liblockfile-bin,,,,,,,,,
+liblockfile1,,,,,,,,,
+libltdl7,,,,,,,,,
+liblttng-ust-ctl2,,,,,,,,,
+liblttng-ust0,,,,,,,,,
+liblua5.1-0,,,,,,,,,
+liblua5.2-0,,,,,,,,,
+liblua5.3-0,,,,,,,,,
+liblvm2app2.2,,,,,,,,,
+liblvm2cmd2.02,,,,,,,,,
+liblwres141,,,,,,,,,
+liblxc1,,,,,,,,,
+liblz4-1,,,,,,,,,
+liblzma5,,,,,,,,,
+liblzo2-2,,,,,,,,,
+libmagic1,,,,,,,,,
+libmnl0,,,,,,,,,
+libmount1,,,,,,,,,
+libmpdec2,,,,,,,,,
+libmpfr4,,,,,,,,,
+libmspack0,,,,,,,,,
+libmysqlclient-dev,,,,,,,,,
+libmysqlclient20,,,,,,,,,
+libncurses5,,,,,,,,,
+libncursesw5,,,,,,,,,
+libnetcf1,,,,,,,,,
+libnetfilter-conntrack3,,,,,,,,,
+libnettle6,,,,,,,,,
+libnewt0.52,,,,,,,,,
+libnfnetlink0,,,,,,,,,
+libnih1,,,,,,,,,
+libnl-3-200,,,,,,,,,
+libnl-genl-3-200,,,,,,,,,
+libnl-route-3-200,,,,,,,,,
+libnspr4,,,,,,,,,
+libnss3,,,,,,,,,
+libnss3-nssdb,,,,,,,,,
+libnuma1,,,,,,,,,
+libodbc1,,,,,,,,,
+libogg0,,,,,,,,,
+libonig2,,,,,,,,,
+libopenipmi0,,,,,,,,,
+libopts25,,,,,,,,,
+libopus0,,,,,,,,,
+libp11-kit0,,,,,,,,,
+libpam-modules,,,,,,,,,
+libpam-modules-bin,,,,,,,,,
+libpam-runtime,,,,,,,,,
+libpam-systemd,,,,,,,,,
+libpam0g,,,,,,,,,
+libpango-1.0-0,,,,,,,,,
+libpangocairo-1.0-0,,,,,,,,,
+libpangoft2-1.0-0,,,,,,,,,
+libparted2,,,,,,,,,
+libpcap0.8,,,,,,,,,
+libpci3,,,,,,,,,
+libpciaccess0,,,,,,,,,
+libpcre3,,,,,,,,,
+libpcrecpp0v5,,,,,,,,,
+libpcsclite1,,,,,,,,,
+libperl5.22,,,,,,,,,
+libpipeline1,,,,,,,,,
+libpixman-1-0,,,,,,,,,
+libplymouth4,,,,,,,,,
+libpng12-0,,,,,,,,,
+libpolkit-agent-1-0,,,,,,,,,
+libpolkit-backend-1-0,,,,,,,,,
+libpolkit-gobject-1-0,,,,,,,,,
+libpopt0,,,,,,,,,
+libpq5,,,,,,,,,
+libprocps4,,,,,,,,,
+libpulse0,,,,,,,,,
+libpython-stdlib,System,Python,,,,,,,
+libpython2.7,System,Python,,,,,,,
+libpython2.7-minimal,System,Python,,,,,,,
+libpython2.7-stdlib,System,Python,,,,,,,
+libpython3-stdlib,System,Python,,,,,,,
+libpython3.5,System,Python,,,,,,,
+libpython3.5-minimal,System,Python,,,,,,,
+libpython3.5-stdlib,System,Python,,,,,,,
+libquadmath0,,,,,,,,,
+librados2,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+libradosstriper1,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+librbd1,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+librdmacm1,,,,,,,,,
+libreadline5,,,,,,,,,
+libreadline6,,,,,,,,,
+librgw2,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+libroken18-heimdal,,,,,,,,,
+librtmp1,,,,,,,,,
+libruby2.3,,,,,,,,,
+libsasl2-2,,,,,,,,,
+libsasl2-modules,,,,,,,,,
+libsasl2-modules-db,,,,,,,,,
+libsdl1.2debian,,,,,,,,,
+libseccomp2,,,,,,,,,
+libselinux1,,,,,,,,,
+libsemanage-common,,,,,,,,,
+libsemanage1,,,,,,,,,
+libsensors4,,,,,,,,,
+libsepol1,,,,,,,,,
+libsgutils2-2,,,,,,,,,
+libsigsegv2,,,,,,,,,
+libslang2,,,,,,,,,
+libsmartcols1,,,,,,,,,
+libsnappy1v5,,,,,,,,,
+libsndfile1,,,,,,,,,
+libsnmp-base,,,,,,,,,
+libsnmp30,,,,,,,,,
+libsodium18,,,,,,,,,
+libspice-server1,,,,,,,,,
+libsqlite3-0,,,,,,,,,
+libss2,,,,,,,,,
+libssh2-1,,,,,,,,,
+libssl1.0.0,,,,,,,,,
+libstdc++6,,,,,,,,,
+libsubunit-perl,,,,,,,,,
+libsysfs2,,,,,,,,,
+libsystemd0,,,,,,,,,
+libtasn1-6,,,,,,,,,
+libtcl8.6,,,,,,,,,
+libtcmalloc-minimal4,,,,,,,,,
+libtext-charwidth-perl,,,,,,,,,
+libtext-iconv-perl,,,,,,,,,
+libtext-wrapi18n-perl,,,,,,,,,
+libthai-data,,,,,,,,,
+libthai0,,,,,,,,,
+libtiff5,,,,,,,,,
+libtinfo5,,,,,,,,,
+libudev1,,,,,,,,,
+libunwind8,,,,,,,,,
+liburcu4,,,,,,,,,
+libusb-0.1-4,,,,,,,,,
+libusb-1.0-0,,,,,,,,,
+libusbredirparser1,,,,,,,,,
+libustr-1.0-1,,,,,,,,,
+libutempter0,,,,,,,,,
+libuuid1,,,,,,,,,
+libv8-3.14.5,,,,,,,,,
+libvirt-bin,Hypervisors,libvirt,mirantis,,,4.0.0-1.7~u16.04+mcp3,4.0.0-1.8.5~u16.04+mcp1,,
+libvirt-clients,Hypervisors,libvirt,mirantis,,,4.0.0-1.7~u16.04+mcp3,4.0.0-1.8.5~u16.04+mcp1,,
+libvirt-daemon,Hypervisors,libvirt,mirantis,,,4.0.0-1.7~u16.04+mcp3,4.0.0-1.8.5~u16.04+mcp1,,
+libvirt-daemon-system,Hypervisors,libvirt,mirantis,,,4.0.0-1.7~u16.04+mcp3,4.0.0-1.8.5~u16.04+mcp1,,
+libvirt-dev,Hypervisors,libvirt,mirantis,,,4.0.0-1.7~u16.04+mcp3,4.0.0-1.8.5~u16.04+mcp1,,
+libvirt-exporter,Hypervisors,libvirt,,,,,,,
+libvirt0,Hypervisors,libvirt,mirantis,,,4.0.0-1.7~u16.04+mcp3,4.0.0-1.8.5~u16.04+mcp1,,
+libvorbis0a,,,,,,,,,
+libvorbisenc2,,,,,,,,,
+libvpx3,,,,,,,,,
+libwind0-heimdal,,,,,,,,,
+libwrap0,,,,,,,,,
+libx11-6,,,,,,,,,
+libx11-data,,,,,,,,,
+libx11-xcb1,,,,,,,,,
+libxau6,,,,,,,,,
+libxcb-dri2-0,,,,,,,,,
+libxcb-dri3-0,,,,,,,,,
+libxcb-glx0,,,,,,,,,
+libxcb-present0,,,,,,,,,
+libxcb-render0,,,,,,,,,
+libxcb-shm0,,,,,,,,,
+libxcb-sync1,,,,,,,,,
+libxcb1,,,,,,,,,
+libxcomposite1,,,,,,,,,
+libxcursor1,,,,,,,,,
+libxdamage1,,,,,,,,,
+libxdmcp6,,,,,,,,,
+libxen-4.6,,,,,,,,,
+libxen-dev,,,,,,,,,
+libxenstore3.0,,,,,,,,,
+libxext6,,,,,,,,,
+libxfixes3,,,,,,,,,
+libxi6,,,,,,,,,
+libxinerama1,,,,,,,,,
+libxml2,,,,,,,,,
+libxmlsec1,,,,,,,,,
+libxmlsec1-openssl,,,,,,,,,
+libxmuu1,,,,,,,,,
+libxpm4,,,,,,,,,
+libxrandr2,,,,,,,,,
+libxrender1,,,,,,,,,
+libxshmfence1,,,,,,,,,
+libxslt1.1,,,,,,,,,
+libxtables11,,,,,,,,,
+libxtst6,,,,,,,,,
+libxxf86vm1,,,,,,,,,
+libyajl2,,,,,,,,,
+libyaml-0-2,,,,,,,,,
+libyaml-cpp0.5v5,,,,,,,,,
+libzmq5,,,,,,,,,
+linux-base,System,Base OS,,,,,,,
+linux-firmware,System,Base OS,,,,,,,
+linux-generic-hwe-16.04,System,Base OS,mirror,,,4.15.0.36.59,4.15.0.43.64,,
+linux-headers-4.15.0-36,System,Base OS,,,,,,,
+linux-headers-4.15.0-36-generic,System,Base OS,,,,,,,
+linux-headers-4.15.0-43,System,Base OS,,,,,,,
+linux-headers-4.15.0-43-generic,System,Base OS,,,,,,,
+linux-headers-4.15.0-45,System,Base OS,,,,,,,
+linux-headers-4.15.0-45-generic,System,Base OS,,,,,,,
+linux-headers-4.4.0-137,System,Base OS,,,,,,,
+linux-headers-4.4.0-137-generic,System,Base OS,,,,,,,
+linux-headers-generic,System,Base OS,,,,,,,
+linux-headers-generic-hwe-16.04,System,Base OS,mirror,,,4.15.0.36.59,4.15.0.43.64,,
+linux-headers-virtual-hwe-16.04,System,Base OS,mirror,,,4.15.0.36.59,4.15.0.43.64,,
+linux-image-4.15.0-36-generic,System,Base OS,,,,,,,
+linux-image-4.15.0-43-generic,System,Base OS,,,,,,,
+linux-image-4.15.0-45-generic,System,Base OS,,,,,,,
+linux-image-4.4.0-130-generic,System,Base OS,,,,,,,
+linux-image-4.4.0-137-generic,System,Base OS,,,,,,,
+linux-image-extra-4.4.0-130-generic,System,Base OS,,,,,,,
+linux-image-extra-4.4.0-137-generic,System,Base OS,,,,,,,
+linux-image-extra-virtual,System,Base OS,,,,,,,
+linux-image-extra-virtual-hwe-16.04,System,Base OS,mirror,,,4.15.0.36.59,4.15.0.43.64,,
+linux-image-extra-virtual-lts-xenial,System,Base OS,,,,,,,
+linux-image-generic,System,Base OS,,,,,,,
+linux-image-generic-hwe-16.04,System,Base OS,mirror,,,4.15.0.36.59,4.15.0.43.64,,
+linux-image-virtual,System,Base OS,,,,,,,
+linux-image-virtual-hwe-16.04,System,Base OS,mirror,,,4.15.0.36.59,4.15.0.43.64,,
+linux-image-virtual-lts-xenial,System,Base OS,,,,,,,
+linux-libc-dev,System,Base OS,,,,,,,
+linux-modules-4.15.0-36-generic,System,Base OS,,,,,,,
+linux-modules-4.15.0-43-generic,System,Base OS,,,,,,,
+linux-modules-4.15.0-45-generic,System,Base OS,,,,,,,
+linux-modules-extra-4.15.0-36-generic,System,Base OS,,,,,,,
+linux-modules-extra-4.15.0-43-generic,System,Base OS,,,,,,,
+linux-modules-extra-4.15.0-45-generic,System,Base OS,,,,,,,
+linux-signed-generic,System,Base OS,,,,,,,
+linux-signed-generic-hwe-16.04,System,Base OS,mirror,,,4.15.0.36.59,4.15.0.43.64,,
+linux-signed-image-4.4.0-137-generic,System,Base OS,,,,,,,
+linux-signed-image-generic,System,Base OS,,,,,,,
+locales,,,,,,,,,
+login,,,,,,,,,
+logrotate,,,,,,,,,
+lsb-base,,,,,,,,,
+lsb-release,,,,,,,,,
+lshw,,,,,,,,,
+lsof,,,,,,,,,
+lsscsi,,,,,,,,,
+ltrace,,,,,,,,,
+lvm2,,,,,,,,,
+lxc-common,,,,,,,,,
+lxcfs,,,,,,,,,
+lxd,,,,,,,,,
+lxd-client,,,,,,,,,
+lzop,,,,,,,,,
+maas,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-cli,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-common,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-dhcp,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-dns,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-proxy,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-rack-controller,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-region-api,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+maas-region-controller,DriveTrain,MAAS,mirror,,,2.3.5,2.3.5,,
+make,,,,,,,,,
+makedev,,,,,,,,,
+man-db,,,,,,,,,
+manpages,,,,,,,,,
+mawk,,,,,,,,,
+mc,,,,,,,,,
+mc-data,,,,,,,,,
+mcelog,,,,,,,,,
+mdadm,,,,,,,,,
+memcached,,,,,,,,,
+memtest86+,,,,,,,,,
+mime-support,,,,,,,,,
+minicom,,,,,,,,,
+mlocate,,,,,,,,,
+mongodb,StackLight LMA,MongoDB,mirror,,,2.6.10,2.6.10,,
+mongodb-clients,StackLight LMA,MongoDB,mirror,,,2.6.10,2.6.10,,
+mongodb-server,StackLight LMA,MongoDB,mirror,,,2.6.10,2.6.10,,
+mount,,,,,,,,,
+mtools,,,,,,,,,
+mtr-tiny,,,,,,,,,
+multiarch-support,,,,,,,,,
+mysql-client,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+mysql-common,System,MySQL,,,,,,,
+mysql-wsrep-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+mysql-wsrep-client-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+mysql-wsrep-common-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+mysql-wsrep-libmysqlclient18,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+mysql-wsrep-server-5.6,System,MySQL,mirror,,,5.6.35,5.6.35-0.1~u16.04+mcp2 [5],,
+nano,,,,,,,,,
+ncurses-base,,,,,,,,,
+ncurses-bin,,,,,,,,,
+ncurses-term,,,,,,,,,
+net-tools,,,,,,,,,
+netbase,,,,,,,,,
+netcat-openbsd,,,,,,,,,
+netfilter-persistent,,,,,,,,,
+neutron-common,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+neutron-dhcp-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+neutron-l3-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+neutron-metadata-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+neutron-openvswitch-agent,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+neutron-plugin-ml2,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+neutron-server,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+nginx,System,NGINX,mirror,,,1.10.3,1.10.3,,
+nginx-common,System,NGINX,mirror,,,1.10.3,1.10.3,,
+nginx-core,System,NGINX,mirror,,,1.10.3,1.10.3,,
+nova-api,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-common,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-compute,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-compute-kvm,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-conductor,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-consoleauth,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-consoleproxy,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-doc,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-placement-api,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+nova-scheduler,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+novnc,,,,,,,,,
+ntfs-3g,,,,,,,,,
+ntp,,,,,,,,,
+nvme-cli,,,,,,,,,
+octavia-api,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+octavia-common,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+octavia-health-manager,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+octavia-housekeeping,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+octavia-worker,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+open-iscsi,,,,,,,,,
+open-vm-tools,,,,,,,,,
+openipmi,,,,,,,,,
+openjdk-8-jdk-headless,System,Java,,,,,,,
+openjdk-8-jre,System,Java,,,,,,,
+openjdk-8-jre-headless,System,Java,,,,,,,
+openssh-client,System,SSH,,,,,,,
+openssh-server,System,SSH,,,,,,,
+openssh-sftp-server,System,SSH,,,,,,,
+openssl,System,SSL,,,,,,,
+openstack-dashboard,OpenStack,Horizon,mirantis,Queens,,13.0.1-9~u16.04+mcp,3:13.0.1-10~u16.04+mcp70 [5],,
+openvswitch-common,System,Open vSwitch,mirantis,,,,,,
+openvswitch-switch,System,Open vSwitch,mirantis,,,,,,
+os-brick-common,,,,,,,,,
+os-prober,,,,,,,,,
+overlayroot,,,,,,,,,
+p7zip,,,,,,,,,
+parted,,,,,,,,,
+passwd,,,,,,,,,
+pastebinit,,,,,,,,,
+patch,,,,,,,,,
+pciutils,,,,,,,,,
+percona-xtrabackup,,,,,,,,,
+perl,,,,,,,,,
+perl-base,,,,,,,,,
+perl-modules-5.22,,,,,,,,,
+pkg-config,,,,,,,,,
+plotnetcfg,,,,,,,,,
+plymouth,,,,,,,,,
+plymouth-theme-ubuntu-text,,,,,,,,,
+pm-utils,,,,,,,,,
+policykit-1,,,,,,,,,
+pollinate,,,,,,,,,
+popularity-contest,,,,,,,,,
+postfix,,,,,,,,,
+postgresql,System,PostgreSQL,,,,,,,
+postgresql-9.5,System,PostgreSQL,,,,,,,
+postgresql-client,System,PostgreSQL,,,,,,,
+postgresql-client-9.5,System,PostgreSQL,,,,,,,
+postgresql-client-common,System,PostgreSQL,,,,,,,
+postgresql-common,System,PostgreSQL,,,,,,,
+postgresql-contrib-9.5,System,PostgreSQL,,,,,,,
+postgresql-doc-9.5,System,PostgreSQL,,,,,,,
+powermgmt-base,,,,,,,,,
+procps,,,,,,,,,
+prometheus-bin,StackLight LMA,Prometheus,mirror,,,2.2.1,2.5.0,,
+prometheus-relay,,,,,,,,,
+psmisc,,,,,,,,,
+pxelinux,,,,,,,,,
+pycadf-common,,,,,,,,,
+python,,,,,,,,,
+python-alabaster,,,,,,,,,
+python-alembic,,,,,,,,,
+python-amqp,,,,,,,,,
+python-anyjson,,,,,,,,,
+python-aodhclient,,,,,,,,,
+python-appdirs,,,,,,,,,
+python-apt,,,,,,,,,
+python-apt-common,,,,,,,,,
+python-asn1crypto,,,,,,,,,
+python-automaton,,,,,,,,,
+python-babel,,,,,,,,,
+python-babel-localedata,,,,,,,,,
+python-backports-abc,,,,,,,,,
+python-backports.ssl-match-hostname,,,,,,,,,
+python-barbicanclient,,,,,,,,,
+python-bcrypt,,,,,,,,,
+python-blinker,,,,,,,,,
+python-boto,,,,,,,,,
+python-bs4,,,,,,,,,
+python-bson,,,,,,,,,
+python-cachetools,,,,,,,,,
+python-castellan,,,,,,,,,
+python-ceilometerclient,,,,,,,,,
+python-cephfs,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+python-certifi,,,,,,,,,
+python-cffi,,,,,,,,,
+python-cffi-backend,,,,,,,,,
+python-chardet,,,,,,,,,
+python-cherrypy3,,,,,,,,,
+python-cinder,,,,,,,,,
+python-cinderclient,,,,,,,,,
+python-cliff,,,,,,,,,
+python-cmd2,,,,,,,,,
+python-concurrent.futures,,,,,,,,,
+python-contextlib2,,,,,,,,,
+python-cotyledon,,,,,,,,,
+python-croniter,,,,,,,,,
+python-crypto,,,,,,,,,
+python-cryptography,,,,,,,,,
+python-csscompressor,,,,,,,,,
+python-cursive,,,,,,,,,
+python-dateutil,,,,,,,,,
+python-dbus,,,,,,,,,
+python-debtcollector,,,,,,,,,
+python-decorator,,,,,,,,,
+python-defusedxml,,,,,,,,,
+python-deprecation,,,,,,,,,
+python-designateclient,,,,,,,,,
+python-dib-utils,,,,,,,,,
+python-diskimage-builder,,,,,,,,,
+python-django,,,,,,,,,
+python-django-appconf,,,,,,,,,
+python-django-babel,,,,,,,,,
+python-django-common,,,,,,,,,
+python-django-compressor,,,,,,,,,
+python-django-horizon,OpenStack,Horizon,mirantis,Queens,,13.0.1-9~u16.04+mcp,3:13.0.1-10~u16.04+mcp70 [5],,
+python-django-pyscss,,,,,,,,,
+python-dnspython,,,,,,,,,
+python-docker,,,,,,,,,
+python-docutils,,,,,,,,,
+python-dogpile.cache,,,,,,,,,
+python-elasticsearch,,,,,,,,,
+python-enum34,,,,,,,,,
+python-eventlet,,,,,,,,,
+python-extras,,,,,,,,,
+python-fasteners,,,,,,,,,
+python-fixtures,,,,,,,,,
+python-flask,,,,,,,,,
+python-fluent-logger,,,,,,,,,
+python-formencode,,,,,,,,,
+python-funcsigs,,,,,,,,,
+python-functools32,,,,,,,,,
+python-futurist,,,,,,,,,
+python-gerritlib,,,,,,,,,
+python-github,,,,,,,,,
+python-glance,OpenStack,Glance,mirantis,Queens,,16.0.1-2~u16.04+mcp21,2:16.0.1-2~u16.04+mcp23,,
+python-glance-store,OpenStack,Glance,,,,,,,
+python-glanceclient,OpenStack,Glance,,,,,,,
+python-gnocchiclient,,,,,,,,,
+python-googleapi,,,,,,,,,
+python-greenlet,,,,,,,,,
+python-guestfs,,,,,,,,,
+python-gunicorn,,,,,,,,,
+python-heat,OpenStack,Heat,mirantis,Queens,,10.0.2-1.0~u16.04+mcp37,1:10.0.2-1.0~u16.04+mcp54 [5],,
+python-heat-dashboard,,,,,,,,,
+python-heatclient,,,,,,,,,
+python-httplib2,,,,,,,,,
+python-idna,,,,,,,,,
+python-imagesize,,,,,,,,,
+python-ipaddr,,,,,,,,,
+python-ipaddress,,,,,,,,,
+python-iso8601,,,,,,,,,
+python-itsdangerous,,,,,,,,,
+python-jenkins,,,,,,,,,
+python-jinja2,,,,,,,,,
+python-jmespath,,,,,,,,,
+python-json-pointer,,,,,,,,,
+python-jsonpatch,,,,,,,,,
+python-jsonschema,,,,,,,,,
+python-jwt,,,,,,,,,
+python-kazoo,,,,,,,,,
+python-keyring,,,,,,,,,
+python-keystone,OpenStack,Keystone,mirantis,Queens,,13.0.1-3~u16.04+mcp18,2:13.0.2-3~u16.04+mcp15,,
+python-keystoneauth1,,,,,,,,,
+python-keystoneclient,,,,,,,,,
+python-keystonemiddleware,,,,,,,,,
+python-kombu,,,,,,,,,
+python-ldap,,,,,,,,,
+python-ldappool,,,,,,,,,
+python-lesscpy,,,,,,,,,
+python-libvirt,,,,,,,,,
+python-linecache2,,,,,,,,,
+python-logutils,,,,,,,,,
+python-lxml,,,,,,,,,
+python-m2crypto,,,,,,,,,
+python-magnumclient,,,,,,,,,
+python-mako,,,,,,,,,
+python-manilaclient,,,,,,,,,
+python-markupsafe,,,,,,,,,
+python-memcache,,,,,,,,,
+python-microversion-parse,,,,,,,,,
+python-migrate,,,,,,,,,
+python-mimeparse,,,,,,,,,
+python-minimal,,,,,,,,,
+python-mistralclient,,,,,,,,,
+python-mock,,,,,,,,,
+python-monascaclient,,,,,,,,,
+python-monotonic,,,,,,,,,
+python-msgpack,,,,,,,,,
+python-multi-key-dict,,,,,,,,,
+python-munch,,,,,,,,,
+python-mysqldb,,,,,,,,,
+python-ndg-httpsclient,,,,,,,,,
+python-netaddr,,,,,,,,,
+python-netifaces,,,,,,,,,
+python-networkx,,,,,,,,,
+python-neutron,OpenStack Networking,Neutron,mirantis,Queens,,12.0.5-5~u16.04+mcp62,2:12.0.5-5~u16.04+mcp93 [5],,
+python-neutron-fwaas,,,,,,,,,
+python-neutron-lbaas,,,,,,,,,
+python-neutron-lib,,,,,,,,,
+python-neutronclient,,,,,,,,,
+python-nova,OpenStack,Nova,mirantis,Queens,,17.0.7-6~u16.01+mcp90,2:17.0.9-6~u16.01+mcp93 [5],,
+python-novaclient,,,,,,,,,
+python-novnc,,,,,,,,,
+python-numpy,,,,,,,,,
+python-oauth,,,,,,,,,
+python-oauth2client,,,,,,,,,
+python-oauthlib,,,,,,,,,
+python-octavia,OpenStack Networking,Octavia,mirantis,Queens,,2.0.2-6~u16.04+mcp62,2.0.2-6~u16.04+mcp69 [5],,
+python-octavia-dashboard,,,,,,,,,
+python-octaviaclient,,,,,,,,,
+python-openssl,,,,,,,,,
+python-openstackclient,OpenStack,Other,,,,,,,
+python-openstacksdk,OpenStack,Other,,,,,,,
+python-openvswitch,System,Open vSwitch,mirantis,,,2.8.0-4~u16.04+mcp1,2.8.0-4~u16.04+mcp1,,
+python-os-brick,,,,,,,,,
+python-os-client-config,,,,,,,,,
+python-os-service-types,,,,,,,,,
+python-os-traits,,,,,,,,,
+python-os-vif,,,,,,,,,
+python-os-win,,,,,,,,,
+python-os-xenapi,,,,,,,,,
+python-osc-lib,,,,,,,,,
+python-oslo.cache,,,,,,,,,
+python-oslo.concurrency,,,,,,,,,
+python-oslo.config,,,,,,,,,
+python-oslo.context,,,,,,,,,
+python-oslo.db,,,,,,,,,
+python-oslo.i18n,,,,,,,,,
+python-oslo.log,,,,,,,,,
+python-oslo.messaging,,,,,,,,,
+python-oslo.middleware,,,,,,,,,
+python-oslo.policy,,,,,,,,,
+python-oslo.privsep,,,,,,,,,
+python-oslo.reports,,,,,,,,,
+python-oslo.rootwrap,,,,,,,,,
+python-oslo.serialization,,,,,,,,,
+python-oslo.service,,,,,,,,,
+python-oslo.utils,,,,,,,,,
+python-oslo.versionedobjects,,,,,,,,,
+python-oslo.vmware,,,,,,,,,
+python-osprofiler,,,,,,,,,
+python-ovsdbapp,,,,,,,,,
+python-paramiko,,,,,,,,,
+python-passlib,,,,,,,,,
+python-paste,,,,,,,,,
+python-pastedeploy,,,,,,,,,
+python-pastedeploy-tpl,,,,,,,,,
+python-pathlib,,,,,,,,,
+python-pbr,,,,,,,,,
+python-pecan,,,,,,,,,
+python-pika,,,,,,,,,
+python-pika-pool,,,,,,,,,
+python-pint,,,,,,,,,
+python-pip,,,,,,,,,
+python-pip-whl,,,,,,,,,
+python-pkg-resources,,,,,,,,,
+python-pkginfo,,,,,,,,,
+python-ply,,,,,,,,,
+python-positional,,,,,,,,,
+python-posix-ipc,,,,,,,,,
+python-prettytable,,,,,,,,,
+python-psutil,,,,,,,,,
+python-psycopg2,,,,,,,,,
+python-pyasn1,,,,,,,,,
+python-pyasn1-modules,,,,,,,,,
+python-pycadf,,,,,,,,,
+python-pycparser,,,,,,,,,
+python-pycurl,,,,,,,,,
+python-pygerrit2,,,,,,,,,
+python-pygments,,,,,,,,,
+python-pyinotify,,,,,,,,,
+python-pyldap,,,,,,,,,
+python-pymemcache,,,,,,,,,
+python-pymongo,,,,,,,,,
+python-pymysql,,,,,,,,,
+python-pyparsing,,,,,,,,,
+python-pypowervm,,,,,,,,,
+python-pyroute2,,,,,,,,,
+python-pyrss2gen,,,,,,,,,
+python-pysaml2,,,,,,,,,
+python-pyscss,,,,,,,,,
+python-rados,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+python-rbd,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+python-rcssmin,,,,,,,,,
+python-reclass,DriveTrain,Reclass,,,,1.5.1-1tcp4,1.5.6-1.0~u16.04+mcp0,,
+python-redis,,,,,,,,,
+python-repoze.lru,,,,,,,,,
+python-requests,,,,,,,,,
+python-requestsexceptions,,,,,,,,,
+python-retrying,,,,,,,,,
+python-rfc3986,,,,,,,,,
+python-rgw,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+python-rjsmin,,,,,,,,,
+python-roman,,,,,,,,,
+python-routes,,,,,,,,,
+python-rsa,,,,,,,,,
+python-rtslib-fb,,,,,,,,,
+python-ryu,,,,,,,,,
+python-saharaclient,,,,,,,,,
+python-scrypt,,,,,,,,,
+python-semantic-version,,,,,,,,,
+python-senlinclient,,,,,,,,,
+python-setproctitle,,,,,,,,,
+python-setuptools,,,,,,,,,
+python-simplegeneric,,,,,,,,,
+python-simplejson,,,,,,,,,
+python-singledispatch,,,,,,,,,
+python-six,,,,,,,,,
+python-sphinx,,,,,,,,,
+python-sqlalchemy,,,,,,,,,
+python-sqlparse,,,,,,,,,
+python-statsd,,,,,,,,,
+python-stevedore,,,,,,,,,
+python-subunit,,,,,,,,,
+python-suds,,,,,,,,,
+python-swiftclient,,,,,,,,,
+python-systemd,,,,,,,,,
+python-taskflow,,,,,,,,,
+python-tempita,,,,,,,,,
+python-tenacity,,,,,,,,,
+python-testtools,,,,,,,,,
+python-tinyrpc,,,,,,,,,
+python-tooz,,,,,,,,,
+python-tornado,,,,,,,,,
+python-traceback2,,,,,,,,,
+python-troveclient,,,,,,,,,
+python-typing,,,,,,,,,
+python-tz,,,,,,,,,
+python-ujson,,,,,,,,,
+python-unicodecsv,,,,,,,,,
+python-unittest2,,,,,,,,,
+python-uritemplate,,,,,,,,,
+python-urllib3,,,,,,,,,
+python-vine,,,,,,,,,
+python-voluptuous,,,,,,,,,
+python-waitress,,,,,,,,,
+python-warlock,,,,,,,,,
+python-weakrefmethod,,,,,,,,,
+python-webob,,,,,,,,,
+python-websocket,,,,,,,,,
+python-websockify,,,,,,,,,
+python-webtest,,,,,,,,,
+python-werkzeug,,,,,,,,,
+python-wrapt,,,,,,,,,
+python-wsme,,,,,,,,,
+python-xstatic,,,,,,,,,
+python-xstatic-angular,,,,,,,,,
+python-xstatic-angular-bootstrap,,,,,,,,,
+python-xstatic-angular-fileupload,,,,,,,,,
+python-xstatic-angular-gettext,,,,,,,,,
+python-xstatic-angular-lrdragndrop,,,,,,,,,
+python-xstatic-angular-schema-form,,,,,,,,,
+python-xstatic-bootstrap-datepicker,,,,,,,,,
+python-xstatic-bootstrap-scss,,,,,,,,,
+python-xstatic-bootswatch,,,,,,,,,
+python-xstatic-d3,,,,,,,,,
+python-xstatic-font-awesome,,,,,,,,,
+python-xstatic-hogan,,,,,,,,,
+python-xstatic-jasmine,,,,,,,,,
+python-xstatic-jquery,,,,,,,,,
+python-xstatic-jquery-migrate,,,,,,,,,
+python-xstatic-jquery-ui,,,,,,,,,
+python-xstatic-jquery.quicksearch,,,,,,,,,
+python-xstatic-jquery.tablesorter,,,,,,,,,
+python-xstatic-jsencrypt,,,,,,,,,
+python-xstatic-magic-search,,,,,,,,,
+python-xstatic-mdi,,,,,,,,,
+python-xstatic-objectpath,,,,,,,,,
+python-xstatic-rickshaw,,,,,,,,,
+python-xstatic-roboto-fontface,,,,,,,,,
+python-xstatic-smart-table,,,,,,,,,
+python-xstatic-spin,,,,,,,,,
+python-xstatic-term.js,,,,,,,,,
+python-xstatic-tv4,,,,,,,,,
+python-yaml,,,,,,,,,
+python-yaql,,,,,,,,,
+python-zake,,,,,,,,,
+python-zaqarclient,,,,,,,,,
+python-zmq,,,,,,,,,
+python-zope.interface,,,,,,,,,
+python-zunclient,,,,,,,,,
+python2.7,,,,,,,,,
+python2.7-minimal,,,,,,,,,
+python3,,,,,,,,,
+python3-alabaster,,,,,,,,,
+python3-apport,,,,,,,,,
+python3-apt,,,,,,,,,
+python3-asn1crypto,,,,,,,,,
+python3-attr,,,,,,,,,
+python3-babel,,,,,,,,,
+python3-blinker,,,,,,,,,
+python3-bson,,,,,,,,,
+python3-certifi,,,,,,,,,
+python3-cffi,,,,,,,,,
+python3-cffi-backend,,,,,,,,,
+python3-chardet,,,,,,,,,
+python3-commandnotfound,,,,,,,,,
+python3-configobj,,,,,,,,,
+python3-convoy,,,,,,,,,
+python3-crochet,,,,,,,,,
+python3-crypto,,,,,,,,,
+python3-cryptography,,,,,,,,,
+python3-curtin,,,,,,,,,
+python3-dbus,,,,,,,,,
+python3-debian,,,,,,,,,
+python3-distro-info,,,,,,,,,
+python3-distupgrade,,,,,,,,,
+python3-django,,,,,,,,,
+python3-django-maas,,,,,,,,,
+python3-django-piston3,,,,,,,,,
+python3-djorm-ext-pgarray,,,,,,,,,
+python3-dnspython,,,,,,,,,
+python3-docutils,,,,,,,,,
+python3-ecdsa,,,,,,,,,
+python3-extras,,,,,,,,,
+python3-fixtures,,,,,,,,,
+python3-formencode,,,,,,,,,
+python3-gdbm,,,,,,,,,
+python3-gi,,,,,,,,,
+python3-httplib2,,,,,,,,,
+python3-idna,,,,,,,,,
+python3-imagesize,,,,,,,,,
+python3-iso8601,,,,,,,,,
+python3-jinja2,,,,,,,,,
+python3-json-pointer,,,,,,,,,
+python3-jsonpatch,,,,,,,,,
+python3-jsonschema,,,,,,,,,
+python3-jwt,,,,,,,,,
+python3-linecache2,,,,,,,,,
+python3-lxml,,,,,,,,,
+python3-maas-client,,,,,,,,,
+python3-maas-provisioningserver,,,,,,,,,
+python3-markupsafe,,,,,,,,,
+python3-mimeparse,,,,,,,,,
+python3-minimal,,,,,,,,,
+python3-netaddr,,,,,,,,,
+python3-netifaces,,,,,,,,,
+python3-newt,,,,,,,,,
+python3-oauth,,,,,,,,,
+python3-oauthlib,,,,,,,,,
+python3-openssl,,,,,,,,,
+python3-paramiko,,,,,,,,,
+python3-pbr,,,,,,,,,
+python3-petname,,,,,,,,,
+python3-pexpect,,,,,,,,,
+python3-pkg-resources,,,,,,,,,
+python3-ply,,,,,,,,,
+python3-prettytable,,,,,,,,,
+python3-problem-report,,,,,,,,,
+python3-psycopg2,,,,,,,,,
+python3-ptyprocess,,,,,,,,,
+python3-pyasn1,,,,,,,,,
+python3-pyasn1-modules,,,,,,,,,
+python3-pycparser,,,,,,,,,
+python3-pycurl,,,,,,,,,
+python3-pygments,,,,,,,,,
+python3-pyparsing,,,,,,,,,
+python3-pyvmomi,,,,,,,,,
+python3-requests,,,,,,,,,
+python3-roman,,,,,,,,,
+python3-seamicroclient,,,,,,,,,
+python3-serial,,,,,,,,,
+python3-service-identity,,,,,,,,,
+python3-simplejson,,,,,,,,,
+python3-simplestreams,,,,,,,,,
+python3-six,,,,,,,,,
+python3-software-properties,,,,,,,,,
+python3-sphinx,,,,,,,,,
+python3-sphinx-rtd-theme,,,,,,,,,
+python3-subunit,,,,,,,,,
+python3-systemd,,,,,,,,,
+python3-tempita,,,,,,,,,
+python3-testtools,,,,,,,,,
+python3-traceback2,,,,,,,,,
+python3-twisted,,,,,,,,,
+python3-txtftp,,,,,,,,,
+python3-tz,,,,,,,,,
+python3-unittest2,,,,,,,,,
+python3-update-manager,,,,,,,,,
+python3-urllib3,,,,,,,,,
+python3-virtualenv,,,,,,,,,
+python3-yaml,,,,,,,,,
+python3-zope.interface,,,,,,,,,
+python3.5,,,,,,,,,
+python3.5-minimal,,,,,,,,,
+qemu-block-extra,Hypervisors,qemu,mirantis,,,2.11+dfsg-1.4~u16.04+mcp2,1:2.11+dfsg-1.4~u16.04+mcp2,,
+qemu-kvm,Hypervisors,qemu,mirantis,,,2.11+dfsg-1.4~u16.04+mcp2,1:2.11+dfsg-1.4~u16.04+mcp2,,
+qemu-system-common,Hypervisors,qemu,mirantis,,,2.11+dfsg-1.4~u16.04+mcp2,1:2.11+dfsg-1.4~u16.04+mcp2,,
+qemu-system-x86,Hypervisors,qemu,mirantis,,,2.11+dfsg-1.4~u16.04+mcp2,1:2.11+dfsg-1.4~u16.04+mcp2,,
+qemu-utils,Hypervisors,qemu,mirantis,,,2.11+dfsg-1.4~u16.04+mcp2,1:2.11+dfsg-1.4~u16.04+mcp2,,
+rabbitmq-server,System,RabbitMQ,mirantis,,,3.6.15-3~u16.04+mcp1,3.6.15-3~u16.04+mcp1,,
+radosgw,Distributed storage,Ceph,mirantis,,,12.2.8-1~u16.04+mcp142,12.2.8-1~u16.04+mcp142,,
+radvd,,,,,,,,,
+rake,,,,,,,,,
+readline-common,,,,,,,,,
+reclass,,,,,,,,,
+rename,,,,,,,,,
+resolvconf,,,,,,,,,
+rsync,,,,,,,,,
+rsyslog,,,,,,,,,
+ruby,System,Ruby,,,,,,,
+ruby-did-you-mean,System,Ruby,,,,,,,
+ruby-minitest,System,Ruby,,,,,,,
+ruby-net-telnet,System,Ruby,,,,,,,
+ruby-power-assert,System,Ruby,,,,,,,
+ruby-test-unit,System,Ruby,,,,,,,
+ruby2.3,System,Ruby,,,,,,,
+rubygems-integration,,,,,,,,,
+run-one,,,,,,,,,
+s-nail,,,,,,,,,
+salt-api,DriveTrain,SaltStack,mirror,,2017.7.7,2017.7.7,2017.7.8,,
+salt-common,DriveTrain,SaltStack,mirror,,2017.7.7,2017.7.7,2017.7.8,,
+salt-formula-aodh,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-apache,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-aptcacher,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-aptly,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-artifactory,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-auditd,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-avinetworks,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-backupninja,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-barbican,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-baremetal-simulator,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-billometer,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-bind,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-bird,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-cadf,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-cassandra,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-ccp,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-ceilometer,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-ceph,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-chrony,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-cinder,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-collectd,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-debmirror,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-decapod,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-designate,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-devops-portal,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-docker,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-dogtag,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-dovecot,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-elasticsearch,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-etcd,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-fluentbit,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-fluentd,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-foreman,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-freeipa,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-galera,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-gerrit,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-git,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-gitlab,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-glance,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-glusterfs,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-gnocchi,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-grafana,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-graphite,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-haproxy,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-heat,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-heka,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-helm,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-horizon,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-influxdb,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-iptables,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-ironic,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-isc-dhcp,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-java,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-jenkins,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-kedb,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-keepalived,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-keycloak,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-keystone,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-kibana,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-kubernetes,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-letsencrypt,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-libvirt,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-linux,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-lldp,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-logrotate,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-maas,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-magnum,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-manila,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-memcached,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-midonet,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-mirascan,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-mongodb,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-murano,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-mysql,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-nagios,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-network,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-neutron,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-nfs,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-nginx,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-nodejs,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-nova,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-ntp,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-octavia,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-opencontrail,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-openldap,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-openssh,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-openvpn,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-openvstorage,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-oslo-templates,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-owncloud,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-panko,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-postfix,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-postgresql,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-powerdns,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-pritunl,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-prometheus,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-python,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-rabbitmq,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-reclass,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-redis,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-roundcube,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-rsync,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-rsyslog,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-rundeck,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-runtest,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-sahara,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-salt,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-sensu,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-sentry,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-shibboleth,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-sphinx,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-statsd,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-supervisor,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-swift,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-taiga,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-telegraf,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-tftpd-hpa,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-tinyproxy,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-varnish,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-watchdog,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-xtrabackup,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-formula-zookeeper,DriveTrain,Salt Formulas,mirantis,,,,,,
+salt-master,DriveTrain,SaltStack,mirror,,,2017.7.7,2017.7.8,,
+salt-minion,DriveTrain,SaltStack,mirror,,,2017.7.7,2017.7.8,,
+salt-pepper,DriveTrain,SaltStack,,,,,,,
+sbsigntool,,,,,,,,,
+screen,,,,,,,,,
+scrub,,,,,,,,,
+seabios,,,,,,,,,
+sed,,,,,,,,,
+sensible-utils,,,,,,,,,
+sg3-utils,,,,,,,,,
+sgml-base,,,,,,,,,
+shared-mime-info,,,,,,,,,
+smartmontools,,,,,,,,,
+snapd,,,,,,,,,
+snmp,,,,,,,,,
+socat,,,,,,,,,
+software-properties-common,,,,,,,,,
+sosreport,,,,,,,,,
+spawn-fcgi,,,,,,,,,
+sphinx-common,,,,,,,,,
+sphinx-rtd-theme-common,,,,,,,,,
+spice-html5,,,,,,,,,
+sqlite3,,,,,,,,,
+squashfs-tools,,,,,,,,,
+squid,,,,,,,,,
+squid-common,,,,,,,,,
+squid-langpack,,,,,,,,,
+ssh-import-id,,,,,,,,,
+ssl-cert,,,,,,,,,
+strace,,,,,,,,,
+subunit,,,,,,,,,
+sudo,,,,,,,,,
+supermin,,,,,,,,,
+sysfsutils,,,,,,,,,
+syslinux,,,,,,,,,
+syslinux-common,,,,,,,,,
+sysstat,,,,,,,,,
+systemd,,,,,,,,,
+systemd-sysv,,,,,,,,,
+sysv-rc,,,,,,,,,
+sysvinit-utils,,,,,,,,,
+tar,,,,,,,,,
+tcpd,,,,,,,,,
+tcpdump,System,Networking,,,,,,,
+td-agent,,,,,,,,,
+td-agent-additional-plugins,,,,,,,,,
+telegraf,StackLight LMA,Telegraf,,,,,,,
+tgt,,,,,,,,,
+thermald,,,,,,,,,
+thin-provisioning-tools,,,,,,,,,
+time,,,,,,,,,
+tmux,,,,,,,,,
+traceroute,,,,,,,,,
+tree,,,,,,,,,
+tzdata,,,,,,,,,
+ubuntu-cloudimage-keyring,,,,,,,,,
+ubuntu-core-launcher,,,,,,,,,
+ubuntu-keyring,,,,,,,,,
+ubuntu-minimal,,,,,,,,,
+ubuntu-release-upgrader-core,,,,,,,,,
+ubuntu-server,,,,,,,,,
+ubuntu-standard,,,,,,,,,
+ucf,,,,,,,,,
+udev,,,,,,,,,
+ufw,,,,,,,,,
+uidmap,,,,,,,,,
+unzip,,,,,,,,,
+update-manager-core,,,,,,,,,
+update-motd,,,,,,,,,
+update-notifier-common,,,,,,,,,
+ureadahead,,,,,,,,,
+usbutils,,,,,,,,,
+util-linux,,,,,,,,,
+uuid-runtime,,,,,,,,,
+vim,,,,,,,,,
+vim-common,,,,,,,,,
+vim-nox,,,,,,,,,
+vim-runtime,,,,,,,,,
+vim-tiny,,,,,,,,,
+virt-what,,,,,,,,,
+virtualenv,,,,,,,,,
+vlan,,,,,,,,,
+websockify,,,,,,,,,
+websockify-common,,,,,,,,,
+wget,,,,,,,,,
+whiptail,,,,,,,,,
+wireless-regdb,,,,,,,,,
+x11-common,,,,,,,,,
+xauth,,,,,,,,,
+xdg-user-dirs,,,,,,,,,
+xfsprogs,,,,,,,,,
+xkb-data,,,,,,,,,
+xml-core,,,,,,,,,
+xmlsec1,,,,,,,,,
+xz-utils,,,,,,,,,
+zerofree,,,,,,,,,
+zlib1g,,,,,,,,,
+zlib1g-dev,,,,,,,,,
diff --git a/templates/common_scripts.j2 b/templates/common_scripts.j2
new file mode 100644
index 0000000..2ea3614
--- /dev/null
+++ b/templates/common_scripts.j2
@@ -0,0 +1,56 @@
+<script language="JavaScript">
+        function toggleClassByID(pkg) {
+            var element = document.getElementById(pkg);
+            //var button = document.getElementById(pkg+"_button");
+
+            if( element.className && element.className.indexOf("in") > -1 ) {
+                element.classList.remove("in");
+                //button.innerHTML = "&uarr;"
+            }
+            else {
+                element.classList.add("in");
+                //button.innerHTML = "&darr;"
+            }
+        }
+    </script>
+    <script language="JavaScript">
+        function init() {
+            // Declare all variables
+            var i, content, items;
+
+            // Get all elements with class="barcontent" and hide them
+            content = document.getElementsByClassName("barcontent");
+            for (i = 1; i < content.length; i++) {
+                content[i].style.display = "none";
+            }
+            content[0].style.display = "block";
+
+            // Get all elements with class="bar-item" and remove the class "active"
+            items = document.getElementsByClassName("bar-item");
+            for (i = 1; i < items.length; i++) {
+                items[i].className = items[i].className.replace(" active", "");
+            }
+            items[0].className += " active";
+
+        }
+        function openBar(evt, barName) {
+            // Declare all variables
+            var i, barcontent, baritems;
+
+            // Get all elements with class="barcontent" and hide them
+            barcontent = document.getElementsByClassName("barcontent");
+            for (i = 0; i < barcontent.length; i++) {
+                barcontent[i].style.display = "none";
+            }
+
+            // Get all elements with class="bar-item" and remove the class "active"
+            baritems = document.getElementsByClassName("bar-item");
+            for (i = 0; i < baritems.length; i++) {
+                baritems[i].className = baritems[i].className.replace(" active", "");
+            }
+
+            // Show the current tab, and add an "active" class to the link that opened the tab
+            document.getElementById(barName).style.display = "block";
+            evt.currentTarget.className += " active";
+        }
+    </script>
diff --git a/templates/common_styles.j2 b/templates/common_styles.j2
new file mode 100644
index 0000000..604564b
--- /dev/null
+++ b/templates/common_styles.j2
@@ -0,0 +1,95 @@
+<style>
+    body {
+        font-family: "Open Sans", Arial, Helvetica, sans-serif;
+        font-size: 90% !important;
+    }
+    h5 {padding-left: 1em; margin: 0.6em}
+    .note {font-style: italic; font-weight: normal; padding-left: 1em; margin: 0.2em; font-size: 0.7em; color: gray;}
+    /* Common */
+    .header {
+        display:block;
+    }
+    
+    .label {float: left; font-size: 0.7em; color: Black; line-height: 17px; padding-left: 10px;}
+    .text {float: left; font-size: 0.8em; color: Navy; padding-left: 2px;}
+    .date {float: right;}
+    
+    .smallgreytext {float: right; font-size: 0.5em; color: gray;}
+
+    /* Bar */
+    .bar{
+        background: linear-gradient(to bottom, #126666 0%, #284753 77%);
+        width:100%;
+        overflow:hidden;
+        display: inline-block;
+    }
+    .bar .bar-item{
+        padding:8px 16px;
+        float:left;
+        width:auto;
+        border:none;
+        display:block;
+        outline:0;
+        color: White;
+        background-color: transparent;
+    }
+    
+    .bar .bar-item:hover {
+        background-color: #328686;
+    }
+    
+    .bar .bar-item.active {
+        background-color: #328686;
+        color: white;
+    }
+
+    .collapsable {
+        visibility: collapse;
+        display: none;
+    }
+
+    .collapsable.in {
+        visibility: visible;
+        display: table-row;
+    }
+
+    table {
+        border: 0 hidden;
+        table-layout: fixed;
+        width: 100%;
+    }
+
+    .table_header {
+        background-color: #284753;
+        color: wheat;
+        text-align: center;
+        font-family: "Open Sans", Arial, Helvetica, sans-serif;
+    }
+
+    /* Tooltip container */
+    .tooltip {
+        position: relative;
+        display: inline-block;
+        border-bottom: 1px dotted black;
+    }
+
+    .tooltip .tooltiptext {
+        visibility: hidden;
+        background-color: black;
+        font-family: "Lucida Console", Monaco, monospace;
+        font-size: 0.5em;
+        width: auto;
+        color: #fff;
+        border-radius: 6px;
+        padding: 5px 5px;
+
+        /* Position the tooltip */
+        position: absolute;
+        z-index: 1;
+    }
+
+    .tooltip:hover .tooltiptext {
+        visibility: visible;
+    }
+
+</style>
diff --git a/templates/network_check_tmpl.j2 b/templates/network_check_tmpl.j2
index 553b554..9f0f556 100644
--- a/templates/network_check_tmpl.j2
+++ b/templates/network_check_tmpl.j2
@@ -2,207 +2,120 @@
 <html lang="en">
 <head>
     <meta charset="UTF-8">
-    <title>Model Tree Changes</title>
+    <title>Nodes and Networks report</title>
+    {% include 'common_styles.j2' %}
+    {% include 'common_scripts.j2' %}
     <style>
-        body {
-            font-family: Verdana, Geneva, Tahoma, sans-serif;
-            font-size: 90% !important;
+        table.cluster_nodes {
+            width: 90%;
+            margin-left: 5%;
+            margin-right: 5%;
         }
-        .dot_green {
-            float: left;
-            color: green;
-            margin-right: 0.5em;
-            margin-top: 0.2em;
-        }
-        .dot_red {
-            float: left;
-            color: red;
-            margin-right: 0.5em;
-            margin-top: 0.2em;
-        }
-        .dot_empty {
-            float: left;
-            color: darkgray;
-            margin-right: 0.5em;
-            margin-top: 0.2em;
-        }
-        /* Style the tab */
-        .tab {
-            float: left;
-            width: 130px;
-            border: 1px solid #fff;
-            background-color: #efe;
-        }
-
-        /* Style the buttons that are used to open the tab content */
-        .tab button {
+    
+        /* Node rows*/
+		.node {
+			display: inline-block;
+			background-color: white;
+		}
+		
+        tr.node > td {
             display: block;
-            background-color: inherit;
-            color: Black;
-            border: none;
-            outline: none;
-            font-family: "Lucida Console", Monaco, monospace;
-            text-align: left;
-            cursor: pointer;
-            transition: 0.3s;
-            font-size: 1.3em;
-            width: 100%;
-            padding: 1px;
-            margin: 1px;
-        }
-
-        button > div.node_name {
             float: left;
-            font-size: 1.3em;
-        }
-
-        .smallgreytext {
-            float: right;
-            font-size: 0.7em;
-            color: gray;
-        }
-
-        /* Change background color of buttons on hover */
-        .tab button:hover {
-            background-color: #7b7;
-        }
-
-        /* Create an active/current "tab button" class */
-        .tab button.active {
-            background-color: #8c8;
-            color: white;
-        }
-
-        /* Style the tab content */
-        .tabcontent {
-            display: none;
-            position: absolute;
-            font-size: 1em;
-            padding: 0.5em;
-            right: -10%;
-            top: 0%;
-            transform: translateX(-12%);
-            width: calc(100% - 170px);
-            overflow-x: scroll;
-            overflow-wrap: break-word;
-        }
-
-        table {
-            border: 0 hidden;
-            width: 100%;
-        }
-        tr:nth-child(even) {
-            background-color: #fff;
-        }
-        tr:nth-child(odd) {
-            background-color: #ddd;
-        }
-        .Header {
-            background-color: #bbb;
-            color: Black;
-            width: 30%;
-            text-align: center;
-        }
-        .param {
-            font-size: 0.8em;
-            color: #555;
-            padding-left: 50px;
-            padding-right: 10px;
-        }
-        .class_file {
-            font-size: 0.8em;
-            font-weight: bold;
-            min-width: 300px;
-            text-align: left;
+            padding: 1px;
+            padding-left: 5px;
+            padding-right: 5px;
             color: black;
+            background-color: #A1BbA1;
+            text-align: center;
+            margin: 2px;
         }
-
-        .pkgName {
-            font-size: 1em;
-            padding-left: 10px;
-            max-width: 800px;
+        
+        .meters {
+			display: inline-block;        
         }
-
-        .version {
-            font-size: 1em;
-            text-align: left;
-            max-width: 400px;
-            overflow-wrap: break-word;
+        
+        td.meters > .meter {
+            display: block;
+            float: left;
         }
-
-        .differ {
-            background-color: #eaa;
-        }
-        /* Tooltip container */
-        .tooltip {
-            position: relative;
-            display: inline-block;
-            border-bottom: 1px dotted black;
-        }
-
-        .tooltip .tooltiptext {
-            visibility: hidden;
-            background-color: black;
-            font-family: "Lucida Console", Monaco, monospace;
-            font-size: 0.5em;
-            width: auto;
-            color: #fff;
-            border-radius: 6px;
-            padding: 5px 5px;
-
-            /* Position the tooltip */
-            position: absolute;
-            z-index: 1;
-        }
-
-        .tooltip:hover .tooltiptext {
-            visibility: visible;
-        }
-
     </style>
-    <script language="JavaScript">
-        function init() {
-            // Declare all variables
-            var i, tabcontent, tablinks;
-
-            // Get all elements with class="tabcontent" and hide them
-            tabcontent = document.getElementsByClassName("tabcontent");
-            for (i = 1; i < tabcontent.length; i++) {
-                tabcontent[i].style.display = "none";
-            }
-            tabcontent[0].style.display = "block";
-
-            // Get all elements with class="tablinks" and remove the class "active"
-            tablinks = document.getElementsByClassName("tablinks");
-            for (i = 1; i < tablinks.length; i++) {
-                tablinks[i].className = tablinks[i].className.replace(" active", "");
-            }
-            tablinks[0].className += " active";
-
-        }
-        function openTab(evt, tabName) {
-            // Declare all variables
-            var i, tabcontent, tablinks;
-
-            // Get all elements with class="tabcontent" and hide them
-            tabcontent = document.getElementsByClassName("tabcontent");
-            for (i = 0; i < tabcontent.length; i++) {
-                tabcontent[i].style.display = "none";
-            }
-
-            // Get all elements with class="tablinks" and remove the class "active"
-            tablinks = document.getElementsByClassName("tablinks");
-            for (i = 0; i < tablinks.length; i++) {
-                tablinks[i].className = tablinks[i].className.replace(" active", "");
-            }
-
-            // Show the current tab, and add an "active" class to the link that opened the tab
-            document.getElementById(tabName).style.display = "block";
-            evt.currentTarget.className += " active";
-        }
-    </script>
 </head>
 <body onload="init()">
 
+<div class="header">
+    <div class="label">OpenStack release:</div>
+    <div class="text">{{ openstack_release }}</div>
+    <div class="label">MCP Version:</div>
+    <div class="text">{{ mcp_release }}</div>
+    <div class="label date">generated on: {{ gen_date }}</div>
+</div>
+
+<div class="bar">
+    <button class="bar-item" onclick="openBar(event, 'nodes')">Nodes</button>
+    <button class="bar-item" onclick="openBar(event, 'networks')">Networks</button>
+    <button class="bar-item" onclick="openBar(event, 'services')">Other</button>
+</div>
+
+{% macro nodes_page(nodes, id_label) %}
+<div id="{{ id_label }}" class="barcontent">
+    <h5>{{ caller() }}</h5>
+    <hr>
+    <table class="cluster_nodes">
+    {% for node in nodes.keys() | sort %}
+        {% set _ndat = nodes[node] %}
+        <tr class="node virt">
+            <td class="status">{{ _ndat['status'] }}</td>
+            <td class="name">{{ node }}</td>
+            <td class="role">{{ _ndat['role'] }}</td>
+            <td class="vendor">QEMU</td>
+            <td class="meter cpu">vCPU: 12</td>
+            <td class="meter ram">RAM: 500GB</td>
+            <td class="meter disk">VDA: 150/140/135</td>
+        </tr>
+    {% endfor %}
+    </table>
+    <hr>
+</div>
+{% endmacro %}
+
+{% macro networks_page(networks, id_label) %}
+<div id="{{ id_label }}" class="barcontent">
+    <h5>{{ caller() }}</h5>
+    <hr>
+    <table class="networks">
+        <tr class="subnet">192.168.10.0/24</tr>
+        <tr class="net collapsable">
+            <td class="status">UP</td>
+            <td class="name">cfg01.internal.net</td>
+            <td class="ip">192.168.10.11</td>
+            <td class="param">1500</td>
+        </tr>
+    </table>
+    <hr>
+</div>
+{% endmacro %}
+
+{% macro services_page(services, id_label) %}
+<div id="{{ id_label }}" class="barcontent">
+    <h5>{{ caller() }}</h5>
+    <hr>
+</div>
+{% endmacro %}
+
+<!-- Cluster nodes page -->
+{% call nodes_page(nodes, "nodes") %}
+    Cluster nodes status and simple meterings
+{% endcall %}
+
+<!-- Cluster nodes page -->
+{% call networks_page(networks, "networks") %}
+    Networks in the cluster
+{% endcall %}
+
+<!-- Cluster nodes page -->
+{% call services_page(services, "services") %}
+    Services status in the cluster
+{% endcall %}
+
 </body>
 </html>
\ No newline at end of file
diff --git a/templates/pkg_versions_csv.j2 b/templates/pkg_versions_csv.j2
new file mode 100644
index 0000000..c754f63
--- /dev/null
+++ b/templates/pkg_versions_csv.j2
@@ -0,0 +1,23 @@
+{% macro package_list(pkg_dict, id_label) %}
+    {% for pkg_name in pkg_dict | get_sorted_keys %}
+        {% set p = pkg_dict[pkg_name] %}
+        {% for status in p['results'].keys() | sort(reverse=true) %}
+        {% for action in p['results'][status].keys() | sort(reverse=true) %}
+            {% for node in p['results'][status][action].keys() | sort %}
+                {% set nd = p['results'][status][action][node] %}
+{{ id_label }},{{ pkg_name }},{{ node }},{{ status | make_status_label }},{{ action | make_action_label }},{{ nd['i'].version }},{{ nd['c'].version }},{{ p['r'].version }}
+            {% endfor %}
+        {% endfor %}
+        {% endfor %}
+    {% endfor %}
+    {{ caller() }}
+{% endmacro %}
+type,package_name,node,status,action,installed,candidate,release
+{% call package_list(critical, "mirantis") %}
+{% endcall %}
+{% call package_list(system, "system") %}
+{%- endcall %}
+{% call package_list(other, "other") %}
+{%- endcall %}
+{% call package_list(unlisted, "unlisted") %}
+{%- endcall %}
diff --git a/templates/pkg_versions_html.j2 b/templates/pkg_versions_html.j2
new file mode 100644
index 0000000..d1b71bb
--- /dev/null
+++ b/templates/pkg_versions_html.j2
@@ -0,0 +1,328 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Cloud Package versions check</title>
+    {% include 'common_styles.j2' %}
+    {% include 'common_scripts.j2' %}
+    <style>        
+        td.repo {width: 3em; text-align: center; font-size: 0.7em; color: #113b11; font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;}
+        td.component, td.app, td.package_name {
+            font-size: 0.75em;
+            text-align: center;
+            color: #113b11;
+            font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
+        }
+        
+        td.repo {column-width: 50px;}
+        td.component {column-width: 130px;}
+        td.app {column-width: 80px;}
+        td.package_name {column-width: 200px; padding-left: 10px; text-align: left;}
+        td.node_name {column-width: 210px;}
+        td.installed {column-width: 16%;}
+        td.status_container {column-width: 200px;}
+        td.candidate {column-width: 16%;}
+        td.release {column-width: 13%;}
+
+        .status_container {
+            display: inline-block;
+        }
+
+        .status {
+            display: block;
+            float: left;
+            width: 80px;
+            padding: 1px;
+            padding-left: 5px;
+            padding-right: 5px;
+            color: white;
+            background-color: #113b11;
+            text-align: center;
+        }
+        .action {
+            display: block;
+            float: left;
+            width: 120px;
+            padding: 1px;
+            padding-left: 5px;
+            padding-right: 5px;
+            color: gray;
+            background-color: #d4dad9;
+            text-align: center;
+        }
+
+        .status_container .ok {
+            color: white;
+            background-color: #113b11;
+        }
+        .status_container .error {
+            color: white;
+            background-color: darkred;
+        }
+        .status_container .upgraded {
+            color: azure;
+            background-color: green;
+        }
+        .status_container .downgraded {
+            color: white;
+            background-color: darkolivegreen;
+        }
+
+        .status_container .needs_repo {
+            color: black;
+            background-color: #50aacc;
+        }
+
+        .status_container .needs_up {
+            color: black;
+            background-color: #aaccaa;
+        }
+
+        .status_container .needs_down {
+            color: black;
+            background-color: #ffcc48;
+        }
+
+        .status_container .possible {
+            color: gray;
+            background-color: #d4dad9;
+        }
+
+
+
+        .version {text-align: left; padding: 2px}
+        .v_epoch, .v_upstream, .v_debian, .colon, .dash {
+            color: darkslategray;
+            float: left;
+            display: block;
+        }
+
+        .ok {color: darkslategray;}
+        .error {color: white; background-color: darkred;}
+        .upgraded {color: whitesmoke; background-color: darkslategray;}
+        .downgraded {color: red;}
+
+        .smallgreytext {float: right; font-size: 0.5em; color: gray;}
+
+        /* Table specific */
+        .nodes tr:nth-child(even) {
+            background-color: #fff;
+        }
+        .nodes tr:nth-child(odd) {
+            background-color: #d4dad9;
+            
+        }
+    </style>
+</head>
+<body onload="init()">
+
+<div class="header">
+	<div class="label">OpenStack release:</div>
+	<div class="text">{{ openstack_release }}</div>
+	<div class="label">MCP Version:</div>
+    <div class="text">{{ mcp_release }}</div>
+    <div class="label date">generated on: {{ gen_date }}</div>
+</div>
+
+<div class="bar">
+	<button class="bar-item" onclick="openBar(event, 'mirantis')">Mirantis</button>
+	<button class="bar-item" onclick="openBar(event, 'system')">System</button>
+    <button class="bar-item" onclick="openBar(event, 'other')">Other</button>
+    <button class="bar-item" onclick="openBar(event, 'unlisted')">Unlisted</button>
+    <button class="bar-item" onclick="openBar(event, 'legend')">Legend</button>
+</div>
+
+{% macro prettify_version(v) %}
+    <div class="version">
+        {% if v.epoch %}
+        <div class="v_epoch {{ v.epoch_status | make_status_class }}">{{ v.epoch }}</div>
+        <div class="colon">:</div>
+        {% endif %}
+        <div class="v_upstream {{ v.upstream_status | make_status_class }}">{{ v.upstream }}{{ v.upstream_rev }}</div>
+        {% if v.debian %}
+        <div class="dash">-</div>
+        <div class="v_debian {{ v.debian_status | make_status_class }}">{{ v.debian }}{{ v.debian_rev }}</div>
+        {% endif %}
+        {{ caller() }}
+    </div>
+{% endmacro %}
+
+{% macro render_package(pkg_name, dat, status_shown, action_shown, id_label) %}
+        <tr onclick="toggleClassByID('{{ id_label }}_{{ pkg_name }}_{{ status_shown }}_{{ action_shown }}')" id="{{ id_label }}_{{ pkg_name }}_{{ status_shown }}_{{ action_shown }}_button">
+            <td class="repo">{{ dat['desc']['repo'] }}</td>
+            <td class="component">{{ dat['desc']['component'] }}</td>
+            <td class="app">{{ dat['desc']['app'] }}</td>
+            <td class="package_name">{{ pkg_name }}</td>
+            <td class="status_container" colspan="3">
+                <div class="status {{ status_shown | make_status_class }}">{{ status_shown | make_status_label }}</div>
+                {% if action_shown | make_action_label %}
+                    <div class="action {{ action_shown | make_action_class }}">{{ action_shown | make_action_label }}</div>
+                {% endif %}
+            </td>
+        </tr>
+        <tr class="collapsable" id="{{ id_label }}_{{ pkg_name }}_{{ status_shown }}_{{ action_shown }}"><td colspan="7">
+        <table class="nodes"><tbody>
+        {% for status in dat['results'].keys() | sort(reverse=true) %}
+        {% for action in dat['results'][status].keys() | sort(reverse=true) %}
+        {% set counter = 1 + loop.index0 %}
+        {% for node in dat['results'][status][action].keys() | sort %}
+        {% set n_counter = 1 + loop.index0 %}
+        {% set nd = dat['results'][status][action][node] %}
+        <tr>
+            <td class="repo">{{ n_counter }}</td>
+            <td class="node_name">{{ node }}</td>
+            <td class="status_container">
+                <div class="status {{ status | make_status_class }}">{{ status | make_status_label }}</div>
+                {% if action | make_action_label %}
+                    <div class="action {{ action | make_action_class }}">{{ action | make_action_label }}</div>
+                {% endif %}
+            </td>
+            <td class="installed">
+                <div class="tooltip">
+                    {% call prettify_version(nd['i']) %}
+                    <pre class="tooltiptext">{{ nd['raw'] | linebreaks }}</pre>
+                    {% endcall %}
+                </div>
+            </td>
+            <td class="candidate">{{ nd['c'].version }}</td>
+            <td class="release">{{ dat['r'].version }}</td>
+        </tr>
+        {% endfor %}
+        {% endfor %}
+        {% endfor %}
+        </tbody></table>
+        </td></tr>
+    {{ caller() }}
+{% endmacro %}
+
+{% macro package_table(pkg_dict, id_label) %}
+<div id="{{ id_label }}" class="barcontent">
+    <h5>{{ caller() }}</h5>
+    <table class="pkgversions">
+            <tbody>
+            <tr>
+                <td class="table_header" width="50px">repo</td>
+                <td class="table_header" width="130px">Component</td>
+                <td class="table_header" width="80px">App</td>
+                <td class="table_header" width="200px">Package name</td>
+                <td class="table_header">Installed</td>
+                <td class="table_header">Candidate</td>
+                <td class="table_header">Release</td>
+            </tr>
+            <!-- Print errors -->
+            <tr><td colspan="7">Errors ({{ errors[id_label] }})</td></tr>
+            {% for pkg_name in pkg_dict | get_sorted_keys %}
+            {% set dat = pkg_dict[pkg_name] %}
+                {% if status_err in dat['results'] %}
+                    {% set action_to_show = dat['results'][status_err].keys() | get_max %}
+                    {% call render_package(pkg_name, dat, status_err, action_to_show, id_label) %}
+                    {% endcall %}
+                {% endif%}
+            {% endfor %}
+            {% if not errors[id_label] %}
+            <tr><td class="note" colspan="7">no errors found </td></tr>
+            {% endif %}
+
+            <!-- Print downgrades -->
+            <tr><td colspan="7">Downgrades ({{ downgrades[id_label] }})</td></tr>
+            {% for pkg_name in pkg_dict | get_sorted_keys %}
+            {% set dat = pkg_dict[pkg_name] %}
+                {% if status_down in dat['results'] %}
+                    {% set action_to_show = dat['results'][status_down].keys() | get_max %}
+                    {% call render_package(pkg_name, dat, status_down, action_to_show, id_label) %}
+                    {% endcall %}
+                {% endif %}
+            {% endfor %}
+            {% if not downgrades[id_label] %}
+            <tr><td class="note" colspan="7">no downgrades found</td></tr>
+            {% endif %}
+
+            <!-- Print all other -->
+            <tr><td colspan="7">All others</td></tr>
+            {% for pkg_name in pkg_dict | get_sorted_keys %}
+            {% set dat = pkg_dict[pkg_name] %}
+                {% set status_to_show = dat['results'].keys() | get_max %}
+                {% set action_to_show = dat['results'][status_to_show].keys() | get_max %}
+                {% if status_err != status_to_show and status_down !=  status_to_show %}
+                    {% call render_package(pkg_name, dat, status_to_show, action_to_show, id_label) %}
+                    {% endcall %}
+                {% endif %}
+            {% endfor %}
+            </tbody>
+        </table>
+</div>
+{%- endmacro %}
+
+<!-- Mirantis packages which version is critical for functionality -->
+{% call package_table(critical, "mirantis") %}
+    Packages maintained and updated by Mirantis
+{% endcall %}
+
+<!-- System labeled packages-->
+{% call package_table(system, "system") %}
+    System packages which versions are critical to proper cloud function
+{%- endcall %}
+
+<!-- Other packages -->
+{% call package_table(other, "other") %}
+    Packages with no description or not critical
+{%- endcall %}
+
+{% call package_table(unlisted, "unlisted") %}
+    Packages that are not listed in version map. I.e. unexpected on the environment
+{%- endcall %}
+
+<!-- Legend -->
+<div id="legend" class="barcontent">
+    <h5>Legend: status and action explanation and possible combinations</h5>
+    <table class="pkgversions">
+        <tbody>
+        <tr><td colspan="7">Version status desctiptions</td></tr>
+        <tr>
+            <td class="status_container"><div class="status {{ cs.ok | make_status_class }}">{{ cs.ok | make_status_label }}</div></td>
+            <td>Installed and Candidate epoch:upstream version mach</td>
+        </tr>
+        <tr>
+            <td class="status_container"><div class="status {{ cs.up | make_status_class }}">{{ cs.up | make_status_label }}</div></td>
+            <td>Installed version is newer that the one found in Repo (i.e. candidate) or Release notes recordset</td>
+        </tr>
+        <tr>
+            <td class="status_container"><div class="status {{ cs.down | make_status_class }}">{{ cs.down | make_status_label }}</div></td>
+            <td>Installed version is older that the one found in Repo (i.e. candidate) or Release notes recordset</td>
+        </tr>
+        <tr>
+            <td class="status_container"><div class="status {{ cs.err | make_status_class }}">{{ cs.err | make_status_label }}</div></td>
+            <td>Installed version conflicts with a combination of Candidate and Release notes versions</td>
+        </tr>
+        <tr><td colspan="7">Action descriptions</td></tr>
+        <tr>
+            <td class="status_container"><div class="action {{ ca.na | make_action_class }}">{{ ca.na | make_action_label }} (no action)</div></td>
+            <td>No action suggested</td>
+        </tr>
+        <tr>
+            <td class="status_container"><div class="action {{ ca.up | make_action_class }}">{{ ca.up | make_action_label }}</div></td>
+            <td>There is an upgrade possible for the package. But it is not strictly required action.</td>
+        </tr>
+        <tr>
+            <td class="status_container"><div class="action {{ ca.need_up | make_action_class }}">{{ ca.need_up | make_action_label }}</div></td>
+            <td>Package should be upgraded to match version either in repo or in Release notes</td>
+        </tr>
+        <tr>
+            <td class="status_container"><div class="action {{ ca.need_down | make_action_class }}">{{ ca.need_down | make_action_label }}</div></td>
+            <td>Package should be downgraded to match version either in repo or in Release notes</td>
+        </tr>
+        <tr>
+            <td class="status_container"><div class="action {{ ca.repo | make_action_class }}">{{ ca.repo | make_action_label }}</div></td>
+            <td>Repo that is configured on the target node contains invalid version and should be updated</td>
+        </tr>
+        <tr><td colspan="7">Versions status and Action combinations</td></tr>
+        <tr>
+            <td class="status_container">
+                <div class="status {{ cs.err | make_status_class }}">{{ cs.err | make_status_label }}</div>
+                <div class="action {{ ca.repo | make_action_class }}">{{ ca.repo | make_action_label }}</div>
+            </td>
+        </tr>
+    </tbody></table>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/templates/pkg_versions_tmpl.j2 b/templates/pkg_versions_tmpl.j2
deleted file mode 100644
index b03e2ef..0000000
--- a/templates/pkg_versions_tmpl.j2
+++ /dev/null
@@ -1,327 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Cloud Package versions check</title>
-    <style>
-        body {
-            font-family: Verdana, Geneva, Tahoma, sans-serif;
-            font-size: 90% !important;
-        }
-        .dot_green {
-            float: left;
-            color: green;
-            margin-right: 0.5em;
-            margin-top: 0.2em;
-        }
-        .dot_red {
-            float: left;
-            color: red;
-            margin-right: 0.5em;
-            margin-top: 0.2em;
-        }
-        .dot_empty {
-            float: left;
-            color: darkgray;
-            margin-right: 0.5em;
-            margin-top: 0.2em;
-        }
-        /* Style the tab */
-        .tab {
-            float: left;
-            width: 130px;
-            border: 1px solid #fff;
-            background-color: #efe;
-        }
-
-        /* Style the buttons that are used to open the tab content */
-        .tab button {
-            display: block;
-            background-color: inherit;
-            color: Black;
-            border: none;
-            outline: none;
-            font-family: "Lucida Console", Monaco, monospace;
-            text-align: left;
-            cursor: pointer;
-            transition: 0.3s;
-            font-size: 1.1em;
-            width: 100%;
-            padding: 1px;
-            margin: 1px;
-        }
-
-        button > div.node_name {
-            float: left;
-            font-size: 0.8em;
-        }
-
-        .smallgreytext {
-            float: right;
-            font-size: 0.5em;
-            color: gray;
-        }
-
-        /* Change background color of buttons on hover */
-        .tab button:hover {
-            background-color: #7b7;
-        }
-
-        /* Create an active/current "tab button" class */
-        .tab button.active {
-            background-color: #8c8;
-            color: white;
-        }
-
-        /* Style the tab content */
-        .tabcontent {
-            display: none;
-            position: absolute;
-            font-size: 1em;
-            padding: 0.5em;
-            right: -10%;
-            top: 0%;
-            transform: translateX(-12%);
-            width: calc(100% - 170px);
-            overflow-x: scroll;
-            overflow-wrap: break-word;
-        }
-        .collapsable {
-            visibility: collapse;
-            display: none;
-        }
-
-        .collapsable.in {
-            visibility: visible;
-            display: table-row;
-        }
-
-        table {
-            border: 0 hidden;
-            width: 100%;
-        }
-        tr:nth-child(even) {
-            background-color: #fff;
-        }
-        tr:nth-child(odd) {
-            background-color: #ddd;
-        }
-        .Header {
-            background-color: #bbb;
-            color: Black;
-            width: 30%;
-            text-align: center;
-        }
-        .pkgName {
-            font-size: 1em;
-            padding-left: 10px;
-        }
-
-        .version {
-            font-size: 1.1em;
-            text-align: left;
-        }
-
-        .differ {
-            background-color: #eaa;
-        }
-        /* Tooltip container */
-        .tooltip {
-            position: relative;
-            display: inline-block;
-            border-bottom: 1px dotted black;
-        }
-
-        .tooltip .tooltiptext {
-            visibility: hidden;
-            background-color: black;
-            font-family: "Lucida Console", Monaco, monospace;
-            font-size: 0.5em;
-            width: auto;
-            color: #fff;
-            border-radius: 6px;
-            padding: 5px 5px;
-
-            /* Position the tooltip */
-            position: absolute;
-            z-index: 1;
-        }
-
-        .tooltip:hover .tooltiptext {
-            visibility: visible;
-        }
-
-    </style>
-    <script language="JavaScript">
-        function toggleClassByID(pkg, number) {
-            var elements = document.querySelectorAll("#"+pkg+"_"+number);
-            var ii = elements.length;
-            var button = document.querySelector("#"+pkg+"_button"+number);
-
-            while (ii--) {
-                if( elements[ii].className && elements[ii].className.indexOf("in") > -1 ) {
-                    elements[ii].classList.remove("in");
-                    button.innerHTML = "&uarr;"
-                }
-                else {
-                    elements[ii].classList.add("in");
-                    button.innerHTML = "&darr;"
-                }
-            }
-
-
-        }
-    </script>
-    <script language="JavaScript">
-        function init() {
-            // Declare all variables
-            var i, tabcontent, tablinks;
-
-            // Get all elements with class="tabcontent" and hide them
-            tabcontent = document.getElementsByClassName("tabcontent");
-            for (i = 1; i < tabcontent.length; i++) {
-                tabcontent[i].style.display = "none";
-            }
-            tabcontent[0].style.display = "block";
-
-            // Get all elements with class="tablinks" and remove the class "active"
-            tablinks = document.getElementsByClassName("tablinks");
-            for (i = 1; i < tablinks.length; i++) {
-                tablinks[i].className = tablinks[i].className.replace(" active", "");
-            }
-            tablinks[0].className += " active";
-
-        }
-        function openTab(evt, tabName) {
-            // Declare all variables
-            var i, tabcontent, tablinks;
-
-            // Get all elements with class="tabcontent" and hide them
-            tabcontent = document.getElementsByClassName("tabcontent");
-            for (i = 0; i < tabcontent.length; i++) {
-                tabcontent[i].style.display = "none";
-            }
-
-            // Get all elements with class="tablinks" and remove the class "active"
-            tablinks = document.getElementsByClassName("tablinks");
-            for (i = 0; i < tablinks.length; i++) {
-                tablinks[i].className = tablinks[i].className.replace(" active", "");
-            }
-
-            // Show the current tab, and add an "active" class to the link that opened the tab
-            document.getElementById(tabName).style.display = "block";
-            evt.currentTarget.className += " active";
-        }
-    </script>
-</head>
-<body onload="init()">
-<div class="tab">
-  <button class="tablinks" onclick="openTab(event, 'All Diffs')")>
-      <div class="node_name">All Diffs</div>
-  </button>
-{% for node_name in nodes.keys() | sort %}
-    {% if counters[node_name]['package_diff'] %}
-  <button class="tablinks" onclick="openTab(event, '{{ node_name | shortname }}')">
-    <div class="dot_green">&#9679;</div>
-    <div class="node_name">{{ node_name | shortname }}</div>
-    <div class="smallgreytext">({{ counters[node_name]['package_diff'] }} / {{ counters[node_name]['packages'] }})</div>
-  </button>
-    {% endif %}    
-{% endfor %}
-{% for node_name in nodes.keys() | sort %}
-    {% if not counters[node_name]['package_diff'] %}
-  <button class="tablinks" onclick="openTab(event, '{{ node_name | shortname }}')">
-    <div class="dot_empty">&#9675;</div>
-    <div class="node_name">{{ node_name | shortname }}</div>
-    <div class="smallgreytext">({{ counters[node_name]['package_diff'] }} / {{ counters[node_name]['packages'] }})</div>
-  </button>
-    {% endif %}
-{% endfor %}
-</div>
-<div id="All Diffs" class="tabcontent">
-    <table class="pkgversions">
-        <tbody>
-        <tr>
-            <td class="Header">Node name</td>
-            <td class="Header">Installed</td>
-            <td class="Header">Candidate</td>
-        </tr>
-        {% for pkg_name in pkg_diffs.keys() | sort %}
-        {% if counters[pkg_name]['df_nodes'] %}
-        {% set pkg_counter = 1 + loop.index0 %}
-        <tr>
-            <td>
-            <a href="#" onclick="toggleClassByID('{{ pkg_name }}', '{{ pkg_counter }}')" id="{{ pkg_name }}_button{{ pkg_counter }}">&uarr;</a>
-            {{ pkg_name }}
-            </td>
-            <td>{{ counters[pkg_name]['df_nodes'] }}</td>
-            <td></td>
-        </tr>
-        <tr><td colspan=3>
-        <table class="nodes"><tbody>
-            {% for node in pkg_diffs[pkg_name]['df_nodes'].keys() | sort %}
-            <tr class="collapsable" id="{{ pkg_name }}_{{ pkg_counter }}">
-                <td class="pkgName">{{ node }}</td>
-                <td class="version differ">
-                    <div class="tooltip">{{ pkg_diffs[pkg_name]['df_nodes'][node]['i'] }}
-                        <pre class="tooltiptext">{{ pkg_diffs[pkg_name]['df_nodes'][node]['raw'] | linebreaks }}</pre>
-                    </div>
-                </td>
-                <td class="version">{{ pkg_diffs[pkg_name]['df_nodes'][node]['c'] }}</td>
-            </tr>
-            {% endfor %}
-        </tbody></table>
-        </td></tr>
-        {% endif%}
-        {% endfor %}
-        </tbody>
-    </table>
-</div>
-{% for node_name in nodes.keys() | sort %}
-<div id="{{ node_name | shortname }}" class="tabcontent">
-    <table class="pkgversions">
-        <tbody>
-        <tr>
-            <td class="Header">Package name</td>
-            <td class="Header">Installed</td>
-            <td class="Header">Candidate</td>
-        </tr>
-        <tr><td colspan=3>Package with different versions uniq for this node</td></tr>
-        {% for package_name in nodes[node_name]['packages'] | sort %}
-            {% if not nodes[node_name]['packages'][package_name]['is_equal'] %}
-            {% if nodes[node_name]['packages'][package_name]['fail_uniq'] %}
-        <tr>
-            <td class="pkgName">{{ package_name }}</td>
-            <td class="version differ">
-                <div class="tooltip">{{ nodes[node_name]['packages'][package_name]['installed'] }}
-                    <pre class="tooltiptext">{{ nodes[node_name]['packages'][package_name]['raw'] | linebreaks }}</pre>
-                </div>
-            </td>
-            <td class="version">{{ nodes[node_name]['packages'][package_name]['candidate'] }}</td>
-        </tr>
-            {% endif %}
-            {% endif %}
-        {% endfor %}
-        <tr><td colspan=3>Packages with different versions on nodes with similar role</td></tr>
-        {% for package_name in nodes[node_name]['packages'] | sort %}
-            {% if not nodes[node_name]['packages'][package_name]['is_equal'] %}
-            {% if not nodes[node_name]['packages'][package_name]['fail_uniq'] %}
-        <tr>
-            <td class="pkgName">{{ package_name }}</td>
-            <td class="version differ">
-                <div class="tooltip">{{ nodes[node_name]['packages'][package_name]['installed'] }}
-                    <pre class="tooltiptext">{{ nodes[node_name]['packages'][package_name]['raw'] | linebreaks }}</pre>
-                </div>
-            </td>
-            <td class="version">{{ nodes[node_name]['packages'][package_name]['candidate'] }}</td>
-        </tr>
-            {% endif %}
-            {% endif %}
-        {% endfor %}
-        <tr><td colspan=3>Packages with same versions (installed vs candidate): {{ counters[node_name]['package_eq'] }}</td></tr>
-        </tbody>
-    </table>
-</div>
-{% endfor %}
-</body>
-</html>
\ No newline at end of file
