Profile

Tom Waterbley

User info

First name Tom
Last name Waterbley

DevOps Program

Acquired rank
Enabler
Points progress
Number of DevOps Professional Points
5108 DevOps Points
Here are a few tips to level up your DevOps game and unlock an arsenal of perks and benefits.
DevOps attestation Request your attestation ID and expiry date

Achievements

Questions asked

Answers given

Hi Shawn, this is actually a very good question. Logging is very important to be able to quickly pinpoint the problem when something goes wrong. Your assumption that each level contains the lower level...

View Question

Hi Arne, when the device doesn't have a blocking call that only returns when the new data is ready, I don't think there are many alternatives. What you could try is to put the get requests also in a faster...

View Question

Hi Edib. As Laurens already mentioned, there could be a small performance impact when using SLProtocolExt, because some objects are being allocated. However the impact is probably very small and will almost...

View Question

Hi Alex, would try to use the partialSNMP option on those tables. Then DataMiner will only fetch x rows at a time, and allow to perform other things inbetween.

View Question
11 Votes Selected

In case you want to retrieve only one cell of a table GetParameterIndexByKey() is exactly what you need, and the most performant call.

View Question
11 Votes Selected

The following services are currently supported by the CloudWatch driver: Amazon AWS CloudWatch - API Gateway Amazon AWS CloudWatch - Direct Connect Amazon AWS CloudWatch - EC2 Amazon AWS CloudWatch -...

View Question
11 Votes Selected edited answer

DVEs are by default not set into timeout when the main element is set into timeout. If you want an automatic timeout on the DVE when the main element is in timeout, you have to specify the following in...

View Question

Hi Oliver, see the note at the bottom of the following page: https://docs.dataminer.services/user-guide/Advanced_Modules/Correlation/Adding_rule_actions/Running_an_Automation_script_from_a_Correlation_rule.html...

View Question
9 Votes

Hi Apurva, That can easily be done by draging one of the columns of your GQI data source into the grouping feature of the table component:

View Question
8 Votes Selected

Hi Stijn, when choosing a profile instance, the values of the base instance will also be taken into account. Lower level profile instances overwrite values of higher level/base instances. The parameters...

View Question
8 Votes Selected edited answer

Hi Stijn, there are several possibilities for this error message. 1) project has been built in release mode instead of debug mode 2) symbols haven't been loaded because the script hasn't run yet. The...

View Question

Hi Joey, I believe this can be done by installing the SRM package as an upgrade package in System Center.

View Question
7 Votes Selected

Hi, this could indeed be done by letting the correlation rule trigger an automation script. That script receives the necessary information from the correlation engine, including the element ID and name....

View Question
7 Votes Selected

Hi Ross, the email address based on UserLoginName, can be obtained using the following code: var req = new GetInfoMessage { Type = InfoType.SecurityInfo }; var userInfoResponse = (GetUserInfoResponseMessage)engine.SendSLNetSingleResponseMessage(req);...

View Question
7 Votes Selected

Hi Apurva, Sorry for the late answer, but we saw that your second question was not answered yet. To retrieve a list of parameters and their IDs, a GQI custom data source is needed. I’ve quickly created...

View Question
6 Votes

Hi Manuel, To use the UTF-8 character set, the unicode option indeed needs to be activated in the Type tag. In addition, it's also required to specify that the incoming SNMP data is encoded in UTF8,...

View Question
6 Votes Selected

Hi Alex, To solve this, you could create a new table that's linked to the multithreaded timer, instead of combining it with the already existing table. In that new table you could add rows for every request...

View Question
6 Votes Selected

Hi Edib, this can be achieved by using a static dictionary, with the element ID as key. I once created the following class to make this more generic and easy to use: https://gist.github.com/TomW-Skyline/805c689e62f0362d845ced2829a91aa1....

View Question

Hi Michiel, according to RN18279, this error is only raised when trying to save a ServiceReservationInstance or ServiceReservationDefinition that has the same name and overlapping timerange with another...

