Adding ONOS Segment Routing CLI files to new repo
diff --git a/cli/desc/version200/controller_node.py b/cli/desc/version200/controller_node.py
new file mode 100755
index 0000000..4c71c5b
--- /dev/null
+++ b/cli/desc/version200/controller_node.py
@@ -0,0 +1,1078 @@
+#
+# 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.
+#
+
+import command
+import fmtcnv
+"""
+CONTROLLER_NODE_FORMAT = {
+ 'controller-node' : {
+ 'field-orderings' : {
+ 'default' : [
+ 'Idx',
+ 'alias',
+ 'me',
+ 'ha-role',
+ 'change-date-time',
+ 'change-description',
+ 'status',
+ 'uptime',
+ 'errors'
+ #'domain-lookups-enabled',
+ #'logging-enabled',
+ ],
+ 'brief' : [
+ 'Idx',
+ 'alias',
+ 'me',
+ 'ha-role',
+ 'change-date-time',
+ 'change-description',
+ 'status',
+ 'uptime',
+ 'errors',
+ ],
+ 'details' : [
+ 'Idx',
+ 'alias',
+ 'id',
+ 'me',
+ 'ha-role',
+ 'change-date-time',
+ 'change-description',
+ 'status',
+ 'uptime',
+ 'errors',
+ 'domain-lookups-enabled', 'domain-name-servers',
+ 'domain-name', 'default-gateway',
+ 'ntp-server', 'time-zone',
+ 'logging-enabled', 'logging-server',
+ ],
+ 'without-vns' : [
+ 'Idx',
+ 'id',
+ 'me',
+ 'alias',
+ 'ha-role',
+ 'change-date-time',
+ 'change-description',
+ 'uptime',
+ 'domain-lookups-enabled', 'domain-name-servers',
+ 'domain-name', 'default-gateway',
+ 'ntp-server', 'time-zone',
+ 'logging-enabled', 'logging-server', 'logging-level',
+ ]
+ },
+ 'fields': {
+ 'id' : {
+ 'verbose-name' : 'Controller ID',
+ },
+ 'me' : {
+ 'verbose-name' : '@',
+ 'formatter' : fmtcnv.controller_node_me,
+ 'entry-formatter' : fmtcnv.controller_node_me_entry
+ },
+ 'domain-lookups-enabled' : {
+ 'verbose-name' : 'DNS',
+ 'formatter' : fmtcnv.replace_boolean_with_enable_disable,
+ },
+ 'domain-name-servers' : {
+ 'verbose-name' : 'DNS Servers',
+ 'formatter' : fmtcnv.print_domain_name_servers,
+ 'entry-formatter' : fmtcnv.print_all_domain_name_servers,
+ },
+ 'domain-name' : {
+ },
+ 'default-gateway' : {
+ },
+ 'ntp-server' : {
+ },
+ 'time-zone' : {
+ },
+ 'logging-enabled' : { 'verbose-name' : 'Logging',
+ 'formatter' : fmtcnv.replace_boolean_with_enable_disable,
+ },
+ 'logging-server' : {
+ },
+ 'logging-level' : {
+ },
+ 'ha-role' : {
+ 'verbose-name' : 'HA Role',
+ },
+ 'change-date-time' : {
+ 'verbose-name' : 'HA Last Change Time',
+ 'formatter' : fmtcnv.print_time_since_utc_timestr,
+ },
+ 'change-description' : {
+ 'verbose-name' : 'HA Change Reason',
+ },
+ 'uptime' : {
+ 'verbose-name' : 'Uptime',
+ 'formatter' : fmtcnv.print_timesince_msec_since
+ },
+ },
+ },
+}
+
+controller_node_show_actions = (
+ {
+ 'proc' : 'query-table',
+ },
+ {
+ 'proc' : 'join-table',
+ 'obj-type' : 'controller-alias',
+ 'key' : 'controller',
+ 'join-field' : 'id', # field in queried items
+ },
+ {
+ 'proc' : 'join-rest',
+ 'url' : 'system/controller',
+ 'rest-type' : 'dict-with-id',
+ 'key' : 'id',
+ 'join-field' : 'id',
+ 'add-field' : 'me',
+ },
+ # need a description mechanism to join ha-role, which
+ # needs to send urls to controller-node interfaces
+ # ie: the rest actions alwaus use the local controller
+ # (uptime has the same issue)
+ {
+ 'proc' : 'display',
+ 'format' : 'controller-node',
+ },
+),
+
+
+CONTROLLER_NODE_SHOW_COMMAND_DESCRIPTION = {
+ 'name' : 'show',
+ 'obj-type' : 'controller-node',
+ 'mode' : 'login',
+ 'command-type' : 'display-table',
+ 'all-help' : 'Show controller node information',
+ 'short-help' : 'Show controller nodes summaries',
+ 'doc' : 'controller|show',
+ 'args' : (
+ {
+ 'token' : 'controller-node',
+ 'action' : controller_node_show_actions,
+ }
+ ),
+}
+CONTROLLER_NODE_INTERFACE_FORMAT = {
+ 'controller-interface' : {
+ 'field-orderings': {
+ 'default' : ['Idx',
+ 'controller',
+ 'type',
+ 'number',
+ 'mode',
+ 'ip',
+ 'discovered-ip',
+ 'netmask',
+ 'mac',
+ 'firewall']
+ },
+ 'fields' : {
+ 'controller' : {
+ 'formatter' : fmtcnv.replace_controller_node_with_alias,
+ },
+ 'number' : {
+ },
+ 'ifname' : {
+ 'formatter' : lambda i, data: '%s%s' % (data['type'],
+ data['number'])
+ },
+ 'ip' : {
+ },
+ 'discovered-ip' : { 'verbose-name' : 'Found IP',
+ },
+ 'mode' : {
+ },
+ 'netmask' : {
+ },
+ 'type' : {
+ },
+ 'firewall' : {
+ 'verbose-name' : 'Firewall',
+ },
+ }
+ },
+}
+
+
+CONTROLLER_NODE_SUMMARY_FORMAT = {
+ 'controller-summary' : {
+ 'field-orderings' : {
+ 'default' : [
+ '# inter-switch links',
+ '# hosts',
+ '# attachment points',
+ '# IP Addresses',
+ '# VNSes',
+ '# Access Control Lists',
+ '# VNS Interfaces with ACL applied',
+ '# VNS Interfaces',
+ ]
+ },
+
+ 'fields' : {
+ '# Access Control Lists' : { 'verbose-name' : 'Access Control Lists'
+ },
+ '# VNS Interfaces' : { 'verbose-name' : 'VNS Interfaces'
+ },
+ '# hosts' : { 'verbose-name' : 'Hosts'
+ },
+ '# VNSes' : { 'verbose-name' : 'VNSesx'
+ },
+ '# attachment points' : { 'verbose-name' : 'Attachment Points'
+ },
+ '# inter-switch links' : { 'verbose-name' : 'Links'
+ },
+ '# IP Addresses' : { 'verbose-name' : 'Ip Addresses'
+ },
+ '# VNS Interfaces with ACL applied' : { 'verbose-name' : 'VNS If with Acl Applied'
+ },
+ },
+ },
+}
+
+
+COTROLLER_NODE_SWITCHES_FORMAT = {
+ 'controller-switches' : {
+ 'field-orderings' : {
+ 'default' : [
+ 'Idx', 'dpid',
+ ],
+ },
+ 'fields' : {
+ 'dpid' : { 'primary_key' : True,
+ 'verbose-name': 'Connected Switches',
+ 'formatter' : fmtcnv.print_switch_and_alias }
+ }
+ },
+
+}
+
+
+CONTROLLER_NODE_FIREWALL_RULE_FORMAT = {
+ 'firewall-rule' : {
+
+ 'field-orderings': {
+ 'default' : ['Idx',
+ 'controller',
+ 'type',
+ 'number',
+ 'src-ip',
+ 'vrrp-ip',
+ 'port',
+ 'proto',
+ 'rule']
+ },
+ 'fields' : {
+
+ 'controller' : {
+ 'formatter' : fmtcnv.replace_controller_node_with_alias,
+ },
+ 'interface' : {
+ },
+ 'port' : {
+ },
+ 'proto' : {
+ },
+ 'rule' : {
+ 'verbose-name' : 'Firewall Rule'
+ },
+ }
+ },
+}
+
+
+def controller_completion_add_localhost(completions, prefix):
+ if completions == None:
+ completions = {}
+ if not 'localhost ' in completions and 'localhost'.startswith(prefix) :
+ completions['localhost '] = 'Select currently logged in controller'
+
+
+command.add_completion('controller-add-localhost', controller_completion_add_localhost,
+ {'kwargs': { 'completions' : '$completions',
+ 'prefix' : '$text',
+ }})
+
+CONTROLLER_NODE_SHOW_ID_COMMAND_DESCRIPTION = {
+ 'name' : 'show',
+ 'obj-type' : 'controller-node',
+ 'mode' : 'login',
+ 'short-help' : 'Show controller-node associated details by name',
+ 'no-supported' : False,
+ 'action' : controller_node_show_actions,
+ 'doc' : 'controller|show-details',
+ 'args' : (
+ 'controller-node',
+ {
+ 'choices' : (
+ {
+ 'field' : 'id',
+ 'type' : 'identifier',
+ 'completion' : [
+ 'complete-object-field',
+ 'controller-add-localhost',
+ ],
+ 'data-handler' : 'alias-to-value',
+ 'action' : controller_node_show_actions,
+ 'doc' : 'controller|show-id',
+ },
+ {
+ 'token' : 'all',
+ 'doc' : 'reserved|all',
+ }
+ ),
+
+ },
+ {
+ 'optional' : True,
+ 'choices' : (
+ {
+ 'token' : 'interfaces',
+ 'obj-type' : 'controller-interface',
+ 'action' : 'display-table',
+ 'short-help' : 'Show network interface information for controller node',
+ 'doc' : 'controller|show-interfaces',
+ },
+ {
+ 'token' : 'firewall',
+ 'obj-type' : 'firewall-rule',
+ 'action' : 'display-table',
+ 'short-help' : 'Show firewall rules for controller node',
+ 'doc' : 'controller|show-firewall',
+ },
+ {
+ 'token' : 'summary',
+ 'action' : 'display-rest',
+ 'url' : 'controller/summary',
+ 'rest-type' : 'dict',
+ 'format' : 'controller-summary',
+ 'short-help' : 'Show a summary of configuration for controller node',
+ 'doc' : 'controller|show-summary',
+ },
+ {
+ 'token' : 'switches',
+ 'action' : 'display-rest',
+ 'url' : 'controller/stats/switches',
+ 'format' : 'controller-switches',
+ 'short-help' : 'Show switches connected to controller node',
+ 'doc' : 'controller|show-switches',
+ },
+ {
+ 'token' : 'alias',
+ 'action' : 'display-table',
+ 'obj-type' : 'controller-alias',
+ 'short-help' : 'Show the alias for controller node',
+ 'doc' : 'controller|show-alias',
+ },
+ )
+ },
+ {
+ 'optional' : True,
+ 'field' : 'detail',
+ 'type' : 'enum',
+ 'values' : ('details','brief'),
+ 'doc' : 'controller|show-detail',
+ }
+ ),
+}
+
+CONTROLLER_NODE_SHOW_STATS_COMMAND_DESCRIPTION = {
+ 'name' : 'show',
+ 'obj-type' : 'controller-node',
+ 'mode' : 'login',
+ 'short-help' : 'Show statistics for a given controller node',
+ 'command-type' : 'display-table',
+ 'doc' : 'show-stats',
+ 'args' : (
+ 'controller-node',
+ {
+ 'choices' : (
+ {
+ 'field' : 'id',
+ 'type' : 'identifier',
+ 'completion' : [
+ 'complete-object-field',
+ 'controller-add-localhost',
+ ],
+ 'action' : 'display-table',
+ 'data-handler' : 'alias-to-value',
+ 'doc' : 'controller|id',
+ },
+ {
+ 'field' : 'id',
+ 'type' : 'enum',
+ 'values' : 'all',
+ 'doc' : 'reserved|all',
+ }
+ ),
+ },
+ {
+ 'field' : 'stats',
+ 'type' : 'enum',
+ 'values' : 'stats',
+ 'obj-type' : 'controller-stats',
+ 'action' : 'legacy-cli',
+ },
+ ),
+}
+
+CONTROLLER_NODE_SHOW_OBJECT_STATS_COMMAND_DESCRIPTION = {
+ 'name' : 'show',
+ 'obj-type' : 'controller-node',
+ 'mode' : 'login',
+ 'short-help' : 'Show detailed controller-node related statistics',
+ 'command-type' : 'display-table',
+ 'args' : (
+ 'controller-node',
+ {
+ 'choices' : (
+ {
+ 'field' : 'id',
+ 'type' : 'identifier',
+ 'completion' : [
+ 'complete-object-field',
+ 'controller-add-localhost',
+ ],
+ 'action' : 'display-table',
+ 'data-handler' : 'alias-to-value',
+ },
+ {
+ 'field' : 'id',
+ 'type' : 'enum',
+ 'values' : 'all',
+ 'doc' : 'reserved|all',
+ }
+ ),
+ },
+ {
+ 'field' : 'stats',
+ 'type' : 'enum',
+ 'values' : 'stats',
+ 'obj-type' : 'controller-stats',
+ 'action' : 'legacy-cli',
+ },
+ {
+ 'field' : 'stats-type',
+ 'type' : 'enum',
+ 'values' : (
+ 'cpu-user',
+ 'disk-root',
+ 'mem-used',
+ 'mem-free',
+ 'cli-cpu',
+ 'database-cpu',
+ 'swap-used',
+ 'disk-boot',
+ 'statd-cpu',
+ 'cpu-system',
+ 'cpu-idle',
+ 'apache-cpu',
+ 'cpu-nice',
+ 'disk-log',
+ 'sdnplatform-cpu'
+ ),
+ 'doc' : 'controller|show-stats-type',
+ },
+ {
+ 'field' : 'start-time',
+ 'tag' : 'start-time',
+ 'type' : 'string',
+ 'short-help' : 'Start time for displaying the stats',
+ 'optional' : True,
+ 'doc' : 'controller|show-stats-start-time',
+ },
+ {
+ 'field' : 'end-time',
+ 'tag' : 'end-time',
+ 'type' : 'string',
+ 'short-help' : 'End time for displaying the stats',
+ 'optional' : True,
+ 'doc' : 'controller|show-stats-end-time',
+ },
+ {
+ 'field' : 'duration',
+ 'tag' : 'duration',
+ 'type' : 'string',
+ 'short-help' : 'Duration from the start or end for displaying the stats',
+ 'optional' : True,
+ 'doc' : 'controller|show-stats-duration',
+ },
+ {
+ 'field' : 'sample-interval',
+ 'tag' : 'sample-interval',
+ 'type' : 'integer',
+ 'short-help' : 'Spacing between sampling windows',
+ 'optional' : True,
+ 'doc' : 'controller|show-stats-sample-interval',
+ },
+ {
+ 'field' : 'sample-count',
+ 'tag' : 'sample-count',
+ 'type' : 'integer',
+ 'short-help' : 'Number of samples to show',
+ 'optional' : True,
+ 'doc' : 'controller|show-stats-sample-count',
+ },
+ {
+ 'field' : 'sample-window',
+ 'tag' : 'sample-window',
+ 'type' : 'integer',
+ 'optional' : True,
+ 'short-help' : 'Number of raw sample values to average around each down-sampled data point',
+ 'doc' : 'controller|show-stats-sample-window',
+ },
+ {
+ 'field' : 'data-format',
+ 'tag' : 'data-format',
+ 'type' : 'enum',
+ 'values' : ('value', 'rate'),
+ 'short-help' : 'Whether to display as a raw value or rate',
+ 'optional' : True,
+ 'doc' : 'controller|show-stats-data-format',
+ },
+ {
+ 'field' : 'display',
+ 'tag' : 'display',
+ 'type' : 'enum',
+ 'values' : ('latest-value',
+ 'graph',
+ 'table',
+ ),
+ 'short-help' : 'Display the latest value, a graph, or a table',
+ 'optional' : True,
+ 'doc' : 'controller|show-stats-display',
+ },
+ ),
+}
+
+CONTROLLER_INTERFACES_SHOW_COMMAND_DESCRIPTION = {
+ 'name' : 'show',
+ 'obj-type' : 'controller-interface',
+ 'short-help' : 'Show controller-node associated interfaces',
+ 'mode' : 'config-controller',
+ 'command-type' : 'display-table',
+ 'scoped' : True, # entries displayed filtered by pushed obj id
+ 'doc' : 'controller|show-interfaces',
+ 'args' : (
+ 'interfaces',
+ {
+ 'field' : 'type',
+ 'tag' : 'type',
+ 'type' : 'string',
+ 'optional' : True,
+ 'doc' : 'controller|show-interfaces-type',
+ },
+ {
+ 'field' : 'number',
+ 'tag' : 'number',
+ 'type' : 'integer',
+ 'optional' : True,
+ 'doc' : 'controller|show-interfaces-number',
+ },
+ )
+}
+
+
+CONTROLLER_NODE_SUBMODE_COMMAND_DESCRIPTION = {
+ 'name' : 'controller-node',
+ 'obj-type' : 'controller-node',
+ 'mode' : 'config*',
+ 'short-help' : 'Enter configuration submode for controller-nodes',
+ 'no-supported' : False, # don't allow removal of controller-nodes
+ # 'create' : False, # don't allow creation of new controller-nodes
+ 'command-type' : 'config-submode',
+ 'parent-field' : None,
+ 'current-mode-obj-id' : None,
+ 'submode-name' : 'config-controller',
+ 'doc' : 'controller|controller-node',
+ 'doc-example' : 'controller|controller-node-example',
+ 'args' : (
+ {
+ 'field' : 'id',
+ 'type' : 'identifier',
+ 'completion' : [
+ 'complete-alias-choice',
+ 'controller-add-localhost',
+ ],
+ 'data-handler' : 'alias-to-value',
+ 'optional-for-no' : False,
+ 'doc' : 'controller|controller-node-name',
+ }
+ )
+}
+
+
+CONTROLLER_NODE_ALIAS_COMMAND_DESCRIPTION = {
+ 'name' : 'controller-alias',
+ 'mode' : 'config-controller',
+ 'short-help' : 'Attach alias to controller',
+ 'command-type' : 'manage-alias',
+ 'obj-type' : 'controller-alias',
+ 'scoped' : True,
+ 'reserved' : 'localhost',
+ 'doc' : 'controller|alias',
+ 'args' : (
+ {
+ 'field' : 'alias',
+ 'optional-for-no' : True,
+ 'completion' : 'complete-object-field',
+ 'doc' : 'controller|alias-name',
+ 'action' : (
+ {
+ 'proc' : 'create-alias',
+ },
+ {
+ 'proc' : 'prompt-update',
+ },
+ ),
+ 'no-action' : (
+ {
+ 'proc' : 'delete-alias',
+ },
+ {
+ 'proc' : 'prompt-update',
+ },
+ )
+ }
+ )
+}
+
+
+CONTROLLER_NODE_INTERFACE_COMMAND_DESCRIPTION = {
+ 'name' : 'interface',
+ 'new-style' : True,
+ 'mode' : 'config-controller*',
+ 'short-help' : 'Enter interface submode, configure controller interface',
+ 'command-type': 'config-submode',
+ 'submode-name': 'config-controller-if',
+ 'obj-type': 'controller-interface',
+ 'parent-field': 'controller',
+ 'doc' : 'controller|interface',
+ 'args': (
+ {
+ 'field' : 'type',
+ 'help-name' : 'interface-type',
+ 'type' : 'enum',
+ 'values' : ('Ethernet',),
+ 'syntax-help' : 'Enter the interface type (e.g. Ethernet)',
+ 'doc' : 'controller|interface-type',
+ },
+ {
+ 'field' : 'number',
+ 'help-name' : 'interface-number',
+ 'base-type' : 'integer',
+ 'range' : (0,1000000),
+ #'completion' : 'complete-object-field',
+ 'syntax-help' : 'Enter the interface number, a small non-negative number (e.g. 0 or 1)',
+ 'doc' : 'controller|interface-number',
+ }
+ ),
+ 'no-action': ('begin-default-gateway-check', 'delete-objects', 'end-default-gateway-check'),
+}
+
+CONTROLLER_NODE_DOMAIN_NAME_SERVER_FORMAT = {
+ 'controller-domain-name-server' : {
+ 'field-orderings': {
+ 'default' : ['Idx', 'id', 'controller', 'priority', 'ip']
+ },
+ 'fields' : {
+ 'ip' : {
+ },
+ 'controller' : {
+ 'formatter' : fmtcnv.replace_controller_node_with_alias,
+ },
+ }
+ },
+}
+
+CONTROLLER_IP_COMMAND_DESCRIPTION = {
+ 'name' : 'ip',
+ 'mode' : 'config-controller',
+ 'short-help' : 'Associate dns, default gateway with the controller node',
+ 'doc' : 'controller|ip',
+ 'args' : {
+ 'choices': (
+ {
+ 'command-type': 'config',
+ 'obj-type': 'controller-node',
+ 'doc': 'controller|ip-domain',
+ 'args': (
+ 'domain',
+ {
+ 'choices': (
+ {
+ 'field' : 'domain-lookups-enabled',
+ 'token' : 'lookup',
+ 'type' : 'boolean',
+ 'doc' : 'controller|ip-domain-lookups',
+ 'no-action' : {
+ 'proc' : 'write-fields',
+ 'data' : {
+ 'domain-lookups-enabled' : False,
+ },
+ },
+ },
+ {
+ 'field': 'domain-name',
+ 'tag': 'name',
+ 'type': 'domain-name',
+ 'syntax-help': "Enter the network's domain name",
+ 'default-for-no': 'xyz.com',
+ 'doc': 'controller|ip-domain-name',
+ },
+ ),
+ },
+ ),
+ },
+ (
+ {
+ 'command-type': 'config-object',
+ 'obj-type': 'controller-domain-name-server',
+ 'parent-field': 'controller',
+ 'doc': 'controller|ip-name-server',
+ 'args': (
+ {
+ 'tag' : 'name-server',
+ 'field' : 'ip',
+ 'type' : 'ip-address-not-mask',
+ 'syntax-help' : 'Enter the IP address of the domain name server',
+ 'doc' : 'controller|ip-name-server-value',
+ },
+ ),
+ },
+ ),
+ {
+ 'field': 'default-gateway',
+ 'command-type': 'config-with-default-gateway-check',
+ 'obj-type': 'controller-node',
+ 'doc': 'controller|ip-default-gateway',
+ 'args': {
+ 'tag': 'default-gateway',
+ 'field': 'default-gateway',
+ 'type': 'ip-address-not-mask',
+ 'syntax-help': 'Enter the IP address of the default gateway',
+ 'default-for-no': '10.10.10.10',
+ 'doc': 'controller|ip-default-gateway-value',
+ },
+ },
+ ),
+ },
+}
+
+INTERFACE_IP_COMMAND_DESCRIPTION = {
+ 'name' : 'ip',
+ 'mode' : 'config-controller-if',
+ 'command-type' : 'config-with-default-gateway-check',
+ 'obj-type' : 'controller-interface',
+ 'short-help' : 'Associate ip address with interface',
+ 'doc' : 'controller|ip',
+ 'args' : {
+ 'choices' : (
+ {
+ 'fields': ('ip', 'netmask'),
+ 'doc': 'controller|ip-address',
+ 'args': (
+ 'address',
+ {
+ 'choices': (
+ (
+ {
+ 'field': 'ip',
+ 'help-name': 'ip-address',
+ 'type': 'ip-address-not-mask',
+ 'syntax-help': 'Enter an IP or CIDR address',
+ 'default-for-no' : '10.10.10.10',
+ 'doc': 'controller|ip-address-value',
+ },
+ {
+ 'field': 'netmask',
+ 'type': 'netmask',
+ 'syntax-help': 'Enter a netmask',
+ 'default-for-no' : '0.0.0.0',
+ 'doc': 'controller|ip-address-netmask',
+ }
+ ),
+ {
+ 'field': 'cidr',
+ 'help-name': 'cidr-address',
+ 'type': 'cidr-range',
+ 'data-handler': 'split-cidr-data',
+ 'completion-text': None,
+ 'dest-ip': 'ip',
+ 'dest-mask': 'mask',
+ 'doc': 'controller|ip-address-cidr',
+ }
+ )
+ },
+ ),
+ },
+ {
+ 'args': {
+ 'tag': 'mode',
+ 'field': 'mode',
+ 'type': 'enum',
+ 'values': ('dhcp', 'static'),
+ 'syntax-help': 'Enter the IP address configuration mode, either "dhcp" or "static"',
+ 'default-for-no': 'static',
+ 'doc': 'controller|ip-mode',
+ },
+ },
+ ),
+ }
+}
+
+NTP_COMMAND_DESCRIPTION = {
+ 'name' : 'ntp',
+ 'mode' : 'config-controller',
+ 'short-help' : 'Configure ntp for controller-node',
+ 'command-type': 'config',
+ 'obj-type' : 'controller-node',
+ 'doc' : 'controller|ntp',
+ 'doc-example' : 'controller|ntp-example',
+ 'args': {
+ 'tag' : 'server',
+ 'field' : 'ntp-server',
+ 'type' : 'ip-address-or-domain-name',
+ 'syntax-help' : 'Enter the IP address or domain name of the NTP server',
+ 'short-help' : 'Configure the NTP server name',
+ 'default-for-no': 'xyz.com',
+ 'completion' : 'complete-object-field',
+ 'doc' : 'controller|ntp-server',
+ }
+}
+
+LOGGING_COMMAND_DESCRIPTION = {
+ 'name' : 'logging',
+ 'short-help' : 'Configure logging (syslog) for controller-node',
+ 'mode' : 'config-controller',
+ 'command-type': 'config',
+ 'obj-type' : 'controller-node',
+ 'doc' : 'controller|logging',
+ 'doc-example' : 'controller|logging-example',
+ 'args': {
+ 'choices': (
+ {
+ 'field' : 'logging-enabled',
+ 'token' : 'on',
+ 'type' : 'boolean',
+ 'short-help' : 'Enable remote logging',
+ 'doc' : 'controller|logging-enable',
+ },
+ (
+ {
+ 'token' : 'server',
+ 'short-help' : 'Set the remote syslog server name',
+ 'doc' : 'controller|logging-server',
+ },
+ {
+ 'field' : 'logging-server',
+ 'help-name' : 'server-ip-or-domain',
+ 'type' : 'ip-address-or-domain-name',
+ 'syntax-help' : 'Enter the IP address or domain name of the syslog server',
+ 'completion' : 'complete-object-field',
+ 'match-for-no' : 'logging-server',
+ 'no-action' : 'reset-fields',
+ },
+ {
+ 'field' : 'logging-level',
+ 'tag' : 'level',
+ 'short-help' : 'Set the logging level for remote syslog',
+ 'type' : 'enum',
+ 'optional' : True,
+ 'values' : ('emerg', 'alert', 'crit', 'err',
+ 'warning', 'notice', 'info', 'debug',
+ '0', '1', '2', '3', '4', '5', '6', '7'
+ ),
+ 'doc' : 'controller|logging-level',
+ }
+ ),
+ )
+ }
+}
+
+FIREWALL_COMMAND_DESCRIPTION = {
+ 'name' : 'firewall',
+ 'short-help' : 'Configure firewall rule for controller-node',
+ 'command-type' : 'config-object',
+ 'mode' : 'config-controller-if',
+ 'obj-type' : 'firewall-rule',
+ 'doc' : 'controller|firewall',
+ 'parent-field' : 'interface',
+ 'args': (
+ # This arg/token is really just syntactic sugar for the command.
+ # There's no 'deny' value, because things are denied by default.
+ # Instead you just use a 'no' command to delete the firewall rule.
+ {
+ 'token' : 'allow',
+ 'short-help' : 'Allow a given set of traffic',
+ 'doc' : 'controller|firewall-allow',
+ },
+ {
+ 'field' : 'src-ip',
+ 'tag' : 'from',
+ 'type' : 'ip-address',
+ 'optional' : True,
+ 'optional-for-no' : True,
+ 'match-for-no' : True,
+ 'doc' : 'controller|firewall-src-ip',
+ },
+ {
+ 'field' : 'vrrp-ip',
+ 'tag' : 'local-ip',
+ 'type' : 'ip-address',
+ 'optional' : True,
+ 'optional-for-no' : True,
+ 'match-for-no' : True,
+ 'doc' : 'controller|firewall-local-ip',
+ },
+ {
+ 'choices' : (
+ {
+ 'field' : 'port',
+ 'type' : 'enum',
+ 'short-help' : 'Configure rule for a specific service port',
+ 'doc' : 'controller|firewall-port',
+ 'data' : { 'proto' : 'tcp' },
+ 'values': {
+ 'openflow' : 6633,
+ 'web' : 80,
+ 'ssl' : 443,
+ 'ssh' : 22
+ },
+ 'match-for-no' : True,
+ 'doc' : 'controller|firewall-+',
+ },
+ (
+ {
+ 'field' : 'proto',
+ 'type' : 'enum',
+ 'short-help' : 'Configure rule for protocol (TCP, UDP)',
+ 'values' : ('udp', 'tcp'),
+ 'doc' : 'controller|firewall-+',
+ 'match-for-no' : True,
+ },
+ {
+ 'optional-for-no' : False,
+ 'choices': (
+ {
+ 'field' : 'port',
+ 'type' : 'enum',
+ 'short-help' : 'Configure rule for a specific service port',
+ 'doc': 'controller|firewall-port',
+ 'values': {
+ 'openflow' : 6633,
+ 'web' : 80,
+ 'ssl' : 443,
+ 'ssh' : 22
+ },
+ 'match-for-no' : True,
+ 'doc' : 'controller|firewall-+',
+ },
+ {
+ 'field' : 'port',
+ 'base-type' : 'integer',
+ 'range' : (0, 65535),
+ 'completion-text' : '0-65535',
+ 'doc' : 'controller|firewall-port',
+ 'match-for-no' : True,
+ },
+ )
+ },
+ ),
+ {
+ 'field' : 'proto',
+ 'type' : 'enum',
+ 'short-help' : 'Configure rule for protocol (TCP, UDP)',
+ 'values' : 'vrrp',
+ 'doc' : 'controller|firewall-+',
+ 'match-for-no' : True,
+ },
+ ),
+ },
+ )
+}
+
+MONTH_NAMES = ('January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December')
+
+
+
+CLOCK_TIMEZONE_COMMAND_DESCRIPTION = {
+ 'name' : 'clock',
+ 'mode' : 'config-controller',
+ 'short-help' : 'Configure time zone',
+ 'doc' : 'controller|clock-timezone',
+ 'doc-example' : 'controller|clock-timezone-example',
+ 'command-type' : 'config',
+ 'obj-type' : 'controller-node',
+ 'args' : {
+ 'tag' : 'timezone',
+ 'field' : 'time-zone',
+ 'type' : 'string',
+ 'default-for-no' : 'UTC',
+ 'completion' : 'time-zone-completion',
+ 'validation' : 'time-zone-validation',
+ 'syntax-help' : 'Enter the time zone',
+ 'short-help' : 'Configure the time zone',
+ }
+}
+
+CLOCK_SET_COMMAND_DESCRIPTION = {
+ 'name' : 'clock',
+ 'mode' : 'config-controller',
+ 'no-supported' : False,
+ 'short-help' : 'Set clock',
+ 'doc' : 'controller|clock-set',
+ 'doc-example' : 'controller|clock-set-example',
+ 'command-type' : 'realtime',
+ 'action' : 'set-clock',
+ 'args' : (
+ {
+ 'token' : 'set',
+ 'short-help' : 'Set the current time and date'
+ },
+ {
+ 'field' : 'time',
+ 'base-type' : 'string',
+ 'pattern' : '^[0-9]{1,2}:[0-9]{1,2}:[0-9]{2}$',
+ 'syntax-help' : 'Enter the time (HH:MM:SS)'
+ },
+ {
+ 'field' : 'day-of-month',
+ 'base-type' : 'integer',
+ 'range' : (1,31),
+ 'syntax-help' : 'Enter the day of the month (1-31)'
+ },
+ {
+ 'field' : 'month',
+ 'type' : 'enum',
+ 'values' : MONTH_NAMES,
+ 'syntax-help' : 'Enter the month (e.g. January, March)'
+ },
+ {
+ 'field' : 'year',
+ 'base-type' : 'integer',
+ 'range' : (0,10000),
+ 'syntax-help' : 'Enter the year'
+ },
+ )
+}
+"""