weegee: cli: add `peer` commands
This commit is contained in:
parent
d92ccb5b5f
commit
926d09d7ff
|
@ -407,6 +407,90 @@ def main():
|
|||
disconnect_interface.set_defaults(func=do_disconnect_interface, parser=disconnect_interface)
|
||||
|
||||
|
||||
# Peer commands
|
||||
|
||||
peer = commands.add_parser('peer', help='peer commands')
|
||||
peer.set_defaults(parser=peer)
|
||||
peer_commands = peer.add_subparsers(title='subcommand')
|
||||
|
||||
def do_add_peer(parser: argparse.ArgumentParser, args: argparse.Namespace, ctx: WeegeeContext) -> None:
|
||||
interface = WeegeeInterface.load(ctx, args.interface)
|
||||
peer = WeegeePeer.create(ctx, args.name, interface,
|
||||
routes=args.route, host=args.endpoint, port=args.port,
|
||||
)
|
||||
peer.save()
|
||||
|
||||
add_peer = peer_commands.add_parser('create', help='add new peer')
|
||||
add_peer.add_argument('-r', '--route', type=ipaddress.ip_network, action='append', default=[], help='peer route(s)')
|
||||
add_peer.add_argument('-e', '--endpoint', metavar='HOST', help='peer endpoint host (optional)')
|
||||
add_peer.add_argument('-p', '--port', type=int, help='peer endpoint port (optional)')
|
||||
add_peer.add_argument('name', help='peer name')
|
||||
add_peer.add_argument('interface', help='existing interface name')
|
||||
add_peer.set_defaults(func=do_add_peer, parser=add_peer)
|
||||
|
||||
def do_del_peer(parser: argparse.ArgumentParser, args: argparse.Namespace, ctx: WeegeeContext) -> None:
|
||||
if not args.yes_i_want_to_destroy_this:
|
||||
parser.error('please pass --yes-i-want-to-destroy-this if you really want to destroy this peer')
|
||||
peer = WeegeePeer.load(ctx, args.name)
|
||||
peer.delete()
|
||||
|
||||
del_peer = peer_commands.add_parser('destroy', help='delete peer')
|
||||
del_peer.add_argument('name', help='peer name')
|
||||
del_peer.set_defaults(func=do_del_peer, parser=del_peer)
|
||||
|
||||
def do_get_peer(parser: argparse.ArgumentParser, args: argparse.Namespace, ctx: WeegeeContext) -> None:
|
||||
peer = WeegeePeer.load(ctx, args.name)
|
||||
for var in args.var:
|
||||
do_get(peer, var)
|
||||
|
||||
get_peer = peer_commands.add_parser('get', help='get peer variable')
|
||||
get_peer.add_argument('name', help='peer name')
|
||||
get_peer.add_argument('var', nargs='*', help='variable spec')
|
||||
get_peer.set_defaults(func=do_get_peer, parser=get_peer)
|
||||
|
||||
def do_connect_peer(parser: argparse.ArgumentParser, args: argparse.Namespace, ctx: WeegeeContext) -> None:
|
||||
if not WeegeeConnection.exists(ctx, args.name):
|
||||
connection = WeegeeConnection.create(ctx, args.name,
|
||||
peers=[], preshared_key=args.preshared_key,
|
||||
)
|
||||
else:
|
||||
connection = WeegeeConnection.load(ctx, args.name)
|
||||
connections.peers.extend(WeegeePeer.load(ctx, peer).item for peer in args.peer)
|
||||
if args.preshared_key:
|
||||
connection.preshared_key = preshared_key
|
||||
connection.save()
|
||||
|
||||
connect_peer = peer_commands.add_parser('connect', help='connect peers')
|
||||
connect_peer.add_argument('-k', '--preshared-key', metavar='NAME', help='preshared key (optional)')
|
||||
connect_peer.add_argument('name', help='connection name')
|
||||
connect_peer.add_argument('peer', nargs='*', help='peer names')
|
||||
connect_peer.set_defaults(func=do_connect_peer, parser=connect_peer)
|
||||
|
||||
def do_disconnect_peer(parser: argparse.ArgumentParser, args: argparse.Namespace, ctx: WeegeeContext) -> None:
|
||||
connection = WeegeeConnection.load(ctx, args.name)
|
||||
for peer in args.peer:
|
||||
connection.peers.remove(WeegeePeer.load(ctx, peer).item)
|
||||
if connection.peers:
|
||||
connection.save()
|
||||
else:
|
||||
connection.delete()
|
||||
|
||||
disconnect_peer = peer_commands.add_parser('disconnect', help='disconnect peers')
|
||||
disconnect_peer.add_argument('name', help='connection name')
|
||||
disconnect_peer.add_argument('peer', nargs='+', help='peer names')
|
||||
disconnect_peer.set_defaults(func=do_disconnect_peer, parser=disconnect_peer)
|
||||
|
||||
def do_get_connection(parser: argparse.ArgumentParser, args: argparse.Namespace, ctx: WeegeeContext) -> None:
|
||||
connection = WeegeeConnection.load(ctx, args.name)
|
||||
for var in args.var:
|
||||
do_get(connection, var)
|
||||
|
||||
get_connection = peer_commands.add_parser('get-connect', help='get connection variable')
|
||||
get_connection.add_argument('name', help='connection name')
|
||||
get_connection.add_argument('var', nargs='*', help='variable spec')
|
||||
get_connection.set_defaults(func=do_get_connection, parser=get_connection)
|
||||
|
||||
|
||||
# Server commands
|
||||
|
||||
server = commands.add_parser('server', help='server commands')
|
||||
|
|
Loading…
Reference in New Issue