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:
Lars Kellogg-Stedman
2016-05-18 15:55:47 -04:00
parent 513164b6b6
commit 4cdaf2ce33
4 changed files with 11 additions and 3 deletions

View File

@@ -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
)

View File

@@ -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)

View File

@@ -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>

View File

@@ -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>