From: Mark Huang Date: Tue, 24 Oct 2006 13:48:07 +0000 (+0000) Subject: - hack xmlrpclib so that it can marshal subclasses of built-in types (e.g., Row) X-Git-Tag: pycurl-7_13_1~467 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=c8005424dcfa9e09275402d6e8bacbc989e92174;p=plcapi.git - hack xmlrpclib so that it can marshal subclasses of built-in types (e.g., Row) --- diff --git a/PLC/Methods/AdmGetSitePowerControlUnits.py b/PLC/Methods/AdmGetSitePowerControlUnits.py index 68aac497..8128b0b1 100644 --- a/PLC/Methods/AdmGetSitePowerControlUnits.py +++ b/PLC/Methods/AdmGetSitePowerControlUnits.py @@ -32,9 +32,4 @@ class AdmGetSitePowerControlUnits(Method): if site['site_id'] not in self.caller['site_ids']: raise PLCPermissionDenied, "Not allowed to view the PCUs at that site" - pcus = PCUs(self.api, site['pcu_ids']).values() - - # turn each pcu into a real dict - pcus = [dict(pcu) for pcu in pcus] - - return pcus + return PCUs(self.api, site['pcu_ids']).values() diff --git a/PLC/Methods/GetAddresses.py b/PLC/Methods/GetAddresses.py index b5240a59..0cc3538c 100644 --- a/PLC/Methods/GetAddresses.py +++ b/PLC/Methods/GetAddresses.py @@ -21,9 +21,4 @@ class GetAddresses(Method): returns = [Address.fields] def call(self, auth, address_id_list = None): - addresses = Addresses(self.api, address_id_list).values() - - # Turn each address into a real dict - addresses = [dict(address) for address in addresses] - - return addresses + return Addresses(self.api, address_id_list).values() diff --git a/PLC/Methods/GetConfFiles.py b/PLC/Methods/GetConfFiles.py index 15dee3b8..7c41e2f6 100644 --- a/PLC/Methods/GetConfFiles.py +++ b/PLC/Methods/GetConfFiles.py @@ -21,6 +21,4 @@ class GetConfFiles(Method): returns = [ConfFile.fields] def call(self, auth, conf_file_ids = None): - conf_files = ConfFiles(self.api, conf_file_ids).values() - conf_files = [dict(conf_file) for conf_file in conf_files] - return conf_files + return ConfFiles(self.api, conf_file_ids).values() diff --git a/PLC/Methods/GetEvents.py b/PLC/Methods/GetEvents.py index 05a011a6..34b6ed62 100644 --- a/PLC/Methods/GetEvents.py +++ b/PLC/Methods/GetEvents.py @@ -65,10 +65,5 @@ class GetEvents(Method): raise PLCInvalidArgument, "Cannot specify multiple object types when object_ids are specified" # Get node information - events = Events(self.api, event_id_list, person_id_list, event_type_list, \ + return Events(self.api, event_id_list, person_id_list, event_type_list, \ object_type_list, object_id_list, fault_code_list).values() - - # turn each node into a real dict. - events = [dict(event) for event in events] - - return events diff --git a/PLC/Methods/GetKeys.py b/PLC/Methods/GetKeys.py index 82c7ffcd..f54c8e71 100644 --- a/PLC/Methods/GetKeys.py +++ b/PLC/Methods/GetKeys.py @@ -29,9 +29,4 @@ class GetKeys(Method): if not key_ids: return [] - keys = Keys(self.api, key_ids).values() - - # Turn each key into a real dict - keys = [dict(key) for key in keys] - - return keys + return Keys(self.api, key_ids).values() diff --git a/PLC/Methods/GetNodeGroups.py b/PLC/Methods/GetNodeGroups.py index c9c0b62e..07af57af 100644 --- a/PLC/Methods/GetNodeGroups.py +++ b/PLC/Methods/GetNodeGroups.py @@ -22,10 +22,4 @@ class GetNodeGroups(Method): returns = [NodeGroup.fields] def call(self, auth, nodegroup_id_or_name_list = None): - # Get node group details - nodegroups = NodeGroups(self.api, nodegroup_id_or_name_list).values() - - # Turn each nodegroup into a real dict. - nodegroups = [dict(nodegroup) for nodegroup in nodegroups] - - return nodegroups + return NodeGroups(self.api, nodegroup_id_or_name_list).values() diff --git a/PLC/Methods/GetNodeNetworks.py b/PLC/Methods/GetNodeNetworks.py index 9d0b4df2..fda60a32 100644 --- a/PLC/Methods/GetNodeNetworks.py +++ b/PLC/Methods/GetNodeNetworks.py @@ -22,9 +22,4 @@ class GetNodeNetworks(Method): returns = [NodeNetwork.fields] def call(self, auth, nodenetwork_id_or_ip_list = None): - nodenetworks = NodeNetworks(self.api, nodenetwork_id_or_ip_list).values() - - # Cast from NodeNetwork to real dict - nodenetworks = [dict(nodenetwork) for nodenetwork in nodenetworks] - - return nodenetworks + return NodeNetworks(self.api, nodenetwork_id_or_ip_list).values() diff --git a/PLC/Methods/GetNodes.py b/PLC/Methods/GetNodes.py index 730e3643..038aaac7 100644 --- a/PLC/Methods/GetNodes.py +++ b/PLC/Methods/GetNodes.py @@ -24,21 +24,14 @@ class GetNodes(Method): returns = [Node.fields] def call(self, auth, node_id_or_hostname_list = None): - # Authenticated function - assert self.caller is not None - - valid_fields = Node.fields.keys() + # Get node information + nodes = Nodes(self.api, node_id_or_hostname_list).values() # Remove admin only fields if 'admin' not in self.caller['roles']: - for key in ['boot_nonce', 'key', 'session', 'root_person_ids']: - if key in valid_fields: - valid_fields.remove(key) - - # Get node information - nodes = Nodes(self.api, node_id_or_hostname_list).values() + for node in nodes: + for field in ['boot_nonce', 'key', 'session', 'root_person_ids']: + if field in node: + del node[field] - # Turn each node into a real dict - nodes = [dict(node) for node in nodes] - return nodes diff --git a/PLC/Methods/GetPCUs.py b/PLC/Methods/GetPCUs.py index 1330baa1..6c8731be 100644 --- a/PLC/Methods/GetPCUs.py +++ b/PLC/Methods/GetPCUs.py @@ -36,9 +36,4 @@ class GetPCUs(Method): if not pcu_ids: return [] - pcus = PCUs(self.api, pcu_ids).values() - - # Turn each PCU into a real dict - pcus = [dict(pcu) for pcu in pcus] - - return pcus + return PCUs(self.api, pcu_ids).values() diff --git a/PLC/Methods/GetPersons.py b/PLC/Methods/GetPersons.py index 0440ae12..1ab08c27 100644 --- a/PLC/Methods/GetPersons.py +++ b/PLC/Methods/GetPersons.py @@ -51,7 +51,4 @@ class GetPersons(Method): if 'admin' not in self.caller['roles']: persons = filter(self.caller.can_view, persons) - # Turn each account into a real dict - persons = [dict(person) for person in persons] - return persons diff --git a/PLC/Methods/GetRoles.py b/PLC/Methods/GetRoles.py index 084350f8..df7dce55 100644 --- a/PLC/Methods/GetRoles.py +++ b/PLC/Methods/GetRoles.py @@ -18,10 +18,4 @@ class GetRoles(Method): returns = [Role.fields] def call(self, auth): - - roles = Roles(self.api).values() - - #turn each role into a real dict - roles = [dict(role) for role in roles] - - return roles + return Roles(self.api).values() diff --git a/PLC/Methods/GetSites.py b/PLC/Methods/GetSites.py index 1a1b902c..448fae93 100644 --- a/PLC/Methods/GetSites.py +++ b/PLC/Methods/GetSites.py @@ -1,5 +1,3 @@ -import os - from PLC.Method import Method from PLC.Parameter import Parameter, Mixed from PLC.Auth import PasswordAuth @@ -10,7 +8,6 @@ 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. - """ roles = ['admin', 'pi', 'user', 'tech'] @@ -27,20 +24,5 @@ class GetSites(Method): object_type = 'Site' object_ids = [] - 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) - - # get id of objects affected by this call - self.object_ids = sites.keys() - - # turn each site into a real dict. - sites = [dict(site) for site in sites.values()] - - return sites + return Sites(self.api, site_id_or_login_base_list).values() diff --git a/PLC/Methods/GetSliceAttributeTypes.py b/PLC/Methods/GetSliceAttributeTypes.py index fa060b7e..9c92c342 100644 --- a/PLC/Methods/GetSliceAttributeTypes.py +++ b/PLC/Methods/GetSliceAttributeTypes.py @@ -21,10 +21,4 @@ class GetSliceAttributeTypes(Method): returns = [SliceAttributeType.fields] def call(self, auth, attribute_type_id_or_name_list = None): - # Get slice attribute type information - attribute_types = SliceAttributeTypes(self.api, attribute_type_id_or_name_list).values() - - # Turn each attribute into a real dict. - attribute_types = [dict(attribute_type) for attribute_type in attribute_types] - - return attribute_types + return SliceAttributeTypes(self.api, attribute_type_id_or_name_list).values() diff --git a/PLC/Methods/GetSliceAttributes.py b/PLC/Methods/GetSliceAttributes.py index 2f202522..a92db989 100644 --- a/PLC/Methods/GetSliceAttributes.py +++ b/PLC/Methods/GetSliceAttributes.py @@ -53,8 +53,4 @@ class GetSliceAttributes(Method): if not slice_attribute_ids: return [] - slice_attributes = SliceAttributes(self.api, slice_attribute_ids).values() - - slice_attributes = [dict(slice_attribute) for slice_attribute in slice_attributes] - - return slice_attributes + return SliceAttributes(self.api, slice_attribute_ids).values() diff --git a/PLC/Methods/GetSlices.py b/PLC/Methods/GetSlices.py index a53aa5e1..8560367f 100644 --- a/PLC/Methods/GetSlices.py +++ b/PLC/Methods/GetSlices.py @@ -50,7 +50,4 @@ class GetSlices(Method): can_view = lambda slice: slice['slice_id'] in valid_slice_ids slices = filter(can_view, slices) - # Turn each slice into a real dict - slices = [dict(slice) for slice in slices] - return slices diff --git a/PLC/Methods/GetSlivers.py b/PLC/Methods/GetSlivers.py index 619d7871..032a7543 100644 --- a/PLC/Methods/GetSlivers.py +++ b/PLC/Methods/GetSlivers.py @@ -1,3 +1,5 @@ +import time + from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed diff --git a/PLC/Methods/__init__.py b/PLC/Methods/__init__.py index dd44afd6..2a9ac35c 100644 --- a/PLC/Methods/__init__.py +++ b/PLC/Methods/__init__.py @@ -1 +1 @@ -methods = 'AddAddressType AddAddressTypeToAddress AddBootState AddConfFile AddConfFileToNode AddKeyType AddNetworkMethod AddNetworkType AddNodeGroup AddNodeNetwork AddNode AddNodeToNodeGroup AddNodeToPCU AddPCU AddPersonKey AddPerson AddPersonToSite AddPersonToSlice AddRole AddRoleToPerson AddSiteAddress AddSite AddSliceAttribute AddSliceAttributeType AddSlice AddSliceToNodes AdmAddAddressType AdmAddNodeGroup AdmAddNodeNetwork AdmAddNode AdmAddNodeToNodeGroup AdmAddPersonKey AdmAddPerson AdmAddPersonToSite AdmAddSitePowerControlUnit AdmAddSite AdmAssociateNodeToPowerControlUnitPort AdmAuthCheck AdmDeleteAddressType AdmDeleteAllPersonKeys AdmDeleteNodeGroup AdmDeleteNodeNetwork AdmDeleteNode AdmDeletePersonKeys AdmDeletePerson AdmDeleteSitePowerControlUnit AdmDeleteSite AdmDisassociatePowerControlUnitPort AdmGenerateNodeConfFile AdmGetAllAddressTypes AdmGetAllKeyTypes AdmGetAllNodeNetworks AdmGetAllRoles AdmGetNodeGroupNodes AdmGetNodeGroups AdmGetNodes AdmGetPersonKeys AdmGetPersonRoles AdmGetPersonSites AdmGetPersons AdmGetPowerControlUnitNodes AdmGetPowerControlUnits AdmGetSiteNodes AdmGetSitePersons AdmGetSitePIs AdmGetSitePowerControlUnits AdmGetSites AdmGetSiteTechContacts AdmGrantRoleToPerson AdmIsPersonInRole AdmQueryConfFile AdmQueryNode AdmQueryPerson AdmQueryPowerControlUnit AdmQuerySite AdmRebootNode AdmRemoveNodeFromNodeGroup AdmRemovePersonFromSite AdmRevokeRoleFromPerson AdmSetPersonEnabled AdmSetPersonPrimarySite AdmUpdateNodeGroup AdmUpdateNodeNetwork AdmUpdateNode AdmUpdatePerson AdmUpdateSitePowerControlUnit AdmUpdateSite AuthCheck BlacklistKey DeleteAddress DeleteAddressTypeFromAddress DeleteAddressType DeleteBootState DeleteConfFile DeleteKey DeleteKeyType DeleteNetworkMethod DeleteNetworkType DeleteNodeFromNodeGroup DeleteNodeFromPCU DeleteNodeGroup DeleteNodeNetwork DeleteNode DeletePCU DeletePersonFromSite DeletePersonFromSlice DeletePerson DeleteRoleFromPerson DeleteRole DeleteSite DeleteSliceAttribute DeleteSliceAttributeType DeleteSliceFromNodes DeleteSlice GetAddresses GetAddressTypes GetBootStates GetConfFiles GetEvents GetKeys GetKeyTypes GetNetworkMethods GetNetworkTypes GetNodeGroups GetNodeNetworks GetNodes GetPCUs GetPersons GetRoles GetSites GetSliceAttributes GetSliceAttributeTypes GetSlices GetSlivers RebootNode SetPersonPrimarySite SliceCreate SliceDelete UpdateAddress UpdateAddressType UpdateConfFile UpdateKey UpdateNodeGroup UpdateNodeNetwork UpdateNode UpdatePCU UpdatePerson UpdateSite UpdateSliceAttribute UpdateSliceAttributeType UpdateSlice system.listMethods system.methodHelp system.methodSignature system.multicall'.split() +methods = 'AddAddressType AddAddressTypeToAddress AddBootState AddConfFile AddConfFileToNodeGroup AddConfFileToNode AddKeyType AddNetworkMethod AddNetworkType AddNodeGroup AddNodeNetwork AddNode AddNodeToNodeGroup AddNodeToPCU AddPCU AddPersonKey AddPerson AddPersonToSite AddPersonToSlice AddRole AddRoleToPerson AddSiteAddress AddSite AddSliceAttribute AddSliceAttributeType AddSlice AddSliceToNodes AdmAddAddressType AdmAddNodeGroup AdmAddNodeNetwork AdmAddNode AdmAddNodeToNodeGroup AdmAddPersonKey AdmAddPerson AdmAddPersonToSite AdmAddSitePowerControlUnit AdmAddSite AdmAssociateNodeToPowerControlUnitPort AdmAuthCheck AdmDeleteAddressType AdmDeleteAllPersonKeys AdmDeleteNodeGroup AdmDeleteNodeNetwork AdmDeleteNode AdmDeletePersonKeys AdmDeletePerson AdmDeleteSitePowerControlUnit AdmDeleteSite AdmDisassociatePowerControlUnitPort AdmGenerateNodeConfFile AdmGetAllAddressTypes AdmGetAllKeyTypes AdmGetAllNodeNetworks AdmGetAllRoles AdmGetNodeGroupNodes AdmGetNodeGroups AdmGetNodes AdmGetPersonKeys AdmGetPersonRoles AdmGetPersonSites AdmGetPersons AdmGetPowerControlUnitNodes AdmGetPowerControlUnits AdmGetSiteNodes AdmGetSitePersons AdmGetSitePIs AdmGetSitePowerControlUnits AdmGetSites AdmGetSiteTechContacts AdmGrantRoleToPerson AdmIsPersonInRole AdmQueryConfFile AdmQueryNode AdmQueryPerson AdmQueryPowerControlUnit AdmQuerySite AdmRebootNode AdmRemoveNodeFromNodeGroup AdmRemovePersonFromSite AdmRevokeRoleFromPerson AdmSetPersonEnabled AdmSetPersonPrimarySite AdmUpdateNodeGroup AdmUpdateNodeNetwork AdmUpdateNode AdmUpdatePerson AdmUpdateSitePowerControlUnit AdmUpdateSite AuthCheck BlacklistKey DeleteAddress DeleteAddressTypeFromAddress DeleteAddressType DeleteBootState DeleteConfFile DeleteKey DeleteKeyType DeleteNetworkMethod DeleteNetworkType DeleteNodeFromNodeGroup DeleteNodeFromPCU DeleteNodeGroup DeleteNodeNetwork DeleteNode DeletePCU DeletePersonFromSite DeletePersonFromSlice DeletePerson DeleteRoleFromPerson DeleteRole DeleteSite DeleteSliceAttribute DeleteSliceAttributeType DeleteSliceFromNodes DeleteSlice GetAddresses GetAddressTypes GetBootStates GetConfFiles GetEvents GetKeys GetKeyTypes GetNetworkMethods GetNetworkTypes GetNodeGroups GetNodeNetworks GetNodes GetPCUs GetPersons GetRoles GetSites GetSliceAttributes GetSliceAttributeTypes GetSlices GetSlivers RebootNode SetPersonPrimarySite SliceCreate SliceDelete UpdateAddress UpdateAddressType UpdateConfFile UpdateKey UpdateNodeGroup UpdateNodeNetwork UpdateNode UpdatePCU UpdatePerson UpdateSite UpdateSliceAttribute UpdateSliceAttributeType UpdateSlice system.listMethods system.methodHelp system.methodSignature system.multicall'.split()