mirror of
https://github.com/xcat2/confluent.git
synced 2024-11-29 13:00:03 +00:00
Further make the sockapi and confetty client fleshed out
Here, fix a few mistakes with how relation objects got messaged out. Add the ability to cd and ls in the confetty interactive mode
This commit is contained in:
parent
abab0e5cae
commit
5aa6e6a26c
29
bin/confetty
29
bin/confetty
@ -71,8 +71,19 @@ def parse_command(command):
|
||||
args = shlex.split(command, posix=True)
|
||||
return args
|
||||
|
||||
|
||||
currchildren = None
|
||||
|
||||
def send_request(operation, path, server):
|
||||
tlvdata.send_tlvdata(server, {'operation': operation, 'path': path})
|
||||
result = tlvdata.recv_tlvdata(server)
|
||||
while '_requestdone' not in result:
|
||||
yield result
|
||||
result = tlvdata.recv_tlvdata(server)
|
||||
|
||||
def do_command(command, server):
|
||||
global target
|
||||
global currchildren
|
||||
if command == "": # result of ctrl-d
|
||||
command = "exit\n"
|
||||
print("exit")
|
||||
@ -88,11 +99,19 @@ def do_command(command, server):
|
||||
if argv[0] == "cd":
|
||||
otarget = target
|
||||
change_target(argv[1])
|
||||
tlvdata.send_tlvdata(server, {"operation": 'retrieve', 'path': target})
|
||||
result = tlvdata.recv_tlvdata(server)
|
||||
if 'error' in result:
|
||||
print target + ':' + result['error']
|
||||
target = otarget
|
||||
for res in send_request('retrieve', target, server):
|
||||
if 'error' in res:
|
||||
print target + ': ' + res['error']
|
||||
target = otarget
|
||||
if argv[0] in ('show', 'ls'):
|
||||
for res in send_request('retrieve', target, server):
|
||||
if type(res['item']) == dict:
|
||||
print res['item']["href"]
|
||||
else:
|
||||
for item in res['item']:
|
||||
print item["href"]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -98,7 +98,7 @@ class LinkRelation(ConfluentMessage):
|
||||
"""
|
||||
return {self.rel: '{ "href": "%s" }' % self.href}
|
||||
|
||||
def raw_rel(self):
|
||||
def raw(self):
|
||||
"""Provide python structure of the relation.
|
||||
|
||||
This currently is only sensible to consume from httpapi.
|
||||
|
@ -61,8 +61,11 @@ def sessionhdl(connection, authname):
|
||||
|
||||
|
||||
def send_response(responses, connection):
|
||||
if responses is None:
|
||||
return
|
||||
for rsp in responses:
|
||||
tlvdata.send_tlvdata(connection, json.dumps(rsp.json()))
|
||||
tlvdata.send_tlvdata(connection, rsp.raw())
|
||||
|
||||
|
||||
def process_request(connection, request, cfm, authdata):
|
||||
#TODO(jbjohnso): authorize each request
|
||||
@ -70,17 +73,17 @@ def process_request(connection, request, cfm, authdata):
|
||||
operation = request['operation']
|
||||
path = request['path']
|
||||
params = request.get('parameters', None)
|
||||
hdlr = None
|
||||
try:
|
||||
hdlr = pluginapi.handle_path(path, operation, cfm, params)
|
||||
except exc.NotFoundException:
|
||||
tlvdata.send_tlvdata(connection, {"errorcode": 404,
|
||||
"error": "Target not found"})
|
||||
return
|
||||
except exc.InvalidArgumentException:
|
||||
tlvdata.send_tlvdata(connection, {"errorcode": 400,
|
||||
"error": "Bad Request"})
|
||||
return
|
||||
send_response(hdlr, connection)
|
||||
tlvdata.send_tlvdata(connection, {'_requestdone': 1})
|
||||
return
|
||||
ccons = ClientConsole(connection)
|
||||
consession = consoleserver.ConsoleSession(node='n4', configmanager=cfm,
|
||||
|
Loading…
Reference in New Issue
Block a user