Quantcast
Channel: THWACK: Popular Discussions - Orion SDK
Viewing all articles
Browse latest Browse all 3719

Problems with QueryXml when using a more complex query with multiple tables in c# from CSClient

$
0
0

I am trying to modify the CSClient code that is provided in the SDK to fetch data via QueryXml with more than one table in the query.

The problem I am having is when I try include another table data I get this error " An unhandled exception of type 'System.NullReferenceException' occurred in CSClient.exe Additional information: Object reference not set to an instance of an object." What is the best way to fetch data based on my query so I can select individual nodes such as "alert.NodeID"  I am wanting to pull the data and insert it into a local MySQL database you see.

 

Any help or advice would be appreciated.

 

static void Main()

        {

            const string hostname = "";

            const string username = "";

            const string password = "";

           

            ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;

 

            var client = new InformationServiceClient("BasicHttpBinding_InformationService",

                                                      string.Format("https://{0}:17778/SolarWinds/InformationService/OrionBasic", hostname));

            client.ClientCredentials.UserName.UserName = username;

            client.ClientCredentials.UserName.Password = password;

            client.Open();

 

            var result = client.QueryXml("SELECT Interfaces.FullName, Interfaces.NodeID, Nodes.IPAddress FROM Orion.NPM.Interfaces INNER JOIN Orion.Nodes ON Interfaces.NodeID = Nodes.NodeID WHERE Interfaces.Status <> '1' RETURN XML AUTO", null);

 

            var element = result.XPathSelectElement("//*[local-name()='Interfaces']");

            var element2 = result.XPathSelectElement("//*[local-name()='Nodes']");

 

            var alert = new AlertInfo

            {

                FullName = element.ElementAnyNS("FullName").Value,

                NodeID = element.ElementAnyNS("NodeID").Value,

                IPAddress = element2.ElementAnyNS("IPAddress").Value,

            };

           

            var alerts = new[] {alert};

           

            var dcs = new DataContractSerializer(alerts.GetType());

            var doc = new XmlDocument();

            using (var writer = doc.CreateNavigator().AppendChild())

            {

                dcs.WriteObject(writer, alerts);

            }

 

            /*

            var arguments = new ArrayOfXmlElement {XDocument.Load(new XmlNodeReader(doc)).Root};

            var result2 = client.Invoke("Orion.AlertStatus", "Acknowledge", arguments);

            */

            //Console.Write(result2);

            Console.WriteLine("FullName: " + alert.FullName);

            Console.WriteLine("NodeID: " + alert.NodeID);

            Console.WriteLine("IPAddress: " + alert.IPAddress);

           

            client.Close();

            Console.ReadLine();

        }

 

        [DataContract(Name = "AlertInfo", Namespace = "http://schemas.solarwinds.com/2008/Orion")]

        public class AlertInfo

        {

            [DataMember(Order = 1)]

            public string FullName;

 

            [DataMember(Order = 2)]

            public string NodeID;

 

            [DataMember(Order = 3)]

            public string IPAddress;

        }


Viewing all articles
Browse latest Browse all 3719

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>