Skip to content
Merged
Show file tree
Hide file tree
Changes from 52 commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
9bcb1db
Grafana updates including: Upgraded to v12, switched internal DB to P…
DavidEdell Nov 29, 2025
e540ba4
Added to UI a prototype Help page and a Not Found page handler.
DavidEdell Nov 29, 2025
d8c5af4
Resolve default database warning in grafana (hopefully).
DavidEdell Dec 1, 2025
ca174dd
Added upgrading file
DavidEdell Dec 1, 2025
d968c1a
Add amp-manager to UI Status page
DavidEdell Dec 2, 2025
c24e9a3
added inifinity-datasource plugin and example panels
Dec 9, 2025
ddc8798
updated layout of panels
Dec 9, 2025
04d219c
Fix core '/services' REST API to return JSON instead of text
DavidEdell Dec 9, 2025
fc9caae
Core REST API bugfixes to detect timeouts and resolve potential error…
DavidEdell Dec 9, 2025
356a034
initial dev creating a internal transcoder
Dec 17, 2025
8a49c42
working version, added new profile default is internal transcoding
Dec 18, 2025
b506a84
Merge remote-tracking branch 'origin/295-new-configuration-of-transco…
DavidEdell Dec 18, 2025
14eda5f
working transcoder fixed issue with threading and DB
Dec 18, 2025
ccde72c
Merge remote-tracking branch 'origin/295-new-configuration-of-transco…
DavidEdell Dec 18, 2025
337e912
Automatically create GHCR images when a tag is created. This suppleme…
DavidEdell Dec 19, 2025
4170e90
Fix ghcr name if triggered by tag
DavidEdell Dec 19, 2025
a055b23
Fixing grafana authnz/demo websocket proxy configuration.
DavidEdell Feb 9, 2026
2154cfc
removed services related to transcoder since they arent up by default
Feb 10, 2026
928c859
added --ignore flag for podman volume creaete to avoid name error
Feb 12, 2026
73096f8
moved grafana db password to enviroment var
Feb 19, 2026
a825c12
moving adms init
Feb 23, 2026
ee8c918
Merge remote-tracking branch 'origin/main' into 187-improve-initial-d…
Feb 24, 2026
1032a48
Updated REST APIs to return correct error codes, and updated dtnma-to…
DavidEdell Mar 3, 2026
c685598
moved init adms logic into transcoder
Mar 5, 2026
f817d70
added new folder for adding new ADMS in core
Mar 5, 2026
1cbcf10
added gitignore to extra_adms to avoid extra adms be added to main
Mar 5, 2026
15052f6
Add REFDA startup to allow ipn-scheme managers all access
BrianSipos Mar 6, 2026
67003a7
Updating all deps references.
DavidEdell Mar 6, 2026
b19e333
Force CI build to run with no-cache
DavidEdell Mar 6, 2026
1e7860e
moved init logic to avoid loop startup error
Mar 10, 2026
3ee0d50
loading default ADMs controlled by a new route
Mar 10, 2026
6913071
Revert "Force CI build to run with no-cache"
DavidEdell Mar 13, 2026
5b96e5d
Merge remote-tracking branch 'origin/main' into 305-rest-api-error-ha…
DavidEdell Mar 13, 2026
3e3291e
Address SonarQube documentation warning.
DavidEdell Mar 17, 2026
fc68cd2
Use HTTP status code enums consistently.
DavidEdell Mar 17, 2026
39852a7
setting cache to store processed reports
Mar 17, 2026
2679935
Fixed an additional error return.
DavidEdell Mar 17, 2026
888e82f
Merge branch 'main' into 281-user-friendly-decommutation-of-received-…
Mar 18, 2026
c26d469
updated to to use newest SQL for reports
Apr 3, 2026
3fc2e5c
added COPY for startup.uri
Apr 3, 2026
9a30211
added for querying for report templates
Apr 3, 2026
7d82f6a
Merge remote-tracking branch 'origin/305-rest-api-error-handling' int…
Apr 3, 2026
525fbcf
updated grafana to use new rptsets
Apr 6, 2026
2db0a8a
updated to include rpt_item_index
Apr 6, 2026
4a7c09a
updated to uses time_offset as a timestamp
Apr 7, 2026
1b4f28b
updated test execset
Apr 7, 2026
a4140b5
removed special char
Apr 7, 2026
8580547
adding logs
Apr 7, 2026
a4ab73b
latest dtnma-tools
Apr 7, 2026
8fdc4d6
updated to latest dntma-tools
Apr 10, 2026
da0e94b
removed rpt_item_index
Apr 10, 2026
5d38ad1
Merge remote-tracking branch 'origin/main' into 281-user-friendly-dec…
Apr 10, 2026
d53ad09
Merge remote-tracking branch 'origin/main' into 281-user-friendly-dec…
Apr 10, 2026
ec049ff
changed time_offset to agent_time
Apr 21, 2026
92d775a
updated to align with latest dtnma-tools
Apr 21, 2026
58a1d9d
Merge remote-tracking branch 'origin/main' into 281-user-friendly-dec…
Apr 21, 2026
6ca37f7
combining reports that are the same ARI but stored with nn or no nn
Apr 23, 2026
4b9213b
adding missing _ in transcoder_put_str
Apr 23, 2026
659a8da
removed extra logs
Apr 23, 2026
942d1c4
addressing sonar issues
Apr 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions anms-core/anms/components/schemas/ARIs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,5 @@
from .registered_agent import RegisteredAgentInDBBase
from .rpt_entry import RptEntry
from .rpt_entry import RptEntryName
from .rpt_entry import RptEntryFull
from .rpt_entry import RptEntryBaseInDBBase
23 changes: 18 additions & 5 deletions anms-core/anms/components/schemas/ARIs/rpt_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,25 @@ class RptEntryBase(BaseModel):
class Config:
arbitrary_types_allowed = True

