Skip to content

Commit 3d527e2

Browse files
author
David Linko
committed
updated for sending and viewing execsets
1 parent 6b24b15 commit 3d527e2

File tree

20 files changed

+412
-155
lines changed

20 files changed

+412
-155
lines changed

anms-core/anms/routes/ARIs/ari.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ async def _generate_aris(ari_id):
6565

6666
if ari is not None:
6767
if ari.parm_id is None and ari.actual: # has no paramterized
68-
display = "ari:/" + ari.namespace + "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name
68+
display = "ari://" + ari.namespace + "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name
6969
curr_ari = ari
7070
curr_ari.display = display
7171
curr_ari.param_names = []
@@ -83,6 +83,7 @@ async def _generate_aris(ari_id):
8383
param_names = []
8484
# TODO look at nested parameters
8585
for param in formal_param.split(','):
86+
param = param.upper()
8687
param_split = param.split('/')
8788
if len(param_split) > 1:
8889
type_names.append('/'.join(param_split[:-1]))
@@ -92,7 +93,7 @@ async def _generate_aris(ari_id):
9293
# value_set
9394
a_parm_values = actual_param.value_set.decode('utf-8')
9495

95-
results = "ari:/" + ari.namespace + "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name
96+
results = "ari://" + ari.namespace + "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name
9697
if a_parm_values:
9798
results = results+ "(" + a_parm_values + ")"
9899
curr_ari = ari
@@ -109,14 +110,15 @@ async def _generate_aris(ari_id):
109110
param_names = []
110111
# TODO look at nested parameters
111112
for param in formal_param.split(','):
113+
param = param.upper()
112114
param_split = param.split('/')
113115
if len(param_split) > 1:
114116
type_names.append('/'.join(param_split[:-1]))
115117
else:
116118
type_names.append('')
117119
param_names.append(param_split[-1])
118120

119-
display = "ari:/" + ari.namespace + "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name + "(" + str(formal_param) + ")"
121+
display = "ari://" + ari.namespace + "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name + "(" + str(formal_param) + ")"
120122
curr_ari = ari
121123
curr_ari.display = display
122124
curr_ari.param_names = param_names
@@ -149,7 +151,7 @@ async def all_ARI():
149151
async with get_async_session() as session:
150152
result: Result = await session.scalars(stmt)
151153
for ari in result.all():
152-
display = "ari:/"+ ari.namespace+ "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name if ari.parm_id is None else "ari:/" + ari.namespace+ ":" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name + "(has parameters)"
154+
display = "ari://"+ ari.namespace+ "/" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name if ari.parm_id is None else "ari://" + ari.namespace+ ":" + ari.data_model_name + "/" + ari.type_name + "/" + ari.name + "(has parameters)"
153155
curr_ari = ari
154156
curr_ari.display = display
155157
final_result.append(curr_ari)

anms-core/anms/routes/ARIs/reports.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,12 @@ async def report_ac(agent_id: str, correlator_nonce: int):
121121
async with get_async_session() as session:
122122
result: Result = await session.scalars(stmt)
123123
for res in result.all():
124-
# translate the cbor
125-
logger.info(res)
126-
rpt_set = res.report_list_cbor.hex()
127-
rpt_set = await transcoder.transcoder_put_cbor_await("ari:0x"+rpt_set)
128-
rpt_set = rpt_set['data']
129-
logger.info(rpt_set)
130-
124+
# TODO translating the CBOR route might want to relook at currently cause large amount of transcoding vs just loading the string below
125+
# # translate the cbor
126+
# rpt_set = res.report_list_cbor.hex()
127+
# rpt_set = await transcoder.transcoder_put_cbor_await("ari:0x"+rpt_set)
128+
# rpt_set = rpt_set['data']
129+
rpt_set = res.report_list
131130
# match
132131
# ari:/RPTSET/n=12345;r=/TP/20250611T114420.009992304Z;(t=/TD/PT0S;s=//1/1/CTRL/5(//1/1/EDD/1);(%220.0…
133132
rptset_pattern = r"ari:/RPTSET/n=.+;r=.*;\(t=.*;s=.*;\((.*)\)\)"

anms-core/anms/routes/network_manager.py

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
from anms.models.relational import nm_url
2929
from anms.shared.opensearch_logger import OpenSearchLogger
30+
from urllib.parse import quote
3031

3132

3233
class Data(BaseModel):
@@ -36,7 +37,10 @@ class Data(BaseModel):
3637
router = APIRouter(tags=["NM"])
3738
logger = OpenSearchLogger(__name__, log_console=True)
3839

39-
40+
def _prepare_url(ari):
41+
ari = ari.strip()
42+
ari = quote(ari)
43+
return ari
4044

