EDAA URL unable to pick up notification having "/" in name attribute; 404 Not Found
search cancel

EDAA URL unable to pick up notification having "/" in name attribute; 404 Not Found

book

Article ID: 345362

calendar_today

Updated On:

Products

VMware Smart Assurance Network Observability

Issue/Introduction

Symptoms:

Notification with / in name attribute is not processed by EDAA and throws error 404 - Not found.


Example notifications : 
IF-<InterfaceName>/18 [Description]
TEMP-<TempName>/1012 [Description]
IF-<InterfaceName>/10_Down

Error observed: 

HTTP Status 404 - Not found

Environment

All Supported Smarts versions

Cause

  • According to RFC 3986 (RFC986_Link), below special characters are reserved as sub-delimiters.
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
  • Thus tomcat disables encoded slashes for security reasons by default.

  • In Smarts, post request looks as below:
http://<TomcatURL>:<Port>/smarts-edaa/msa/servicename/instances/className::instanceName/action/action_name
  • Hence when a notification contains "/" in URL; Smarts is expecting it as action.

Resolution

  • Edit file catalina.properties located under <SAM_BASE>/smarts/tomcat/conf/ and add line:
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
  • Restart tomcat for changes to take effect
./sm_service stop smarts-tomcat
./sm_service start smarts-tomcat

Workaround:

In case, if restart of tomcat is not possible due to production environment then use ~2F in the URL for "/" for time being.
Example: http://localhost:8080/smarts-edaa/msa/INCHARGE-SA/instances/ICS_Notification::NOTIFICATION-Interface_PerformanceCiscoRouter_I-InterfacePerformanceCiscoRouter-IF-<InterfaceName>~2F18_HighUtilization"

Additional Information

Impact/Risks:

Unable to create tickets in third party ticking tools (ServiceNow) where Smarts-EDAA acts as source.