from PLC.Slices import Slice
from PLC.Ilinks import Ilink
-from PLC.Accessors.Factory import all_roles, get_set_factory
+from PLC.Accessors.Factory import define_accessors, all_roles, tech_roles
-methods=[]
+import sys
+current_module = sys.modules[__name__]
-# example : node architecture
-(GetNodeArch, SetNodeArch) = \
- get_set_factory ( Node, "Arch", 'arch', 'node/config', 'architecture name',
- tag_min_role_id=40,
- get_roles=all_roles,
- set_roles=['admin', 'pi', 'tech'] )
-methods += [ 'GetNodeArch', 'SetNodeArch' ]
+# NOTE.
+# most of these tag types are defined in MyPLC/db-config, so any details here in the
+# description/category area is unlikely to make it into the database
+#
+# slice vref
+define_accessors(current_module, Slice, "Vref", 'vref', 'slice/config',
+ get_roles=all_roles, set_roles=['admin'])
+
+# node architecture
+define_accessors(current_module, Node, "Arch", 'arch', 'node/config', 'architecture name',
+ get_roles=all_roles, set_roles=tech_roles )
+# distribution to be deployed
+define_accessors(current_module, Node, "Pldistro", 'pldistro', 'node/config', 'PlanetLab distribution',
+ get_roles=all_roles, set_roles=['admin'] )
+# node deployment (alpha, beta, ...)
+define_accessors(current_module, Node, "Deployment", "deployment", "node/operation",
+ 'deployment flavour, typically "alpha", "beta", or "production"',
+ get_roles=all_roles, set_roles=['admin'])
+
+# interface alias
+define_accessors(current_module, Interface, "Ifname", "ifname", "interface/config", "linux name",
+ get_roles=all_roles, set_roles=tech_roles)
+define_accessors(current_module, Interface, "Driver", "driver", "interface/config", "driver name",
+ get_roles=all_roles, set_roles=tech_roles)
+define_accessors(current_module, Interface, "Alias", "alias", "interface/config", "interface alias",
+ get_roles=all_roles, set_roles=tech_roles)