4145
# GET /version Return version information
4246
@router.get("/version", status_code=status.HTTP_200_OK)
@@ -67,9 +71,9 @@ def nm_get_agents():
6771
@router.post("/agents", status_code=status.HTTP_200_OK)
6872
async def nm_register_agent(addr: Data):
6973
url = nm_url + "/agents"
70-
logger.info('POST to nm manager %s with addr %s' % (url, addr))
74+
logger.info('POST to nm manager %s with addr %s' % (url, addr.data))
7175
try:
72-
request = requests.post(url=url, data=addr.data)
76+
request = requests.post(url=url, data="'"+addr.data+"'", headers={'Content-Type: text/plain'} )
7377
except Exception:
7478
return status.HTTP_500_INTERNAL_SERVER_ERROR
7579
return request.status_code
@@ -78,10 +82,10 @@ async def nm_register_agent(addr: Data):
7882
# PUT /agents/idx/{idx}/hex Body is CBOR-encoded HEX ARI to send. $idx is index of node from agents listing
7983
@router.put("/agents/idx/{idx}/hex", status_code=status.HTTP_200_OK)
8084
async def nm_put_hex_idx(idx: str, ari: Data):
81-
url = nm_url + "/agents/idx/{}/hex".format(idx)
82-
logger.info('PUT to nm manager %s with idx %s' % (url, idx))
85+
url = nm_url + "/agents/idx/{}/send?form=hex".format(idx)
86+
logger.info('post to nm manager %s with idx %s and data %s' % (url, idx, ari.data))
8387
try:
84-
request = requests.put(url=url, data=ari.data)
88+
request = requests.post(url=url, data=ari.data, headers={'Content-Type': 'text/plain'})
8589
except Exception:
8690
return status.HTTP_500_INTERNAL_SERVER_ERROR
8791
return request.status_code
@@ -90,10 +94,10 @@ async def nm_put_hex_idx(idx: str, ari: Data):
9094
# PUT /agents/eid/{eid}/hex Body is CBOR-encoded HEX ARI to send. $eid is the agent to query
9195
@router.put("/agents/eid/{eid}/hex", status_code=status.HTTP_200_OK)
9296
def nm_put_hex_eid(eid: str, ari: Data):
93-
url = nm_url + "/agents/eid/{}/hex".format(eid)
94-
logger.info('PUT to nm manager %s with eid %s and data %s' % (url, eid, ari.data))
95-
try:
96-
request = requests.put(url=url, data=ari.data)
97+
url = nm_url + "/agents/eid/{}/send?form=hex".format(_prepare_url(eid))
98+
logger.info('post to nm manager %s with eid %s and data %s' % (url, eid, ari.data))
99+
try:
100+
request = requests.post(url=url, data=ari.data, headers={'Content-Type': 'text/plain'})
97101
except Exception:
98102
return status.HTTP_500_INTERNAL_SERVER_ERROR
99103
return request.status_code
@@ -102,7 +106,7 @@ def nm_put_hex_eid(eid: str, ari: Data):
102106
# PUT /agents/eid/{addr}/clear_reports Clear all reports for given node
103107
@router.put("/agents/eid/{addr}/clear_reports", status_code=status.HTTP_200_OK)
104108
async def nm_clear_reports(addr: str):
105-
url = nm_url + "/agents/eid/{}/clear_reports".format(addr)
109+
url = nm_url + "/agents/eid/{}/clear_reports".format(_prepare_url(addr))
106110
logger.info('PUT to nm manager %s with addr %s' % (url, addr))
107111
try:
108112
request = requests.put(url=url)
@@ -114,7 +118,7 @@ async def nm_clear_reports(addr: str):
114118
# PUT /agents/eid/{addr}/clear_tables Clear all tables for given node
115119
@router.put("/agents/eid/{addr}/clear_tables", status_code=status.HTTP_200_OK)
116120
async def nm_clear_tables(addr: str):
117-
url = nm_url + "/agents/eid/{}/clear_tables".format(addr)
121+
url = nm_url + "/agents/eid/{}/clear_tables".format(_prepare_url(addr))
118122
logger.info('PUT to nm manager %s with addr %s' % (url, addr))
119123
try:
120124
request = requests.put(url=url)
@@ -126,7 +130,7 @@ async def nm_clear_tables(addr: str):
126130
# GET /agents/eid/{addr}/reports/hex Retrieve list of reports for node in HEX CBOR format
127131
@router.get("/agents/eid/{addr}/reports/hex", status_code=status.HTTP_200_OK)
128132
async def nm_get_reports_hex(addr: str):
129-
url = nm_url + "/agents/eid/{}/reports/hex".format(addr)
133+
url = nm_url + "/agents/eid/{}/reports/hex".format(_prepare_url(addr))
130134
logger.info('Get to nm manger %s with addr %s' % (url, addr))
131135
try:
132136
request = requests.get(url=url)
@@ -139,7 +143,7 @@ async def nm_get_reports_hex(addr: str):
139143
# Retrieve list of reports for node. Currently in HEX CBOR format, but may change in future
140144
@router.get("/agents/eid/{addr}/reports", status_code=status.HTTP_200_OK)
141145
async def nm_get_reports(addr: str):
142-
url = nm_url + "/agents/eid/{}/reports".format(addr)
146+
url = nm_url + "/agents/eid/{}/reports".format(_prepare_url(addr))
143147
logger.info('GET to nm manager %s with addr %s' % (url, addr))
144148
try:
145149
request = requests.get(url=url)
@@ -151,7 +155,7 @@ async def nm_get_reports(addr: str):
151155
# GET /agents/eid/{addr}/reports/text Retrieve list of reports for node in ASCII/text format
152156
@router.get("/agents/eid/{addr}/reports/text", status_code=status.HTTP_200_OK)
153157
async def nm_get_reports_text(addr: str):
154-
url = nm_url + "/agents/eid/{}/reports/text".format(addr)
158+
url = nm_url + "/agents/eid/{}/reports/text".format(_prepare_url(addr))
155159
logger.info('GET to nm manager %s with addr %s' % (url, addr))
156160
try:
157161
request = requests.get(url=url)
@@ -163,7 +167,7 @@ async def nm_get_reports_text(addr: str):
163167
# GET /agents/eid/{addr}/reports/json Retrieve list of reports for node in JSON format
164168
@router.get("/agents/eid/{addr}/reports/json", status_code=status.HTTP_200_OK)
165169
async def nm_get_reports_json(addr: str):
166-
url = nm_url + "/agents/eid/{}/reports/json".format(addr)
170+
url = nm_url + "/agents/eid/{}/reports/json".format(_prepare_url(addr))
167171
logger.info('GET to nm manager %s with addr %s' % (url, addr))
168172
try:
169173
request = requests.get(url=url)
@@ -176,7 +180,7 @@ async def nm_get_reports_json(addr: str):
176180
# etrieve all reports for node. Debug information and/or multiple formats may be returned.
177181
@router.get("/agents/eid/{addr}/reports/debug", status_code=status.HTTP_200_OK)
178182
async def nm_get_reports_debug(addr: str):
179-
url = nm_url + "/agents/eid/{}/reports/debug".format(addr)
183+
url = nm_url + "/agents/eid/{}/reports/debug".format(_prepare_url(addr))
180184
logger.info('GET to nm manager %s with addr %s' % (url, addr))
181185
try:
182186
request = requests.get(url=url)
@@ -188,7 +192,7 @@ async def nm_get_reports_debug(addr: str):
188192
# GET /agents/{addr} Retrieve node information, including name and # reports available
189193
@router.get("/agents/{addr}", status_code=status.HTTP_200_OK)
190194
async def nm_get_agents_info(addr: str):
191-
url = nm_url + "/agents/{}".format(addr)
195+
url = nm_url + "/agents/{}".format(_prepare_url(addr))
192196
logger.info('GET to nm manager %s with addr %s' % (url, addr))
193197
try:
194198
request = requests.get(url=url)
@@ -200,7 +204,7 @@ async def nm_get_agents_info(addr: str):
200204
# PUT /agents/eid/{addr}/reports/clear Clear all cached reports
201205
@router.put("/agents/eid/{addr}/reports/clear", status_code=status.HTTP_200_OK)
202206
async def nm_put_clear_reports(addr: str):
203-
url = nm_url + "/agents/eid/{}/reports/clear".format(addr)
207+
url = nm_url + "/agents/eid/{}/reports/clear".format(_prepare_url(addr))
204208
logger.info('PUT to nm manager %s with addr %s' % (url, addr))
205209
try:
206210
request = requests.put(url=url)

