correctly sort tasks and plays
adds an explicit sort key to the database to ensure that we can appropriately sort tasks and plays Closes: #44
This commit is contained in:
@@ -16,6 +16,7 @@ from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
import logging
|
||||
import os
|
||||
import itertools
|
||||
from datetime import datetime
|
||||
from decorator import decorator
|
||||
|
||||
@@ -86,6 +87,9 @@ class CallbackModule(CallbackBase):
|
||||
self.playbook = None
|
||||
self.stats = None
|
||||
|
||||
self.play_counter = itertools.count()
|
||||
self.task_counter = itertools.count()
|
||||
|
||||
def get_or_create_host(self, hostname):
|
||||
try:
|
||||
host = models.Host.query.filter_by(name=hostname).one()
|
||||
@@ -197,6 +201,7 @@ class CallbackModule(CallbackBase):
|
||||
|
||||
self.task = models.Task(
|
||||
name=task.name,
|
||||
sortkey=next(self.task_counter),
|
||||
action=task.action,
|
||||
play=self.play,
|
||||
playbook=self.playbook,
|
||||
@@ -229,6 +234,7 @@ class CallbackModule(CallbackBase):
|
||||
|
||||
self.play = models.Play(
|
||||
name=play.name,
|
||||
sortkey=next(self.play_counter),
|
||||
playbook=self.playbook
|
||||
)
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ class Play(db.Model, TimedEntity):
|
||||
default=mkuuid)
|
||||
playbook_id = db.Column(db.String(36), db.ForeignKey('playbooks.id'))
|
||||
name = db.Column(db.Text)
|
||||
sortkey = db.Column(db.Integer)
|
||||
tasks = db.relationship('Task', backref='play', lazy='dynamic')
|
||||
|
||||
time_start = db.Column(db.DateTime, default=datetime.now)
|
||||
@@ -125,6 +126,7 @@ class Task(db.Model, TimedEntity):
|
||||
play_id = db.Column(db.String(36), db.ForeignKey('plays.id'))
|
||||
|
||||
name = db.Column(db.Text)
|
||||
sortkey = db.Column(db.Integer)
|
||||
action = db.Column(db.Text)
|
||||
path = db.Column(db.Text)
|
||||
lineno = db.Column(db.Integer)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for task in play.tasks.order_by('time_start') %}
|
||||
{% for task in play.tasks.order_by('sortkey') %}
|
||||
<tr>
|
||||
<td>{{ task.time_start |datetime }}</td>
|
||||
<td>{{ task.time_end |datetime }}</td>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for play in playbook.plays.order_by('time_start') %}
|
||||
{% for play in playbook.plays.order_by('sortkey') %}
|
||||
<tr>
|
||||
<td>{{ playbook.time_start |datetime }}</td>
|
||||
<td>{{ playbook.time_end |datetime }}</td>
|
||||
@@ -88,7 +88,7 @@
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for task in playbook.tasks.order_by('time_start') %}
|
||||
{% for task in playbook.tasks.order_by('sortkey') %}
|
||||
<tr>
|
||||
<td>{{ task.time_start |datetime }}</td>
|
||||
<td>{{ task.time_end |datetime }}</td>
|
||||
|
||||
Reference in New Issue
Block a user