From: Mark Huang Date: Wed, 11 Oct 2006 15:43:59 +0000 (+0000) Subject: - add admin-only BlacklistKey() function with giant warning X-Git-Tag: pycurl-7_13_1~612 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=9c0db6760f5807423fd48969c8bf69e158e292ae;p=plcapi.git - add admin-only BlacklistKey() function with giant warning --- diff --git a/PLC/Methods/BlacklistKey.py b/PLC/Methods/BlacklistKey.py new file mode 100644 index 00000000..d62b7761 --- /dev/null +++ b/PLC/Methods/BlacklistKey.py @@ -0,0 +1,36 @@ +from PLC.Faults import * +from PLC.Method import Method +from PLC.Parameter import Parameter, Mixed +from PLC.Keys import Key, Keys +from PLC.Auth import PasswordAuth + +class BlacklistKey(Method): + """ + Blacklists a key, disassociating it and all others identical to it + from all accounts and preventing it from ever being added again. + + WARNING: Identical keys associated with other accounts with also + be blacklisted. + + Returns 1 if successful, faults otherwise. + """ + + roles = ['admin'] + + accepts = [ + PasswordAuth(), + Key.fields['key_id'], + ] + + returns = Parameter(int, '1 if successful') + + def call(self, auth, key_id): + # Get associated key details + keys = Keys(self.api, [key_id]).values() + if not keys: + raise PLCInvalidArgument, "No such key" + key = keys[0] + + key.blacklist() + + return 1