Tunnel loadbalancing policy: phase1 support
diff --git a/cli/command.py b/cli/command.py
index b1fa227..d99ed41 100755
--- a/cli/command.py
+++ b/cli/command.py
@@ -1750,16 +1750,34 @@
command_mode = command.get('mode')
if command_mode and command_mode[-1] == '*':
command_mode = command_mode[:-1]
- if command_mode and sdnsh.current_mode() != command_mode:
+ if (command_mode == 'config-tunnel' and
+ sdnsh.current_mode() == 'config-tunnelset-tunnel'):
+ command_mode = 'config-tunnelset-tunnel'
+ if (command_mode and
+ ((_is_list(command_mode) and not sdnsh.current_mode() in command_mode)
+ or (sdnsh.current_mode() != command_mode))):
+
# this is completing a different item on the stack.
# XXX needs better api's here.
found_in_mode_stack = False
- for x in sdnsh.mode_stack:
- if x['mode_name'] == command_mode:
- found_in_mode_stack = True
- curr_obj_type = x['obj_type']
- curr_obj_id = x['obj']
- break
+
+ if _is_list(command_mode):
+ for cmd_mode in command_mode:
+ for x in sdnsh.mode_stack:
+ if x['mode_name'] == cmd_mode:
+ found_in_mode_stack = True
+ curr_obj_type = x['obj_type']
+ curr_obj_id = x['obj']
+ break
+ if found_in_mode_stack == True:
+ break
+ else:
+ for x in sdnsh.mode_stack:
+ if x['mode_name'] == command_mode:
+ found_in_mode_stack = True
+ curr_obj_type = x['obj_type']
+ curr_obj_id = x['obj']
+ break
if not found_in_mode_stack:
raise error.CommandDescriptionError(
'Unable to find mode %s' % command_mode,
@@ -3865,6 +3883,14 @@
'no-action': 'delete-objects',
})
+ add_command_type('create-tunnelset', {
+ 'action': 'create-tunnelset'
+ })
+
+ add_command_type('remove-tunnelset', {
+ 'action': 'remove-tunnelset'
+ })
+
add_command_type('create-tunnel', {
'action': 'create-tunnel'
})