Skip to content
Snippets Groups Projects
Commit b9e435d8 authored by Nico Vermaas's avatar Nico Vermaas
Browse files
monitor endpoint and database change
parent b7e90ac2
No related branches found
No related tags found
2 merge requests!173https://support.astron.nl/jira/browse/SDC-496,!172Merge branch 'master' into 'SDC-496-service-monitor'
# Generated by Django 3.1.4 on 2022-01-27 13:56
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('taskdatabase', '0008_postprocessingrule'),
]
operations = [
migrations.CreateModel(
name='Monitor',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(default='unknown', max_length=50)),
('type', models.CharField(blank=True, default='ldv-service', max_length=20, null=True)),
('timestamp', models.DateTimeField(blank=True, default=datetime.datetime.utcnow)),
('hostname', models.CharField(default='unknown', max_length=50)),
('process_id', models.IntegerField(null=True)),
('description', models.CharField(blank=True, max_length=100, null=True)),
('new_status', models.CharField(default='defining', max_length=50, null=True)),
('metadata', models.JSONField(blank=True, null=True)),
],
),
migrations.AlterField(
model_name='task',
name='task_type',
field=models.CharField(default='regular', max_length=20),
),
]
# Generated by Django 3.1.4 on 2022-01-27 13:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('taskdatabase', '0009_auto_20220127_1456'),
]
operations = [
migrations.RenameField(
model_name='monitor',
old_name='new_status',
new_name='status',
),
migrations.AlterField(
model_name='monitor',
name='description',
field=models.CharField(blank=True, max_length=255, null=True),
),
]
......@@ -125,3 +125,14 @@ class PostProcessingRule(models.Model):
# relationships
workflow_to_process = models.ForeignKey(Workflow, related_name='to_process', on_delete=models.SET_NULL, null=True, blank=True)
workflow_to_apply = models.ForeignKey(Workflow, related_name='to_apply',on_delete=models.SET_NULL, null=True, blank=True)
class Monitor(models.Model):
name = models.CharField(max_length=50, default="unknown")
type = models.CharField(max_length=20, default="ldv-service", null=True, blank=True)
timestamp = models.DateTimeField(default=datetime.utcnow, blank=True)
hostname = models.CharField(max_length=50, default="unknown")
process_id = models.IntegerField(null=True)
description = models.CharField(max_length=255, blank=True, null=True)
status = models.CharField(max_length=50, default="defining", null=True)
metadata = models.JSONField(null=True, blank=True)
\ No newline at end of file
from rest_framework import serializers
from .models import Status, Task, Workflow, LogEntry, Configuration, Job, PostProcessingRule
from .models import Status, Task, Workflow, LogEntry, Configuration, Job, PostProcessingRule, Monitor
......@@ -168,4 +168,11 @@ class PostProcessingRuleSerializer(serializers.ModelSerializer):
class Meta:
model = PostProcessingRule
fields = "__all__"
class MonitorSerializer(serializers.ModelSerializer):
class Meta:
model = Monitor
fields = "__all__"
\ No newline at end of file
......@@ -80,7 +80,7 @@
{% include 'taskdatabase/pagination.html' %}
</div>
</div>
<p class="footer"> Version 1.0.0 (27 jan 2021 - 14:00)
<p class="footer"> Version 1.0.0 (27 jan 2021 - 15:00)
</div>
......
......@@ -53,6 +53,9 @@ urlpatterns = [
path('postprocessing/', views.PostProcessingRuleListViewAPI.as_view()),
path('postprocessing/<int:pk>/', views.PostProcessingRuleDetailsViewAPI.as_view(), name='postprocessing-detail-view-api'),
path('monitor/', views.MonitorListViewAPI.as_view()),
path('monitor/<int:pk>/', views.MonitorDetailsViewAPI.as_view(),name='monitor-detail-view-api'),
# --- custom requests ---
# /atdb/get_size?status__in=defined,staged
path('tasks/get_size/', views.GetSizeView.as_view(), name='get-size-view'),
......
......@@ -22,7 +22,7 @@ from django.shortcuts import render, redirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.conf import settings
from .models import Task, Status, Workflow, LogEntry, Configuration, Job, PostProcessingRule
from .models import Task, Status, Workflow, LogEntry, Configuration, Job, PostProcessingRule, Monitor
from .tables import TaskTable
from django.db.models import Q
......@@ -33,7 +33,9 @@ from .serializers import \
WorkflowSerializer,\
LogEntrySerializer,\
ConfigurationSerializer,\
JobSerializer, PostProcessingRuleSerializer
JobSerializer, \
PostProcessingRuleSerializer, \
MonitorSerializer
from .services import algorithms
......@@ -537,6 +539,24 @@ class PostProcessingRuleDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
queryset = PostProcessingRule.objects.all()
serializer_class = PostProcessingRuleSerializer
# example: /atdb/job/
class MonitorListViewAPI(generics.ListCreateAPIView):
model = Monitor
queryset = Monitor.objects.all()
serializer_class = MonitorSerializer
filter_backends = (filters.DjangoFilterBackend,)
#filter_class = PostProcessingFilter
# example: /atdb/job/5/
class MonitorDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
model = Monitor
queryset = Monitor.objects.all()
serializer_class = MonitorSerializer
# --- controller resources, triggered by a button in the GUI or directoy with a URL ---
# set task status to 'new_status' - called from the GUI
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment