blob: 5fe7ad2009c5292bbcb0b25fda62b9a3b470a1e1 [file] [log] [blame]
#
# Copyright (c) 2010,2011,2012,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
INTERNAL_SUBMODE_COMMAND_DESCRIPTION = {
'name' : 'internal',
'mode' : 'config',
'no-supported' : False,
'help' : 'Enter Internal CLI debugging mode',
'short-help' : 'Enter CLI internal debugging mode',
'doc' : 'internal|internal',
'doc-example' : 'internal|internal-example',
'command-type' : 'config-submode',
'obj-type' : None,
'current-mode-obj-id' : None,
'parent-field' : None,
'submode-name' : 'config-internal',
'args' : (),
}
INTERNAL_SHOW_INTERFACES_COMMAND_DESCRIPTION = {
'name' : 'show',
'mode' : 'config-internal',
'no-supported' : False,
'short-help' : 'Show system interfaces',
'doc' : 'internal|show-interfaces',
'doc-example' : 'internal|show-interfaces-example',
'args' : (
'system',
{
'token' : 'interfaces',
'action' : 'display-rest' ,
'url' : 'system/interfaces/',
'format' : 'system-interfaces',
},
{
'field' : 'detail',
'type' : 'enum',
'values' : ('details','brief'),
'optional' : True,
'doc' : 'format|+'
}
)
}
DEBUG_INTERNAL_TOPOLOGY_COMMAND_DESCRIPTION = {
'name' : 'internal',
'mode' : 'config-internal',
'command-type' : 'display-rest',
'url' : [
'internal-debugs/topology-manager/%(dpid)s',
'internal-debugs/topology-manager/',
],
'format' : 'switch',
'short-help' : 'internal topology display',
'doc' : 'internal|internal-topology',
'args' : (
'topology',
{
'choices' : (
{
'field' : 'dpid',
'type' : 'dpid',
'optional' : 'true',
},
)
}
)
}
DEBUG_INTERNAL_CLUSTER_COMMAND_DESCRIPTION = {
'name' : 'internal',
'mode' : 'config-internal',
'command-type' : 'display-rest',
'url' : 'realtimestatus/network/cluster',
'format' : 'switch',
'short-help' : 'internal switch cluster display',
'args' : (
'cluster',
)
}
SHOW_VNS_ACCESS_LIST_ENTRY_COMMAND_DESCRIPTION = {
'name' : 'show',
'obj-type' : 'vns-access-list-entry',
'short-help' : 'Show vns-access-list-entry db table',
'doc' : 'internal|show-vns-access-list-entry',
'mode' : 'config-internal',
'command-type' : 'display-table',
'args' : (
'vns-access-list-entry',
{
'optional' : True,
'field' : 'vns',
'type' : 'identifier',
'completion' : 'complete-from-another',
'other' : 'vns-definition',
'help-name' : "<vns-id>",
'detail' : 'default',
},
{
'optional' : True,
'field' : 'acl',
'tag' : 'acl',
},
{
'optional' : True,
'field' : 'rule',
'tag' : 'rule',
},
)
}
SHOW_PORT_COMMAND_DESCRIPTION = {
'name' : 'show',
'obj-type' : 'port',
'short-help' : 'Show port db table',
'doc' : 'internal|show-port',
'mode' : 'config-internal',
'command-type' : 'display-table',
'args' : (
'port',
{
'field' : 'id',
'optional' : True,
'type' : 'obj-type',
'completion' : 'complete-object-field',
'parent-id' : None,
},
{
'field' : 'dpid',
'optional' : True,
'tag' : 'switch',
'completion' : 'complete-from-another',
'other' : 'switches',
'data-handler' : 'alias-to-value',
},
{
'field' : 'number',
'tag' : 'port',
'optional' : True,
'completion' : 'complete-object-field',
},
{
'field' : 'detail',
'optional' : True,
'type' : 'enum',
'values' : ('details', 'brief'),
}
)
}
SHOW_VNS_INTERFACE_COMMAND_DESCRIPTION = {
'name' : 'show',
'obj-type' : 'vns-interface',
'short-help' : 'Show vns-interface db table',
'doc' : 'internal|show-vns-interface',
'mode' : 'config-internal',
'command-type' : 'display-table',
'args' : (
'vns-interface',
{
'field' : 'id',
'tag' : 'vns',
'type' : 'string',
'optional' : True,
'parent-id' : 'vns',
'completion' : 'complete-object-field',
},
{
'field' : 'switch',
'tag' : 'switch',
'type' : 'dpid',
'optional' : True,
},
{
'field' : 'number',
'tag' : 'number',
'type' : 'integer',
'help-name' : 'OF Port Number',
'optional' : True,
},
)
}
SHOW_VNS_INTERFACE_RULE_COMMAND_DESCRIPTION = {
'name' : 'show',
'obj-type' : 'vns-interface-rule',
'short-help' : 'Show vns-interface-rule db table',
'doc' : 'internal|show-vns-interface-rule',
'mode' : 'config-internal',
'command-type' : 'display-table',
'args' : (
'vns-interface-rule',
{
'field' : 'vns',
'tag' : 'vns',
'optional' : True,
'type' : 'string',
'parent-id' : 'vns',
'completion' : 'complete-object-field',
},
{
'field' : 'rule',
'tag' : 'rule',
'type' : 'string',
'optional' : True,
'completion' : 'complete-object-field',
},
)
}
INTERNAL_SHOW_DEVICE_COMMAND_DESCRIPTION = {
'name' : 'show',
'mode' : 'config-internal',
'no-supported' : False,
'short-help' : 'Show controller devices',
'doc' : 'internal|show-controller-devices',
'args' : (
'controller',
{
'choices' : (
{
'token' : 'devices',
'action' : 'display-rest' ,
'url' : 'device',
'format' : 'controller-devices',
},
(
{
'token' : 'vns',
'action' : 'display-rest' ,
'url' : 'vns',
'format' : 'controller-vns',
},
{
'optional' : True,
'choices' : (
{
'token' : 'interfaces',
'optional' : True,
'action' : 'display-rest' ,
'url' : 'vns/interface',
'format' : 'controller-vns-interfaces',
},
{
'token' : 'device-interfaces',
'optional' : True,
'action' : 'display-rest' ,
'url' : 'vns/device-interface',
'format' : 'controller-vns-device-interface',
},
)
},
),
)
},
{
'field' : 'detail',
'type' : 'enum',
'values' : ('details','brief'),
'optional' : True,
}
)
}
def display_schema(data):
return command.sdnsh.sdndb.schema_detail(data['path'])
command.add_action('display-schema', display_schema,
{'kwargs' : { 'data' : '$data' } } )
INTERNAL_SHOW_SCHEMA_COMMAND_DESCRIPTION = {
'name' : 'show',
'mode' : 'config-internal',
'feature' : 'experimental',
'no-supported' : False,
'short-help' : 'Show controller devices',
'action' : 'display-schema',
'args' : (
'schema',
{
'field' : 'path',
'type' : 'string',
},
),
}
def lint_action(data):
words = []
if 'command' in data:
words.append(data['command'])
command.lint_command(words)
command.add_action('lint-action', lint_action,
{'kwargs' : { 'data' : '$data' } } )
INTERNAL_LINT_COMMAND_DESCRIPTION = {
'name' : 'lint',
'mode' : 'config-internal',
'no-supported' : False,
'action' : 'lint-action',
'args' : {
'optional' : True,
'field' : 'command',
'type' : 'string',
}
}
def permute_action(data):
words = []
if 'command' in data:
words.append(data['command'])
return command.permute_command(words, data.get('qualify'))
command.add_action('permute-action', permute_action,
{'kwargs' : { 'data' : '$data' } } )
INTERNAL_PERMUTE_COMMAND_DESCRIPTION = {
'name' : 'permute',
'mode' : 'config-internal',
'no-supported' : False,
'action' : 'permute-action',
'data' : { 'qualify' : False },
'args' : (
{
'optional' : True,
'field' : 'command',
'type' : 'string',
},
)
}
INTERNAL_QUALIFY_COMMAND_DESCRIPTION = {
'name' : 'qualify', # berate
'mode' : 'config-internal',
'no-supported' : False,
'action' : 'permute-action',
'data' : { 'qualify' : True },
'args' : (
{
'optional' : True,
'field' : 'command',
'type' : 'string',
},
)
}
def clidoc_action(data):
words = []
if 'command' in data:
words.append(data['command'])
return command.get_clidoc(words)
command.add_action('clidoc-action', clidoc_action,
{'kwargs' : { 'data' : '$data' }, } )
INTERNAL_CLIDOC_COMMAND_DESCRIPTION = {
'name' : 'clidoc',
'mode' : 'config-internal',
'no-supported' : False,
'action' : 'clidoc-action',
'args' : {
'optional' : True,
'field' : 'command',
'type' : 'string',
}
}
def cliwiki_action(data):
words = []
if 'command' in data:
words.append(data['command'])
return command.get_cliwiki(words)
command.add_action('cliwiki-action', cliwiki_action,
{'kwargs' : { 'data' : '$data' }, } )
INTERNAL_CLIWIKI_COMMAND_DESCRIPTION = {
'name' : 'cliwiki',
'mode' : 'config-internal',
'no-supported' : False,
'action' : 'cliwiki-action',
'args' : {
'optional' : True,
'field' : 'command',
'type' : 'string',
}
}
SHOW_CLI_COMMAND_DESCRIPTION = {
'name' : 'show',
'mode' : 'config-internal',
'short-help' : 'Show CLI details',
'doc' : 'internal|show-cli',
'action' : 'display-cli',
'no-supported' : False,
'args' : (
'cli',
{
'optional' : True,
'field' : 'detail',
'type' : 'enum',
'values' : ('details'),
},
)
}
#
# FORMATS
#
import fmtcnv
SYSTEM_INTERFACES_FORMAT = {
'system-interfaces' : {
'field-orderings': {
'default' : [
'Idx',
# 'name',
'addr',
'netmask',
'broadcast',
# 'peer',
],
'details' : [
'Idx',
'name',
'addr',
'netmask',
'broadcast',
'peer',
],
'brief' : [
'Idx',
'addr',
]
},
'fields' : {
'name' : {
'verbose-name' : 'IF Name',
},
'addr' : {
'verbose-name' : 'IP Address',
},
'peer' : {
},
'netmask' : {
},
'broadcast' : {
},
}
},
}
PORT_FORMAT = {
'port' : {
'field-orderings' : {
'default' : [ 'Idx', 'switch', 'number', 'name', 'hardware-address',
'config', 'state', 'current-features',
'advertised-features', 'supported-features', 'peer-features' ],
},
'fields' : {
'switch' : { 'formatter' : fmtcnv.replace_switch_with_alias
},
'number' : { 'formatter' : fmtcnv.decode_openflow_port
},
'config' : { 'formatter' : fmtcnv.decode_port_config
},
'state' : { 'formatter' : fmtcnv.decode_port_state
},
'current-features' : { 'formatter' : fmtcnv.decode_port_features
},
'advertised-features' : { 'formatter' : fmtcnv.decode_port_features
},
'supported-features' : { 'formatter' : fmtcnv.decode_port_features
},
'peer-features' : { 'formatter' : fmtcnv.decode_port_features
},
}
},
}
CONTROLLER_VNS_FORMAT = {
'controller-vns' : {
'field-orderings' : {
'default' : [ 'Idx',
'name',
'active',
'priority',
'arpManagerMode',
'broadcastMode',
'dhcpManagerMode',
'dhcpIp',
],
},
'fields' : {
'name' : {
'verbose-name' : 'Name',
},
'active' : {
'verbose-name' : 'Active',
},
'priority' : {
'verbose-name' : 'Priority',
},
'arpManagerMode' : {
'verbose-name' : 'Arp Mode',
},
'broadcastMode' : {
'verbose-name' : 'Broadcast Mode',
},
'dhcpManagerMode' : {
'verbose-name' : 'Dhcp Modd',
},
'dhcpIp' : {
'verbose-name' : 'dhcpIp',
},
},
},
}
CONTROLLER_VNS_INTERFACES = {
'controller-vns-interfaces' : {
'field-orderings' : {
'default' : [ 'Idx',
],
},
},
}
CONTROLLER_VNS_DEFICE_INTERFACES = {
'controller-vns-device-interfaces' : {
'field-orderings' : {
'default' : [ 'Idx',
'device',
'iface',
],
},
},
}
CONTROLLER_DEVICES_FORMAT = {
'controller-devices' : {
'field-orderings' : {
'default' : [ 'Idx',
'mac',
'attachment-point',
'ipv4',
'vlan',
]
},
'fields' : {
'mac' : {
'verbose-name' : 'MAC Address',
'formatter' : fmtcnv.convert_to_string,
},
'ipv4' : {
'verbose-name' : 'IP Address',
'formatter' : fmtcnv.convert_to_string,
},
'attachment-point' : {
'verbose-name' : 'Attachment Point',
'formatter' : fmtcnv.convert_to_string,
},
'vlan' : {
'verbose-name' : 'Vlans',
'formatter' : fmtcnv.convert_to_string,
},
},
},
}
DEVICEMANAGER_DEVICE_FORMAT = {
'devicemanager-device' : {
'field-orderings' : {
'default' : [
'Idx',
'host',
'attachment-points',
'network-addresses'
]
},
'fields' : {
'host' : { 'formatter' : fmtcnv.print_host_and_alias,
},
'attachment-points' : {
'verbose-name' : 'Attachment Point',
'formatter' : fmtcnv.print_devicemanager_attachment_points,
},
'network-addresses' : {
'verbose-name' : 'IP Address',
'formatter' : fmtcnv.print_devicemanager_ip_addresses,
},
},
},
}
CLI_FORMAT = {
'cli' : {
'field-orderings' : {
'default' : [
'version',
'debug',
'desc'
'format',
'modes',
]
},
'fields' : {
'version' : { 'verbose-name' : 'Syntax Version',
},
'debug' : { 'verbose-name' : 'Debug Level',
},
'desc' : { 'verbose-name' : 'Desc Modules',
},
'format' : { 'verbose-name' : 'Format Modules',
},
'modes' : { 'verbose-name' : 'Submodes',
},
},
},
}
CLI_MODES_FORMAT = {
'cli-modes' : {
'field-orderings' : {
'default' : [ 'Idx', 'mode', 'command', 'submode',
]
}
},
}
"""