Skip to content
DataMiner DoJo

More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in posts
Search in pages
Search in posts
Search in pages
Log in
Menu
  • Blog
  • Questions
  • Learning
    • Courses
    • Certification
      • DataMiner Operator
      • DataMiner Administrator
      • DataMiner Automation
      • Scripts & Connectors Developer: HTTP Basics
      • Scripts & Connectors Developer: SNMP Basics
      • Visual Overview – Level 1
    • Video Library
    • Books We Like
    • Third-party Courses
    • DevOps Enablement Services
    • Quizzes
  • RESOURCES
  • Agile
    • Agile Webspace
    • Everything Agile
      • The Agile Manifesto
      • Best Practices
      • Retro Recipes
    • Methodologies
      • The Scrum Framework
      • Kanban
      • Extreme Programming
    • Roles
      • The Product Owner
      • The Agile Coach
      • The Quality & UX Coach (QX)
  • Expert Hubs
    • DataMiner DevOps Professional Program
    • DataMiner
      • DataMiner Releases & Updates
      • System Architecture
      • Integration Studio
      • Visual Overview
      • Security
    • Technologies
      • CI/CD
      • Converged Interconnect Networks
      • DOCSIS 3.1 / DAA
      • Elasticsearch
      • Kubernetes
      • Telemetry / Flow Monitoring
      • PTP
      • SDN / ST2110 / NMOS
    • Business
      • Software Business models
      • Perpetual Use or Usage-based Services
  • Discover
    • Markets
      • Media production
      • Government & defense
      • Content distribution
      • Service providers
      • Partners
      • OSS/BSS
    • Solutions
    • Use Case Library
    • DataMiner Dashboards
    • DataMiner Downloads
    • DataMiner Modules
      • Core features
      • SRM features
    • DataMiner Apps
    • Professional Services
  • PARTNERS
    • All Partners
    • Technology Partners
    • Strategic Partner Program
    • Deal Registration
  • Pricing
  • More
    • Feature Suggestions
    • Online DataMiner Systems
    • Leaderboard
    • Swag Shop
    • Contact
      • General Inquiries
      • DataMiner DevOps Support
      • Commercial Requests
    • Global Feedback Survey
    • Verify a certificate
  • >> Go to dataminer.services

How to retrieve a class that implements IDms with the IGQIOnInit?

Solved177 views26th July 2023GQI IDms
1
Michiel Saelen [SLC] [DevOps Enabler]3.91K 5th July 2023 0 Comments

We have created libraries that make use of the IDms class library. These libraries provide interfaces/classes that make sense to the solution. These libraries can then be used in Automation Scripts, Protocols and external tools in C# code.

In order to reuse these libraries in our ad-hoc data sources, we want to retrieve an object that implements the IDms interface as provided by Skyline.DataMiner.Core.DataMinerSystem.Common library. We would like to retrieve the object from the IGQIOnInit | DataMiner Docs method. The GQIDMS class does not implement any interface and IMO would make more sense that the class implements the IDms interface as this is now the most common way to retrieve information from a DMS.

With the current features available, what is the best way to get an object that implements the IDms interface from the IGQIOnInit method?

Michiel Saelen [SLC] [DevOps Enabler] Selected answer as best 26th July 2023

1 Answer

  • Active
  • Voted
  • Newest
  • Oldest
1
Tom Waterbley [SLC] [DevOps Enabler]2.78K Posted 5th July 2023 4 Comments

Hi Michiel, currently there is no straightforward way to get an IDms object in the IGQIOnInit method. However, by creating a class that implements the ICommunication interface, based on the GQIDMS you can get close. Unfortunately the GQIDMS object lacks methods to use subscriptions, so it could be that certain functionality doesn't work.

public class DataSource : IGQIOnInit
{
public OnInitOutputArgs OnInit(OnInitInputArgs args)
{
var dms = DmsFactory.CreateDms(new GqiConnection(args.DMS));

}

}

public class GqiConnection : ICommunication
{
private readonly GQIDMS _gqiDms;

public GqiConnection(GQIDMS gqiDms)
{
_gqiDms = gqiDms ?? throw new ArgumentNullException(nameof(gqiDms));
}

public DMSMessage[] SendMessage(DMSMessage message)
{
return new[] { _gqiDms.SendMessage(message) };
}

public DMSMessage SendSingleResponseMessage(DMSMessage message)
{
return _gqiDms.SendMessage(message);
}

public DMSMessage SendSingleRawResponseMessage(DMSMessage message)
{
return _gqiDms.SendMessage(message);
}

public void AddSubscriptionHandler(NewMessageEventHandler handler)
{
throw new NotImplementedException();
}

public void AddSubscriptions(NewMessageEventHandler handler, string handleGuid, SubscriptionFilter[] subscriptions)
{
throw new NotImplementedException();
}

public void ClearSubscriptionHandler(NewMessageEventHandler handler)
{
throw new NotImplementedException();
}

public void ClearSubscriptions(NewMessageEventHandler handler, string handleGuid, bool replaceWithEmpty = false)
{
throw new NotImplementedException();
}
}

Michiel Saelen [SLC] [DevOps Enabler] Selected answer as best 26th July 2023
Tom Waterbley [SLC] [DevOps Enabler] commented 6th July 2023

Another option could be to use the static “Engine.SLNetRaw” property, but not sure if that works or not:
var dms = DmsFactory.CreateDms(new RemotingCommunication(Engine.SLNetRaw));

Michiel Saelen [SLC] [DevOps Enabler] commented 7th July 2023

Hi Tom,
I was able to compile from the automation module and the source is available on my dashboards, however when I select it I get the following error:
Error trapped: Error thrown in implementation of OnInit: Could not load file or assembly ‘SLManagedAutomation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. An attempt was made to load a program with an incorrect format.

Emir Varupa [SLC] [DevOps Advocate] commented 21st July 2023

Hello Tom,

Seems like this method will only work if you have single responses from the SLNet calls.
For example: The GetElements will only return one element currently.

Michiel Saelen [SLC] [DevOps Enabler] commented 26th July 2023

FYI: If you change the DMSMessage[] SendMessage() implementation to return _gqiDms.SendMessages(message) instead it will work.

Please login to be able to comment or post an answer.

My Dojo Points

0 Credits
0 Reputation

Question Tag Cloud

adl2099 (54) Alarm Console (53) alarms (70) alarm template (58) API (35) Automation (144) automation scipt (65) Automation script (95) backup (54) Cassandra (142) cloud (37) Connector (44) Correlation (42) Cube (114) Dashboard (134) Dashboards (136) database (64) DataMiner Cube (37) DIS (53) DMS (48) DOM (68) driver (48) DVE (43) Elastic (73) Elasticsearch (99) elements (49) Failover (90) GQI (51) HTTP (45) IDP (55) low code app (70) low code apps (43) MySQL (50) protocol (145) QAction (58) resources (35) security (71) SNMP (56) SRM (267) SRM resources (39) timeout (35) trending (66) upgrade (44) Visio (373) Visual Overview (290)
Privacy Policy • Terms & Conditions • Contact

© 2023 Skyline Communications. All rights reserved.

[ Placeholder content for popup link ] WordPress Download Manager - Best Download Management Plugin