Adding ONOS Segment Routing CLI files to new repo
diff --git a/cli/desc/version200/tunnel.py b/cli/desc/version200/tunnel.py
new file mode 100644
index 0000000..d79b012
--- /dev/null
+++ b/cli/desc/version200/tunnel.py
@@ -0,0 +1,196 @@
+import command
+import json
+import fmtcnv
+
+
+TUNNEL_SUBMODE_COMMAND_DESCRIPTION = {
+ 'name' : 'tunnel',
+ 'short-help' : 'Enter tunnel submode, configure tunnel details',
+ 'mode' : 'config',
+ 'parent-field' : None,
+ 'command-type' : 'config-submode',
+ 'obj-type' : 'tunnel-config',
+ 'submode-name' : 'config-tunnel',
+ 'doc' : 'tunnel|tunnel',
+ 'doc-example' : 'tunnel|tunnel-example',
+ 'args' : (
+ {
+ 'field' : 'tunnel-id',
+ 'type' : 'identifier',
+ #'completion' : 'complete-object-field',
+ 'syntax-help' : 'Enter a tunnel name',
+ 'doc' : 'tunnel|tunnel',
+ 'doc-include' : [ 'type-doc' ],
+ 'completion' : 'tunnel-id-completion',
+ 'action' : (
+ {
+ 'proc' : 'create-tunnel',
+ },
+ {
+ 'proc' : 'push-mode-stack',
+ },
+ ),
+ 'no-action': (
+ {
+ 'proc' : 'remove-tunnel',
+ }
+ ),
+ }
+ )
+}
+
+TUNNEL_CONFIG_FORMAT = {
+ 'tunnel-config' : {
+ 'field-orderings' : {
+ 'default' : [
+ 'tunnel-id',
+ ],
+ },
+ },
+}
+
+
+def tunnel_node_label_completion(prefix, completions):
+ #print "tunnel_node_label_completion:",prefix,completions
+ query_url = "http://127.0.0.1:8000/rest/v1/switches"
+ result = command.sdnsh.store.rest_simple_request(query_url)
+ entries = json.loads(result)
+ for entry in entries:
+ if entry['stringAttributes']['nodeSid'].startswith(prefix):
+ completions[entry['stringAttributes']['nodeSid']+' '] = entry['stringAttributes']['nodeSid']
+ return
+
+command.add_completion('tunnel-node-label-completion', tunnel_node_label_completion,
+ {'kwargs': { 'prefix' : '$text',
+ 'completions' : '$completions',
+ }})
+
+def tunnel_adjacency_label_completion(prefix, data, completions):
+ #print "tunnel_adjacency_label_completion:",prefix,data,completions
+ query_url1 = "http://127.0.0.1:8000/rest/v1/switches"
+ result1 = command.sdnsh.store.rest_simple_request(query_url1)
+ entries1 = json.loads(result1)
+ node_dpid = None
+ for entry in entries1:
+ if (int (entry['stringAttributes']['nodeSid']) == int(data['node-label'])):
+ node_dpid = entry['dpid']
+ if (node_dpid != None):
+ query_url2 = "http://127.0.0.1:8000/rest/v1/router/"+node_dpid+"/adjacency"
+ result2 = command.sdnsh.store.rest_simple_request(query_url2)
+ entries2 = json.loads(result2)
+ for entry in entries2:
+ if str(entry.get("adjacencySid")).startswith(prefix):
+ completions[str(entry.get("adjacencySid"))+' '] = entry.get("adjacencySid")
+ return
+
+command.add_completion('tunnel-adjacency-label-completion', tunnel_adjacency_label_completion,
+ {'kwargs': { 'prefix' : '$text',
+ 'data' : '$data',
+ 'completions' : '$completions',
+ }})
+
+TUNNEL_ADJACENCY_INFO = (
+ {
+ 'token' : 'adjacency',
+ 'short-help' : 'Set adjacency label on this node',
+ 'doc' : 'tunnel|adjacency',
+ 'doc-example' : 'tunnel|adjacency',
+ },
+ {
+ 'field' : 'adjacency-label',
+ 'type' : 'label',
+ 'completion' : 'tunnel-adjacency-label-completion',
+ 'help-name' : 'Adjacency label',
+ 'data' : {
+ 'node_label' : '$node-label',
+ },
+ 'action' : (
+ {
+ 'proc' : 'create-tunnel',
+ },
+ ),
+ }
+)
+
+# obj_type flow-entry field hard-timeout
+TUNNEL_NODE_ENTRY_COMMAND_DESCRIPTION = {
+ 'name' : 'node',
+ 'mode' : 'config-tunnel',
+ 'short-help' : 'Set node for this tunnel',
+ 'doc' : 'tunnel|node',
+ 'doc-example' : 'tunnel|node',
+ 'parent-field' : 'tunnel',
+ 'command-type' : 'config',
+ 'args' : (
+ {
+ 'field' : 'node-label',
+ 'completion' : 'tunnel-node-label-completion',
+ 'type' : 'label',
+ 'other' : 'switches|label',
+# 'data-handler' : 'alias-to-value',
+ 'help-name' : 'Segment label',
+ 'action' : (
+ {
+ 'proc' : 'create-tunnel',
+ },
+ ),
+ },
+ {
+ 'optional' : True,
+ 'optional-for-no' : True,
+ 'args' : TUNNEL_ADJACENCY_INFO,
+ },
+ )
+}
+
+SWITCH_TUNNEL_COMMAND_DESCRIPTION = {
+ 'name' : 'show',
+ 'mode' : 'login',
+ 'command-type' : 'display-table',
+ 'all-help' : 'Show switch information',
+ 'short-help' : 'Show switch summary',
+ #'obj-type' : 'switches',
+ 'doc' : 'switch|show',
+ 'doc-example' : 'switch|show-example',
+ 'args' : (
+ {
+ 'token' : 'tunnel',
+ 'field' : 'showtunnel',
+ 'sort' : ['tunnelId',],
+ 'action' : 'display-rest',
+ 'doc' : 'switch|show',
+ 'url' : [
+ 'showtunnel',
+ ],
+ 'format' : 'show_tunnel',
+ },
+ {
+ 'optional' : True,
+ 'choices' : (
+ {
+ 'field' : 'showtunnel',
+ 'type' : 'enum',
+ 'values' : ('details',),
+ 'optional' : True,
+ 'format' : 'show_tunnel',
+ 'data' : { 'detail' : 'details' },
+ },
+ ),
+ }
+ )
+}
+
+
+def tunnel_id_completion(prefix, completions):
+ query_url = "http://127.0.0.1:8000/rest/v1/showtunnel"
+ result = command.sdnsh.store.rest_simple_request(query_url)
+ entries = json.loads(result)
+ for entry in entries:
+ if entry['tunnelId'].startswith(prefix):
+ completions[entry['tunnelId']+' '] = entry['tunnelId']
+ return
+
+command.add_completion('tunnel-id-completion', tunnel_id_completion,
+ {'kwargs': { 'prefix' : '$text',
+ 'completions' : '$completions',
+ }})
\ No newline at end of file