View Question
6 Votes Selected

Hi Jens, the following method can be used to acknowledge the alarm. If a user launches the script manually or attaches to it interactively, that user will become the owner of the alarm. If the script runs...

View Question

Hi Ladan, the IsSslTlsEnabled property was added to the ElementPortInfo class in DataMiner version 10.0.1.0 (see RN22873). DIS is using the DLL files from the local DataMiner installation to compile the...

View Question
6 Votes Selected

Hi Ana, Maybe an alternative could be to create a ZIP file with the selected files and download that instead?

View Question
5 Votes Selected

Hi Chian, In your connector you could use 'Monitors' to subscribe on element state changes. This is described on the following page: https://docs.dataminer.services/develop/devguide/ClassLibrary/ClassLibraryMonitorsGettingStarted.html....

View Question
5 Votes

Hi Ryan, Using protocol.ShowInformationMessage() you can display a message to the user, but it indeed only has an OK button. Unfortunate it's currently not possible to build and show a custom UI. As...

View Question
5 Votes Selected

Hi Jens, You can retrieve it from the following property: Engine.SLNetRaw.ServerDetails.AgentID

View Question
5 Votes Selected

Hi Sebastian, this is possible using the AllowedFileNameExtensions property since DataMiner version 10.1.12, see https://docs.dataminer.services/develop/api/types/Skyline.DataMiner.Automation.UIBlockDefinition.AllowedFileNameExtensions.html....

View Question

Hi Alex, creating a dmapp package is only available when saving a single script, not when saving multiple scripts. When the xml file of a script is active in Visual Studio, the File > "Save Compiled...

View Question
5 Votes

Hi Maxime, the elements list-view on a view card has a column called "Impacted Services". This column provides a list of services the item is included in. This list can also be exported to a CSV file...

View Question
5 Votes Selected edited answer

Hi Joachim, could you please try with <RawType>numeric text</RawType> instead of <RawType>unsigned number</RawType>. At the bottom of the following page, there is an example that...

View Question
5 Votes Selected

Hi Michiel, what I typically do is creating a static field in that QAction. The value of that field is shared across all elements on that DMA. Best is to use a ConcurrentDictionary with the element ID...

View Question

Hi Martijn. Visual Studio for Mac is a completely different product, and doesn't support extensions. So DIS is also not supported on it. Visual Studio for Mac is actually originally based on Xamarin Studio...

View Question
5 Votes Selected

Hi Robin, first of all maybe check if there is no option that can be added to the initial GET /inputs to let it also return all details instead of only the basic list. On some APIs that option exists....

View Question
5 Votes Selected

";" and "|" are indeed used as separators between the different headers and their values, and cannot be used in the values. As far as I know they can also not be escaped. We will need to look into that....

View Question

More information about the CS1692 warning can be found here: https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs1692. Apparently the code in that QAction uses "#pragma warning disable <number>"...

View Question
5 Votes Selected

Hi Vig, The value -9999 is probably an exception value that is defined in the protocol. That value is being used internally to represent N/A in the numeric parameter. With API I assume that you're talking...

View Question

Hi Steve, see the following page in our docs which explains what to do in case the system does not have an indexing database configured: https://docs.dataminer.services/user-guide/Troubleshooting/Known_issues/KI_Upgrade_fails_VerifyElasticStorageType_prerequisite.html?q=VerifyElasticStorage#fix

View Question

Hi Thomas, The DiscreteCapability filter can be used as follows: // Get all resources with a certain discrete option var encodingQualityParameterId = Guid.Parse("..."); // GUID of the profile...

View Question

Hi Julian, NotifyProtocol 168 is executed behind the scenes when the keys of a table are being retrieved. Probably there is somewhere a GetKeys() call with a non-existing table ID. ClearAllKeys() is another...

View Question

Hi Samson, Yes, (almost) all C# code works in automation scripts and connectors within DataMiner. StreamReader certainly works (using System.IO). Your CSVReader 3rd party library will also work if it's...

