diff --git a/server/devel/create_sample_data.py b/server/devel/create_sample_data.py
index d6620554a..4aedaa4bd 100755
--- a/server/devel/create_sample_data.py
+++ b/server/devel/create_sample_data.py
@@ -63,7 +63,15 @@ def _server_validator(server: str) -> str:
"--queues",
type=int,
default=10,
- help="Number of queues to create",
+ help="Number of queues to distribute amongst jobs and agents",
+ )
+
+ parser.add_argument(
+ "-d",
+ "--advertised-queues",
+ type=int,
+ default=1,
+ help="Number of advertised queues to create",
)
parser.add_argument(
@@ -112,7 +120,7 @@ def __iter__(self):
"state": random.choice(("waiting", "test", "provision")),
}
if self.queue_list:
- agent_data["queues"] = [random.choice(self.queue_list)]
+ agent_data["queues"] = random.sample(self.queue_list, random.randint(1, len(self.queue_list)))
yield (f"{self.prefix}{agent_num}", agent_data)
@@ -241,7 +249,8 @@ def main():
testflinger_client = TestflingerClient(server_url=args.server)
queues = QueueDataGenerator(num_queues=args.queues)
- testflinger_client.post_queue_data(queues=queues)
+ # configure "advertised" queues:
+ testflinger_client.post_queue_data(random.sample(tuple(queues), random.randint(1, args.advertised_queues)))
logging.info("Created %s queues", args.queues)
valid_queue_names = extract_queue_names(queues=queues)
diff --git a/server/src/testflinger/templates/agent_detail.html b/server/src/testflinger/templates/agent_detail.html
index 9b65b035c..5c7786f76 100644
--- a/server/src/testflinger/templates/agent_detail.html
+++ b/server/src/testflinger/templates/agent_detail.html
@@ -33,72 +33,86 @@
Agent Detail - {{ agent.name }}
Queues
- {% for queue in agent.queues %}
- -
- {{ queue }}
- {% if agent.restricted_to[queue]|default([]) %}
- (restricted to: {{ agent.restricted_to[queue]|join(", ") }})
- {% endif %}
-
- {% endfor %}
-
- Provision History
-
-
- Provision success rate for this range: {{ agent.provision_success_rate }}%
-
-
-
+
- | Finished At |
- Job ID |
- Status |
- Detail |
+ Name |
+ Number of jobs |
+ Description |
- {% for log in agent.provision_log|reverse %}
-
- | {{ log.timestamp.strftime("%Y-%m-%d %H:%M:%S") }} |
-
- {{ log.job_id }}
- |
-
- {{ log.exit_code }}
+ {% for queue in agent.queues %}
+ |
+ |
+ {{ queue.name }}
+ {% if agent.restricted_to[queue.name]|default([]) %}
+ (restricted to: {{ agent.restricted_to[queue.name]|join(", ") }})
+ {% endif %}
|
- {{ log.detail }} |
+ {{ queue.numjobs }} |
+ {{ queue.description }} |
{% endfor %}
-
-
- Agent Log
-
-
-{% endblock content %}
+ {% endblock content %}
diff --git a/server/src/testflinger/views.py b/server/src/testflinger/views.py
index 67e20f6da..7f85ce370 100644
--- a/server/src/testflinger/views.py
+++ b/server/src/testflinger/views.py
@@ -91,6 +91,25 @@ def agent_detail(agent_id):
for queue in agent_info.get("queues", [])
}
+ queue_info = []
+ for queue_name in agent_info.pop("queues", []):
+ queue_data = mongo.db.queues.find_one({"name": queue_name})
+ if not queue_data:
+ # If it's not an advertised queue, create some dummy data
+ queue_data = {"description": "No description"}
+ queue_data["name"] = queue_name
+ queue_data["numjobs"] = mongo.db.jobs.count_documents(
+ {
+ "job_data.job_queue": queue_name,
+ "result_data.job_state": {
+ "$nin": ["complete", "completed", "cancelled"]
+ },
+ }
+ )
+ queue_info.append(queue_data)
+
+ agent_info["queues"] = queue_info
+
# We want to include the start/stop dates so that default values
# can be filled in for the date pickers
agent_info["start"] = start_date