add backward compatible pcu functions
authorMark Huang <mlhuang@cs.princeton.edu>
Mon, 16 Oct 2006 19:56:12 +0000 (19:56 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Mon, 16 Oct 2006 19:56:12 +0000 (19:56 +0000)
PLC/Methods/AdmAddSitePowerControlUnit.py [new file with mode: 0644]
PLC/Methods/AdmAssociateNodeToPowerControlUnitPort.py [new file with mode: 0644]
PLC/Methods/AdmDeleteSitePowerControlUnit.py [new file with mode: 0644]
PLC/Methods/AdmDisassociatePowerControlUnitPort.py [new file with mode: 0644]
PLC/Methods/AdmGetPowerControlUnitNodes.py [new file with mode: 0644]
PLC/Methods/AdmGetPowerControlUnits.py [new file with mode: 0644]
PLC/Methods/AdmGetSitePowerControlUnits.py [new file with mode: 0644]
PLC/Methods/AdmUpdateSitePowerControlUnit.py [new file with mode: 0644]
PLC/Methods/__init__.py

diff --git a/PLC/Methods/AdmAddSitePowerControlUnit.py b/PLC/Methods/AdmAddSitePowerControlUnit.py
new file mode 100644 (file)
index 0000000..e9e452e
--- /dev/null
@@ -0,0 +1,8 @@
+from PLC.Methods.AddPCU import AddPCU
+
+class AdmAddSitePowerControlUnit(AddPCU):
+    """
+    Deprecated. See AddPCU.
+    """
+
+    status = "deprecated"
diff --git a/PLC/Methods/AdmAssociateNodeToPowerControlUnitPort.py b/PLC/Methods/AdmAssociateNodeToPowerControlUnitPort.py
new file mode 100644 (file)
index 0000000..c13233c
--- /dev/null
@@ -0,0 +1,29 @@
+from PLC.Faults import *
+from PLC.Method import Method
+from PLC.Parameter import Parameter, Mixed
+from PLC.Nodes import Node, Nodes
+from PLC.PCUs import PCU, PCUs
+from PLC.Auth import PasswordAuth
+from PLC.Methods.AddNodeToPCU import AddNodeToPCU
+
+class AdmAssociateNodeToPowerControlUnitPort(AddNodeToPCU):
+    """
+    Deprecated. See AddNodeToPCU.
+    """
+
+    status = "deprecated"
+
+    roles = ['admin', 'pi', 'tech']
+
+    accepts = [
+        PasswordAuth(),
+        PCU.fields['pcu_id'],
+        Parameter(int, 'PCU port number'),
+       Mixed(Node.fields['node_id'],
+              Node.fields['hostname']),
+        ]
+
+    returns = Parameter(int, '1 if successful')
+
+    def call(self, auth, pcu_id, port, node_id_or_hostname):
+        return AddNodeToPCU(self, auth, node_id_or_hostname, pcu_id, port)
diff --git a/PLC/Methods/AdmDeleteSitePowerControlUnit.py b/PLC/Methods/AdmDeleteSitePowerControlUnit.py
new file mode 100644 (file)
index 0000000..2865224
--- /dev/null
@@ -0,0 +1,8 @@
+from PLC.Methods.DeletePCU import DeletePCU
+
+class AdmDeleteSitePowerControlUnit(DeletePCU):
+    """
+    Deprecated. See DeletePCU.
+    """
+
+    status = "deprecated"
diff --git a/PLC/Methods/AdmDisassociatePowerControlUnitPort.py b/PLC/Methods/AdmDisassociatePowerControlUnitPort.py
new file mode 100644 (file)
index 0000000..0b52c7e
--- /dev/null
@@ -0,0 +1,37 @@
+from PLC.Faults import *
+from PLC.Method import Method
+from PLC.Parameter import Parameter, Mixed
+from PLC.Nodes import Node, Nodes
+from PLC.PCUs import PCU, PCUs
+from PLC.Auth import PasswordAuth
+from PLC.Methods.DeleteNodeFromPCU import DeleteNodeFromPCU
+
+class AdmDisassociatePowerControlUnitPort(DeleteNodeFromPCU):
+    """
+    Deprecated. See DeleteNodeFromPCU.
+    """
+
+    status = "deprecated"
+
+    roles = ['admin', 'pi', 'tech']
+
+    accepts = [
+        PasswordAuth(),
+        PCU.fields['pcu_id'],
+        Parameter(int, 'PCU port number'),
+        ]
+
+    returns = Parameter(int, '1 if successful')
+
+    def call(self, auth, pcu_id, port):
+        pcus = PCUs(self.api, [pcu_id]).values()
+        if not pcus:
+            raise PLCInvalidArgument, "No such PCU"
+
+        pcu = pcus.values()[0]
+
+        ports = dict(zip(pcu['ports'], pcu['node_ids']))
+        if port not in ports:
+            raise PLCInvalidArgument, "No node on that port or no such port"
+
+        return DeleteNodeFromPCU(self, auth, ports[port], pcu_id)
diff --git a/PLC/Methods/AdmGetPowerControlUnitNodes.py b/PLC/Methods/AdmGetPowerControlUnitNodes.py
new file mode 100644 (file)
index 0000000..9bd48f5
--- /dev/null
@@ -0,0 +1,36 @@
+from PLC.Faults import *
+from PLC.Method import Method
+from PLC.Parameter import Parameter, Mixed
+from PLC.PCUs import PCU, PCUs
+from PLC.Auth import PasswordAuth
+from PLC.Methods.GetPCUs import GetPCUs
+
+class AdmGetPowerControlUnitNodes(GetPCUs):
+    """
+    Deprecated. See GetPCUs.
+
+    Returns a list of the nodes, and the ports they are assigned to,
+    on the specified PCU.
+    
+    Admin may query all PCUs. Non-admins may only query the PCUs at
+    their sites.
+    """
+
+    roles = ['admin', 'pi', 'tech']
+
+    accepts = [
+        PasswordAuth(),
+        PCU.fields['pcu_id']
+        ]
+
+    returns = [{'node_id': Parameter(int, "Node identifier"),
+                'port_number': Parameter(int, "Port number")}]
+
+    def call(self, auth, pcu_id):
+        pcus = GetPCUs.call(self, auth, [pcu_id])
+        if not pcus:
+            raise PLCInvalidArgument, "No such PCU"
+        pcu = pcus[0]
+
+        return [{'node_id': node_id, 'port_number': port} \
+                for (node_id, port) in zip(pcu['node_ids'], pcu['ports'])]
diff --git a/PLC/Methods/AdmGetPowerControlUnits.py b/PLC/Methods/AdmGetPowerControlUnits.py
new file mode 100644 (file)
index 0000000..8f7e0c7
--- /dev/null
@@ -0,0 +1,8 @@
+from PLC.Methods.GetPCUs import GetPCUs
+
+class AdmGetPowerControlUnits(GetPCUs):
+    """
+    Deprecated. See GetPCUs.
+    """
+
+    status = "deprecated"
diff --git a/PLC/Methods/AdmGetSitePowerControlUnits.py b/PLC/Methods/AdmGetSitePowerControlUnits.py
new file mode 100644 (file)
index 0000000..68aac49
--- /dev/null
@@ -0,0 +1,40 @@
+from PLC.Faults import *
+from PLC.Method import Method
+from PLC.Parameter import Parameter, Mixed
+from PLC.PCUs import PCU, PCUs
+from PLC.Sites import Site, Sites
+from PLC.Auth import PasswordAuth
+
+class AdmGetSitePowerControlUnits(Method):
+    """
+    Deprecated. Functionality can be implemented with GetSites and GetPCUs.
+    """
+
+    status = "deprecated"
+
+    roles = ['admin', 'pi', 'tech']
+
+    accepts = [
+        PasswordAuth(),
+        Mixed(Site.fields['site_id'],
+              Site.fields['login_base'])
+        ]
+
+    returns = [PCU.fields]
+
+    def call(self, auth, site_id_or_login_base):
+        sites = Sites(self.api, [site_id_or_login_base])
+        if not sites:
+            raise PLCInvalidArgument, "No such site"
+        site = sites.values()[0]
+
+        if 'admin' not in self.caller['roles']:
+            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
diff --git a/PLC/Methods/AdmUpdateSitePowerControlUnit.py b/PLC/Methods/AdmUpdateSitePowerControlUnit.py
new file mode 100644 (file)
index 0000000..ed564fb
--- /dev/null
@@ -0,0 +1,8 @@
+from PLC.Methods.UpdatePCU import UpdatePCU
+
+class AdmUpdateSitePowerControlUnit(UpdatePCU):
+    """
+    Deprecated. See UpdatePCU.
+    """
+
+    status = "deprecated"
index 3de5381..95e7980 100644 (file)
@@ -1 +1 @@
-methods = 'AddAddress AddAddressType AddAddressTypeToAddress AddAttribute AddBootState AddKey AddKeyType AddNetworkMethod AddNetworkType AddNodeGroup AddNodeNetwork AddNode AddNodeToNodeGroup AddNodeToPCU AddPCU AddPerson AddPersonToSite AddPersonToSlice AddRole AddRoleToPerson AddSite AddSliceAttribute AddSlice AddSliceToNodes AdmAddNodeGroup AdmAddNodeNetwork AdmAddNode AdmAddNodeToNodeGroup AdmAddPerson AdmAddPersonToSite AdmAddSite AdmAuthCheck AdmDeleteNodeGroup AdmDeleteNodeNetwork AdmDeleteNode AdmDeletePerson AdmDeleteSite AdmGetAllNodeNetworkBandwidthLimits AdmGetAllNodeNetworks AdmGetAllRoles AdmGetNodeGroupNodes AdmGetNodeGroups AdmGetNodes AdmGetPersonRoles AdmGetPersonSites AdmGetPersons AdmGetSiteNodes AdmGetSitePersons AdmGetSites AdmGrantRoleToPerson AdmIsPersonInRole AdmRemoveNodeFromNodeGroup AdmRemovePersonFromSite AdmRevokeRoleFromPerson AdmSetPersonEnabled AdmSetPersonPrimarySite AdmUpdateNodeGroup AdmUpdateNodeNetwork AdmUpdateNode AdmUpdatePerson AdmUpdateSite AuthCheck BlacklistKey DeleteAddress DeleteAddressTypeFromAddress DeleteAddressType DeleteAttribute DeleteBootState DeleteKey DeleteKeyType DeleteNetworkMethod DeleteNetworkType DeleteNodeFromNodeGroup DeleteNodeFromPCU DeleteNodeGroup DeleteNodeNetwork DeleteNode DeletePCU DeletePersonFromSite DeletePersonFromSlice DeletePerson DeleteRoleFromPerson DeleteRole DeleteSite DeleteSliceAttribute DeleteSliceFromNodes DeleteSlice GetAddresses GetAddressTypes GetAttributes GetBootStates GetKeys GetKeyTypes GetNetworkMethods GetNetworkTypes GetNodeGroups GetNodeNetworks GetNodes GetPCUs GetPersons GetRoles GetSites GetSliceAttributes GetSlices SetPersonPrimarySite UpdateAddress UpdateAddressType UpdateAttribute UpdateKey UpdateNodeGroup UpdateNodeNetwork UpdateNode UpdatePCU UpdatePerson UpdateSite UpdateSliceAttribute UpdateSlice  system.listMethods  system.methodHelp  system.methodSignature  system.multicall'.split()
+methods = 'AddAddress AddAddressType AddAddressTypeToAddress AddAttribute AddBootState AddKey AddKeyType AddNetworkMethod AddNetworkType AddNodeGroup AddNodeNetwork AddNode AddNodeToNodeGroup AddNodeToPCU AddPCU AddPerson AddPersonToSite AddPersonToSlice AddRole AddRoleToPerson AddSite AddSliceAttribute AddSlice AddSliceToNodes AdmAddNodeGroup AdmAddNodeNetwork AdmAddNode AdmAddNodeToNodeGroup AdmAddPerson AdmAddPersonToSite AdmAddSitePowerControlUnit AdmAddSite AdmAssociateNodeToPowerControlUnitPort AdmAuthCheck AdmDeleteNodeGroup AdmDeleteNodeNetwork AdmDeleteNode AdmDeletePerson AdmDeleteSitePowerControlUnit AdmDeleteSite AdmDisassociatePowerControlUnitPort AdmGenerateNodeConfFile AdmGetAllNodeNetworks AdmGetAllRoles AdmGetNodeGroupNodes AdmGetNodeGroups AdmGetNodes AdmGetPersonRoles AdmGetPersonSites AdmGetPersons AdmGetPowerControlUnitNodes AdmGetPowerControlUnits AdmGetSiteNodes AdmGetSitePersons AdmGetSitePowerControlUnits AdmGetSites AdmGrantRoleToPerson AdmIsPersonInRole AdmRebootNode AdmRemoveNodeFromNodeGroup AdmRemovePersonFromSite AdmRevokeRoleFromPerson AdmSetPersonEnabled AdmSetPersonPrimarySite AdmUpdateNodeGroup AdmUpdateNodeNetwork AdmUpdateNode AdmUpdatePerson AdmUpdateSitePowerControlUnit AdmUpdateSite AuthCheck BlacklistKey DeleteAddress DeleteAddressTypeFromAddress DeleteAddressType DeleteAttribute DeleteBootState DeleteKey DeleteKeyType DeleteNetworkMethod DeleteNetworkType DeleteNodeFromNodeGroup DeleteNodeFromPCU DeleteNodeGroup DeleteNodeNetwork DeleteNode DeletePCU DeletePersonFromSite DeletePersonFromSlice DeletePerson DeleteRoleFromPerson DeleteRole DeleteSite DeleteSliceAttribute DeleteSliceFromNodes DeleteSlice GetAddresses GetAddressTypes GetAttributes GetBootStates GetKeys GetKeyTypes GetNetworkMethods GetNetworkTypes GetNodeGroups GetNodeNetworks GetNodes GetPCUs GetPersons GetRoles GetSites GetSliceAttributes GetSlices RebootNode SetPersonPrimarySite UpdateAddress UpdateAddressType UpdateAttribute UpdateKey UpdateNodeGroup UpdateNodeNetwork UpdateNode UpdatePCU UpdatePerson UpdateSite UpdateSliceAttribute UpdateSlice  system.listMethods  system.methodHelp  system.methodSignature  system.multicall'.split()