View Question
4 Votes Selected

Hi Jens, for debugging purposes you could serialize the object to a JSON string and log that.

View Question
4 Votes Selected

Hi Vish, All reservations can be retrieved by providing a TrueFilterElement as filter: var reservations = SrmManagers.ResourceManager.GetReservationInstances(new TRUEFilterElement<ReservationInstance>());...

View Question

Hi Maximiliano, See Deleting a custom alarm property in the documentation.

View Question
4 Votes

Hi Tobe, A history set, without using the hardcoded parameter ID, can be done as follows: protocol.SetParameter(Parameter.ParameterName, value, time);

View Question
4 Votes Selected

Hi Punit, Uploading files to Amazon AWS S3 can be done using the "Amazon AWS S3 File Upload" connector. A source directory can be configured in the element. When new files are placed in that directory,...

View Question
4 Votes Selected edited answer

Hi Jens, I always use this code to wrap the text after a specific number of characters. Usage: var wrapped = WrapText.Wrap(text, 150);

View Question
4 Votes Selected

Hi Manuel. I suspect that the QAction hasn't been executed yet since the QAction DLL is not visible in the modules window. It's normal to see that warning before the first execution of the QAction. Symbols...

View Question
4 Votes Selected

Hi Jens, see https://docs.dataminer.services/user-guide/Reference/Skyline_DataMiner_Folder/More_information_on_certain_files_and_folders/Hyperlinks_xml.html#filterelement. This optional attribute can...

View Question
4 Votes

Didn't test this yet, but another approach that might work is to let the script lock the elements it needs. Probably you'll need to call another subscript with the elements as input.

View Question
4 Votes

Hi Zheng. If another administrator still has access to the system, the easiest way to reset the password will be to ask that administrator to change it to something new. As far as I know the user cannot...

View Question
4 Votes Selected

Hi Philip, as far as I know there is no way to execute CheckTrigger from outside the protocol itself. As a temporary solution, until a better fix is available, you could maybe add a dummy parameter to...

View Question
4 Votes Selected

Hi Miguel, Maybe this could be done using Microsoft Power Automate. After a quick search I found the following template that allows to send a Whatsapp message after clicking a button. Maybe it can be...

View Question
4 Votes Selected

The preferred way is to do the communication in a connector, as Thijs already mentioned. If that's not desired, storing the credentials in "Windows Credential Manager" could be an option. See https://www.techradar.com/news/what-is-windows-credential-manager....

View Question
4 Votes Selected

