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