From 9ac783472872329fe1a1683585b679a7afcc78f0 Mon Sep 17 00:00:00 2001
From: Daniil Baturin <daniil@baturin.org>
Date: Mon, 5 Aug 2019 21:20:54 +0200
Subject: T1431: add showConfig operation to the HTTP API.

---
 src/services/vyos-http-api-server | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

(limited to 'src/services')

diff --git a/src/services/vyos-http-api-server b/src/services/vyos-http-api-server
index e11eb6d52..afab9be70 100755
--- a/src/services/vyos-http-api-server
+++ b/src/services/vyos-http-api-server
@@ -179,6 +179,7 @@ def configure():
 @app.route('/retrieve', method='POST')
 def get_value():
     config = app.config['vyos_config']
+    session = app.config['vyos_session']
 
     api_keys = app.config['vyos_keys']
 
@@ -190,8 +191,11 @@ def get_value():
     command = bottle.request.forms.get("data")
     command = json.loads(command)
 
-    op = command['op']
-    path = " ".join(command['path'])
+    try:
+        op = command['op']
+        path = " ".join(command['path'])
+    except KeyError:
+        return error(400, "Missing required field. \"op\" and \"path\" fields are required")
 
     try:
         if op == 'returnValue':
@@ -200,6 +204,12 @@ def get_value():
             res = config.return_values(path)
         elif op == 'exists':
             res = config.exists(path)
+        elif op == 'showConfig':
+            config_format = 'raw'
+            if 'configFormat' in command:
+                config_format = command['configFormat']
+
+            res = session.show_config(command['path'], format=config_format)
         else:
             return error(400, "\"{0}\" is not a valid operation".format(op))
     except VyOSError as e:
-- 
cgit v1.2.3