AXL vs. Serviceability XML functionality

Version 1
    This document was generated from CDN thread

    Created by: Dean Schulze on 11-03-2013 02:04:32 PM
    I've inherited a code base that uses AXL to query CUCM.  The serviceability XML SOAP interfaces look much cleaner.
    What's the difference in functionality between AXL and the Serviceability XML interface?  Do I give up anything by using SXL instead of AXL?
    (Sorry for the cross-post.)

    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: Dennis Heim on 11-03-2013 02:11:58 PM
    AXL is CUCM administration. Serviceability API lets you start/stop services, pull performance stats. They are both XML/SOAP based, but give you different information.

    Dennis Heim | Sr. Unified Collaboration Team Lead
    World Wide Technology | 314.212.1814 | dennis.heim@wwt.com<mailto:dennis.heim@wwt.com>
    “Creating Impact, Ignition & Scalability”

    From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
    Sent: Monday, March 11, 2013 3:05 PM
    To: cdicuser@developer.cisco.com
    Subject: New Message from Dean Schulze in AXL Developer - Administration XML Questions: AXL vs. Serviceability XML functionality

    Dean Schulze has created a new message in the forum "Administration XML Questions": -------------------------------------------------------------- I've inherited a code base that uses AXL to query CUCM.  The serviceability XML SOAP interfaces look much cleaner.
    What's the difference in functionality between AXL and the Serviceability XML interface?  Do I give up anything by using SXL instead of AXL?
    (Sorry for the cross-post.)
    --
    To respond to this post, please click the following link: http://developer.cisco.com/web/axl-developer/forums/-/message_boards/view_message/12888194 or simply reply to this email.

    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: David Staudt on 11-03-2013 03:43:14 PM
    If you're referring to executing SQL statements, the Serviceability API does have a request for that in the WSDL, but it is not actually supported - consider 'vestigial'.

    You will want to use AXL for executeSqlQuery/executeSqlUpdate
     

    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: Dean Schulze on 11-03-2013 04:46:03 PM
    Ugh.  I was hoping to avoid all of that ugliness in the AXL documentation - creating HTTP Posts manually.
    Does AXL expose any .wsdl interface on the CUCM server?  The documentation only shows the URLs for SXL.
     
    David Staudt:
    If you're referring to executing SQL statements, the Serviceability API does have a request for that in the WSDL, but it is not actually supported - consider 'vestigial'.

    You will want to use AXL for executeSqlQuery/executeSqlUpdate
     


    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: David Staudt on 13-03-2013 01:15:45 AM
    There is a WSDL for the AXL interface, it is available for download from the administrative web pages/UI of the UCM server itself - under Applications/Plugins, as AXL SQL Toolkit.  The Toolkit includes a small Java sample with actually performs an executeSqlRequest.
    A limitation of the WSDL concept itself however is that requests/responses are supposed to be fully defined.  In the case of an AXL request that submits custom SQL statements, the data returned - while tabular - can have any number of fields in the result, and so cannot be parsed by code created by WSDL consumer/compilers.  For executeSqlQuery requests, it's generally just easier to set up an HTTP POST with some string/concatenated XML (only the SQL text needs to change between requests), and then use an XML parser to access the results.
    Example of full request/response:
    POST https://10.88.131.141:8443/axl/ HTTP/1.1
    Accept-Encoding: gzip,deflate
    Content-Type: text/xml;charset=UTF-8
    SOAPAction: "CUCMB ver=8.5 executeSQLQuery"
    Authorization: Basic QWRtaW5pc3RyYXRvcjpjaXNjbyExMjM=
    Content-Length: 312
    Host: 10.88.131.141:8443
    Connection: Keep-Alive
    User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
     
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/8.5">
       <soapenv:Header/>
       <soapenv:Body>
          <ns:executeSQLQuery sequence="1">
             <sql>select * from processnode</sql>
          </ns:executeSQLQuery>
       </soapenv:Body>
    </soapenv:Envelope>
    ----------------------------
    HTTP/1.1 200 OK
    Set-Cookie: JSESSIONIDSSO=AD4AB341D0D439A467D55B328693C035; Path=/; Secure
    Set-Cookie: JSESSIONID=B96E4958B5D31504ED0F367A2CE935FE; Path=/axl; Secure
    Content-Type: text/xml;charset=UTF-8
    Content-Length: 957
    Date: Wed, 13 Mar 2013 06:13:26 GMT
    Server: 
     
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Body>
        <ns:executeSQLQueryResponse xmlns:ns="http://www.cisco.com/AXL/API/8.5">
          <return>
            <row>
              <pkid>00000000-1111-0000-0000-000000000000</pkid>
              <name>EnterpriseWideData</name>
              <mac/>
              <systemnode>t</systemnode>
              <description/>
              <isactive>t</isactive>
              <nodeid>1</nodeid>
              <tknodeusage>1</tknodeusage>
              <ipv6name/>
            </row>
            <row>
              <pkid>854a8c28-dae6-42fd-93fb-46edc2b5f2aa</pkid>
              <name>10.88.131.141</name>
              <mac/>
              <systemnode>f</systemnode>
              <description/>
              <isactive>t</isactive>
              <nodeid>2</nodeid>
              <tknodeusage>0</tknodeusage>
              <ipv6name/>
            </row>
            <row>
              <pkid>b534935e-d765-c25e-096c-509eb9b96b37</pkid>
              <name>10.88.131.146</name>
              <mac>000c292b3ba2</mac>
              <systemnode>f</systemnode>
              <description>UCM851sub</description>
              <isactive>t</isactive>
              <nodeid>3</nodeid>
              <tknodeusage>1</tknodeusage>
              <ipv6name/>
            </row>
          </return>
        </ns:executeSQLQueryResponse>
      </soapenv:Body>
    </soapenv:Envelope>

    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: Dean Schulze on 13-03-2013 01:06:21 PM
    Thanks for the explanation and example.
    That's a convoluted way to do queries.  If the intention is to support arbitray user queries I would think they would create a read-only user for Informix and open the appropriate port for JDBC / ODBC connections.  Is this supported or is AXL the only way to do queries?
    Either way you have to know the Informix schema (table names, etc).  Is this documented anywhere?
    Thanks again.
     
    David Staudt:
    There is a WSDL for the AXL interface, it is available for download from the administrative web pages/UI of the UCM server itself - under Applications/Plugins, as AXL SQL Toolkit.  The Toolkit includes a small Java sample with actually performs an executeSqlRequest.
    A limitation of the WSDL concept itself however is that requests/responses are supposed to be fully defined.  In the case of an AXL request that submits custom SQL statements, the data returned - while tabular - can have any number of fields in the result, and so cannot be parsed by code created by WSDL consumer/compilers.  For executeSqlQuery requests, it's generally just easier to set up an HTTP POST with some string/concatenated XML (only the SQL text needs to change between requests), and then use an XML parser to access the results.
    Example of full request/response:
    POST https://10.88.131.141:844...


    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: Dennis Heim on 13-03-2013 01:15:11 PM
    AXL is the only way. You will need to look at the database dictionary. If you name tables you can always do a  select tabname from systables.

    Dennis Heim | Sr. Unified Collaboration Team Lead
    World Wide Technology | 314.212.1814 | dennis.heim@wwt.com<mailto:dennis.heim@wwt.com>
    “Creating Impact, Ignition & Scalability”

    From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
    Sent: Wednesday, March 13, 2013 2:07 PM
    To: cdicuser@developer.cisco.com
    Subject: New Message from Dean Schulze in AXL Developer - Administration XML Questions: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que

    Dean Schulze has created a new message in the forum "Administration XML Questions": -------------------------------------------------------------- Thanks for the explanation and example.
    That's a convoluted way to do queries.  If the intention is to support arbitray user queries I would think they would create a read-only user for Informix and open the appropriate port for JDBC / ODBC connections.  Is this supported or is AXL the only way to do queries?
    Either way you have to know the Informix schema (table names, etc).  Is this documented anywhere?
    Thanks again.

    David Staudt:
    There is a WSDL for the AXL interface, it is available for download from the administrative web pages/UI of the UCM server itself - under Applications/Plugins, as AXL SQL Toolkit.  The Toolkit includes a small Java sample with actually performs an executeSqlRequest.
    A limitation of the WSDL concept itself however is that requests/responses are supposed to be fully defined.  In the case of an AXL request that submits custom SQL statements, the data returned - while tabular - can have any number of fields in the result, and so cannot be parsed by code created by WSDL consumer/compilers.  For executeSqlQuery requests, it's generally just easier to set up an HTTP POST with some string/concatenated XML (only the SQL text needs to change between requests), and then use an XML parser to access the results.
    Example of full request/response:
    POST https://10.88.131.141:844...

    --
    To respond to this post, please click the following link: http://developer.cisco.com/web/axl-developer/forums/-/message_boards/view_message/12983484 or simply reply to this email.

    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: David Staudt on 13-03-2013 01:30:06 PM
    AXL provides some sanity checking, rate/data-size throttling, and transaction protection around SQL requests, intended to prevent at least some potential mis-use, even though direct SQL access is still relatively risky.   -Direct SQL access, e.g. JDBC, is not possible.  Also note the important caveats around AXL SQL usage, including: performance impact on UCM callprocessing is not guaranteed and testing by the developer is critical; UCM SQL database schema has no backward compatibility guarantees, and could possibly change in any UCM release, including point or patch releases (almost always this is just additions of fields/tables, but FYI.)

    UCM Informix database table/field/relationship info is available in the corresponding Data Dictionary documentation: http://developer.cisco.com/web/axl-developer/latest-version
     

    Subject: RE: New Message from Dean Schulze in AXL Developer - Administration XML Que
    Replied by: Dean Schulze on 13-03-2013 04:29:29 PM
    Thanks very much for providing the link to the data dictionary.
     
    David Staudt:
    AXL provides some sanity checking, rate/data-size throttling, and transaction protection around SQL requests, intended to prevent at least some potential mis-use, even though direct SQL access is still relatively risky.   -Direct SQL access, e.g. JDBC, is not possible.  Also note the important caveats around AXL SQL usage, including: performance impact on UCM callprocessing is not guaranteed and testing by the developer is critical; UCM SQL database schema has no backward compatibility guarantees, and could possibly change in any UCM release, including point or patch releases (almost always this is just additions of fields/tables, but FYI.)

    UCM Informix database table/field/relationship info is available in the corresponding Data Dictionary documentation: http://developer.cisco.com/web/axl-developer/latest-version