From 3f3ba2ea5d0a6364f24d0f654554f83dbf643325 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 6 Oct 2006 19:47:18 +0000 Subject: [PATCH] Initial checkin of new API implementation --- PLC/Methods/AddPersonToSlice.py | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 PLC/Methods/AddPersonToSlice.py diff --git a/PLC/Methods/AddPersonToSlice.py b/PLC/Methods/AddPersonToSlice.py new file mode 100644 index 00000000..2e9cb60f --- /dev/null +++ b/PLC/Methods/AddPersonToSlice.py @@ -0,0 +1,46 @@ +from PLC.Faults import * +from PLC.Method import Method +from PLC.Parameter import Parameter, Mixed +from PLC.Persons import Person, Persons +from PLC.Slices import Slice, Slices +from PLC.Auth import PasswordAuth + +class AddPersonToSlice(Method): + """ + Adds the specified person to the specified slice. If the person is + already a member of the slice, no errors are returned. + + Returns 1 if successful, faults otherwise. + """ + + roles = ['admin'] + + accepts = [ + PasswordAuth(), + Mixed(Person.fields['person_id'], + Person.fields['email']), + Mixed(Slice.fields['slice_id'], + Slice.fields['name']) + ] + + returns = Parameter(int, '1 if successful') + + def call(self, auth, person_id_or_email, slice_id_or_name): + # Get account information + persons = Persons(self.api, [person_id_or_email]) + if not persons: + raise PLCInvalidArgument, "No such account" + + person = persons.values()[0] + + # Get slice information + slices = Slices(self.api, [slice_id_or_name]) + if not slices: + raise PLCInvalidArgument, "No such slice" + + slice = slices.values()[0] + + if slice['slice_id'] not in person['slice_ids']: + slice.add_person(person) + + return 1 -- 2.47.0