anms-core/anms/routes/transcoder.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ async def transcoder_put_cbor_await(cbor: str):
124124
def transcoder_put_await_str(ari: str):
125125
ari = ari.strip()
126126
msg = json.dumps({"uri": ari})
127-
logger.info(ari)
128127
transcoder_log_id = None
129128
with get_session() as session:
130129
curr_uri = TranscoderLog.query.filter_by(input_string=ari).first()
@@ -161,7 +160,6 @@ def transcoder_put_await_str(ari: str):
161160
def transcoder_put_str(ari: str):
162161
ari = ari.strip()
163162
msg = json.dumps({"uri": ari})
164-
logger.info(ari)
165163
transcoder_log_id = None
166164
with get_session() as session:
167165
curr_uri = TranscoderLog.query.filter_by(input_string=ari).first()

anms-core/anms/shared/agent_parameter.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,10 @@ def add_new_parameter(self, command):
129129
logger.info(f"Agent parameter entry {command.command_name}({command.command_parameter})" +
130130
" already added updating command list")
131131
prim_id = prim_id[0]
132-
logger.info(prim_id)
133132
else:
134133
result = db_see.execute(stmt)
135134
db_see.commit()
136135
prim_id = result.inserted_primary_key[0]
137-
logger.info(prim_id)
138136
lock.acquire()
139137
try:
140138
self.agent_parameters[prim_id] = AgentParam(prim_id, command.command_name,

anms-ui/public/app/components/adm/Adm.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<tr :key="index">
1717
<td>{{ adm.adm_enum }}</td>
1818
<td v-b-tooltip.hover
19-
title="Download ADM JSON" @click="download(adm)" ><b>{{ adm.adm_name }}</b></td>
19+
title="Download ADM JSON" @click="download(adm)" ><b>{{ adm.data_model_name }}</b></td>
2020
<td>{{ adm.name_string }}</td>
2121
<td>{{ adm.version_name }}</td>
2222
<td>{{ adm.use_desc }}</td>
@@ -125,7 +125,7 @@ export default {
125125
const url = URL.createObjectURL(blob);
126126
const link = document.createElement('a');
127127
link.href = url;
128-
link.download = adm.adm_name +".json";
128+
link.download = adm.data_model_name +".json";
129129
link.click();
130130
URL.revokeObjectURL(url);
131131
})

