You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@warble.apache.org by hu...@apache.org on 2018/06/26 16:32:27 UTC

[incubator-warble-server] 02/03: add api endpoint for listing nodes

This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-warble-server.git

commit 50b592796ade1d99ab0e4a76bea9a1aa81cf6df8
Author: Daniel Gruno <hu...@apache.org>
AuthorDate: Tue Jun 26 11:31:53 2018 -0500

    add api endpoint for listing nodes
    
    super user only!
---
 api/pages/node/list.py | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++
 api/yaml/openapi.yaml  | 16 ++++++++++
 2 files changed, 98 insertions(+)

diff --git a/api/pages/node/list.py b/api/pages/node/list.py
new file mode 100644
index 0000000..c9ee680
--- /dev/null
+++ b/api/pages/node/list.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+#
+# 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.
+########################################################################
+# OPENAPI-URI: /api/node/list
+########################################################################
+# get:
+#   responses:
+#     '200':
+#       content:
+#         application/json:
+#           schema:
+#             $ref: '#/components/schemas/NodeList'
+#       description: List of nodes in registry
+#     default:
+#       content:
+#         application/json:
+#           schema:
+#             $ref: '#/components/schemas/Error'
+#       description: unexpected error
+#   summary: Lists the nodes in the registry
+# 
+########################################################################
+
+
+
+
+
+"""
+This is the node modification handler for Apache Warble
+"""
+
+import json
+import re
+import time
+import plugins.crypto
+import plugins.registry
+import base64
+
+def run(API, environ, indata, session):
+    
+    method = environ['REQUEST_METHOD']
+    
+    # Modifying a node?
+    if method == "GET":
+        # Super users only!
+        if not session.user or session.user['userlevel'] != 'superuser':
+            raise API.exception(403, "You need to be logged in as super user to perform this action")
+        
+        conn = session.DB.sqlite.open('nodes.db')
+        cursor = conn.cursor()
+        
+        cursor.execute("SELECT * FROM `registry` WHERE 1")
+        
+        nodes = []
+        for node in cursor.fetchall():
+            xnode = {k:node[k] for k in node.keys()}
+            xnode['verified'] = True if node['verified'] else False
+            xnode['enabled'] = True if node['enabled'] else False
+            xnode['fingerprint'] = plugins.crypto.fingerprint(node['pubkey'])
+            nodes.append(xnode)
+        
+        
+        yield json.dumps({"nodes": nodes}, indent = 2)
+        return
+
+    # Finally, if we hit a method we don't know, balk!
+    yield API.exception(400, "I don't know this request method!!")
+    
diff --git a/api/yaml/openapi.yaml b/api/yaml/openapi.yaml
index f18c53c..5e6858f 100644
--- a/api/yaml/openapi.yaml
+++ b/api/yaml/openapi.yaml
@@ -379,6 +379,22 @@ paths:
                 $ref: '#/components/schemas/Error'
           description: unexpected error
       summary: Create a new account
+  /api/node/list:
+    get:
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NodeList'
+          description: List of nodes in registry
+        default:
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Error'
+          description: unexpected error
+      summary: Lists the nodes in the registry
   /api/node/modify:
     post:
       requestBody:


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@warble.apache.org
For additional commands, e-mail: commits-help@warble.apache.org