Run OpenPDC Windows App in a Container on Linux

Hi everyone,
We’ve a use case where we’re making use of OpenPDC and its adapters to stream measurements. The app works fine on a Windows machine to output the data.

We tried installing OpenPDC on a Linux system but couldn’t do it due to some complications and found using and configuring the Windows version much easier.

We’re looking for a solution to run it on a Linux machine in a container.
Please suggest a way to do it if you’ve implemented.
Thanks.

Hi vijayj,

All experiments to run openPDC on Linux to-date have been done using Mono to compile and run the application. It appears to me that the last time anyone at GPA attempted this installation was against v2.5 so that would have been back sometime in 2018. The latest version of the source code may need some fairly significant adjustments in order to get it running on Linux again, but you may be able to get this to work fairly easily against v2.5 or earlier. Note that even if you do get it working, you will likely not be able to run openPDC Manager on a Linux system since it is a WPF application.

With the disclaimer out of the way, here is the page with links to all the relevant documentation.
https://github.com/GridProtectionAlliance/openPDC/blob/master/Source/Documentation/wiki/Running_openPDC_on_Linux_and_Mac.md

Thanks,
Stephen

Hi Stephen,

We’ve used all the inputs you’ve provided so far and moved on to loading data to a secured Kafka cluster.
The cluster is secured with SSL and TLS and needs to be authenticated with signed certificates.
We’ve generated and can used certificates on the machine where we’ve OpenPDC installed.
We can also produce and consume messages using sample consoles outside OpenPDC.

But when we use the adapter to send messages to the same topic, we get following errors.
" Exception while sending Kafka messages to the topic topic-name: Unable to query metadata from any of the default Kafka servers.
At least one server must be available. Server list: Misakai.Kafka.KafkaConnection"

" Message: WARNING: Failed to contact Kafka server=http://brokers.kafka-test.server-name.no:9093/. Trying next default server. Exception=System.AggregateException: One or more errors occurred. —> Misakai.Kafka.ResponseTimeoutException: Timeout Expired. Client failed to receive a response from server after waiting 00:00:30ms.
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Misakai.Kafka.KafkaConnection.d__01.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification)
at Misakai.Kafka.KafkaMetadataProvider.GetMetadataResponse(IKafkaConnection[] connections, MetadataRequest request)"

It’s suspected that it’s due to the lack of certificate details in the request that’s sent from the Kafka adapter.
We’ve checked the KafkaProducerAdapter code on Git and don’t see any details about certificate or authentication.
Is there any properties we can include as part of the connection string to authenticate the client?

We use the below properties in the producer and consumer config file:

security.protocol=SSL
security.inter.broker.protocol=SSL
ssl.keystore.location=C:/Users/abc/Desktop/certificates/cert.p12
ssl.keystore.password=***
ssl.truststore.location=C:/Users/abc/Desktop/certificates/cert-truststore.jks
ssl.truststore.password=***

Thanks a lot,
Vijay