Index: lnt/server/db/testsuitedb.py =================================================================== --- lnt/server/db/testsuitedb.py +++ lnt/server/db/testsuitedb.py @@ -363,8 +363,8 @@ class_dict[iname] = item.column = make_run_column(iname) - def __init__(self, machine, order, start_time, end_time): - self.id = None + def __init__(self, new_id, machine, order, start_time, end_time): + self.id = new_id self.machine = machine self.order = order self.start_time = start_time @@ -962,6 +962,7 @@ # Find the order record. order = self._getOrCreateOrder(session, run_parameters) + existing_run_id = None if merge != 'append': existing_runs = session.query(self.Run) \ @@ -977,6 +978,9 @@ logger.info("Duplicate submission for order %r: " "deleting previous run %r" % (order, previous_run)) + # Keep the latest ID so the URL is preserved + existing_run_id = previous_run.id + session.delete(previous_run) else: raise ValueError('Invalid Run mergeStrategy %r' % merge) @@ -996,7 +1000,8 @@ "%Y-%m-%d %H:%M:%S") run_parameters.pop('end_time') - run = self.Run(machine, order, start_time, end_time) + new_id = existing_run_id if existing_run_id else None + run = self.Run(new_id, machine, order, start_time, end_time) # First, extract all of the specified run fields. for item in self.run_fields: