From 0225ac44fbf7a9c6b9bfd152c2e97315da39e1c4 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Tue, 17 Jan 2012 15:03:38 +0100 Subject: [PATCH] fix creation and update times --- sfa/importer/sfaImport.py | 3 +++ sfa/managers/registry_manager.py | 34 +++++++++++++------------------- sfa/storage/persistentobjs.py | 10 ++++++++++ 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/sfa/importer/sfaImport.py b/sfa/importer/sfaImport.py index c95599cd..3f8284da 100644 --- a/sfa/importer/sfaImport.py +++ b/sfa/importer/sfaImport.py @@ -89,6 +89,7 @@ class sfaImport: auth_info = self.AuthHierarchy.get_auth_info(hrn) auth_record = RegRecord("authority", hrn=hrn, gid=auth_info.get_gid_object(), authority=get_authority(hrn)) + auth_record.just_created() self.logger.info("Import: importing auth %s " % auth_record) dbsession.add (auth_record) dbsession.commit() @@ -106,6 +107,7 @@ class sfaImport: auth_info = self.AuthHierarchy.get_auth_info(hrn) user_record = RegRecord("user", hrn=hrn, gid=auth_info.get_gid_object(), \ authority=get_authority(hrn)) + user_record.just_created() self.logger.info("Import: importing user %s " % user_record) dbsession.add (user_record) dbsession.commit() @@ -125,6 +127,7 @@ class sfaImport: gid = self.AuthHierarchy.create_gid(urn, create_uuid(), pkey) interface_record = RegRecord(interface, hrn=hrn, gid = gid, authority=get_authority(hrn)) + interface_record.just_created() self.logger.info("Import: importing %s " % interface_record) dbsession.add (interface_record) dbsession.commit() diff --git a/sfa/managers/registry_manager.py b/sfa/managers/registry_manager.py index fc8994a8..e347201f 100644 --- a/sfa/managers/registry_manager.py +++ b/sfa/managers/registry_manager.py @@ -1,5 +1,4 @@ import types -from datetime import datetime # for get_key_from_incoming_ip import tempfile import os @@ -205,7 +204,7 @@ class RegistryManager: if not api.auth.hierarchy.auth_exists(hrn): raise MissingAuthority(hrn) records = dbsession.query(RegRecord).filter_by(authority=hrn) - record_dicts=[ record.__dict__ for record in records ] + record_dicts=[ record.todict() for record in records ] return record_dicts @@ -264,9 +263,7 @@ class RegistryManager: assert ('type' in record_dict) record = RegRecord("undefined") record.set_from_dict(record_dict) - now=datetime.now() - record.date_created=now - record.last_updated=now + record.just_created() record.authority = get_authority(record.hrn) auth_info = api.auth.get_auth_info(record.authority) pub_key = None @@ -317,8 +314,7 @@ class RegistryManager: record = dbsession.query(RegRecord).filter_by(type=type,hrn=hrn).first() if not record: raise RecordNotFound(hrn) - now=datetime.now() - record.last_updated=now + record.just_updated() # validate the type # xxx might be simpler to just try to commit as this is a constraint in the db @@ -359,22 +355,19 @@ class RegistryManager: # expecting an Xrn instance def Remove(self, api, xrn, origin_hrn=None): - - table = SfaTable() - filter = {'hrn': xrn.get_hrn()} hrn=xrn.get_hrn() type=xrn.get_type() + request=dbsession.query(RegRecord).filter_by(hrn=hrn) if type and type not in ['all', '*']: - filter['type'] = type + request=request.filter_by(type=type) - records = table.find(filter) - if not records: raise RecordNotFound(hrn) - record = records[0] - type = record['type'] - - if type not in ['slice', 'user', 'node', 'authority'] : - raise UnknownSfaType(type) + record = request.first() + if not record: + msg="Could not find hrn %s"%hrn + if type: msg += " type=%s"%type + raise RecordNotFound(msg) + type = record.type credential = api.getCredential() registries = api.registries @@ -390,11 +383,12 @@ class RegistryManager: # call testbed callback first # IIUC this is done on the local testbed TOO because of the refreshpeer link - if not self.driver.remove(record): + if not self.driver.remove(record.__dict__): logger.warning("driver.remove failed") # delete from sfa db - table.remove(record) + del record + dbsession.commit() return 1 diff --git a/sfa/storage/persistentobjs.py b/sfa/storage/persistentobjs.py index 22961f85..acfda8ca 100644 --- a/sfa/storage/persistentobjs.py +++ b/sfa/storage/persistentobjs.py @@ -1,4 +1,5 @@ from types import StringTypes +from datetime import datetime from sqlalchemy import create_engine from sqlalchemy import Column, Integer, String, DateTime @@ -70,6 +71,15 @@ class RegRecord (Base,AlchemyObj): if not self.gid: return None else: return GID(string=self.gid) + def just_created (self): + now=datetime.now() + self.date_created=now + self.last_updated=now + + def just_updated (self): + now=datetime.now() + self.last_updated=now + ############################## class User (Base): __table__ = Table ('users', Base.metadata, -- 2.47.0