Fix edit_config multiline commands on IOS (#35375)

* Fix edit_config multiline commands on IOS

The current code for multiline commands in IOS is broken: If you
pass a dict containing a command, prompt and answer it is seen
later as unicode string, but if you do a json.loads it fails
as the keys/values are enclosed in single quotes but JSON requires
double quotes.

Fixes #23539

* Fix pep8

* Use ast literal_eval

It's safe to use, as it is just for types and wont execute arbitrary code.
This commit is contained in:
Ricardo Carrillo Cruz 2018-01-29 12:03:25 +01:00 committed by GitHub
parent 5f1254697d
commit d178df8f01
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -19,6 +19,7 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import ast
import re
import json
@ -71,7 +72,7 @@ class Cliconf(CliconfBase):
def edit_config(self, command):
for cmd in chain(['configure terminal'], to_list(command), ['end']):
try:
cmd = json.loads(cmd)
cmd = ast.literal_eval(cmd)
command = cmd['command']
prompt = cmd['prompt']
answer = cmd['answer']