cancel
Showing results for 
Search instead for 
Did you mean: 
Create Post
Product Manager
Product Manager

Orion SDK Information

Please go here for the most updated Orion SDK information.

Thank you for your interest in the SDK.

You can download the SDK 1.10 here (SDK 1.9 here / 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.9?

  • New chapter added documenting the new NTA 4.0 Entity Model with typical query examples.
  • New sample script for adding a Windows node for monitoring using WMI.
  • Bugfixes to SWQL Studio and the PowerShell cmdlets.

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:

Adding a node

Adding an interface

Discovering interfaces

Setting a custom property

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

137 Replies
Level 9

Good Morning,

I would like to do is use the SDK to add multiple down nodes to NPM and keep them in monitoring until they come back up but I have having an issue adding multiple IP address. How can i ammend my script to add multiple IP addresses? Can you confirm if I need to add any more pollers so when they come up the would function as normal.

$swis = Connect-Swis

$newNodeProps = @{ EntityType="Orion.Nodes";

IPAddress="10.132.100.1", "10.123.0.2","10.345.2.6"

IPAddressGUID="";

Caption="";

DynamicIP=$False;

EngineID=1;

Status=2;

UnManaged=$False;

Allow64BitCounters=$False;

SysObjectID="";

MachineType="";

VendorIcon="";

ObjectSubType="SNMP";

SNMPVersion=2;

Community="public"}


POLLERS

I.StatisticsTraffic.SNMP.Universal

N.IPAddress.SNMP.Generic

N.Status.SNMP.Native"

N.ResponseTime.SNMP.Native

N.Memory.SNMP.CiscoGen3

N.Cpu.SNMP.CiscoGen3

N.Uptime.SNMP.Generic

0 Kudos
Level 9

Hello everyone,

I am new to Orion,

I am tasked with a project upgrade and migrate my NPM to a new server. I understand that version we are currently using is way to old to do a migration(9.1 SP3) so i have installed the new NPM on our new server with a new database server as well. We currently have over 2500 nodes in monitoring. Is there any way i can mass import/export the node information like interfaces being monitored and/or node groups to the new server? Is there any way i can salvage any information using SDK?

0 Kudos
Level 19

NPM 9.1 is too old to support the SDK. Here's what I would do in your place:

1. Use a database tool (SQL Management Studio or our Database Manager app) on the old server to extract the IPs of the nodes (SELECT IP_Address FROM Nodes) and use this as the discovery list (paste it into the textbook for the "Specific Nodes" on the "Network" page for the discovery wizard) for your new server.

2. If you have custom property data in the old database that you care about, use the Custom Property Editor app on the old server to export these custom properties to a CSV file. On the new server, you can import this CSV files using the (now web-based) Custom Property Editor interface with IP address as the matching field.

0 Kudos
Level 9

Thanks very much for the information.

Can i use SDK to import the info to the new server that has NPM 11.5 including the interfaces and the node groups?

I have no problem getting the info from the old server but i want to keep the IPs with the interfaces that are being monitored and also the node groups.

0 Kudos
Level 19

NPM 9.1 did not have node groups. In those versions users generally used custom properties for ad hoc node grouping.

I don't think using the SDK to do the initial import would really buy you anything. Better to just copy the IP address list and let discovery handle the initial import. By default, discovery will import all of the active interfaces it finds. If you want to monitor the same subset of these interfaces that you were monitoring on the old server, you could extract that list from the old database (SELECT N.IP_Address, I.InterfaceIndex FROM Interfaces I INNER JOIN Nodes N ON N.NodeID=I.NodeID) and then delete anything in new system that discovery imported that isn't part of that set. This is a place the SDK can help: deleting a bunch of interfaces using a list.

0 Kudos
Level 9

So I'm having a bit of a challenge of the CRUD script i should run i SDK to delete specific interfaces to different nodes in bulk. I have a list with the current InterfacesIndex with the IP_Address that i only want to be monitored and currently all the interfaces for these IP addresses are in NPM. Any suggestions?

0 Kudos
Level 19

You have a list of the node IP addresses and interfaces indexes you want to monitor. Use the same query against the new system to pull the list of what you are monitoring there (including the Uri property for those interfaces). Find everything in the second list that is not in the first list. Run a delete operation on the Uri values that remain.

0 Kudos
Level 9

I ran the SWQL querry that gives me a list of all the interfaces(including the WebUri) from the Orion.NPM.InterfaceWebUri DB and correlate it with the NodeID on Orion.Nodes DB and i got a list with the InterfaceID (eg; 1478), WebUri (eg; /Orion/Interfaces/InterfaceDetails.aspx?NetObject=I:1478) and IP_Address (eg; 10.0.0.0).

SELECT I.InterfaceID, I.WebUri, N.IP_Address

FROM Orion.NPM.InterfaceWebUri I

Join Orion.Nodes N

ON N.NodeID=I.NodeID

I used this list to find everything that is in the second but in the first.

Can you provide me with a delete operation that I can use on Uri?

0 Kudos
Level 19

The Uri is not the same as the WebUri. Use a query like this:

SELECT I.InterfaceID, I.Uri, N.IP_Address

FROM Orion.NPM.Interfaces I

Join Orion.Nodes N

ON N.NodeID=I.NodeID

I don't know what environment you are using, but in PowerShell you can delete an object like this:

$uri = ... get the uri from somewhere ...

$swis = Connect-Swis ... connection details and credentials...

Remove-SwisObject $swis $uri

0 Kudos
Level 9

Can i add multiple Uris to the field

eg.

$uri = ....."uri location1";"uri location2";"uri location3"

$swis = Connect-Swis ... connection details and credentials...

Remove-SwisObject $swis $uri

would it run like that or would it only take the first location into account?

0 Kudos
Level 19

Remove-SwisObject will accept multiple Uris as pipeline input. Like this:

$uris = @( $uri1, $uri2, $uri3 )

$uris | Remove-SwisObject $swis

It doesn't have to be an explicit collection like that. Any pipeline source of Uris would work.

0 Kudos
Level 9

It worked like a charm. Thanks again.

I am trying to add nodes that are currently down using the SDK and I have having some issues. When i was testing my script on a node that is up, it is added and it polls the node details. If that node goes down the status does not change. Same thing happens when i add a node that is down and when it comes back up the status stays down. Could it be because of the IPAddressGUID or the Status? Is there something i am doing wrong?

$swis = Connect-Swis

$newNodeProps = @{ EntityType="Orion.Nodes";

IPAddress="10.132.100.1";

IPAddressGUID="";

Caption="";

DynamicIP=$False;

EngineID=1;

Status=2;

UnManaged=$False;

Allow64BitCounters=$False;

SysObjectID="";

MachineType="";

VendorIcon="";

ObjectSubType="SNMP";

SNMPVersion=2;

Community="public"}

$newNodeUri = New-SwisObject $swis –EntityType "Orion.Nodes" –Properties $newNodeProps

$nodeProps = Get-SwisObject $swis -Uri $newNodeUri

$poller = @{ NetObject="N:"+$nodeProps["NodeID"]; NetObjectType="N"; NetObjectID=$nodeProps["NodeID"];}

$poller["PollerType"]="N.Details.SNMP.Generic";

$pollerUri = New-SwisObject $swis -EntityType "Orion.Pollers" -Properties $poller

$poller["PollerType"]="N.Uptime.SNMP.Generic"; $pollerUri = New-SwisObject $swis -EntityType "Orion.Pollers" -Properties $poller

$poller["PollerType"]="N.Cpu.SNMP.CiscoGen3"; $pollerUri = New-SwisObject $swis -EntityType "Orion.Pollers" -Properties $poller

$poller["PollerType"]="N.Memory.SNMP.CiscoGen3"; $pollerUri = New-SwisObject $swis -EntityType "Orion.Pollers" -Properties $poller

0 Kudos
Level 19

You need a couple more pollers: one for status and one for response time. Both of these can be done with either SNMP or ICMP. Assuming it works on your network, ICMP will generally be more accurate for response time. The PollerType values for response time are:

N.ResponseTime.ICMP.Native

N.ResponseTime.SNMP.Native

The PollerType values for Status (Up/Down) are:

N.Status.ICMP.Native

N.Status.SNMP.Native

For future questions, please create a new "Discussion" for each one. That makes it easier to keep track of what has been answered.

Level 9

Thank much. I will try that and get back to you.

0 Kudos
Level 11

How do I start? I try running some examples and I get warnings "mismatched input 'swis' expecting 'Select'". Is there a step through where I could see the order of things? I see examples of different scripts, but do I call them from SWQL Studio? Nothing I've tried has been successful.

0 Kudos
Level 13

SWQL Studio accepts a select statement that you want to run.  If you are familiar with SQL you should be able to construct a similar query in SWQL and run it SWQL Studio

The scripts provided need to be run in their respective scripting environments.  perl, powershell, python, etc...

0 Kudos
Level 11

Right on, I've been hammering the DB for information via SqlDbx and am picking it up. I'll keep working on it.

0 Kudos
Level 10

You say "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."

There are NO PDF Files in the 1.10 package.

0 Kudos
Level 19

When I install the Orion SDK, the PDF shows up in C:\Program Files (x86)\SolarWinds\Orion SDK\Documentation.

Hi,

Quick follow up to Dobb's question above. Jan stated that SDK v1.10 is fully compatible with the new 11.5/6.2 releases, and that is true. Looking at the SDK docs I don't see any way to retrieve new information about currently outstanding alerts. For instance, the Orion.AlertStatus object does not include a severity option. Is there another way that I'm missing to obtain this information? Maybe the SDK is compatible, but just hasn't caught up feature-wise with the 11.5/6.2 release.

0 Kudos