Add rename peer rpc method (#683)

* Add rename peer rpc method

* Add web endpoint for rename peer
This commit is contained in:
Jonathan Zernik 2021-01-24 17:41:53 -08:00 committed by GitHub
parent 83c0b295e9
commit af7de6483a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 69 additions and 0 deletions

View file

@ -689,6 +689,24 @@ def test_set_peer_uploading(server_stub, admin_stub, peer_id):
assert get_peer_response.squeak_peer.uploading
def test_rename_peer(server_stub, admin_stub, peer_id, random_name):
# Rename the peer
admin_stub.RenamePeer(
squeak_admin_pb2.RenamePeerRequest(
peer_id=peer_id,
peer_name=random_name,
)
)
# Get the peer again
get_peer_response = admin_stub.GetPeer(
squeak_admin_pb2.GetPeerRequest(
peer_id=peer_id,
)
)
assert get_peer_response.squeak_peer.peer_name == random_name
def test_delete_peer(server_stub, admin_stub, peer_id):
# Delete the peer
admin_stub.DeletePeer(

View file

@ -164,6 +164,10 @@ service SqueakAdmin {
*/
rpc SetPeerUploading (SetPeerUploadingRequest) returns (SetPeerUploadingReply) {}
/** sqkadmin: `renamepeer`
*/
rpc RenamePeer (RenamePeerRequest) returns (RenamePeerReply) {}
/** sqkadmin: `deletepeer`
*/
rpc DeletePeer (DeletePeerRequest) returns (DeletePeerReply) {}
@ -554,6 +558,17 @@ message SetPeerUploadingRequest {
message SetPeerUploadingReply {
}
message RenamePeerRequest {
/// The peer id
int32 peer_id = 1;
/// Name of the peer
string peer_name = 2;
}
message RenamePeerReply {
}
message DeletePeerRequest {
/// The peer id
int32 peer_id = 1;

View file

@ -411,6 +411,18 @@ class SqueakAdminServerHandler(object):
self.squeak_controller.set_peer_downloading(peer_id, downloading)
return squeak_admin_pb2.SetPeerDownloadingReply()
def handle_rename_squeak_peer(self, request):
peer_id = request.peer_id
peer_name = request.peer_name
logger.info(
"Handle rename peer with peer id: {}, new name: {}".format(
peer_id,
peer_name,
)
)
self.squeak_controller.rename_peer(peer_id, peer_name)
return squeak_admin_pb2.RenamePeerReply()
def handle_set_squeak_peer_uploading(self, request):
peer_id = request.peer_id
uploading = request.uploading

View file

@ -141,6 +141,9 @@ class SqueakAdminServerServicer(squeak_admin_pb2_grpc.SqueakAdminServicer):
def SetPeerUploading(self, request, context):
return self.handler.handle_set_squeak_peer_uploading(request)
def RenamePeer(self, request, context):
return self.handler.handle_rename_squeak_peer(request)
def DeletePeer(self, request, context):
return self.handler.handle_delete_squeak_peer(request)

View file

@ -289,6 +289,14 @@ def create_app(handler, username, password):
handler.handle_set_squeak_peer_uploading,
)
@app.route("/renamepeer", methods=["POST"])
@login_required
def renamepeer():
return handle_request(
squeak_admin_pb2.RenamePeerRequest(),
handler.handle_rename_squeak_peer,
)
@app.route("/getsigningprofiles", methods=["POST"])
@login_required
def getsigningprofiles():

View file

@ -240,6 +240,9 @@ class SqueakController:
def set_peer_uploading(self, peer_id: int, uploading: bool):
self.squeak_db.set_peer_uploading(peer_id, uploading)
def rename_peer(self, peer_id: int, peer_name: str):
self.squeak_db.set_peer_name(peer_id, peer_name)
def delete_peer(self, peer_id: int):
self.squeak_db.delete_peer(peer_id)

View file

@ -793,6 +793,16 @@ class SqueakDb:
with self.get_connection() as connection:
connection.execute(stmt)
def set_peer_name(self, peer_id: int, peer_name: str):
""" Set a peer name. """
stmt = (
self.peers.update()
.where(self.peers.c.peer_id == peer_id)
.values(peer_name=peer_name)
)
with self.get_connection() as connection:
connection.execute(stmt)
def delete_peer(self, peer_id: int):
""" Delete a peer. """
delete_peer_stmt = self.peers.delete().where(self.peers.c.peer_id == peer_id)