Add 'trace-key' command

Change-Id: I796e15544a9224ed53f435354a29f2616b541b97
diff --git a/reclass_tools/cli.py b/reclass_tools/cli.py
index 8673192..92e2bd2 100644
--- a/reclass_tools/cli.py
+++ b/reclass_tools/cli.py
@@ -90,6 +90,16 @@
         else:
             print('\n'.join(sorted(inventory.keys())))
 
+    def do_trace_key(self):
+        try:
+            from reclass_tools import reclass_models
+        except ImportError:
+            sys.exit("Please run this tool on the salt-master node "
+                     "with installed 'reclass'")
+        reclass_models.trace_key(key=self.params.key_name,
+                                 domain=self.params.domain,
+                                 node=self.params.node)
+
     def do_show_context(self):
         try:
             from reclass_tools import create_inventory
@@ -159,6 +169,12 @@
             help=('Show only the nodes which names are ended with the '
                   'specified domain, for example: example.local'))
 
+        node_parser = argparse.ArgumentParser(add_help=False)
+        node_parser.add_argument(
+            '--node', '-n', dest='node',
+            help=('Show only the specified node, for example: '
+                  'ctl01.example.local'))
+
         env_name_parser = argparse.ArgumentParser(add_help=False)
         env_name_parser.add_argument(
             '--env-name', '-e', dest='env_name',
@@ -238,6 +254,14 @@
                                     "for specified keys. Use on salt-master "
                                     "node for already generated inventory "
                                     "only!"))
+        subparsers.add_parser('trace-key',
+                              parents=[domain_parser, node_parser, key_parser],
+                              help=("Use 'reclass' to merge the model and "
+                                    "show all the classes where the "
+                                    "specified key is overwritten, and updated"
+                                    " values during merging and after "
+                                    "interpolation. "
+                                    "Use on salt-master node only!"))
         subparsers.add_parser('render',
                               parents=[render_parser, env_name_parser],
                               help=("Render cookiecutter template using "