anms-ui/public/app/components/management/agents/AgentsManageModal.vue

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
</div>
2626
<b-button block
2727
variant="outline-success"
28-
:disabled="!ariString || this.loading"
28+
:disabled="this.loading"
2929
@click="submitTranscodedString">
3030
<b-spinner v-if="this.loading"
3131
small
@@ -34,7 +34,7 @@
3434
</b-button>
3535
</b-col>
3636
<b-col cols="9">
37-
<build :cbor="cbor" @updateResult="updateResults($event)"></build>
37+
<build :cbor="cbor" :agentModal=true @updateResult="updateResults($event)"></build>
3838
</b-col>
3939
</b-row>
4040
</div>
@@ -89,29 +89,43 @@ export default {
8989
this.ariString = undefined;
9090
},
9191
updateResults(result) {
92-
this.ariString = result;
92+
if(result.startsWith("0x")){
93+
this.ariCBOR = result;
94+
// submitRawCommand2Agents();
95+
96+
}else{
97+
this.ariString = result;
98+
// submitTranscodedString();
99+
}
100+
93101
},
94102
submitTranscodedString() {
95103
this.loading = true;
96104
this.sendButtonText = "Submitting ARI String";
97-
api.methods
98-
.apiPutTranscodedString(this.ariString)
99-
.then((response) => {
100-
this.transcoderLogId = response.data.id;
101-
this.sendButtonText = "Transcoding ARI String";
102-
this.queryTranscoderLog();
103-
})
104-
.catch((error) => {
105-
console.error(error);
106-
toastr.error(error.response.data);
107-
});
105+
// short circuit submitting command if already cbor
106+
if(this.ariCBOR){
107+
this.submitRawCommand2Agents();
108+
}
109+
else{
110+
api.methods
111+
.apiPutTranscodedString(this.ariString)
112+
.then((response) => {
113+
this.transcoderLogId = response.data.id;
114+
this.sendButtonText = "Transcoding ARI String";
115+
this.queryTranscoderLog();
116+
})
117+
.catch((error) => {
118+
console.error(error);
119+
toastr.error(error.response.data);
120+
});
121+
}
108122
},
109123
queryTranscoderLog() {
110124
api.methods
111125
.apiGetTranscoderLogById(this.transcoderLogId)
112126
.then((response) => {
113127
if (response.data.parsed_as == "pending") {
114-
setTimeout(() => this.queryTranscoderLog(), 5000);
128+
setTimeout(() => this.queryTranscoderLog(), 8000);
115129
} else {
116130
this.ariCBOR = response.data.cbor;
117131
this.submitRawCommand2Agents();
@@ -139,6 +153,8 @@ export default {
139153
});
140154
this.loading = false;
141155
this.closeModal();
156+
this.ariCBOR = null;
157+
this.ariString=null;
142158
},
143159
},
144160
}

anms-ui/public/app/components/management/agents/crud.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ export default {
5959
api.methods
6060
.apiPutCRUD(this.agentId, this.selected.agent_parameter_id, this.final_values)
6161
.then((response) => {
62-
console.log(response);
6362
toastr.success(`${response.statusText} ${response.data}`);
6463
this.selected = -1;
6564
this.params = []

0 commit comments

Comments
 (0)