From: Mark Huang <mlhuang@cs.princeton.edu> Date: Fri, 15 Dec 2006 19:41:12 +0000 (+0000) Subject: - add DeletePeer method X-Git-Tag: pycurl-7_13_1~188 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=93c28dd3895303e5f0d52b1f47c68dc34d0a73f5;p=plcapi.git - add DeletePeer method --- diff --git a/PLC/Methods/DeletePeer.py b/PLC/Methods/DeletePeer.py new file mode 100644 index 00000000..dcc19130 --- /dev/null +++ b/PLC/Methods/DeletePeer.py @@ -0,0 +1,38 @@ +from PLC.Faults import * +from PLC.Method import Method +from PLC.Parameter import Parameter, Mixed +from PLC.Auth import Auth +from PLC.Peers import Peer, Peers + +class DeletePeer(Method): + """ + Mark an existing peer as deleted. All entities (e.g., slices, + keys, nodes, etc.) for which this peer is authoritative will also + be deleted or marked as deleted. + + Returns 1 if successful, faults otherwise. + """ + + roles = ['admin'] + + accepts = [ + Auth(), + Mixed(Peer.fields['peer_id'], + Peer.fields['peername']) + ] + + returns = Parameter(int, "1 if successful") + + def call(self, auth, peer_id_or_name): + # Get account information + peers = Peers(self.api, [peer_id_or_name]) + if not peers: + raise PLCInvalidArgument, "No such peer" + + peer = peers[0] + peer.delete() + + # Log affected objects + self.object_ids = [peer['peer_id']] + + return 1