User info
First name | Tom |
Last name | Waterbley |
DevOps Program
Acquired rank |
Catalyst
|
Points progress |
15277
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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionIn case you want to retrieve only one cell of a table GetParameterIndexByKey() is exactly what you need, and the most performant call.
View QuestionThe 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 QuestionDVEs 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi Joey, I believe this can be done by installing the SRM package as an upgrade package in System Center.
View QuestionHi, 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 QuestionHi 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 QuestionHi Mieke, in automation scripts you can also use the same method to store data in memory as in QActions. Static fields and properties of classes are kept in memory during the lifetime of the SLAutomation...
View QuestionHi 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 QuestionHi Jens, You can retrieve it from the following property: Engine.SLNetRaw.ServerDetails.AgentID
View QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi Manuel, What you're looking for is GetInfoMessage with InfoType.ElementInfo. var request = new GetInfoMessage(InfoType.ElementInfo); var responses = dms.SendMessages(request); var elements = responses.OfType<ElementInfoEventMessage>();...
View QuestionHi Mahito, The root cause why the 'Merge LCA themes' script sometimes fails has been identified. It appears that it can fail because no themes JSON file exist yet on the system. We now fixed this in...
View QuestionHi Ana, Maybe an alternative could be to create a ZIP file with the selected files and download that instead?
View QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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";" 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 QuestionMore 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 QuestionHi Ken, Please see the following answer on a similar question: https://community.dataminer.services/question/alarm-console-what-are-the-difference-between-an-alarm-font-regular-or-italic/answer/126786/
View QuestionHi Hans, If the order of execution is important you could use an interactive automation script to do the sets. In that script you could then also check if the VLAN was properly removed before adding the...
View QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi Jens, for debugging purposes you could serialize the object to a JSON string and log that.
View QuestionHi Vish, All reservations can be retrieved by providing a TrueFilterElement as filter: var reservations = SrmManagers.ResourceManager.GetReservationInstances(new TRUEFilterElement<ReservationInstance>());...
View QuestionHi Tobe, A history set, without using the hardcoded parameter ID, can be done as follows: protocol.SetParameter(Parameter.ParameterName, value, time);
View QuestionHi 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 QuestionHi Jens, I always use this code to wrap the text after a specific number of characters. Usage: var wrapped = WrapText.Wrap(text, 150);
View QuestionHi 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 QuestionHi 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 QuestionDidn'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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionThe 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi Sam, Unfortunately, this is not directly possible. However there are a few other approaches to achieve what you want: Create a visual overview and show/hide the parameter based on the other parameter....
View QuestionHi, The datetime columns are formatted using the regional settings that are configured on the client. The date and time format can be different for every user on the system. For that reason I don't think...
View QuestionHi Benjamin, What you could try to do is importing the certificate on the DataMiner server that is hosting the element. This will make the system recognize it as a trusted certificate. The following page...
View QuestionHi João, The easiest way is to use the class library. More information can be found here. Using that library you can retrieve the element, and create a duplicate of it with another name. var dms = engine.GetDms();...
View QuestionHi Alex, When data is being sent in a smart-serial element that is configured as server, it's broadcasted to all connected clients. So maybe there are no clients connected on the connection you are using...
View QuestionHi Thijs, I'm afraid there is no other way to distinguish between a fail and success ScriptAbortException. Both ExitSuccess() and ExitFail() only seem to set the message in the exception, so there is...
View QuestionHi Koen, I think you'll indeed need an ad-hoc data source to access the (custom) properties of bookings. A few examples can be found on GitHub: https://github.com/SkylineCommunications/SLC-GQIDS-BookingsWithProperties
View QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi, 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 QuestionHi 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 QuestionHi 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 QuestionHi, 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionHi 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 QuestionWould 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 QuestionHi 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 QuestionThe 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 QuestionHi 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 QuestionThis 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 QuestionHi 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 QuestionHi Stacey, since you are already working with the trapInfo object (allBindingInfo), you could use the TrapInfo.FromTrapData(trapInfo) method to parse the data. Then the 'object name' should be available...
View QuestionHi Santiago, I'm not aware of a way to sort descending instead of ascending. A possible workaround is to add an additional (hidden) column with the values in opposite order to sort on.
View QuestionHi German, Your code seems fine at first sight. Multiple subscriptions/watchers is supported. The source of the changes for the realtime updates in an ad-hoc data source actially doesn't matter. How...
View QuestionHi Carlos, Since the GetNextPage method might be called multiple times to retrieve several pages, I think it's not recommended to subscribe and unsubscribe in that method. I also don't immediately see...
View QuestionHi Stijn, That error probably means the BPA assembly was not signed. The (internal) procedure to get a BPA signed can be found here.
View Question