2727
2828from anms .models .relational import nm_url
2929from anms .shared .opensearch_logger import OpenSearchLogger
30+ from urllib .parse import quote
3031
3132
3233class Data (BaseModel ):
@@ -36,7 +37,10 @@ class Data(BaseModel):
3637router = APIRouter (tags = ["NM" ])
3738logger = 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 )
6872async 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 )
8084async 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 )
9296def 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 )
104108async 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 )
116120async 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 )
128132async 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 )
141145async 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 )
153157async 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 )
165169async 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 )
178182async 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 )
190194async 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 )
202206async 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 )
0 commit comments