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