Using python in Cloverleaf

Clovertech Forums Cloverleaf Using python in Cloverleaf

Tagged: ,

  • Creator
    Topic
  • #121067
    Ramachandran R
    Participant
      We have a requirement to send a message to an external REST API, where it accepts only (Content-Type: multipart/form-data; boundary=—-<unique ID>). I understand that we can use PROTOCOL:java/ws-rawclient, however forming of data is what makes it complex, as it requires the data in multipart/form-data; boundary=—-<unique ID> format.
      So we have decided to build an adopter to send the data to external API using python3, and tried with the below simple code in outbound TPS,
      def process_qlm_multipart(cloverEnv, context, mode, msg, userArgs, dl):
          hciConnName = cloverEnv.getThreadName()
          if mode == “run”:
              messageContent = msg.getContent()
              cloverEnv.log(2, f”messageContent: {messageContent}”)
      import sys
              cloverEnv.log(2, f”{sys.path}”)
              import http.client
              from codecs import encode
              conn = http.client.HTTPSConnection(“URL Comes Here”)
      But getting the below error
      [‘/usr/lib64/python38.zip’, ‘/usr/lib64/python3.8’, ‘/usr/lib64/python3.8/lib-dynload’, ‘/home/hci/.local/lib/python3.8/site-packages’, ‘/usr/lib64/python3.8/site-packages’, ‘/usr/lib/python3.8/site-packages’, ‘/cloverleaf/cis20.1/integrator/python’]
       Tcl error:
           msgId   = message0
           proc    = ‘cljTPS’
           args    = ‘{CLASS ScriptTPS} {LANG jep} {FILE process_qlm_multipart.py} {FUNC process_qlm_multipart}’
           result  = ‘com.quovadx.cloverleaf.upoc.CloverleafException: Failed in running UPoC due to Jep exception’
           errorInfo: ‘
       com.quovadx.cloverleaf.upoc.CloverleafException: Failed in running UPoC due to Jep exception
           at JepUpocEngine.run(JepUpocEngine.java:296)
           at ScriptTPS.process(ScriptTPS.java:58)
           at com.quovadx.cloverleaf.upoc.CloverEnv.processTPS(CloverEnv.java:1418)
       Caused by: jep.JepException: <class ‘ImportError’>: /usr/lib64/python3.8/lib-dynload/binascii.cpython-38-x86_64-linux-gnu.so: undefined symbol: PyExc_ValueError
           at /usr/lib64/python3.8/email/header.<module>(header.py:14)
           at /usr/lib64/python3.8/email/_policybase.<module>(_policybase.py:7)
           at /usr/lib64/python3.8/email/feedparser.<module>(feedparser.py:27)
           at /usr/lib64/python3.8/email/parser.<module>(parser.py:12)
           at /usr/lib64/python3.8/http/client.<module>(client.py:71)
           at /cloverleaf/cis20.1/integrator/sfin3/scripts/process_qlm_multipart.process_qlm_multipart(process_qlm_multipart.py:32)
           at <string>.<module>(<string>:1)
           at jep.Jep.exec(Native Method)
           at jep.Jep.exec(Jep.java:478)
           at JepUpocEngine.run(JepUpocEngine.java:290)
           … 2 more
           invoked from within
       “processTPS “$instanceMap($__userArgs) $context $mode $mh””
           (procedure “cljTPS” line 49)
           invoked from within
       “cljTPS {MSGID message0} {CONTEXT sms_ob_data} {ARGS {{CLASS ScriptTPS} {LANG jep} {FILE process_qlm_multipart.py} {FUNC process_qlm_multipart}}} {MODE…”‘
      We are using Cloverleaf 20.1.2, on RHEL 8.6, and python3.8
      The above error is raised exactly at import http.client. I can see that this package is already available with python3.8.
      Any help/lead in fixing the above issue would be greatly appreciated.
      Thank you.
    Viewing 0 reply threads
    Viewing 0 reply threads
    • You must be logged in to reply to this topic.