Adding ONOS Segment Routing CLI files to new repo
diff --git a/cli/desc/version200/host.py b/cli/desc/version200/host.py
new file mode 100755
index 0000000..b65bb4e
--- /dev/null
+++ b/cli/desc/version200/host.py
@@ -0,0 +1,650 @@
+#
+# Copyright (c) 2013 Big Switch Networks, Inc.
+#
+# Licensed under the Eclipse Public License, Version 1.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+#      http://www.eclipse.org/legal/epl-v10.html
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+#
+"""
+HOST_SUBMODE_COMMAND_DESCRIPTION = {
+    'name'                : 'host',
+    'obj-type'            : 'host-config',
+    'mode'                : 'config*',
+    'command-type'        : 'config-submode',
+    'parent-field'        : None,
+    'current-mode-obj-id' : None,
+    'submode-name'        : 'config-host',
+    'short-help'          : 'Host submode, configure host details',
+    'doc'                 : 'host|host',
+    'doc-example'         : 'host|host-example',
+    'data'                : {
+                                'address-space' : 'default',
+                                'vlan'          : '',
+                            },
+    'args'                : (
+         {
+            'field'           : 'address-space',
+            'tag'             : 'address-space',
+            'type'            : 'string',
+            'optional'        : True,
+            'optional-for-no' : True,
+            'completion'      : 'complete-from-another',
+            'other'           : 'address-space',
+            'doc'             : 'host|host-address-space',
+         },
+         {
+            'field'           : 'vlan',
+            'tag'             : 'vlan',
+            'type'            : 'integer',
+            'range'           : (0,4095),
+            'optional'        : True,
+            'optional-for-no' : True,
+            'doc'             : 'host|host-vlan',
+         },
+         {
+             'field'          : 'mac',
+             'type'           : 'host',
+             'completion'     : [ 'complete-alias-choice',
+                                ],
+             'other'          : 'host',
+             'scoped'         : True,
+             'data-handler'   : 'alias-to-value',
+         }
+    )
+}
+"""
+
+host_show_mac_action = (
+    {
+        'proc'       : 'query-table',
+        'obj-type'   : 'host',
+    },
+    {   # add any associated tags
+        'proc'       : 'join-table',
+        'obj-type'   : 'tag-mapping',
+        'key'        : 'mac',
+        'key-value'  : 'tag', # causes list creation for multiple matches
+        'join-field' : 'mac',
+        'add-field'  : 'tag',
+    },
+    {
+        'proc'       : 'display',
+        'format'     : 'host',
+    },
+)
+
+
+HOST_SHOW_COMMAND_DESCRIPTION = {
+    'name'         : 'show',
+    'mode'         : 'login',
+    'short-help'   : 'Show host summaries',
+    'doc'          : 'host|show',
+    'doc-example'  : 'host|show-example',
+    'no-supported' : False,
+    'command-type' : 'display-table',
+    'args' : (
+         {
+            'token'  : 'host',
+            'action' : host_show_mac_action,
+         }
+    )
+}
+
+HOST_SHOW_MAC_COMMAND_DESCRIPTION = {
+    'name'         : 'show',
+    'mode'         : 'login',
+    'short-help'   : 'Show host details based on query',
+    'doc'          : 'host|show-host',
+    'doc-example'  : 'host|show-host-example',
+    'no-supported' : False,
+    'command-type' : 'display-table',
+    'obj-type'     : 'host',
+    'action'       : host_show_mac_action,
+    'args' : (
+        'host',
+        {
+            'choices' : (
+                {
+                    'field'        : 'mac',
+                    'type'         : 'host',
+                    'short-help'   : 'Show the hosts with the given MAC or alias',
+                    'help-name'    : 'host mac or alias',
+                    'completion'   : 'complete-alias-choice',
+                    'data-handler' : 'alias-to-value',
+                    'doc'          : 'host|show-host-mac',
+                },
+                {
+                    'field'        : 'address-space',
+                    'short-help'   : 'Show the hosts with the given IPv4 address',
+                    'tag'          : 'address-space',
+                    'type'         : 'identifier',
+                    'help-name'    : 'address space',
+                    'completion'   : 'complete-object-field',
+                    'doc'          : 'host|show-host-address-space',
+                },
+                {
+                    'field'        : 'ipv4',
+                    'short-help'   : 'Show the hosts with the given IPv4 address',
+                    'tag'          : 'ip-address',
+                    'type'         : 'ip-address',
+                    'help-name'    : 'ip address',
+                    'completion'   : 'complete-object-field',
+                    'doc'          : 'host|show-host-ipv4',
+                },
+                {
+                    'field'        : 'dpid',
+                    'short-help'   : 'Show the hosts attached to the given switch',
+                    'tag'          : 'switch',
+                    'type'         : 'dpid',
+                    'help-name'    : 'switch dpid or alias',
+                    'completion'   : 'complete-object-field',
+                    #'completion'   : 'complete-alias-choice',
+                    'data-handler' : 'alias-to-value',
+                    'doc'          : 'host|show-host-switch',
+                },
+                {
+                   'field'     : 'host',
+                   'short-help': 'Show all hosts',
+                   'type'      : 'enum',
+                   'values'    : 'all',
+                   'doc'       : 'host|show-host-all',
+                },
+            )
+        },
+        {
+            'optional' : True,
+            'choices' : (
+                (
+                    {
+                        'token'      : 'by',
+                        'short-help' : 'Sort displayed hosts',
+                        'doc'        : 'reserved|by',
+                    },
+                    {
+                        'token'    : 'last-seen',
+                        'short-help': 'Sort by the last seen time',
+                        'sort'     : '-last-seen',
+                        'action'   : 'display-table',
+                        'doc'      : 'host|show-host-by-last-seen',
+                    },
+                ),
+            )
+        },
+        {
+            'optional'   : True,
+            'field'      : 'detail',
+            'type'       : 'enum',
+            'short-help' : 'Display either detailed or brief information',
+            'values'     : ('details','brief'),
+            'doc'        : 'format|+',
+        },
+    )
+}
+
+
+HOST_SHOW_MAC_ITEMS_COMMAND_DESCRIPTION = {
+    'name'         : 'show',
+    'mode'         : 'login',
+    'short-help'   : 'Show various host related details by query',
+    'doc'          : 'host|show-host-items',
+    'doc-example'  : 'host|show-host-items-example',
+    'no-supported' : False,
+    'command-type' : 'display-table',
+    'obj-type'     : 'host',
+    'args' : (
+        'host',
+        {
+            'choices' : (
+                {
+                    'field'        : 'mac',
+                    'type'         : 'host',
+                    'short-help'   : 'Show the hosts with the given MAC or alias',
+                    'help-name'    : 'host mac or alias',
+                    'completion'   : 'complete-alias-choice',
+                    'data-handler' : 'alias-to-value',
+                    'doc'          : 'host|show-host-mac',
+                },
+                {
+                    'field'        : 'ipv4',
+                    'tag'          : 'ip-address',
+                    'short-help'   : 'Show the hosts with the given IPv4 address',
+                    'type'         : 'ip-address',
+                    'help-name'    : 'ip address',
+                    'completion'   : 'complete-object-field',
+                    'doc'          : 'host|show-host-ipv4',
+                },
+                {
+                    'field'        : 'dpid',
+                    'short-help'   : 'Show the hosts attached to the given switch',
+                    'tag'          : 'switch',
+                    'type'         : 'dpid',
+                    'help-name'    : 'switch dpid or alias',
+                    'completion'   : 'complete-object-field',
+                    #'completion'   : 'complete-alias-choice',
+                    'data-handler' : 'alias-to-value',
+                    'doc'          : 'host|show-host-switch',
+                },
+                {
+                   'field'     : 'host',
+                   'short-help': 'Show all hosts',
+                   'type'      : 'enum',
+                   'values'    : 'all',
+                   'doc'       : 'host|show-host-all',
+                },
+            )
+        },
+        {
+            'choices' : (
+                 (
+                     {
+                        'field'      : 'attachment-point',
+                        'type'       : 'enum',
+                        'values'     : 'attachment-point',
+                        'obj-type'   : 'host-attachment-point',
+                        'action'     : 'display-table',
+                        'short-help' : 'Show host attachment points',
+                        'doc'        : 'host|show-host-item-attachment-point',
+                    },
+                    {
+                        'optional' : True,
+                        'choices' : (
+                            (
+                                {
+                                    'token'      : 'by',
+                                    'short-help' : 'Sort displayed hosts',
+                                    'doc'        : 'reserved|by',
+                                },
+                                {
+                                    'choices' : (
+                                        {
+                                            'token'      : 'host-last-seen',
+                                            'sort'       : 'host,-last-seen',
+                                            'obj-type'   : 'host-attachment-point',
+                                            'action'     : 'display-table',
+                                            'short-help' : 'Sort by the last seen time for the host',
+                                            'doc'        : 'host|show-host-by-host-last-seen',
+                                        },
+                                        {
+                                            'token'      : 'last-seen',
+                                            'sort'       : '-last-seen',
+                                            'obj-type'   : 'host-attachment-point',
+                                            'action'     : 'display-table',
+                                            'short-help' : 'Sort by the last seen time for the attachment point',
+                                            'doc'        : 'host|show-host-by-last-seen',
+                                        },
+                                    ),
+                                },
+                            ),
+                        ),
+                    },
+                    {
+                        'field'      : 'detail',
+                        'type'       : 'enum',
+                        'values'     : ('details', 'brief'),
+                        'optional'   : True,
+                        'short-help' : 'Display either detailed or brief information',
+                        'doc'        : 'format|+',
+                    }
+                 ),
+                 (
+                    {
+                       'field'    : 'network-address',
+                       'type'     : 'enum',
+                       'values'   : 'ip-address',
+                       'obj-type' : 'host-network-address',
+                       'action'   : 'display-table',
+                       'doc'      : 'host|show-host-item-network-address',
+                    },
+                    {
+                        'optional' : True,
+                        'choices' : (
+                            (
+                                {'token': 'by',
+                                 'short-help': 'Sort displayed hosts'
+                                 },
+                                {
+                                    
+                                    'choices' : (
+                                       {
+                                           'token'      : 'host-last-seen',
+                                           'sort'       : 'host,-last-seen',
+                                           'short-help' : 'Sort by the last seen time for the host',
+                                            'obj-type'  : 'host-network-address',
+                                            'action'    : 'display-table',
+                                            'doc'       : 'host|show-host-by-host-last-seen',
+                                       },
+                                       {
+                                           'token'      : 'last-seen',
+                                           'sort'       : '-last-seen',
+                                           'short-help' : 'Sort by the last seen time for the network address',
+                                           'obj-type'   : 'host-network-address',
+                                           'action'     : 'display-table',
+                                           'doc'        : 'host|show-host-by-last-seen',
+                                       }
+                                    )
+                                },
+                            ),
+                        ),
+                    },
+                    {
+                        'field'      : 'detail',
+                        'type'       : 'enum',
+                        'values'     : ('details', 'brief'),
+                        'optional'   : True,
+                        'short-help' : 'Display either detailed or brief information',
+                        'doc'        : 'format|+'
+                    }
+                 ),
+                 {
+                    'field'      : 'alias',
+                    'type'       : 'enum',
+                    'values'     : 'alias',
+                    'obj-type'   : 'host-alias',
+                    'action'     : 'display-table',
+                    'short-help' : 'Display host alias mappings',
+                    'doc'        : 'host|show-host-item-alias',
+                 },
+            ),
+        },
+    )
+}
+
+"""
+HOST_HOST_ALIAS_COMMAND_DESCRIPTION = {
+    'name'         : 'host-alias',
+    'mode'         : 'config-host',
+    'short-help'   : 'Attach alias to host',
+    'doc'          : 'host|host-alias',
+    'doc-example'  : 'host|host-alias-example',
+    'command-type' : 'manage-alias',
+    'obj-type'     : 'host-alias',
+    'scoped'       : True,
+    'reserved'     : [ 'switch', 'ip-address' ], 
+    'args'         : (
+        {
+            'field'           : 'id',
+            'base-type'       : 'identifier',
+            'optional-for-no' : False,
+            'completion'      : 'complete-object-field',
+        }
+    )
+}
+
+
+HOST_SECURITY_POLICY_BIND_IP_ADDRESS_COMMAND_DESCRIPTION = {
+    'name'         : 'security',
+    'mode'         : 'config-host',
+    'short-help'   : 'Configure security policies for host',
+    'doc'          : 'host|security',
+    'doc-example'  : 'host|security-example',
+    'command-type' : 'config-object',
+    'parent-field' : 'host',
+    'args'         : (
+        {
+            'token' : 'policy',
+            'doc'   : 'host|security-policy',
+        },
+        {
+            'token' : 'bind',
+            'doc'   : 'host|security-bind',
+        },
+        {
+            'choices' : (
+                {
+                    'field'           : 'ip-address',
+                    'tag'             : 'ip-address',
+                    'base-type'       : 'ip-address',
+                    'optional-for-no' : False,
+                    # could possibly complete all ip-addresses
+                    'completion'      : 'complete-object-field',
+                    'obj-type'        : 'host-security-ip-address',
+                    'action'          : 'write-object',
+                    'no-action'       : 'delete-objects',
+                    'short-help'      : 'restrict host access to ip-address',
+                    'doc'             : 'host|security-ip-address',
+                },
+                (
+                    {
+                        'token'           : 'attachment-point',
+                        'short-help'      : 'restrict host access to attachment point',
+                        'doc'             : 'host|security-attachment-point',
+                    },
+                    {
+                        'choices' :       (
+                            {
+                                'token'           : 'all'
+                            },
+                            {
+                                'field'           : 'dpid',
+                                'type'            : 'dpid',
+                                'completion'      : [
+                                                      'complete-object-field',
+                                                      'complete-alias-choice',
+                                                    ],
+                                'obj-type'        : 'switches',
+                                'other'           : 'switches|dpid',
+                                'help-name'       : 'switch dpid or alias',
+                                'data-handler'    : 'alias-to-value',
+                                'optional-for-no' : False,
+                                'short-help'      : 'identify switch for attachment point',
+                                'doc'             : 'host|security-attachment-point-switch',
+                            },
+                        )
+                    },
+                    {
+                        'field'           : 'if-name-regex',
+                        'optional-for-no' : False,
+                        'syntax-help'     : 'Regular expression match for interfaces',
+                        'action'          : 'write-object',
+                        'no-action'       : 'delete-objects',
+                        'obj-type'        : 'host-security-attachment-point',
+                        'completion'      : [
+                                              'complete-object-field',
+                                              'complete-from-another',
+                                            ],
+                        'other'           : 'interfaces|portName',
+                        'scoped'          : 'switch',
+                        'short-help'      : 'identify interface for attachment point',
+                        'doc'             : 'host|security-attachment-point-interface',
+                    },
+                ),
+            ),
+        },
+    ),
+}
+"""
+
+#
+# FORMATS
+#
+
+import fmtcnv
+
+
+HOST_FORMAT = {
+    'host': {
+        'field-orderings' : {
+            'default' : [ 'Idx', 'id',  
+                          'ips', 'attachment-points' ],
+            'details' : [ 'Idx', 'id',  
+                          'vendor', 'ips', 'attachment-points'
+                          ],
+            'brief'   : [ 'Idx', 'id', 'ips'],
+            },
+
+
+        'fields': {
+            'id'                 : {
+                                      'verbose-name': 'MAC Address',
+                                      'formatter' : fmtcnv.print_host_and_alias,
+                                    },
+            'mac'                : {
+                                      'verbose-name': 'MAC Address',
+                                      'formatter' : fmtcnv.print_host_and_alias,
+                                    },
+            'address-space'       : {
+                                      'verbose-name' : 'Address Space',
+                                    },
+            'vendor'              : {
+                                      'formatter' : fmtcnv.sanitize_unicode,
+                                    },
+            'vlan'                : {
+                                      'verbose-name': 'VLAN',
+                                      'formatter' : fmtcnv.convert_to_string,
+                                    },
+            'ips'                 : {
+                                      'verbose-name' : 'IP Address',
+                                      'formatter' : fmtcnv.print_ip_addresses,
+                                      'entry-formatter' : fmtcnv.print_all_ip_addresses,
+                                    },
+            'attachment-points'   : {
+                                      'verbose-name' : 'Switch/OF Port (Physical Port)',
+                                      'formatter' : fmtcnv.print_host_attachment_point,
+                                      'entry-formatter' : fmtcnv.print_all_host_attachment_points,
+                                    },
+            'tag'                 : {
+                                      'formatter' : fmtcnv.print_host_tags,
+                                      'entry-formatter' : fmtcnv.print_all_host_tags,
+                                    },
+            'dhcp-client-name'    : {
+                                      'verbose-name' : 'DHCP Client Name',
+                                    },
+            'last-seen'           : {
+                                      'verbose-name': 'Last Seen',
+                                      'formatter' : fmtcnv.print_time_since_utc,
+                                    },
+             },
+        },
+}
+
+
+HOST_ATTACHMENT_POINT_FORMAT = {
+    'host-attachment-point' : {
+        'field-orderings' : {
+            'default' : [ 'Idx', 'mac', 'vlan', 'address-space', 'switch', 'ingress-port', 'status', ],
+            'details' : [ 'Idx', 'mac', 'vlan', 'address-space', 'switch', 'ingress-port', 'status', 'last-seen'],
+            },
+
+         'fields': {
+            'mac'          : {
+                              'verbose-name' : 'MAC Address',
+                              'formatter' : fmtcnv.print_host_and_alias,
+                             },
+            'vlan'         : {
+                                'verbose-name': 'VLAN',
+                                'formatter' : fmtcnv.convert_to_string,
+                             },
+
+            'address-space' : {
+                                'verbose-name' : 'Address Space',
+                              },
+            'switch'       : {
+                              'verbose-name' : 'Switch ID',
+                              'formatter' : fmtcnv.print_switch_and_alias
+                             },
+            'ingress-port' : {
+                              'verbose-name': 'Port',
+                              'formatter' : fmtcnv.decode_openflow_port,
+                             },
+            'status'       : {
+                               'verbose-name': 'Error Status (if any)'
+                             },
+            'last-seen'    : {
+                               'verbose-name': 'Last Seen',
+                               'formatter' : fmtcnv.timestamp_to_local_timestr,
+                             },
+             },
+         },
+}
+
+
+HOST_NETWORK_ADDRESS_FORMAT = {
+    'host-network-address': {
+        'field-orderings' : {
+            'default' : [ 'Idx', 'mac', 'address-space', 'vlan', 'ip-address',  ],
+            'details' : [ 'Idx', 'mac', 'address-space', 'vlan', 'ip-address', 'last-seen'  ],
+            },
+        'fields': {
+            'mac'        : {
+                             'verbose-name': 'MAC Address',
+                           },
+            'vlan'       : {
+                             'verbose-name': 'VLAN',
+                           },
+            'address-space' : {
+                                'verbose-name' : 'Address Space',
+                              },
+            'id'         : {
+                           },
+            'ip-address':  {
+                             'verbose-name': 'IP Address',
+                          },
+            'last-seen' : {
+                            'verbose-name': 'Last Seen',
+                            'formatter' : fmtcnv.timestamp_to_local_timestr,
+                          },
+            },
+        },
+}
+
+
+HOST_ALIAS_FORMAT = {
+    'host-alias' : {
+        'field-orderings' : {
+            'default'     : [ 'Idx', 'id', 'address-space', 'vlan', 'mac' ]
+            },
+        },
+}
+
+"""
+HOST_CONFIG_FORMAT = {
+    'host-config' : {
+        'field-orderings' : {
+            'default' : [ 'Idx', 'mac', 'vlan', 'vendor', 'ips',
+                          'attachment-points', 'tag', 'last-seen' ],
+            'brief'   : [ 'Idx', 'mac', 'vlan', 'ips', 'last-seen'],
+            },
+        'fields' : {
+            'mac'                : {
+                                      'verbose-name': 'MAC Address',
+                                      'formatter' : fmtcnv.print_host_and_alias,
+                                    },
+            'vendor'              : {
+                                      'formatter' : fmtcnv.sanitize_unicode,
+                                    },
+            'vlan'                : {
+                                      'verbose-name': 'VLAN',
+                                      'formatter' : fmtcnv.convert_to_string,
+                                    },
+            'ips'                 : {
+                                      'verbose-name' : 'IP Address',
+                                      'formatter' : fmtcnv.print_ip_addresses,
+                                      'entry-formatter' : fmtcnv.print_all_ip_addresses,
+                                    },
+            'attachment-points'   : {
+                                      'verbose-name' : 'Switch/OF Port (Physical Port)',
+                                      'formatter' : fmtcnv.print_host_attachment_point,
+                                      'entry-formatter' : fmtcnv.print_all_host_attachment_points,
+                                    },
+            'tag'                 : {
+                                      'formatter' : fmtcnv.print_host_tags,
+                                      'entry-formatter' : fmtcnv.print_all_host_tags,
+                                    },
+            'host-alias'          : {
+                                    },
+            'last-seen'           : {
+                                      'verbose-name': 'Last Seen',
+                                      'formatter' : fmtcnv.print_time_since_utc,
+                                    },
+        },
+    },
+}
+"""
\ No newline at end of file