db4616d3bea5c3e3c6de4f07bcd20e365c0c9310
[plcapi.git] / PLC / Methods / DeletePeer.py
1 # $Id$
2 from PLC.Faults import *
3 from PLC.Method import Method
4 from PLC.Parameter import Parameter, Mixed
5 from PLC.Auth import Auth
6 from PLC.Peers import Peer, Peers
7
8 class DeletePeer(Method):
9     """
10     Mark an existing peer as deleted. All entities (e.g., slices,
11     keys, nodes, etc.) for which this peer is authoritative will also
12     be deleted or marked as deleted.
13
14     Returns 1 if successful, faults otherwise.
15     """
16
17     roles = ['admin']
18
19     accepts = [
20         Auth(),
21         Mixed(Peer.fields['peer_id'],
22               Peer.fields['peername'])
23         ]
24
25     returns = Parameter(int, "1 if successful")
26
27     def call(self, auth, peer_id_or_name):
28         # Get account information
29         peers = Peers(self.api, [peer_id_or_name])
30         if not peers:
31             raise PLCInvalidArgument, "No such peer"
32
33         peer = peers[0]
34         peer.delete()
35
36         # Log affected objects
37         self.event_objects = {'Peer': [peer['peer_id']]}
38
39         return 1