X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetSites.py;h=c0f198e18e891ea9024aa11c7bbec722c4e5c89b;hb=2fbc54bb18d05d1c8972257a342c3ae162e83c6e;hp=50d5e84b979338db5b17eb6a1c2b0d8be04353a5;hpb=6fd49fbbefc94537d8a3196cff1dc79b0cff262f;p=plcapi.git diff --git a/PLC/Methods/GetSites.py b/PLC/Methods/GetSites.py index 50d5e84..c0f198e 100644 --- a/PLC/Methods/GetSites.py +++ b/PLC/Methods/GetSites.py @@ -1,45 +1,31 @@ -import os - from PLC.Method import Method from PLC.Parameter import Parameter, Mixed -from PLC.Auth import PasswordAuth +from PLC.Filter import Filter +from PLC.Auth import Auth from PLC.Sites import Site, Sites class GetSites(Method): """ - Return an array of structs containing details about all sites. If - site_id_list is specified, only the specified sites will be - queried. - - If return_fields is specified, only the specified fields will be - returned, if set. Otherwise, the default set of fields returned is: - + Returns an array of structs containing details about sites. If + site_filter is specified and is an array of site identifiers or + hostnames, or a struct of site attributes, only sites matching the + filter will be returned. If return_fields is specified, only the + specified details will be returned. """ - roles = ['admin', 'pi', 'user', 'tech'] + roles = ['admin', 'pi', 'user', 'tech', 'node', 'anonymous'] accepts = [ - PasswordAuth(), - [Mixed(Site.fields['site_id'], - Site.fields['login_base'])] + Auth(), + Mixed([Mixed(Site.fields['site_id'], + Site.fields['login_base'])], + Parameter(str,"login_base"), + Parameter(int,"site_id"), + Filter(Site.fields)), + Parameter([str], "List of fields to return", nullok = True) ] returns = [Site.fields] - event_type = 'Get' - object_type = 'Site' - - def __init__(self, *args, **kwds): - Method.__init__(self, *args, **kwds) - # Update documentation with list of default fields returned - self.__doc__ += os.linesep.join(Site.fields.keys()) - - def call(self, auth, site_id_or_login_base_list = None): - - # Get site information - sites = Sites(self.api, site_id_or_login_base_list) - - # turn each site into a real dict. - sites = [dict(site.items()) for site in sites.values()] - - return sites + def call(self, auth, site_filter = None, return_fields = None): + return Sites(self.api, site_filter, return_fields)