72 Replies Latest reply: Feb 27, 2014 9:06 AM by jswan RSS

Orion SDK Information

bshopp

Thank you for your interest in the SDK.

You can download the SDK 1.8 here (SDK 1.7 here / SDK 1.6 here / v1.5 here / SDK v1.4 here)

 

What’s new in SDK v1.8?

 

  • New sample PowerShell script:
    • CopyNodes
  • Additional documentation:
    • list of functions supported by SWQL
    • the RETURN XML RAW/AUTO clause
  • Schema reference docs for updated for product releases

 

 

What’s new in SDK v1.7?

  • Update documentation reflecting technical changes made in Orion Platform 2013.1, NPM 10.5, SAM 5.5, and IPAM 4.0 (summarized in a new "What is new" chapter in Technical Reference document instal
  • Documentation for the REST/JSON endpoint for the Information Service
  • Improvements and bug fixes in SDK tools
  • New sample scripts demonstrating:
    • Using UDT to shut down a switch port
    • Connecting to the Information Service from Python

 

What’s new in SDK v1.6?

  • Updated documentation reflecting technical changes made in Orion Platform 2012.2, NPM 10.4, and SAM 5.0 (summarized in a new "What is new" chapter in Technical Reference document installed)
  • Improvements in SDK tools, including bulk update and bulk delete capability for SwisPowerShell.
  • New sample scripts demonstrating:
    • Downloading a network device configuration file using NCM
    • Management of SAM application monitoring

 

What's new in SDK v1.5?

  • Updated documentation reflecting technical changes made in Orion Platform 2012.1, NPM 10.3 (summarized in a new "What is new" chapter in Technical Reference document installed)
  • Improvements in SDK tools
  • New samples demonstrating the other SWIS API use. in particular, PowerShell samples demonstrating:

o   Adding a node

o   Adding an interface

o   Discovering interfaces

o   Setting a custom property

o   Configuring Orion Groups

 

This package contains:

 

  • SWQL Studio: An application for browsing the Information Service schema and running queries.              
  • Orion SDK.pdf: The documentation for the SDK. Includes an explanation of the purpose of the SolarWinds Information Service, a description of its query language, SWQL, and walkthroughs of the VBClient and JavaClient sample applications.              
  • VBClient:A sample application written in Visual Basic.NET that connects to SWIS over HTTPS, finds the most-recently-triggered unacknowledged alert, and acknowledges it. A project file is provided for building this sample in Visual Studio 2008.
  • JavaClient: A sample application written in Java that connects to SWIS over HTTPS, finds the most-recently-triggered unacknowledged alert, and acknowledges it. A project file is provided for loading this sample in Eclipse. There is also a build.xml file for building the sample with Ant.
  • PerlClient: A sample application written in Perl that connects to SWIS over HTTPS, and contains example calls of SWIS API.
  • PowerShell samples: A set of PowerShell sample scripts containing example calls of SWIS API.
  • SwisInvoke.exe: A tool for invoking SWIS verbs (commands) from the Windows command line.
  • Reference documentation for the SWIS schema: In HTML format.          
  • SWIS Snapin for Windows PowerShell:A component that provides cmdlets you can use to access SWIS from Windows PowerShell, including querying data and invoking verbs. This requires a manual installation step to use. See the Orion SDK.pdf document for details on this

 

A couple of notes regarding the SDK.

  1. All support will be handled via the thwack SDK forum, which can be found here.
  2. If you call customer service regarding an SDK issue or question you will be directed to thwack, so please do not call customer support.

 

SolarWinds Orion SDK Team

 
  • Re: Orion SDK Information
    fcaron

    An interesting application of the API, in this node import script, described and available How to automate the creation of Orion Platform (aka Core) nodes from the API.

  • Re: Orion SDK Information
    charan

    Hi All,

     

    Do we have any API to pull cusrtomer info to Salesforce.com?

     

    We are recently using NPM for our client.

     

    I just want to know what are the options that I have?

     

     

     

    Thanks

  • Re: Orion SDK Information
    syoder10

    I've tried both Powershell 2 and 3 with version 1.6 of the SDK and the unmanage verb is not working for me.

    I don't get any errors.  When I and check in Orion, the node is still showing managed.

    The event log shows....

     

    changed node xyz property UnManageUntil from 5/9/2013 7:54:25 AM to 5/9/2013 12:55:29 PM   Logged at 5/9/2013 12:40:33 PM.

     

     

     

    Note the from ad to times. 

  • Re: Orion SDK Information
    dyogoaj

    Do you know if is it possible to add users on Orion via API with Orion SDK. If positive, can you gently help us on the methods and parameters we have to use on our development to accomplish it.

    • Re: Orion SDK Information
      tdanner

      No, this is not currently possible. (There is a CreateAccount verb on Orion.Accounts, but at this time it only allows you to create system-level accounts. It is not suitable for creating regular website user accounts.)

       

      If you use Active Directory authentication, you could [manually] create one or more AD groups for your Orion users. Then all you automation needs to do is add the relevant users to the appropriate AD groups and they will naturally have Orion login access. This is probably simpler to manage long term anyway.

      • Re: Orion SDK Information
        ecklerwr1

        tdanner's method makes the most sense and is exactly what we do.  Now that NPM is AD aware using AD groups to control who has what access to Orion and to what seems to me the only way to go.

  • Re: Orion SDK Information
    svindler

    I'm still missing a database model, so I'll just use this opportunity to advertise for my two feature requests for documenting the database model in NPM and NCM:

    NPM: http://thwack.solarwinds.com/ideas/2360

    NCM: http://thwack.solarwinds.com/ideas/2361

  • Re: Orion SDK Information
    ecklerwr1

    Will there be a new SDK now that NPM10.6 and SAM6.0 are being released?

    • Re: Orion SDK Information
      tdanner

      Yes, there will. No significant changes to the SDK are planned, just some general updates and fixes.

      • Re: Orion SDK Information
        ouberlord
        • Re: Orion SDK Information
          tdanner

          The ToLocal function is in NPM 10.5. It doesn't matter what version of the SDK you use.

          • Re: Orion SDK Information
            ouberlord

            Ah my mistake, I was unaware that function existed in NPM previously.  Is there documentation on the list of SWQL functions available within NPM?  My searches are coming up empty, and I'd like to have such a list as a reference now that I am diving into reporting.

            • Re: Orion SDK Information
              tdanner

              Currently the list of functions is buried in this other thread: http://thwack.solarwinds.com/message/198138#198138. SDK 1.8 will include it in the official docs.

              • Re: Orion SDK Information
                joiellis

                Should ToLocal() work in SWQL Studio talking to NPM 10.6?    The name of the function seems to be correct (If I tweak the name by adding a character, I get an "invalid function" error back.) but I just keep getting 'socket closed' dialog back when I try it.  Can you provide a working example for a query in SWQL Studio that uses this function?

                • Re: Orion SDK Information
                  tdanner

                  Here's one that works:

                   

                  SELECT ObjectName, AlertMessage, TriggerTimeStamp, Hour(TriggerTimeStamp) AS UtcHour, Hour(ToLocal(TriggerTimeStamp)) AS LocalHour

                  FROM Orion.AlertStatus

                  • Re: Orion SDK Information
                    joiellis

                    Ah ha!  This ToLocal() function only works with a SWIS v3 connection.  In a V2 connection I get an error, 'The socket connection was aborted...' error, as if the query timed out, but it fails instantly after submitting the query.  If I do this in V3 it works okay.

                     

                    Do you think you could add a note to the SDK documentation indicating which version of connections are required for which functions to work?

                     

                    Are there any plans to make V2 and V3 truly compatible?  Having to use V2 to access NCM data while switching to V3 to access other things like certain custom pollers and new SWQL features is turning into a nightmare for scripting.

                    • Re: Orion SDK Information
                      tdanner

                      Adding a "SWIS version supported" column to the function table is a good idea. I'll get that in for the next SDK release.

                       

                      There are no plans to add features to SWISv2. I recognize that it is painful to deal with some features only being available in one service (it's annoying for our developers too), but our direction is to move everything to SWISv3. There will never be a SWISv4 if I can help it, so we should not have to go through a transition like this again.

                       

                      As for NCM data, we have already moved NCM support to SWISv3 in development. I'm not in a position to make commitments about version numbers or release dates (try Jiri Cvachovec), but this distinction will not be with us too much longer.

  • Re: Orion SDK Information
    sunilpunalur

    Hi All,

    Can anyone help me with my query below

    We have an interface that connects to our client database though VPN to fetch information for our application . We often lose connection to their db. The interface programs tries to reconnect for a stipulated iterations and if fails the interface program hangs. We are not sure of what caused the disconnection, whether it is network or DB unavailable.

    Is there any tool that alerts us root cause of the disconnection?

     

    Your valuable comments are most appreciated.

     

    Thanks,

    Sunil

  • Re: Orion SDK Information
    juniordev

    I have an idea about supporting custompollerassignment, maybe it is available for the next version.

     

    http://thwack.solarwinds.com/ideas/2929

  • Re: Orion SDK Information
    kjustin1996

    Duplicating the post.

    Looking for some help with the powershell add, as the CRUD.addnode samples for SDK v1.7 fail with NPM 10.6.3

     

    SolarWinds Support recommended posting in this SDK as the blog has not gotten a response in 8 days.

    Using Powershell to add nodes with Custom Properties for Device Type

     

    The goal is to automate the add/removes without any user intervention ruling out discovery.

     

    This worked with with SDK v1.6 and NPM 10.5.4

     

    Unfortunately this is an urgent matter for us to use the product.

    Please have someone from the Development team or Product Manager to give me a call

     

    Thanks,

    Kevin

  • Re: Orion SDK Information
    kkhalil

    SolarWinds to Service-Now we’re trying to do the following (option 1 is our preferred while option 2 is a fallback): 1) A) SolarWinds generates alert B) SolarWinds uses a “webservice/api/sdk/other tool” to “communicate with/connect to” with the appropriate information so ServiceNow can open a ticket with the appropriate categorization, priority, whether it is internally or externally managed (ticket assignment changes depending), etc. C) ServiceNow will communicate to the “response team” that there is a new ticket that must be addressed D) ServiceNow will “communicate with/connect to” SolarWinds to acknowledge the alert and to record the ServiceNow ticket in to the acknowledgement notes E) SolarWinds will register alert and set alert to acknowledged status and will include the ServiceNow ticket number *END* 2) A) SolarWinds generates alert B) SolarWinds sends email notification to ServiceNow – email will need to be in appropriate form to be “absorbed” C) ServiceNow “absorbs” email and generates a ticket with the appropriate categorization, priority, whether it is internally or externally managed (ticket assignment changes depending), etc. D) ServiceNow “responds” to email with acknowledgement and ticket number E) SolarWinds registers the response and sets the alert to acknowledged status and will include the ServiceNow ticket number *END* At this time, we’re looking for foundational materials to help us get started and determine the easiest/best way to perform one of these options and we’re hoping SolarWinds support can give us some pointers on where to researching documentation and what documentation may exist. Our hope is this is a relatively straight forward activity since it seems like it would be fairly standard that companies would want their monitoring and ticketing systems to interact. We have been rather ineffectually researching SolarWinds documentation and Thwack for roughly a week and have been unable to find the “start here” materials. We understand that the referenced SDK is not supported and we will have to use Thwack as support, however, at this point, we don’t have enough information to understand whether the SDK is our best/only option. We see in the release notes that there is the VBClient, etc. however it is unclear if this is the proscribed technique or just *A* technique.

  • Re: Orion SDK Information
    fabi

    Hi,

     

    I will like to send Status Group Nodes to a external website with icons status. I read Oiron SDK informations but i'm loose

     

    Example i would send that :

     

    Capture.JPG

  • Re: Orion SDK Information
    RichardLetts

    Is there an API to set the node location do they appear on the [new] worldview maps?

     

    Can this be a design goal: if a new product feature is added then an API has to be added to SWIS to support it...

    • Re: Orion SDK Information
      derhally

      You can use the SDK to add entries to the Orion.WorldMap.Point entity.   Once you do that, the nodes will show up on the map.

      • Re: Orion SDK Information
        fabi

        No, in fact i want to send this module on a web page.

        I try actually a solution, but if you can help me !

        • Re: Orion SDK Information
          derhally

          I don't understand your comment.  Can you please clarify?  Thanks.

          • Re: Orion SDK Information
            fabi

            Sorry for my english i'm french !

            i want to extract data's SolarWinds, or interrog BD SolarWinds to view Nodes / Groups supervision on a another website that Orion Web Interface !

             

            It's OK ?

             

             

            Happy NEW YEAR !

            • Re: Orion SDK Information
              derhally

              I don't know what version of Orion you have, but if you have the latest, with some javascript/jquery you should be able to do a http post to https://<orion ip>:17778/SolarWinds/InformationService/v3/Json/Query

               

              with the body containing your query.  e.g.

              {

                   "query":"SELECT NodeID, Caption FROM Orion.Nodes ORDER BY Caption"

              }

               

              You will get back a result like

               

              {

                   "totalRows":1,

                   "results":[

                        {

                           "NodeID": 1,

                          "Caption": "My Router"

                        }

                   ]

              }

              • Re: Orion SDK Information
                fabi

                Big Thanks to your help ! i will try your trick !

              • Re: Orion SDK Information
                fabi

                Sorry how can i do https post javascript,

                • Re: Re: Orion SDK Information
                  derhally

                  fabi,

                   

                  Explaining how to do it would be too much for this post.

                   

                  If you have a fields with Id "username" "password" and "querytext"

                   

                  You can use something like jquery to make an ajax call like this

                   

                          $(function() {
                              $("#send").click(function() {
                                  $("#error,#results").hide();
                                  var address = 'https://localhost:17778/SolarWinds/InformationService/v3/Json/Query?';
                                  address += "query=" + encodeURIComponent($("#querytext").val());
                  
                  
                                  $.ajax({
                                      url: address,
                                      username: $("#username").val(),
                                      password: $("#password").val(),
                                      type: "GET",
                                      dataType: "json",
                                      success: function (data) {
                                          /* handle result */
                                      },
                                  });
                              });
                          });
                  
                  

                   

                  This will only work if the caller and the Orion server are on the same domain.

      • Re: Orion SDK Information
        jmiddleton

        I'm attempting to add and also update information in the Orion.WorldMap.Point table, do you happen to have any pointers on how to do it? Ideally via perl.

         

        Update: create a post with the question - Updating Orion.WorldMap.Point via the Perl SDK

  • Re: Orion SDK Information
    chrisaustin

    Hi,  I've extracted and installed 1.8 but don't see the "addvolume" sample you referenced.  I'm currently automating IE in powershell to programmatically add a node, but would like to be able to add a server, for instance, and discover the interfaces and volumes within the API.

     

    Thanks!

     

    Chris

  • Re: Orion SDK Information
    jfoley

    Hello. Please pardon my ignorance - I'm new to the Windows development community. I installed the MSI for the SDK but I can't seem to find any documentation for it - could somebody point me to the right direction?

  • Re: Orion SDK Information
    jfoley

    I have another question - do you have anywhere I can find any PHP examples?

    • Re: Orion SDK Information
      tdanner

      I don't know of any PHP examples for this. I know very little about PHP and nothing about the application you are working in, so I'm hesitant to give advice. The JSON API is pretty straightforward, so you should be able to use any general purpose HTTP client to work with it. Surprisingly (to me, anyway), Stack Overflow users seem to recommend just shelling out to curl.exe for making REST calls from PHP.

      • Re: Orion SDK Information
        jfoley

        That's what I figured I'd end up going with (cURL is PHP's main way of executing HTTP Requests) - I just have to figure out how to communicate with the API, heh.

        • Re: Orion SDK Information
          tdanner

          curl -v -k -u admin: -X POST -H "Content-Type: application/json" -d @postdata.json https://localhost:17778/SolarWinds/InformationService/v3/Json/Query

           

          Where the file postdata.json contains something like this: { "query": "SELECT TOP 1 DisplayName, DetailsUrl FROM Orion.Nodes" }

          • Re: Orion SDK Information
            jfoley

            Hmm. That seemed to work:

             

            $ curl -v -k -u admin: -X POST -H "Content-Type: application/json" -d @postdata.                                  json https://10.10.10.6:17778/SolarWinds/InformationService/v3/Json/Query

            * STATE: INIT => CONNECT handle 0x60002d3f0; line 1011 (connection #-5000)

            * Hostname was NOT found in DNS cache

            *   Trying 10.10.10.6...

            * Adding handle: conn: 0x6000697d0

            * Adding handle: send: 0

            * Adding handle: recv: 0

            * Curl_addHandleToPipeline: length: 1

            * 0x60002d3f0 is at send pipe head!

            * - Conn 0 (0x6000697d0) send_pipe: 1, recv_pipe: 0

            * STATE: CONNECT => WAITCONNECT handle 0x60002d3f0; line 1058 (connection #0)

            * Connected to 10.10.10.6 (10.10.10.6) port 17778 (#0)

            * successfully set certificate verify locations:

            *   CAfile: /usr/ssl/certs/ca-bundle.crt

              CApath: none

            * SSLv3, TLS handshake, Client hello (1):

            * STATE: WAITCONNECT => PROTOCONNECT handle 0x60002d3f0; line 1171 (connection #                                  0)

            * SSLv3, TLS handshake, Server hello (2):

            * SSLv3, TLS handshake, CERT (11):

            * SSLv3, TLS handshake, Server finished (14):

            * SSLv3, TLS handshake, Client key exchange (16):

            * SSLv3, TLS change cipher, Client hello (1):

            * SSLv3, TLS handshake, Finished (20):

            * SSLv3, TLS change cipher, Client hello (1):

            * SSLv3, TLS handshake, Finished (20):

            * SSL connection using AES128-SHA256

            * Server certificate:

            *        subject: CN=SolarWinds-Orion

            *        start date: 2013-10-08 19:59:53 GMT

            *        expire date: 2039-12-31 23:59:59 GMT

            *        issuer: CN=SolarWinds-Orion

            *        SSL certificate verify result: self signed certificate (18), continuing                                   anyway.

            * STATE: PROTOCONNECT => DO handle 0x60002d3f0; line 1190 (connection #0)

            * Server auth using Basic with user 'admin'

            > POST /SolarWinds/InformationService/v3/Json/Query HTTP/1.1

            > Authorization: Basic YWRtaW46

            > User-Agent: curl/7.34.0

            > Host: 10.10.10.6:17778

            > Accept: */*

            > Content-Type: application/json

            > Content-Length: 68

            >

            * upload completely sent off: 68 out of 68 bytes

            * STATE: DO => DO_DONE handle 0x60002d3f0; line 1263 (connection #0)

            * STATE: DO_DONE => WAITPERFORM handle 0x60002d3f0; line 1384 (connection #0)

            * STATE: WAITPERFORM => PERFORM handle 0x60002d3f0; line 1395 (connection #0)

            * HTTP 1.1 or later with persistent connection, pipelining supported

            < HTTP/1.1 200 OK

            < Content-Length: 118

            < Content-Type: application/json

            * Server Microsoft-HTTPAPI/2.0 is not blacklisted

            < Server: Microsoft-HTTPAPI/2.0

            < Date: Mon, 10 Feb 2014 20:41:45 GMT

            <

            * STATE: PERFORM => DONE handle 0x60002d3f0; line 1565 (connection #0)

            * Connection #0 to host 10.10.10.6 left intact

            {"results":[{"DisplayName":"DC1SWC01 - Core Switch","DetailsUrl":"/Orion/NetPerfMon/NodeDetails.aspx?NetObject=N:1"}]}

             

            Thanks for that example. I'll see if I can translate it to PHP.

            • Re: Orion SDK Information
              fabi

              Why 17778 Port, with wireshark, when i connect thanks to "SWQL Studio" it's 17777 Port.

              • Re: Orion SDK Information
                derhally

                Port 17777 is the port that SWIS listens on special for special bindings, while port 17778 is the port that SWIS listens on for HTTPS connections.

                • Re: Orion SDK Information
                  fabi

                  Ok i found a interesting solution, to integrate a module map or everything that you create :

                   

                  • First, create a account user.

                   

                  • Use a automatic authentification http url :

                  <iframe name="inlineframe" src="http://[@IP_SolarWinds]/Orion/Login.aspx?AccountID=[USER]&Password=[PASSWORD]" frameborder="0" scrolling="auto" width="0" height="0" marginwidth="0" marginheight="0" ></iframe>

                   

                   

                  • Session's account never expire.

                   

                  • use "php timer" w/ (sleep) to the connection.

                   

                  <iframe name="I1" src="http://[@IP_SolarWinds]/Orion/DetachResource.aspx?ResourceID=1979&NetObject=" frameborder="0" scrolling="auto" width="500" height="320" marginwidth="5" marginheight="5" id="I1" ></iframe>

                   

                   

                  • Here My ressources, maps, group, list groups,...

                   

                  it's not a final solution for me.

      • Re: Orion SDK Information
        jfoley

        tdanner - I got it working in PHP If anybody asks for a PHP example, feel free to give them this code snippet:

         

          ini_set('display_errors', 'On');

          error_reporting(E_ALL);

         

          $endpoint = "https://localhost:17778/SolarWinds/InformationService/v3/Json/Query";

         

          $post_data = array(

          'query' => "SELECT TOP 1 DisplayName, DetailsUrl FROM Orion.Nodes"

          );

         

          $strdata = json_encode($post_data);

         

          $ch = curl_init($endpoint);

         

          curl_setopt($ch, CURLOPT_POST, 1);

          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

          curl_setopt($ch, CURLOPT_TIMEOUT, 30);

          curl_setopt($ch, CURLOPT_POSTFIELDS, $strdata);

          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

          curl_setopt($ch, CURLOPT_USERPWD, "admin:");

          //curl_setopt($ch, CURLOPT_HEADER, 1); // This will output response headers

          curl_setopt($ch, CURLOPT_HTTPHEADER, array(

            'Content-Type: application/json',

            'Content-Length: ' . strlen($strdata)

          ));

         

          $result = curl_exec($ch);

          exit("Result: {$result}");

        • Re: Orion SDK Information
          tdanner

          Thanks for sharing!

          • Re: Orion SDK Information
            jfoley

            Where can I find more documentation on the JSON REST API for querying?

            • Re: Orion SDK Information
              tdanner

              It's in the "Orion SDK.pdf" document installed with the SDK. Linked on the start menu as "Technical Reference".

              • Re: Orion SDK Information
                jfoley

                Thanks, I found it I'm new to both the Orion system & its terminology - could you point me to where in the document it talks about how to receive, let's say, bandwidth information on Interface ID 117 (the URL to view it in the browser is:

                /Orion/Interfaces/InterfaceDetails.aspx?NetObject=I:117&view=InterfaceDetails

                )

                • Re: Re: Orion SDK Information
                  tdanner

                  Sure. Interface traffic history is in the Orion.NPM.InterfaceTraffic entity. You can query it like this:

                   

                  SELECT DateTime, InAveragebps, InMinbps, InMaxbps, InTotalBytes, InTotalPkts, InAvgUniCastPkts, InMinUniCastPkts, InMaxUniCastPkts, InAvgMultiCastPkts, InMinMultiCastPkts, InMaxMultiCastPkts, OutAveragebps, OutMinbps, OutMaxbps, OutTotalBytes, OutTotalPkts, OutAvgUniCastPkts, OutMaxUniCastPkts, OutMinUniCastPkts, OutAvgMultiCastPkts, OutMinMultiCastPkts, OutMaxMultiCastPkts, TotalBytes, TotalPackets, Averagebps, OutPercentUtil, InPercentUtil, PercentUtil
                  FROM Orion.NPM.InterfaceTraffic
                  WHERE InterfaceID=117 AND DateTime > GetUtcDate()-1
                  

                   

                  That will return all traffic samples in the last 24 hours. You can adjust the WHERE clause to select a particular time range.

  • Re: Orion SDK Information
    jswan

    The Python sample code included with the SDK has some typo-bugs in it: .json() is a method of the request object, not an attribute, so ()s are required but not included. I posted a fixed, slightly more friendly version here:

     

    https://gist.github.com/jayswan/9239153