question

Upvotes
Accepted
0 0 0 3

Python RDL - error message general aid

Good day,


We recently developed a very simple Python+RDL script which aims to instantiate a custom config file to be populated with details of connectivity such as:

-dacs user & -ads server

We do some RIC consultation through:

rd.content.pricing.Definition

We are able to take user input for number of updates, RICs and fields to subscribe to. We're also able to point out which specific ads service we're trying to subscribe to. But now we find ourselves trying to portray different error messages based on the following issues which we're unsure as to which layer they belong to and whether or not the RDL has them as specific error codes:


(Ordered by relevancy):

1.- DACSuser does not exist in database

2.- DACSuser is not entitled to 1 or more of pointed out RICs. (Think DACS item permission test function)

3.- DACSuser is exceeding maximum number of allowed simultaneous logins. (Ideally it would also return current mounts for the user)

4.- RIC is non-existent in service. (When providing a strange RIC such as MYSUPERCOOLRIC= the output is just "None" to any fields solicited, it's be neat if it returned a "RIC not found" message)

5.- FIELD is non-existent for RIC. (When providing a strange FIELD such as MYSUPERCOOLRICFIELD the the column itself is not even generated in the dataframe)


Sorry to be so scattershot with my inquiry, just trying to figure out if there are some tools or error codes we may be missing that could be easily leveraged for some of these situations.


Thanks in advance for all your help!

trep#technology#productricserrorfieldsDACSADS
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

· Write an Answer
Upvotes
Accepted
82.7k 279 53 77

@Sismercados

Thank you for reaching out to us.

For the case #2 and #4, you will get the errors from the status messages via the on_status callback from the stream or the stream["<item name>"].status property. The status messages will look like these.

13:43:30.909622 - Status received for IBM.N : {'ID': 6, 'Type': 'Status', 'Key': {'Service': 'IDN_RDFNTS_CF', 'Name': 'IBM.N'}, 'State': {'Stream': 'Closed', 'Data': 'Suspect', 'Code': 'NotEntitled', 'Text': 'Access Denied: User req to PE(62)'}}


{'ID': 7,
 'Type': 'Status',
 'Key': {'Service': 'IDN_RDFNTS_CF', 'Name': 'IBMxxx.N'},
 'State': {'Stream': 'Closed',
  'Data': 'Suspect',
  'Code': 'NotFound',
  'Text': 'The record could not be found'}}

The stream state will be Closed and the data state will be Suspect. For the Code, please refer to the WebSocket API Specifications and Developers Guide in the 28.2 Status Message Structure chapter for the list of Codes.

For the case #5, there is no error. It just doesn't recieve the data of the invalid fields. For example:

stream = rd.content.pricing.Definition(
    ['JPY='],
    fields=['BID', 'ASK', 'NO_FIELD']
).get_stream()

The output is:

13:50:49.767504 - Refresh received for JPY= : {'BID': 142.65, 'ASK': 142.68}

For the case #1 and #3, I will contact the product team to verify if there is a way to retrieve these events.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@Sismercados

The product team confirmed that the API doesn't expose these events (#1 and #3) to the application.

However, this will be added in the future release.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.