from PLC.Config import Config
from PLC.Faults import *
import PLC.Methods
-import PLC.Legacy
import PLC.Accessors
def import_deep(name):
# flat list of method names
native_methods = PLC.Methods.native_methods
- legacy_methods = PLC.Legacy.native_methods
# other_methods_map : dict {methodname: fullpath}
# e.g. 'Accessors' -> 'PLC.Accessors.Accessors'
for method in getattr(import_deep(fullpath),"methods"):
other_methods_map[method] = fullpath
- all_methods = native_methods + legacy_methods + other_methods_map.keys()
+ all_methods = native_methods + other_methods_map.keys()
def __init__(self, config = "/etc/planetlab/plc_config", encoding = "utf-8"):
self.encoding = encoding
if self.config.PLC_DB_TYPE == "postgresql":
from PLC.PostgreSQL import PostgreSQL
self.db = PostgreSQL(self)
-
else:
raise PLCAPIError, "Unsupported database type " + self.config.PLC_DB_TYPE
+ # Aspects modify the API injecting code before/after method
+ # calls. As of now we only have aspects for OMF integration,
+ # that's why we enable aspects only if PLC_OMF is set to true.
+ if self.config.PLC_OMF:
+ from aspects import apply_aspects; apply_aspects()
+
+
def callable(self, method):
"""
Return a new instance of the specified method.
classname = method.split(".")[-1]
if method in self.native_methods:
fullpath="PLC.Methods." + method
- elif method in self.legacy_methods:
- fullpath="PLC.Legacy." + method
else:
fullpath=self.other_methods_map[method]
module = __import__(fullpath, globals(), locals(), [classname])