Hi Miao, Reading a cell value from a table can be done as follows. It doesn't matter if it's a virtual element or not. public void Run(Engine engine) { var elementName ="my element"; var element = engine.FindElement(elementName);...

View Question
4 Votes Selected

Hi Alex, subscriptions are automatically recreated when the element (re)starts. Also after a DMA restart they are recreated. Nothing special needs to be done, you'll just start receiving updates again....

View Question
4 Votes Selected

Hi Jens, I think you can retrieve all that information from the information events, except maybe the dashboard/application changes. This would require a custom report to generate it. Another possibility...

View Question
4 Votes Selected

Hi Jens, see the following page for an explination on how to determine the installed .NET versions. Unfortunately it's not very straigtforward for versions >= 4.5. https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed...

View Question

Hi Ryan, would it please be possible to share the settings of the DMA that you've filled in on DIS? Normally you only need to fill in the IP address, without port number. The port number should automatically...

View Question
4 Votes Selected edited answer

Hi Joerg, could it be that there is a problem with the license of DIS? Most of those menu items are only disabled when DIS is not activated.

View Question
4 Votes Selected

Hi Samson, When DataMiner needs to interact with a third-party device or system this is typically being done using a connector. In that connector you can send and receive data and store the results in...

View Question
3 Votes

Hi Sebastian, As far as I know this is not possible. The HTML would also not be rendered if the automation script was being run from Cube. Feel free to post a feature suggestion for this. It would indeed...

View Question
3 Votes Selected

Hi Pawel, Let me try to answer your questions: Your code will probably work, but better would be to construct the whole object before calling the Build() method. The SetFieldValue method can be replaced...

View Question
3 Votes Selected

Hi Alex, the device should indeed not send the same binding twice, and unfortunately this is causing problems the code that parses the trap. I've quickly fixed it in the Skyline.DataMiner.Utils.SNMP.Traps.Protocol...

View Question
3 Votes Selected

Hi Paul, This is the full list of protocol types. Will also add this to the documentation. 1 - SNMP 2 - Serial 3 - Smart-serial 4 - Virtual 5 - GPIB 6 - OPC 7 - SLA 8 - SNMPv2 9 - SNMPv3 10 - HTTP 11...

View Question

Hi Aditiben, To show all values in a dictionary you could use the DropDown component. Create the dropdown control and add it to the UI: var dropdown = new DropDown(); dropdown.Options = new[] { "Option...

View Question

Hi Mieke, A datetime parameter is internally stored as an "OLE Automation date" (double) that is defined as follows: An OLE Automation date is implemented as a floating-point number whose integral component...

View Question

Hi Mieke, I’m not aware of a way to retrieve this data directly from the database. That would also depend on the type of database being used. Instead of retrieving the table cells one by one, you could...

View Question
3 Votes Selected

Hi, what you noticed is looks like a bug. Changing the visibility of separators is probably not supported yet. Would propose to create an internal task to have this solved.

View Question
3 Votes Selected

Hi Apurva, It's indeed currently not very straightforward to use the DMS classes in a GQI data source. The trick is to create a class that implements the ICommunication interface. This can be found here....

View Question
3 Votes Selected

Hi Robin, this is actually an internal error that happens within DIS which is not necessarily caused by something in your connector or QActions. Would it please be possible to check if you have the latest...

View Question
3 Votes

Hi, in an automation script you have the flexibility of running any C# code. In this case I think it's preferred to make use of the API methods provided by Amazon AWS itself. Some code examples can be...

View Question
3 Votes Selected

Hi German, As far as I'm aware, it's currently not possible to close the popup window of an interactive automation script. This is by design, the window remains open while the interactive script is running....

View Question

Hi Koen, it looks like some DLLs are missing in the "C:\Skyline DataMiner\ProtocolScripts\" folder. The Newtonsoft and Json* types require the Newtonsoft.Json.dll file. If NuGet packages were used in one...

View Question
3 Votes

Hi Thato, it's great to see your interest in the Arista DataMiner connector! Will try to answer your questions: The "Save Run. Config" button can be used to save the running configuration to the startup...

View Question
3 Votes Selected

Hi Diego, That parameter is being copied from the "Signal Noise" column (PID 1602) in "Signal Quality Table". The OID is 1.3.6.1.2.1.10.127.1.1.4.1.5.

View Question
3 Votes Selected

Hi Arne, what's the timeout time that is currently configured on the element? Maybe try to increase that value, to see if that solves the problem. If it does, you could use <Session ignoreTimeout="">...

View Question
3 Votes Selected edited answer

Hi Koen, it's strange that there were no other alarms besides the element state itself. Maybe as a first step you could look in the alarm template which other parameters have a threshold defined for the...

View Question
3 Votes Selected

Would create a connector for this use case. In a QAction you could spin up a new thread that keeps collecting new events. New events are stored in a (concurrent) queue, using your code in the question....

View Question

Hi Simone, that can be done relatively easy using the class library: var dms = engine.GetDms(); var e = dms.GetElement("MyElement"); var isInView = IsInView(e, "MyView"); public bool IsInView(IDmsElement...

View Question

The protocol.GetParameter() method call returns the value as string, but stops at the first zero byte (0x00). The following method can be used to retrieve the raw bytes that were received: public static...

View Question
3 Votes Selected

Hi Henrique. I don't know if there is a way add the IP address next to the element names in the surveyor. But if you open a card of a view, and go the the "below this view" section, you can find a list...

View Question

This kind of exceptions typically occur when not all updates of Visual Studio are installed. Would it please be possible to check if there are updates available? These are currently the latest version:...

View Question
3 Votes Selected edited answer

Hi Fenta, At first sight there is indeed no specific call to retrieve "HostRuntimeInfo". But he page you are referring to mentions that it is a property of the HostListSummary and HostSystem classes. HostSystem...

View Question

Hi Jeroen, The element should contain a table from which a DVE is created for every row. That table has a column that contains the element ID of the DVE. Probably you could use the rows in that table...

View Question
2 Votes

Hi Robin, Only one debugger can be connected to a process at the same time. The error message indicates that another debugger is already connected to the SLScripting process. Maybe check if there is no...

View Question
2 Votes Selected

Hi Miao, That should indeed be possible according to this. parameter(DMAID, elementID, parameterID, rowindex) parameter(7,56,110,SLDataMiner) The last argument in the parameter function call is the primary...

View Question
2 Votes Selected

Hi Jon, it should be possible to set the correct value by using parameter ID 1059 instead of 1009 as follows: element.SetParameterByPrimaryKey(1059, "key", value); Alternatively you could also set the...

View Question
2 Votes Selected

Hi Thomas, I'm not sure if you've already tried it, but if the problem is caused by a long-running qaction, this can typically be solved by using the 'queued' option. When this option is activated the...

View Question
2 Votes

Hi Mariana, Next to the <Name> tag in the XML file of the automation script there is a little arrow. When you click on that arrow a menu opens with the option to rename the script. This also renames...

View Question

Hi Hideyuki, As Edib already mentioned, ascii is a subset of unicode so you should be able to receive it in the same parameter. Strings are being terminated by a 0x00 byte though, so maybe check if that...

View Question
2 Votes Selected

Hi Jelle, When the Content-Type header doesn't contain a charset, the data is automatically encoded as UTF-8. In this case that's not desired because you want to send the raw binary data without any conversions....

View Question
2 Votes Selected

Hi William, this is probably what you're looking for: https://docs.dataminer.services/develop/devguide/Connector/AdvancedDcf.html

View Question
2 Votes Selected

Hi Vincenzo. The exception means that the type 'Text' couldn't be found in the SLManagedAutomation assembly. The strange thing is that it also shouldn't be loaded from that assembly, and your code on...

View Question

Hi Stephane. These errors can probably be found in the log file of the element.

View Question
2 Votes Selected

Hi Seetharam, To export the information events you could select all events and choose Copy > All Columns in the right-click context menu. Then you can paste this data in Excel and save the file. More...

View Question

Hi Jason, I'm affraid this is currently not possible. Would propose to add a new feature request for this.

View Question
2 Votes Selected

Hi Richard, See https://docs.dataminer.services/develop/TOOLS/DIS/Installing_and_configuring/Prerequisites.html#communication.

View Question
2 Votes Selected

Hi Wale, never used it myself but can probably be done as follows: var reservation = _bookingManager.CreateNewBooking(engine, bookingData, functions, null, properties); reservation.SecurityViewIDs = new...

View Question
2 Votes Selected

Hi Jason, starting from DMA version 10.0.5 (main 10.1.0), SVG icons are supported in function protocols and CustomIcons.xaml (RN 24841). Edit: Unfortunately this doesn't work for other protocol icons.

View Question

Hi Henri, that information can be retrieved using the following two properties: Engine.SLNetRaw.ServerDetails.ClusterName Engine.SLNetRaw.ServerDetails.AgentName More documentation: https://docs.dataminer.services/develop/api/types/Skyline.DataMiner.Net.ServerDetails.html

View Question

Hi Ken, The groups that are shown in the stream viewer depend on how they are defined in the connector itself. They show the data that is retrieved in each particular group, but this will be different...

View Question
2 Votes Selected
Load more answers