X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Frecord.py;h=aad12ca6c006de9f6e16d230a1236bd5c0d2ed54;hb=3d7237fa0b5f2b4a60cb97c7fb3b6aecfd94558a;hp=45b77db0f755eaa3bbc59c65bfe5ba7b60152f87;hpb=971a5522c72101b2294c6b318575f1a18a201de8;p=sfa.git diff --git a/sfa/util/record.py b/sfa/util/record.py index 45b77db0..aad12ca6 100644 --- a/sfa/util/record.py +++ b/sfa/util/record.py @@ -1,5 +1,5 @@ ## -# Implements support for geni records +# Implements support for SFA records # # TODO: Use existing PLC database methods? or keep this separate? ## @@ -14,12 +14,12 @@ from sfa.trust.gid import * import sfa.util.report from sfa.util.rspec import * from sfa.util.parameter import * -from sfa.util.misc import * +from sfa.util.namespace import * +from sfa.util.row import Row - -class GeniRecord(dict): +class SfaRecord(Row): """ - The GeniRecord class implements a Geni Record. A GeniRecord is a tuple + The SfaRecord class implements an SFA Record. A SfaRecord is a tuple (Hrn, GID, Type, Info). Hrn specifies the Human Readable Name of the object @@ -37,9 +37,13 @@ class GeniRecord(dict): of different types. """ + table_name = 'sfa' + + primary_key = 'record_id' + ### the wsdl generator assumes this is named 'fields' internal_fields = { - 'record_id': Parameter(int, 'An id that uniquely identifies this record'), + 'record_id': Parameter(int, 'An id that uniquely identifies this record', ro=True), 'pointer': Parameter(int, 'An id that uniquely identifies this record in an external database ') } @@ -54,7 +58,7 @@ class GeniRecord(dict): } all_fields = dict(fields.items() + internal_fields.items()) ## - # Create a Geni Record + # Create an SFA Record # # @param name if !=None, assign the name of the record # @param gid if !=None, assign the gid of the record @@ -81,6 +85,10 @@ class GeniRecord(dict): self.load_from_dict(dict) if string: self.load_from_string(string) + + + def validate_last_updated(self, last_updated): + return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) def update(self, new_dict): if isinstance(new_dict, list): @@ -301,8 +309,8 @@ class GeniRecord(dict): record = RecordSpec() record.parseString(str) record_dict = record.toDict() - geni_dict = record_dict['record'] - self.load_from_dict(geni_dict) + sfa_dict = record_dict['record'] + self.load_from_dict(sfa_dict) ## # Dump the record to stdout @@ -323,7 +331,7 @@ class GeniRecord(dict): # self.get_gid_object().dump(8, dump_parents) #print " pointer:", self.pointer - order = GeniRecord.fields.keys() + order = SfaRecord.fields.keys() for key in self.keys(): if key not in order: order.append(key) @@ -340,7 +348,7 @@ class GeniRecord(dict): return dict(self) -class UserRecord(GeniRecord): +class UserRecord(SfaRecord): fields = { 'email': Parameter(str, 'email'), @@ -350,9 +358,9 @@ class UserRecord(GeniRecord): 'key': Parameter(str, 'Public key'), 'slices': Parameter([str], 'List of slices this user belongs to'), } - fields.update(GeniRecord.fields) + fields.update(SfaRecord.fields) -class SliceRecord(GeniRecord): +class SliceRecord(SfaRecord): fields = { 'name': Parameter(str, 'Slice name'), 'url': Parameter(str, 'Slice url'), @@ -360,10 +368,10 @@ class SliceRecord(GeniRecord): 'researcher': Parameter([str], 'List of users for this slice'), 'description': Parameter([str], 'Description of this slice'), } - fields.update(GeniRecord.fields) + fields.update(SfaRecord.fields) -class NodeRecord(GeniRecord): +class NodeRecord(SfaRecord): fields = { 'hostname': Parameter(str, 'This nodes dns name'), 'node_type': Parameter(str, 'Type of node this is'), @@ -371,10 +379,10 @@ class NodeRecord(GeniRecord): 'latitude': Parameter(str, 'latitude'), 'longitude': Parameter(str, 'longitude'), } - fields.update(GeniRecord.fields) + fields.update(SfaRecord.fields) -class AuthorityRecord(GeniRecord): +class AuthorityRecord(SfaRecord): fields = { 'name': Parameter(str, 'Name'), 'login_base': Parameter(str, 'login base'), @@ -385,6 +393,6 @@ class AuthorityRecord(GeniRecord): 'researcher': Parameter([str], 'List of researchers'), 'PI': Parameter([str], 'List of Principal Investigators'), } - fields.update(GeniRecord.fields) + fields.update(SfaRecord.fields)