diff --git a/anms-core/anms/routes/network_manager.py b/anms-core/anms/routes/network_manager.py index d773513..81d6c46 100644 --- a/anms-core/anms/routes/network_manager.py +++ b/anms-core/anms/routes/network_manager.py @@ -21,7 +21,7 @@ # the prime contract 80NM0018D0004 between the Caltech and NASA under # subcontract 1658085. # -from fastapi import APIRouter, status +from fastapi import APIRouter, status, HTTPException import requests from pydantic import BaseModel @@ -51,7 +51,7 @@ async def nm_get_version(): try: request = requests.get(url=url) except Exception: - return {} + raise HTTPException(status_code=status.HTTP_504_GATEWAY_TIMEOUT, detail="ConnectTimeout") return request.json() @@ -63,7 +63,7 @@ def nm_get_agents(): try: request = requests.get(url=url) except Exception: - return -1 + raise HTTPException(status_code=status.HTTP_504_GATEWAY_TIMEOUT, detail="ConnectTimeout") return request.json() @@ -90,20 +90,20 @@ def do_nm_put_hex_eid(eid: str, ari: str): url = nm_url + "/agents/eid/{}/send?form=hex".format(_prepare_url(eid)) logger.info('post to nm manager %s with eid %s and data %s' % (url, eid, ari)) - try: + try: request = requests.post(url=url, data=ari, headers={'Content-Type': 'text/plain'}, timeout=(2.0, 8.0) # 2s for manager to connect, 8s for it to respond ) except requests.exceptions.ConnectTimeout: - return status.HTTP_504_GATEWAY_TIMEOUT + raise HTTPException(status_code=status.HTTP_504_GATEWAY_TIMEOUT, detail="ConnectTimeout") except requests.exceptions.ReadTimeout: - return status.HTTP_504_GATEWAY_TIMEOUT + raise HTTPException(status_code=status.HTTP_504_GATEWAY_TIMEOUT, detail="ReadTimeout") except requests.exceptions.Timeout: - return status.HTTP_504_GATEWAY_TIMEOUT + raise HTTPException(status_code=status.HTTP_504_GATEWAY_TIMEOUT, detail="Timeout") except Exception: - return status.HTTP_500_INTERNAL_SERVER_ERROR + raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR) return request.status_code diff --git a/anms-core/anms/routes/transcoder.py b/anms-core/anms/routes/transcoder.py index cc1b38f..3a4bc23 100644 --- a/anms-core/anms/routes/transcoder.py +++ b/anms-core/anms/routes/transcoder.py @@ -22,8 +22,7 @@ import time import asyncio -from fastapi import APIRouter, Depends -from fastapi import status +from fastapi import APIRouter, Depends, status, HTTPException from fastapi_pagination import Page, Params from fastapi_pagination.ext.async_sqlalchemy import paginate @@ -144,7 +143,7 @@ async def transcoder_put_await_str(input_ari: str): def transcoder_incoming_str(input_ari: str): return _transcoder_put_str(input_ari) -def _transcoder_put_str(input_ari: str): +def transcoder_put_str(input_ari: str): input_ari = input_ari.strip() transcoder_log_id = None send_to_transcode = False @@ -188,16 +187,21 @@ async def transcoder_send_ari_str(eid: str, ari: str): if info.parsed_as != "pending": break if retries <= 0: - return { "idinfo" : idinfo, "info" : info, "status" : 504 } + raise HTTPException(status_code=504, + detail={ "idinfo" : idinfo, "info" : info, "status" : "transcoder timeout" }) + retries -= 1 if info.parsed_as == "ERROR": - return { "idinfo" : idinfo, "info" : info, "status" : 500 } + raise HTTPException(status_code=500, + detail={ "idinfo" : idinfo, "info" : info, "status" : 500 }) # Publish state = do_nm_put_hex_eid( eid, info.cbor ) - return { "idinfo" : idinfo, "info" : info, "status" : state } + except HTTPException as e: + e.detail = { "idinfo" : idinfo, "info" : info, "status" : e.status_code } + raise e except Exception as e: logger.exception(e) return status.HTTP_500_INTERNAL_SERVER_ERROR diff --git a/deps/dtnma-adms b/deps/dtnma-adms index 2b95b67..e9b600d 160000 --- a/deps/dtnma-adms +++ b/deps/dtnma-adms @@ -1 +1 @@ -Subproject commit 2b95b67d42fde342a6c5459ee8b586da9b67abec +Subproject commit e9b600d2dfdf965dec71e86ffcb5932fd964b803 diff --git a/deps/dtnma-tools b/deps/dtnma-tools index 58e5557..cd454d0 160000 --- a/deps/dtnma-tools +++ b/deps/dtnma-tools @@ -1 +1 @@ -Subproject commit 58e5557570064b6fc2a1719a0eb9f90fa15c94d6 +Subproject commit cd454d0467b2b2c9422b3646006a5445e2da5514 diff --git a/testenv.Containerfile b/testenv.Containerfile index 2b861e2..6cea562 100644 --- a/testenv.Containerfile +++ b/testenv.Containerfile @@ -175,6 +175,7 @@ RUN systemctl enable ion bpecho@4 refda-ion && \ mkdir -p /var/run/ion # Runtime config for this container +COPY deps/dtnma-tools/integration-test-ion/startup.uri /etc/refda/startup.uri COPY deps/test-ion-configs/agent-2.rc /etc/ion/node-2.rc COPY deps/test-ion-configs/agent-3.rc /etc/ion/node-3.rc