Skip to content
Snippets Groups Projects
Commit 4e58fcc0 authored by Reinder Kraaij's avatar Reinder Kraaij :eye:
Browse files

Let there be proper iso format time

parent 90c7e3b8
No related branches found
No related tags found
1 merge request!1073Let there be proper iso format time
...@@ -30,3 +30,4 @@ grpcio-tools # Apache 2 ...@@ -30,3 +30,4 @@ grpcio-tools # Apache 2
parse # MIT parse # MIT
mergedeep # MIT mergedeep # MIT
getmac # MIT getmac # MIT
python-dateutil # remove when on python 3.12
\ No newline at end of file
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
from datetime import datetime from datetime import datetime
from typing import Sequence from typing import Sequence
from dateutil import parser
from tangostationcontrol.configuration.configuration_base import _ConfigurationBase from tangostationcontrol.configuration.configuration_base import _ConfigurationBase
from tangostationcontrol.configuration.dithering import Dithering from tangostationcontrol.configuration.dithering import Dithering
...@@ -11,7 +12,6 @@ from tangostationcontrol.configuration.sap import Sap ...@@ -11,7 +12,6 @@ from tangostationcontrol.configuration.sap import Sap
from tangostationcontrol.configuration.sst import SST from tangostationcontrol.configuration.sst import SST
from tangostationcontrol.configuration.xst import XST from tangostationcontrol.configuration.xst import XST
class ObservationFieldSettings(_ConfigurationBase): class ObservationFieldSettings(_ConfigurationBase):
def __init__( def __init__(
self, self,
...@@ -48,7 +48,7 @@ class ObservationFieldSettings(_ConfigurationBase): ...@@ -48,7 +48,7 @@ class ObservationFieldSettings(_ConfigurationBase):
"""Transparently convert datetime to string in isoformat""" """Transparently convert datetime to string in isoformat"""
if time and not isinstance(time, datetime): if time and not isinstance(time, datetime):
try: try:
datetime.fromisoformat(time) parser.isoparse(time)
except ValueError as ex: except ValueError as ex:
raise ex raise ex
if time and isinstance(time, datetime): if time and isinstance(time, datetime):
......
...@@ -9,6 +9,7 @@ from tangostationcontrol.rpc.common import ( ...@@ -9,6 +9,7 @@ from tangostationcontrol.rpc.common import (
reply_on_exception, reply_on_exception,
) )
from tangostationcontrol.common.proxies.proxy import create_device_proxy from tangostationcontrol.common.proxies.proxy import create_device_proxy
from tangostationcontrol.configuration import ObservationSettings
logger = logging.getLogger() logger = logging.getLogger()
...@@ -21,10 +22,43 @@ class Observation(observation_pb2_grpc.ObservationServicer): ...@@ -21,10 +22,43 @@ class Observation(observation_pb2_grpc.ObservationServicer):
def StartObservation( def StartObservation(
self, request: observation_pb2.StartObservationRequest, context self, request: observation_pb2.StartObservationRequest, context
): ):
logger.info("Start observation request incomming %s", request.configuration)
# Validate before handing over to Observation Control
observation_id = ""
# guard against empty jsons incomming
if request.configuration is not None and request.configuration.strip() != "{}" :
observationsettings = ObservationSettings.from_json(request.configuration)
logger.info("Converted ObservationSettings %s", observationsettings)
if observationsettings.antenna_fields:
primary_antenna = observationsettings.antenna_fields[0]
observation_id = primary_antenna.observation_id
logger.info(
"Creating device proxy. ",
extra={
"observation_id": observation_id,
"start_time": primary_antenna.start_time,
"stop_time": primary_antenna.stop_time,
},
)
else:
logger.error(
"No Observation Id found in observation %s", request.configuration
)
else:
logger.error(
"No Observation configuration found %s", request.configuration
)
observation_control = create_device_proxy( observation_control = create_device_proxy(
"STAT/ObservationControl/1", self.TIMEOUT "STAT/ObservationControl/1", self.TIMEOUT
) )
observation_control.add_observation(request.configuration) observation_control.add_observation(request.configuration)
logger.info(
"Start observation request added to Add observation.",
extra={"observation_id": observation_id},
)
return observation_pb2.ObservationReply(success=True) return observation_pb2.ObservationReply(success=True)
@reply_on_exception(observation_pb2.ObservationReply) @reply_on_exception(observation_pb2.ObservationReply)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment