Skip to content
Snippets Groups Projects
Commit ca338ac6 authored by Mattia Mancini's avatar Mattia Mancini
Browse files

Story SW-300: fixing response on already existing item and adding releasing script

parent 9ce87097
No related branches found
No related tags found
2 merge requests!89Monitoring maintenance Epic branch merge,!1Resolve OSB-13 "Monitoringmaintenance "
......@@ -1783,6 +1783,7 @@ LCU/Maintenance/DBInterface/manage.py -text
LCU/Maintenance/DBInterface/monitoringdb/__init__.py -text
LCU/Maintenance/DBInterface/monitoringdb/admin.py -text
LCU/Maintenance/DBInterface/monitoringdb/apps.py -text
LCU/Maintenance/DBInterface/monitoringdb/exceptions.py -text
LCU/Maintenance/DBInterface/monitoringdb/migrations/__init__.py -text
LCU/Maintenance/DBInterface/monitoringdb/models/__init__.py -text
LCU/Maintenance/DBInterface/monitoringdb/models/componenterror.py -text
......@@ -1822,6 +1823,7 @@ LCU/Maintenance/DBInterface/monitoringdb/views.py -text
LCU/Maintenance/MDB_tools/CMakeLists.txt -text
LCU/Maintenance/MDB_tools/cli/mdb_loader.py -text
LCU/Maintenance/MDB_tools/cli/probe_mdb.py -text
LCU/Maintenance/MDB_tools/cli/release_code.py -text
LCU/Maintenance/__init__.py -text
LCU/PPSTune/CMakeLists.txt -text
LCU/PPSTune/MANIFEST.in -text
......
......@@ -4,4 +4,5 @@ djangorestframework
django-polymorphic
django-rest-polymorphic
requests
pandas
\ No newline at end of file
pandas
fabric
\ No newline at end of file
class ItemAlreadyExists(Exception):
def __init__(self, instance, message=''):
self.instance_id = instance.id
message = 'Item %d was already present. %s'.format(self.instance_id, message)
super(ItemAlreadyExists, self).__init__(message)
\ No newline at end of file
......@@ -2,10 +2,12 @@ from ..models.rtsm import *
from rest_framework import serializers
import logging
from django.db.transaction import atomic
from ..exceptions import ItemAlreadyExists
from django.db.models import ObjectDoesNotExist
logger = logging.getLogger('serializers')
class RTSMErrorSerializer(serializers.ModelSerializer):
bad_spectrum = serializers.ListField(child=serializers.FloatField())
average_spectrum = serializers.ListField(child=serializers.FloatField())
......@@ -33,10 +35,9 @@ class RTSMObservationSerializer(serializers.ModelSerializer):
logger.info('rtsm not found inserting %s', validated_data)
else:
logger.info('RTSM test for station %s started at %s is present already. Skipping insertion',
start_time, station_name)
return element
except Exception as e:
start_time, station_name)
raise ItemAlreadyExists(element)
except ObjectDoesNotExist as e:
logger.info('rtsm not found inserting %s', validated_data)
RTSMObservation_instance = RTSMObservation.objects.create(**validated_data)
RTSMObservation_instance.save()
......
......@@ -5,6 +5,8 @@ from django.db.transaction import atomic
import logging
from .componenterrors_generic import ComponentErrorPolymorphicSerializer
from ..exceptions import ItemAlreadyExists
logger = logging.getLogger('serializers')
......@@ -46,7 +48,7 @@ class StationTestSerializer(serializers.ModelSerializer):
start_time, station_name)
logger.debug('found item is %s', element)
return element
raise ItemAlreadyExists(element)
else:
logger.info('station test not found inserting %s', validated_data)
except ObjectDoesNotExist:
......
......@@ -15,6 +15,7 @@ from .serializers.tileerror import TileErrorPolymorphicSerializer
from .station_test_raw_parser import parse_raw_station_test
from .rtsm_test_raw_parser import parse_rtsm_test
import logging
from .exceptions import ItemAlreadyExists
logger = logging.getLogger('views')
......@@ -117,8 +118,15 @@ def insert_raw_station_test(request):
if parsed_content is None:
raise Exception('cannot parse test {}'.format(content))
logger.info('data parsed successfully for test')
station_test_ids = []
station_test_ids_already_present = []
for entry in parsed_content:
StationTestSerializer().create(entry)
try:
item = StationTestSerializer().create(entry)
station_test_ids.append(item.id)
except ItemAlreadyExists as e:
station_test_ids_already_present.append(e.instance_id)
except Exception as e:
logger.exception("exception occurred while parsing raw station info %s: %s", request.data['content'], e)
return Response(exception=True,
......@@ -130,7 +138,12 @@ def insert_raw_station_test(request):
data="the post message is not correct." +
" It has to be of the form \{'content':[RAWSTRING]\}", status=status.HTTP_400_BAD_REQUEST)
return Response(status=status.HTTP_200_OK)
return Response(status=status.HTTP_200_OK,
data='Station tests inserted with ids {} \n'.format(station_test_ids) +
'Station tests already present with ids {}'.format(
station_test_ids_already_present
)
)
@api_view(['POST'])
def insert_raw_rtsm_test(request):
......@@ -158,7 +171,12 @@ def insert_raw_rtsm_test(request):
entry['observation_id'],
entry['station_name'])
RTSMObservationSerializer().create(entry)
try:
rtsm_item = RTSMObservationSerializer().create(entry)
rtsm_id = rtsm_item.id
except ItemAlreadyExists as e:
return Response(status=status.HTTP_200_OK,
data='RTSM test was already inserted with id {}\n'.format(e.instance_id))
logger.info('RTSM inserted successfully for obsid %d and station %s',
entry['observation_id'],
entry['station_name'])
......@@ -176,4 +194,5 @@ def insert_raw_rtsm_test(request):
" It has to be of the form \{'content':[RAWSTRING]\}",
status=status.HTTP_400_BAD_REQUEST)
return Response(status=status.HTTP_200_OK)
\ No newline at end of file
return Response(status=status.HTTP_200_OK,
data='RTSM test has been inserted with id {}\n'.format(rtsm_id))
......@@ -62,7 +62,9 @@ def perform_request(args, content):
json_content = json.dumps(content)
logging.debug('request content %s', json_content)
response = requests.post(full_address, data=content)
logging.info('response acknowledged: status code is %s', response.status_code)
logging.info('response acknowledged: status code is %s, reason %s, content %s', response.status_code,
response.reason,
response.content)
if response.status_code == 200:
return True
else:
......
import logging
import argparse
import fabric
import requests
import sys
import json
from glob import glob
import os
import re
from datetime import datetime
logger = logging.getLogger('release_code')
"""
This program is meant to realise the code in the testing/production environment
"""
def setup_argument_parser():
parser = argparse.ArgumentParser(prog='probe_mdb')
parser.add_argument('path', help='format and path format of the installed code. es. /where/is/stored/*.dat')
parser.add_argument('-u', '--user', help='username', default=False)
parser.add_argument('--address', help='address of the server. default [localhost]:8000',
default='lofarmonitortest.control.lofar')
parser.add_argument('--address', help='address of the server. default [localhost]:8000',
default='lofarmonitortest.control.lofar')
parser.add_argument('remote_install_path', help='remote path where to install the code')
return parser
def parse_arguments(parser):
return parser.parse_args()
if __name__=='__main__':
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s",level=logging.DEBUG)
parser = setup_argument_parser()
args = parse_arguments(parser)
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