ari_rptset_id: Optional[str] = None
reference_time: Optional[datetime] = None
report_list: Optional[str] = None
agent_id: Optional[int] = None

ari_rptset_id: Optional[int] = None
reference_time: Optional[datetime] = None
mgr_time: Optional[datetime] = None
nonce_cbor: Optional[str] = None
time_offset: Optional[datetime] = None
Comment thread
BrianSipos marked this conversation as resolved.
Outdated
report_source: Optional[str] = None
report_items: Optional[list] = None

# Shared properties
class RptEntryFull(RptEntryBase):
class Config:
arbitrary_types_allowed = True
orm_mode = True

agent_id: Optional[int] = None
ari_rptlist_id: Optional[int] = None



class RptEntryBaseInDBBase(RptEntryBase):
class Config:
orm_mode = True
Expand Down
58 changes: 58 additions & 0 deletions anms-core/anms/models/relational/const.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (c) 2023 The Johns Hopkins University Applied Physics
# Laboratory LLC.
#
# This file is part of the Asynchronous Network Management System (ANMS).
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This work was performed for the Jet Propulsion Laboratory, California
# Institute of Technology, sponsored by the United States Government under
# the prime contract 80NM0018D0004 between the Caltech and NASA under
# subcontract 1658085.
#
from typing import Any
from typing import Dict

from anms.models.relational import Model
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String

# class for vw_ctrl_definition used for build ari
class Const(Model):
__tablename__ = 'vw_const_actual'
obj_actual_definition_id = Column(Integer, primary_key=True)
data_type = Column(String)
data_value = Column(String)
use_desc = Column(String)
obj_metadata_id = Column(Integer)
data_model_name = Column(String)
namespace = Column(String)
data_type_id = Column(Integer)
name = Column(String)
data_model_id = Column(Integer)
object_enumeration = Column(Integer)
status = Column(String)
reference = Column(String)
description = Column(String)

def __repr__(self) -> str:
return self.as_dict().__repr__()

def as_dict(self) -> Dict[str, Any]:
dict_obj = {
c.name: getattr(self, c.name) for c in self.__table__.columns
}

return dict_obj
3 changes: 2 additions & 1 deletion anms-core/anms/models/relational/execution_set.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy import LargeBinary
from anms.shared.transmogrifier import TRANSMORGIFIER


# class for vw_ctrl_definition used for build ari
Expand All @@ -47,7 +48,7 @@ def __repr__(self) -> str:
def as_dict(self) -> Dict[str, Any]:
dict_obj = {
'execution_set_id': getattr(self, 'execution_set_id'),
'nonce_cbor': getattr(self, 'nonce_cbor'),
'nonce_cbor': TRANSMORGIFIER._ace_transcode_just_cbor("0x"+getattr(self, 'nonce_cbor').hex()),
'use_desc': getattr(self, 'use_desc'),
'agent_id': getattr(self, 'agent_id'),
'num_entries': getattr(self, 'num_entries'),
Expand Down
43 changes: 29 additions & 14 deletions anms-core/anms/models/relational/report.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,33 +24,48 @@
from typing import Any
from typing import Dict

from anms.shared.transmogrifier import TRANSMORGIFIER
from anms.models.relational import Model
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy import DateTime
from sqlalchemy import ARRAY
from sqlalchemy import LargeBinary

from sqlalchemy import orm

# class for vw_ctrl_definition used for build ari
class Report(Model):
__tablename__ = 'ari_rptset'
ari_rptset_id = Column(Integer, primary_key=True)
nonce_cbor = Column(LargeBinary)
reference_time = Column(Integer)
report_list = Column(String)
report_list_cbor = Column(LargeBinary)
agent_id = Column(Integer)
__tablename__ = 'vw_ari_rpt_set'
ari_rptset_id = Column(Integer, primary_key=True)
mgr_time = Column(DateTime)
reference_time = Column(DateTime)
nonce_cbor = Column(LargeBinary)
agent_id = Column(Integer)
ari_rptset_cbor = Column(LargeBinary)
ari_rptlist_id = Column(Integer)
time_offset = Column(DateTime)
report_source = Column(LargeBinary)
report_items = Column(ARRAY(LargeBinary) )#bytea[] NULL

# processing the raw cbor into an ari object
@orm.reconstructor
def init_on_load(self):
self.nonce_cbor = TRANSMORGIFIER.transcode("0x"+getattr(self, 'nonce_cbor').hex())['uri']
self.report_source = TRANSMORGIFIER.transcode("0x"+getattr(self, 'report_source').hex())['uri']
self.report_items = [TRANSMORGIFIER.transcode("0x"+x.hex())['uri'] for x in getattr(self, 'report_items')]

def __repr__(self) -> str:
return self.as_dict().__repr__()

def as_dict(self) -> Dict[str, Any]:
dict_obj = {
'ari_rptset_id': getattr(self, 'ari_rptset_id'),
'nonce_cbor': getattr(self, 'nonce_cbor'),
'reference_time': getattr(self, 'reference_time'),
'report_list': getattr(self, 'report_list'),
'report_list_cbor': getattr(self, 'report_list_cbor'),
'agent_id': getattr(self, 'agent_id')
'nonce_cbor': getattr(self, 'nonce_cbor'),
'agent_id': getattr(self, 'agent_id'),
'ari_rptlist_id': getattr(self, 'ari_rptlist_id'),
'time_offset': getattr(self, 'time_offset'),
'report_source': getattr(self, 'report_source'),
'report_items': getattr(self, 'report_items')
}

return dict_obj
Loading
Loading