summaryrefslogtreecommitdiffstats
path: root/recipes-connectivity/kuksa-val
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-connectivity/kuksa-val')
-rw-r--r--recipes-connectivity/kuksa-val/can-dev-helper/can-dev-helper.sh2
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch141
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-client/0002-kuksa-client-Add-external-certificates-support.patch51
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-client_git.bb (renamed from recipes-connectivity/kuksa-val/kuksa-viss-client_git.bb)6
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0001-dbc2val-add-installation-mechanism.patch259
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch86
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-fix-token-file-configuration-option.patch32
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder/config.ini33
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb11
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-val-agl-demo-cluster/kuksa-val.env2
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-val-agl.bb6
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-val-agl/kuksa-val.env2
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-val.inc4
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-val/0003-Make-install-locations-configurable.patch39
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-viss-client/0001-kuksa_viss_client-Update-cmd2-completer-usage.patch105
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-viss-client/0002-kuksa_viss_client-Add-external-certificates-support.patch109
16 files changed, 333 insertions, 555 deletions
diff --git a/recipes-connectivity/kuksa-val/can-dev-helper/can-dev-helper.sh b/recipes-connectivity/kuksa-val/can-dev-helper/can-dev-helper.sh
index 69dc62831..d57604c07 100644
--- a/recipes-connectivity/kuksa-val/can-dev-helper/can-dev-helper.sh
+++ b/recipes-connectivity/kuksa-val/can-dev-helper/can-dev-helper.sh
@@ -25,7 +25,7 @@ fi
# Ideally the parsing would take the "[can]" section into
# account, but this should work for now.
-interface=$(grep ^port= $CONF |cut -d= -f2 |tr -d '"')
+interface=$(sed -nr '/\[can\]/,/\[/{s/^port *= *//p}' $CONF)
if [ -n "$interface" ]; then
echo "Checking $interface"
if ! ifconfig $interface >/dev/null 2>&1; then
diff --git a/recipes-connectivity/kuksa-val/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch b/recipes-connectivity/kuksa-val/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch
new file mode 100644
index 000000000..55e9cc2cb
--- /dev/null
+++ b/recipes-connectivity/kuksa-val/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch
@@ -0,0 +1,141 @@
+From ea0b48b9a900e9ce6d898fc5d17ae3238aadb289 Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+Date: Tue, 2 May 2023 16:20:40 -0400
+Subject: [PATCH 2/2] kuksa_viss_client: Update cmd2 completer usage
+
+Update cmd2 usage to avoid using internal methods and fix breakage
+with newer versions of the cmd2 module.
+
+Upstream-Status: pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ kuksa-client/kuksa_client/__main__.py | 31 +++++++++++++--------------
+ 1 file changed, 15 insertions(+), 16 deletions(-)
+
+diff --git a/kuksa-client/kuksa_client/__main__.py b/kuksa-client/kuksa_client/__main__.py
+index c34f335..d386708 100755
+--- a/kuksa-client/kuksa_client/__main__.py
++++ b/kuksa-client/kuksa_client/__main__.py
+@@ -34,7 +34,6 @@ from cmd2 import Cmd
+ from cmd2 import CompletionItem
+ from cmd2 import with_argparser
+ from cmd2 import with_category
+-from cmd2.utils import basic_complete
+
+ import kuksa_certificates
+ from kuksa_client import KuksaClientThread
+@@ -122,7 +121,7 @@ class TestClient(Cmd):
+ "Children of branch "+prefix+key),
+ )
+
+- return basic_complete(text, line, begidx, endidx, self.pathCompletionItems)
++ return Cmd.basic_complete(self, text, line, begidx, endidx, self.pathCompletionItems)
+
+ def subscribeCallback(self, logPath, resp):
+ with logPath.open('a', encoding='utf-8') as logFile:
+@@ -132,7 +131,7 @@ class TestClient(Cmd):
+ self.pathCompletionItems = []
+ for sub_id in self.subscribeIds:
+ self.pathCompletionItems.append(CompletionItem(sub_id))
+- return basic_complete(text, line, begidx, endidx, self.pathCompletionItems)
++ return Cmd.basic_complete(self, text, line, begidx, endidx, self.pathCompletionItems)
+
+ COMM_SETUP_COMMANDS = "Communication Set-up Commands"
+ VSS_COMMANDS = "Kuksa Interaction Commands"
+@@ -149,7 +148,7 @@ class TestClient(Cmd):
+ ap_authorize.add_argument(
+ 'token_or_tokenfile',
+ help='JWT(or the file storing the token) for authorizing the client.',
+- completer_method=tokenfile_completer_method,)
++ completer=tokenfile_completer_method,)
+ ap_setServerAddr = argparse.ArgumentParser()
+ ap_setServerAddr.add_argument(
+ 'IP', help='VISS/gRPC Server IP Address', default=DEFAULT_SERVER_ADDR)
+@@ -164,7 +163,7 @@ class TestClient(Cmd):
+
+ ap_setValue = argparse.ArgumentParser()
+ ap_setValue.add_argument(
+- "Path", help="Path to be set", completer_method=path_completer)
++ "Path", help="Path to be set", completer=path_completer)
+ ap_setValue.add_argument("Value", help="Value to be set")
+ ap_setValue.add_argument(
+ "-a", "--attribute", help="Attribute to be set", default="value")
+@@ -181,19 +180,19 @@ class TestClient(Cmd):
+
+ ap_getValue = argparse.ArgumentParser()
+ ap_getValue.add_argument(
+- "Path", help="Path to be read", completer_method=path_completer)
++ "Path", help="Path to be read", completer=path_completer)
+ ap_getValue.add_argument(
+ "-a", "--attribute", help="Attribute to be get", default="value")
+
+ ap_getValues = argparse.ArgumentParser()
+ ap_getValues.add_argument(
+- "Path", help="Path whose value is to be read", nargs='+', completer_method=path_completer)
++ "Path", help="Path whose value is to be read", nargs='+', completer=path_completer)
+ ap_getValues.add_argument(
+ "-a", "--attribute", help="Attribute to be get", default="value")
+
+ ap_setTargetValue = argparse.ArgumentParser()
+ ap_setTargetValue.add_argument(
+- "Path", help="Path whose target value to be set", completer_method=path_completer)
++ "Path", help="Path whose target value to be set", completer=path_completer)
+ ap_setTargetValue.add_argument("Value", help="Value to be set")
+
+ ap_setTargetValues = argparse.ArgumentParser()
+@@ -206,35 +205,35 @@ class TestClient(Cmd):
+
+ ap_getTargetValue = argparse.ArgumentParser()
+ ap_getTargetValue.add_argument(
+- "Path", help="Path whose target value is to be read", completer_method=path_completer)
++ "Path", help="Path whose target value is to be read", completer=path_completer)
+
+ ap_getTargetValues = argparse.ArgumentParser()
+ ap_getTargetValues.add_argument(
+- "Path", help="Path whose target value is to be read", nargs='+', completer_method=path_completer)
++ "Path", help="Path whose target value is to be read", nargs='+', completer=path_completer)
+
+ ap_subscribe = argparse.ArgumentParser()
+ ap_subscribe.add_argument(
+- "Path", help="Path to subscribe to", completer_method=path_completer)
++ "Path", help="Path to subscribe to", completer=path_completer)
+ ap_subscribe.add_argument(
+ "-a", "--attribute", help="Attribute to subscribe to", default="value")
+
+ ap_subscribeMultiple = argparse.ArgumentParser()
+ ap_subscribeMultiple.add_argument(
+- "Path", help="Path to subscribe to", nargs='+', completer_method=path_completer)
++ "Path", help="Path to subscribe to", nargs='+', completer=path_completer)
+ ap_subscribeMultiple.add_argument(
+ "-a", "--attribute", help="Attribute to subscribe to", default="value")
+
+ ap_unsubscribe = argparse.ArgumentParser()
+ ap_unsubscribe.add_argument(
+- "SubscribeId", help="Corresponding subscription Id", completer_method=subscriptionIdCompleter,
++ "SubscribeId", help="Corresponding subscription Id", completer=subscriptionIdCompleter,
+ )
+
+ ap_getMetaData = argparse.ArgumentParser()
+ ap_getMetaData.add_argument(
+- "Path", help="Path whose metadata is to be read", completer_method=path_completer)
++ "Path", help="Path whose metadata is to be read", completer=path_completer)
+ ap_updateMetaData = argparse.ArgumentParser()
+ ap_updateMetaData.add_argument(
+- "Path", help="Path whose MetaData is to update", completer_method=path_completer)
++ "Path", help="Path whose MetaData is to update", completer=path_completer)
+ ap_updateMetaData.add_argument(
+ "Json",
+ help="MetaData to update. Note, only attributes can be update, if update children or the whole vss tree, use"
+@@ -245,7 +244,7 @@ class TestClient(Cmd):
+ jsonfile_completer_method = functools.partial(Cmd.path_complete,
+ path_filter=lambda path: (os.path.isdir(path) or path.endswith(".json")))
+ ap_updateVSSTree.add_argument(
+- "Json", help="Json tree to update VSS", completer_method=jsonfile_completer_method)
++ "Json", help="Json tree to update VSS", completer=jsonfile_completer_method)
+
+ # Constructor
+ def __init__(self, server_ip=None, server_port=None, server_protocol=None, insecure=False, token_or_tokenfile=None):
+--
+2.39.2
+
diff --git a/recipes-connectivity/kuksa-val/kuksa-client/0002-kuksa-client-Add-external-certificates-support.patch b/recipes-connectivity/kuksa-val/kuksa-client/0002-kuksa-client-Add-external-certificates-support.patch
new file mode 100644
index 000000000..229dda46a
--- /dev/null
+++ b/recipes-connectivity/kuksa-val/kuksa-client/0002-kuksa-client-Add-external-certificates-support.patch
@@ -0,0 +1,51 @@
+From 3c9f74492153817dc4fa405c1724fbf22ce58c98 Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+Date: Tue, 2 May 2023 16:19:55 -0400
+Subject: [PATCH 1/2] kuksa_viss_client: Add external certificates support
+
+Tweak the definition of __certificate_dir__ in the kuksa_certificates
+package, and certificate location logic in the client library to allow
+picking up alternative certificates from /etc/kuksa-certificates or
+/etc/kuksa-val before falling back to the shipped defaults. The
+intent is to allow packagers to more straighhtforwardly use their own
+certificates with both the server and clients.
+
+Upstream-Status: pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ kuksa-client/kuksa_client/cli_backend/__init__.py | 2 +-
+ kuksa_certificates/__init__.py | 7 ++++++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/kuksa-client/kuksa_client/cli_backend/__init__.py b/kuksa-client/kuksa_client/cli_backend/__init__.py
+index d282a0c..3052859 100644
+--- a/kuksa-client/kuksa_client/cli_backend/__init__.py
++++ b/kuksa-client/kuksa_client/cli_backend/__init__.py
+@@ -29,7 +29,7 @@ class Backend:
+ self.insecure = config.getboolean('insecure', False)
+ except AttributeError:
+ self.insecure = config.get('insecure', False)
+- self.default_cert_path = pathlib.Path(kuksa_certificates.__path__[0])
++ self.default_cert_path = pathlib.Path(kuksa_certificates.__certificate_dir__)
+ self.cacertificate = config.get(
+ 'cacertificate', str(self.default_cert_path / 'CA.pem'))
+ self.certificate = config.get('certificate', str(
+diff --git a/kuksa_certificates/__init__.py b/kuksa_certificates/__init__.py
+index 22ccd3f..8323868 100644
+--- a/kuksa_certificates/__init__.py
++++ b/kuksa_certificates/__init__.py
+@@ -2,4 +2,9 @@ import os
+
+ from kuksa_client._metadata import *
+
+-__certificate_dir__= os.path.dirname(os.path.realpath(__file__))
++if os.path.isdir("/etc/kuksa-certificates"):
++ __certificate_dir__= "/etc/kuksa-certificates"
++elif os.path.isdir("/etc/kuksa-val"):
++ __certificate_dir__= "/etc/kuksa-val"
++else:
++ __certificate_dir__= os.path.dirname(os.path.realpath(__file__))
+--
+2.39.2
+
diff --git a/recipes-connectivity/kuksa-val/kuksa-viss-client_git.bb b/recipes-connectivity/kuksa-val/kuksa-client_git.bb
index 7cefeb018..b56a455b6 100644
--- a/recipes-connectivity/kuksa-val/kuksa-viss-client_git.bb
+++ b/recipes-connectivity/kuksa-val/kuksa-client_git.bb
@@ -13,11 +13,11 @@ DEPENDS = " \
require kuksa-val.inc
-SRC_URI += "file://0001-kuksa_viss_client-Update-cmd2-completer-usage.patch;patchdir=.. \
- file://0002-kuksa_viss_client-Add-external-certificates-support.patch;patchdir=.. \
+SRC_URI += "file://0001-kuksa-client-Update-cmd2-completer-usage.patch;patchdir=.. \
+ file://0002-kuksa-client-Add-external-certificates-support.patch;patchdir=.. \
"
-S = "${WORKDIR}/git/kuksa_viss_client"
+S = "${WORKDIR}/git/kuksa-client"
inherit python_setuptools_build_meta
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0001-dbc2val-add-installation-mechanism.patch b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0001-dbc2val-add-installation-mechanism.patch
index 4221df5c8..527266f27 100644
--- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0001-dbc2val-add-installation-mechanism.patch
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0001-dbc2val-add-installation-mechanism.patch
@@ -1,215 +1,41 @@
-From 22062d99a89922e02b626e4701feaac8947af5fb Mon Sep 17 00:00:00 2001
+From c3774fed42d58f227a4ecb501c6ef1dd3a9cfcf3 Mon Sep 17 00:00:00 2001
From: Scott Murray <scott.murray@konsulko.com>
-Date: Fri, 7 Oct 2022 15:54:48 -0400
+Date: Wed, 19 Apr 2023 15:55:01 -0400
Subject: [PATCH 1/2] dbc2val: add installation mechanism
-Add setup.py and setup.cfg to allow installing the dbc2val module
-and dbcfeeder.py in a way suitable for packaging. Some of the
-imports in the scripts have been tweaked to enable running against
-an installed copy of dbc2val.
+Add setup.py and setup.cfg to allow installing the dbcfeederlib
+module and dbcfeeder.py in a way suitable for packaging.
Upstream-Status: pending
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+%% original patch: 0001-dbc2val-add-installation-mechanism.patch
---
- dbc2val/__init__.py | 0
- dbc2val/databroker.py | 4 +--
- dbc2val/dbc2vssmapper.py | 12 +++----
- dbc2val/dbcfeeder.py | 8 ++---
- dbc2val/gen_proto/__init__.py | 0
- dbc2val/gen_proto/sdv/__init__.py | 0
- dbc2val/gen_proto/sdv/databroker/__init__.py | 0
- .../gen_proto/sdv/databroker/v1/__init__.py | 0
- .../gen_proto/sdv/databroker/v1/broker_pb2.py | 2 +-
- .../sdv/databroker/v1/broker_pb2_grpc.py | 2 +-
- .../sdv/databroker/v1/collector_pb2.py | 2 +-
- .../sdv/databroker/v1/collector_pb2_grpc.py | 2 +-
- setup.cfg | 31 ++++++++++++++++
- setup.py | 36 +++++++++++++++++++
- 14 files changed, 82 insertions(+), 17 deletions(-)
- create mode 100644 dbc2val/__init__.py
- create mode 100644 dbc2val/gen_proto/__init__.py
- create mode 100644 dbc2val/gen_proto/sdv/__init__.py
- create mode 100644 dbc2val/gen_proto/sdv/databroker/__init__.py
- create mode 100644 dbc2val/gen_proto/sdv/databroker/v1/__init__.py
- create mode 100644 setup.cfg
- create mode 100644 setup.py
+ dbc2val/setup.cfg | 30 ++++++++++++++++++++++++++++++
+ dbc2val/setup.py | 14 ++++++++++++++
+ 2 files changed, 44 insertions(+)
+ create mode 100644 dbc2val/setup.cfg
+ create mode 100644 dbc2val/setup.py
-diff --git a/dbc2val/__init__.py b/dbc2val/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/dbc2val/databroker.py b/dbc2val/databroker.py
-index c1a941a..ba52980 100644
---- a/dbc2val/databroker.py
-+++ b/dbc2val/databroker.py
-@@ -16,13 +16,13 @@
- import logging
-
- import grpc
--from gen_proto.sdv.databroker.v1 import (
-+from dbc2val.gen_proto.sdv.databroker.v1 import (
- broker_pb2,
- broker_pb2_grpc,
- collector_pb2,
- collector_pb2_grpc,
- )
--from gen_proto.sdv.databroker.v1 import types_pb2 as types # for export
-+from dbc2val.gen_proto.sdv.databroker.v1 import types_pb2 as types # for export
-
- log = logging.getLogger(__name__)
-
-diff --git a/dbc2val/dbc2vssmapper.py b/dbc2val/dbc2vssmapper.py
-index 05b78f1..d76c068 100644
---- a/dbc2val/dbc2vssmapper.py
-+++ b/dbc2val/dbc2vssmapper.py
-@@ -20,8 +20,8 @@
-
-
- import yaml
--import transforms.mapping
--import transforms.math
-+from dbc2val.transforms import mapping
-+from dbc2val.transforms import math
- import logging
-
- log = logging.getLogger(__name__)
-@@ -33,13 +33,13 @@ class mapper:
- self.mapping = yaml.full_load(file)
-
- self.transforms = {}
-- self.transforms["fullmapping"] = transforms.mapping.mapping(
-+ self.transforms["fullmapping"] = mapping.mapping(
- discard_non_matching_items=True
- )
-- self.transforms["partialmapping"] = transforms.mapping.mapping(
-+ self.transforms["partialmapping"] = mapping.mapping(
- discard_non_matching_items=False
- )
-- self.transforms["math"] = transforms.math.math()
-+ self.transforms["math"] = math.math()
-
- for key in self.mapping.keys():
- self.mapping[key]["lastupdate"] = 0.0
-@@ -93,4 +93,4 @@ class mapper:
-
- def __getitem__(self, item):
- return self.mapping[item]
--
-\ No newline at end of file
-+
-diff --git a/dbc2val/dbcfeeder.py b/dbc2val/dbcfeeder.py
-index 5267369..7daaa2b 100755
---- a/dbc2val/dbcfeeder.py
-+++ b/dbc2val/dbcfeeder.py
-@@ -28,16 +28,13 @@ import sys
- import time
- from signal import SIGINT, SIGTERM, signal
-
--import canplayer
--import dbc2vssmapper
--import dbcreader
- import grpc
--import j1939reader
-+from dbc2val import dbc2vssmapper, dbcreader, j1939reader, canplayer
-
- # kuksa related
- from kuksa_viss_client import KuksaClientThread
- # databroker related
--import databroker
-+from dbc2val import databroker
-
- # global variable for usecase, default databroker
- USE_CASE = ""
-@@ -289,6 +286,7 @@ def parse_config(filename):
- "/etc/dbc_feeder.ini",
- "config/dbc_feeder.ini",
- ]
-+ configfile = None
- for candidate in config_candidates:
- if os.path.isfile(candidate):
- configfile = candidate
-diff --git a/dbc2val/gen_proto/__init__.py b/dbc2val/gen_proto/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/dbc2val/gen_proto/sdv/__init__.py b/dbc2val/gen_proto/sdv/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/dbc2val/gen_proto/sdv/databroker/__init__.py b/dbc2val/gen_proto/sdv/databroker/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/dbc2val/gen_proto/sdv/databroker/v1/__init__.py b/dbc2val/gen_proto/sdv/databroker/v1/__init__.py
+diff --git a/dbc2val/setup.cfg b/dbc2val/setup.cfg
new file mode 100644
-index 0000000..e69de29
-diff --git a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py
-index 98dc94a..6deacfb 100644
---- a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py
-+++ b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py
-@@ -12,7 +12,7 @@ from google.protobuf import symbol_database as _symbol_database
- _sym_db = _symbol_database.Default()
-
-
--from gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
-+from dbc2val.gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
-
-
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1esdv/databroker/v1/broker.proto\x12\x11sdv.databroker.v1\x1a\x1dsdv/databroker/v1/types.proto\"*\n\x14GetDatapointsRequest\x12\x12\n\ndatapoints\x18\x01 \x03(\t\"\xb0\x01\n\x12GetDatapointsReply\x12I\n\ndatapoints\x18\x01 \x03(\x0b\x32\x35.sdv.databroker.v1.GetDatapointsReply.DatapointsEntry\x1aO\n\x0f\x44\x61tapointsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"!\n\x10SubscribeRequest\x12\r\n\x05query\x18\x02 \x01(\t\"\x9c\x01\n\x0eSubscribeReply\x12=\n\x06\x66ields\x18\x01 \x03(\x0b\x32-.sdv.databroker.v1.SubscribeReply.FieldsEntry\x1aK\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"#\n\x12GetMetadataRequest\x12\r\n\x05names\x18\x01 \x03(\t\"=\n\x10GetMetadataReply\x12)\n\x04list\x18\x01 \x03(\x0b\x32\x1b.sdv.databroker.v1.Metadata2\x9b\x02\n\x06\x42roker\x12_\n\rGetDatapoints\x12\'.sdv.databroker.v1.GetDatapointsRequest\x1a%.sdv.databroker.v1.GetDatapointsReply\x12U\n\tSubscribe\x12#.sdv.databroker.v1.SubscribeRequest\x1a!.sdv.databroker.v1.SubscribeReply0\x01\x12Y\n\x0bGetMetadata\x12%.sdv.databroker.v1.GetMetadataRequest\x1a#.sdv.databroker.v1.GetMetadataReplyb\x06proto3')
-diff --git a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py
-index 5c87db1..bc6be8b 100644
---- a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py
-+++ b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py
-@@ -2,7 +2,7 @@
- """Client and server classes corresponding to protobuf-defined services."""
- import grpc
-
--from gen_proto.sdv.databroker.v1 import broker_pb2 as sdv_dot_databroker_dot_v1_dot_broker__pb2
-+from dbc2val.gen_proto.sdv.databroker.v1 import broker_pb2 as sdv_dot_databroker_dot_v1_dot_broker__pb2
-
-
- class BrokerStub(object):
-diff --git a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py
-index 25d69dd..ea15409 100644
---- a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py
-+++ b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py
-@@ -12,7 +12,7 @@ from google.protobuf import symbol_database as _symbol_database
- _sym_db = _symbol_database.Default()
-
-
--from gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
-+from dbc2val.gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
-
-
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!sdv/databroker/v1/collector.proto\x12\x11sdv.databroker.v1\x1a\x1dsdv/databroker/v1/types.proto\"\xba\x01\n\x17UpdateDatapointsRequest\x12N\n\ndatapoints\x18\x01 \x03(\x0b\x32:.sdv.databroker.v1.UpdateDatapointsRequest.DatapointsEntry\x1aO\n\x0f\x44\x61tapointsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"\xaf\x01\n\x15UpdateDatapointsReply\x12\x44\n\x06\x65rrors\x18\x01 \x03(\x0b\x32\x34.sdv.databroker.v1.UpdateDatapointsReply.ErrorsEntry\x1aP\n\x0b\x45rrorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x30\n\x05value\x18\x02 \x01(\x0e\x32!.sdv.databroker.v1.DatapointError:\x02\x38\x01\"\xba\x01\n\x17StreamDatapointsRequest\x12N\n\ndatapoints\x18\x01 \x03(\x0b\x32:.sdv.databroker.v1.StreamDatapointsRequest.DatapointsEntry\x1aO\n\x0f\x44\x61tapointsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"\xaf\x01\n\x15StreamDatapointsReply\x12\x44\n\x06\x65rrors\x18\x01 \x03(\x0b\x32\x34.sdv.databroker.v1.StreamDatapointsReply.ErrorsEntry\x1aP\n\x0b\x45rrorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x30\n\x05value\x18\x02 \x01(\x0e\x32!.sdv.databroker.v1.DatapointError:\x02\x38\x01\"R\n\x19RegisterDatapointsRequest\x12\x35\n\x04list\x18\x01 \x03(\x0b\x32\'.sdv.databroker.v1.RegistrationMetadata\"\x9d\x01\n\x14RegistrationMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12.\n\tdata_type\x18\x02 \x01(\x0e\x32\x1b.sdv.databroker.v1.DataType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x32\n\x0b\x63hange_type\x18\x04 \x01(\x0e\x32\x1d.sdv.databroker.v1.ChangeType\"\x93\x01\n\x17RegisterDatapointsReply\x12H\n\x07results\x18\x01 \x03(\x0b\x32\x37.sdv.databroker.v1.RegisterDatapointsReply.ResultsEntry\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x32\xd3\x02\n\tCollector\x12n\n\x12RegisterDatapoints\x12,.sdv.databroker.v1.RegisterDatapointsRequest\x1a*.sdv.databroker.v1.RegisterDatapointsReply\x12h\n\x10UpdateDatapoints\x12*.sdv.databroker.v1.UpdateDatapointsRequest\x1a(.sdv.databroker.v1.UpdateDatapointsReply\x12l\n\x10StreamDatapoints\x12*.sdv.databroker.v1.StreamDatapointsRequest\x1a(.sdv.databroker.v1.StreamDatapointsReply(\x01\x30\x01\x62\x06proto3')
-diff --git a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py
-index 419bfde..2dee751 100644
---- a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py
-+++ b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py
-@@ -2,7 +2,7 @@
- """Client and server classes corresponding to protobuf-defined services."""
- import grpc
-
--from gen_proto.sdv.databroker.v1 import collector_pb2 as sdv_dot_databroker_dot_v1_dot_collector__pb2
-+from dbc2val.gen_proto.sdv.databroker.v1 import collector_pb2 as sdv_dot_databroker_dot_v1_dot_collector__pb2
-
-
- class CollectorStub(object):
-diff --git a/setup.cfg b/setup.cfg
-new file mode 100644
-index 0000000..70aab60
+index 0000000..03dc6d6
--- /dev/null
-+++ b/setup.cfg
-@@ -0,0 +1,31 @@
++++ b/dbc2val/setup.cfg
+@@ -0,0 +1,30 @@
+[metadata]
-+name = dbc2val
++name = dbcfeeder
+author = Sebastian Schildt, Naresh Nayak, Wenwen Chen
+author_email = sebastian.schildt@de.bosch.com, naresh.nayak@de.bosch.com, wenwen.chen@de.bosch.com
+description = kuksa.val DBC feeder
+long_description = file:README.md
+long_description_content_type = text/markdown
-+url=https://github.com/eclipse/kuksa.val
++url=https://github.com/eclipse/kuksa.val.feeders
+project_urls=
-+ Source=https://github.com/eclipse/kuksa.val/tree/master/kuksa_feeders/dbc2val
-+ Bug Tracker=https://github.com/eclipse/kuksa.val/issues
-+classifiers =
++ Source=https://github.com/eclipse/kuksa.val.feeders/tree/master/dbc2val
++ Bug Tracker=https://github.com/eclipse/kuksa.val.feeders/issues
++classifiers =
+ Intended Audience :: Developers
+ Development Status :: 3 - Alpha
+ Environment :: Console
@@ -217,46 +43,24 @@ index 0000000..70aab60
+ License :: OSI Approved :: Apache Software License
+ Operating System :: OS Independent
+ Topic :: Software Development
-+
-+license_file = LICENSE.txt
++
++license_file = ../LICENSE.txt
+
+[options]
+python_requires = >=3.6
+install_requires=
+ pyserial
+ pyyaml
-+ kuksa-viss-client
-+packages=find:
-+include_package_data = True
-+scripts=dbc2val/dbcfeeder.py
-diff --git a/setup.py b/setup.py
++ kuksa-client
++packages=dbcfeederlib
++scripts=dbcfeeder.py
+diff --git a/dbc2val/setup.py b/dbc2val/setup.py
new file mode 100644
-index 0000000..55951cc
+index 0000000..65f9157
--- /dev/null
-+++ b/setup.py
-@@ -0,0 +1,36 @@
-+# To avoid shipping dbcfeeder.py in the module itself, use the
-+# technique outlined at:
-+#
-+# https://stackoverflow.com/a/50592100
-+#
-+# This can be removed if the directory structure is ever reorganized
-+# more along the lines of upstream recommendations.
-+#
-+
-+import fnmatch
-+from setuptools import find_packages, setup
-+from setuptools.command.build_py import build_py as build_py_orig
-+
-+exclude = ['dbc2val.dbcfeeder']
-+
-+class build_py(build_py_orig):
-+ def find_package_modules(self, package, package_dir):
-+ modules = super().find_package_modules(package, package_dir)
-+ print("modules = %s" % modules)
-+ return [(pkg, mod, file, ) for (pkg, mod, file, ) in modules
-+ if not any(fnmatch.fnmatchcase(pkg + '.' + mod, pat=pattern)
-+ for pattern in exclude)]
++++ b/dbc2val/setup.py
+@@ -0,0 +1,14 @@
++from setuptools import setup
+
+setup(
+ version_config={
@@ -269,8 +73,7 @@ index 0000000..55951cc
+ "count_commits_from_version_file": False
+ },
+ setup_requires=['setuptools-git-versioning'],
-+ cmdclass={'build_py': build_py},
+)
--
-2.37.3
+2.39.2
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch
index be88fa0ee..a3dd31be4 100644
--- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch
@@ -1,6 +1,6 @@
-From d0730c0d643738ac683d1b5c19b117893e3b2049 Mon Sep 17 00:00:00 2001
+From 91fb1f5a92e8784446c4e354fe5a8c465d6b3cb8 Mon Sep 17 00:00:00 2001
From: Scott Murray <scott.murray@konsulko.com>
-Date: Tue, 11 Oct 2022 15:28:07 -0400
+Date: Tue, 2 May 2023 16:27:04 -0400
Subject: [PATCH 2/2] dbc2val: usability improvements
Changes:
@@ -18,24 +18,16 @@ Upstream-Status: pending
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
---
- dbc2val/dbcfeeder.py | 21 +++++++++++++++------
- dbc2val/dbcreader.py | 12 ++++++++----
- 2 files changed, 23 insertions(+), 10 deletions(-)
+ dbc2val/dbcfeeder.py | 10 ++++++++--
+ dbc2val/dbcfeederlib/dbcreader.py | 11 ++++++++---
+ 2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/dbc2val/dbcfeeder.py b/dbc2val/dbcfeeder.py
-index 7daaa2b..33c2212 100755
+index d32bb04..b73b96e 100755
--- a/dbc2val/dbcfeeder.py
+++ b/dbc2val/dbcfeeder.py
-@@ -93,6 +93,7 @@ class Feeder:
- self._connected = False
- self._registered = False
- self._can_queue = queue.Queue()
-+ self.kuksa = None
+@@ -170,7 +170,11 @@ class Feeder:
- def start(
- self,
-@@ -134,7 +135,11 @@ class Feeder:
- else:
# use socketCAN
log.info("Using socket CAN device '%s'", canport)
- self._reader.start_listening(bustype="socketcan", channel=canport)
@@ -44,60 +36,29 @@ index 7daaa2b..33c2212 100755
+ except:
+ log.error("Could not open {}, exiting".format(canport))
+ sys.exit(-1)
-
- # databroker related
- if USE_CASE=="databroker":
-@@ -151,6 +156,8 @@ class Feeder:
- log.info("Shutting down...")
- self._shutdown = True
- # Tell others to stop
-+ if USE_CASE=="kuksa" and self.kuksa is not None:
-+ self.kuksa.stop()
- if self._reader is not None:
- self._reader.stop()
- if self._player is not None:
-@@ -204,9 +211,10 @@ class Feeder:
- # kuksa related
- if USE_CASE=="kuksa":
- global kuksaconfig
-- kuksa = KuksaClientThread(kuksaconfig)
-- kuksa.start()
-- kuksa.authorize()
-+ self.kuksa = KuksaClientThread(kuksaconfig)
-+ self.kuksa.start()
-+ if "token" in kuksaconfig:
-+ self.kuksa.authorize(kuksaconfig["token"])
-
- while self._shutdown is False:
- # databroker related
-@@ -255,7 +263,7 @@ class Feeder:
- self._provider.update_datapoint(target, value)
- # kuksa related
- elif USE_CASE=="kuksa":
-- resp=json.loads(kuksa.setValue(target, str(value)))
-+ resp=json.loads(self.kuksa.setValue(target, str(value)))
- if "error" in resp:
- if "message" in resp["error"]:
- log.error("Error setting {}: {}".format(target, resp["error"]["message"]))
-@@ -282,8 +290,9 @@ def parse_config(filename):
+
+ self._run()
+
+@@ -278,8 +282,10 @@ def parse_config(filename):
configfile = filename
else:
config_candidates = [
- "/config/dbc_feeder.ini",
+ "/etc/kuksa-dbc-feeder/config.ini",
++ "/etc/kuksa-dbc-feeder/dbc_feeder.ini",
"/etc/dbc_feeder.ini",
+ "/config/dbc_feeder.ini",
"config/dbc_feeder.ini",
]
- configfile = None
-diff --git a/dbc2val/dbcreader.py b/dbc2val/dbcreader.py
-index 2500832..b537a4d 100644
---- a/dbc2val/dbcreader.py
-+++ b/dbc2val/dbcreader.py
-@@ -54,8 +54,8 @@ class DBCReader:
+ for candidate in config_candidates:
+diff --git a/dbc2val/dbcfeederlib/dbcreader.py b/dbc2val/dbcfeederlib/dbcreader.py
+index 5dad41f..c2f5b55 100644
+--- a/dbc2val/dbcfeederlib/dbcreader.py
++++ b/dbc2val/dbcfeederlib/dbcreader.py
+@@ -56,8 +56,8 @@ class DBCReader:
Bitrate in bit/s.
"""
- self.bus = can.interface.Bus(*args, **kwargs)
+ self.bus = can.interface.Bus(*args, **kwargs) # pylint: disable=abstract-class-instantiated
- rxThread = threading.Thread(target=self.rxWorker)
- rxThread.start()
+ self.rxThread = threading.Thread(target=self.rxWorker)
@@ -105,7 +66,7 @@ index 2500832..b537a4d 100644
def get_whitelist(self):
log.info("Collecting signals, generating CAN ID whitelist")
-@@ -83,7 +83,10 @@ class DBCReader:
+@@ -86,7 +86,10 @@ class DBCReader:
def rxWorker(self):
log.info("Starting Rx thread")
while self.run:
@@ -114,16 +75,15 @@ index 2500832..b537a4d 100644
+ msg = self.bus.recv(timeout=1)
+ except Exception:
+ break
+ log.debug("processing message from CAN bus")
if msg and msg.arbitration_id in self.canidwl:
try:
- decode = self.db.decode_message(msg.arbitration_id, msg.data)
-@@ -105,4 +108,5 @@ class DBCReader:
+@@ -113,3 +116,5 @@ class DBCReader:
def stop(self):
self.run = False
--
+ self.bus.shutdown()
+ self.rxThread.join()
--
-2.37.3
+2.39.2
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-fix-token-file-configuration-option.patch b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-fix-token-file-configuration-option.patch
new file mode 100644
index 000000000..e3f3de655
--- /dev/null
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-fix-token-file-configuration-option.patch
@@ -0,0 +1,32 @@
+From e2b5305a48a8c5ce5c149437e44d1b82f4b94432 Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+Date: Mon, 8 May 2023 14:58:06 -0400
+Subject: [PATCH] dbc2val: fix token file configuration option
+
+The client library changed the token option name to
+'token_or_tokenfile', update things to match so that token
+location can be configured again for dbcfeeder.py.
+
+Upstream-Status: pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ dbc2val/dbcfeederlib/serverclientwrapper.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dbc2val/dbcfeederlib/serverclientwrapper.py b/dbc2val/dbcfeederlib/serverclientwrapper.py
+index 851516b..4f44913 100644
+--- a/dbc2val/dbcfeederlib/serverclientwrapper.py
++++ b/dbc2val/dbcfeederlib/serverclientwrapper.py
+@@ -60,7 +60,7 @@ class ServerClientWrapper(clientwrapper.ClientWrapper):
+ self._client_config["insecure"] = not self._tls
+ # Do not set token if it is empty to allow default client lib info to be used
+ if self._token_path != "":
+- self._client_config["token"] = self._token_path
++ self._client_config["token_or_tokenfile"] = self._token_path
+
+ # TODO add data for root cert if using TLS and if given
+
+--
+2.39.2
+
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/config.ini b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/config.ini
index 7da8381f0..411c7bc47 100644
--- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/config.ini
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/config.ini
@@ -1,21 +1,26 @@
[general]
-# use case:
-# switch between databroker and kuksa
-# default kuksa
-usecase = kuksa
+# server type:
+# switch between kuksa_databroker and kuksa_val_server
+server_type = kuksa_val_server
# VSS mapping file
-mapping=/etc/kuksa-dbc-feeder/mapping.yml
+mapping = /usr/share/vss/vss.json
-[kuksa_val]
-# kuksa VSS server address
-server=wss://localhost:8090
-# JWT security token file
-token=/etc/kuksa-dbc-feeder/dbc_feeder.json.token
+# IP address for server (KUKSA.val Server or Databroker)
+ip = localhost
+
+# Port for server (KUKSA.val Server or Databroker)
+port = 8090
+
+# Shall TLS be used (default False for Databroker, True for KUKSA.val Server)
+tls = True
+
+# Token file for authorization.
+token = /etc/kuksa-dbc-feeder/dbc_feeder.json.token
[can]
# CAN port
-port=can0
-#Enable SAE-J1939 Mode. False: ignore
-j1939=False
+port = can0
+# Enable SAE-J1939 Mode. False: ignore
+j1939 = False
# DBC file used to parse CAN messages
-dbcfile=/etc/kuksa-dbc-feeder/agl-vcar.dbc
+dbcfile = /etc/kuksa-dbc-feeder/agl-vcar.dbc
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb
index b5597d003..5fe872c69 100644
--- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb
@@ -7,23 +7,25 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=175792518e4ac015ab6696d16c4f607e"
DEPENDS = "python3-setuptools-git-versioning-native"
-PV = "0.1.0+git${SRCPV}"
+PV = "0.1.2+git${SRCPV}"
SRC_URI = "git://github.com/eclipse/kuksa.val.feeders.git;protocol=https;branch=main \
file://0001-dbc2val-add-installation-mechanism.patch \
file://0002-dbc2val-usability-improvements.patch \
+ file://0003-dbc2val-fix-token-file-configuration-option.patch \
file://config.ini \
file://dbc_feeder.json.token \
- file://mapping.yml \
file://agl-vcar.dbc \
file://kuksa-dbc-feeder.service \
"
-SRCREV = "a857a1d6981b7d62b80ac03e60988a0bded3e255"
+SRCREV = "d5fe991706bd8fc6d92ffbbaa838a380067f201f"
S = "${WORKDIR}/git"
inherit setuptools3 systemd
+SETUPTOOLS_SETUP_PATH = "${S}/dbc2val"
+
SYSTEMD_SERVICE:${PN} = "${BPN}.service"
do_install:append() {
@@ -33,7 +35,6 @@ do_install:append() {
# The potential for running the feeder as non-root will take some
# investigation.
install -m 0600 ${WORKDIR}/dbc_feeder.json.token ${D}${sysconfdir}/kuksa-dbc-feeder/
- install -m 0644 ${WORKDIR}/mapping.yml ${D}${sysconfdir}/kuksa-dbc-feeder/
install -m 0644 ${WORKDIR}/agl-vcar.dbc ${D}${sysconfdir}/kuksa-dbc-feeder/
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${systemd_system_unitdir}
@@ -51,6 +52,6 @@ RDEPENDS:${PN} += " \
python3-can-j1939 \
python3-pyyaml \
python3-py-expression-eval \
- kuksa-viss-client \
+ kuksa-client \
can-dev-helper \
"
diff --git a/recipes-connectivity/kuksa-val/kuksa-val-agl-demo-cluster/kuksa-val.env b/recipes-connectivity/kuksa-val/kuksa-val-agl-demo-cluster/kuksa-val.env
index e6778a3d9..f5ea757ef 100644
--- a/recipes-connectivity/kuksa-val/kuksa-val-agl-demo-cluster/kuksa-val.env
+++ b/recipes-connectivity/kuksa-val/kuksa-val-agl-demo-cluster/kuksa-val.env
@@ -1 +1 @@
-EXTRA_ARGS="--overlays /usr/share/kuksa-val/overlays --address 0.0.0.0"
+EXTRA_ARGS="--vss /usr/share/vss/vss.json --address 0.0.0.0"
diff --git a/recipes-connectivity/kuksa-val/kuksa-val-agl.bb b/recipes-connectivity/kuksa-val/kuksa-val-agl.bb
index 1be6b6d10..8b69e5e51 100644
--- a/recipes-connectivity/kuksa-val/kuksa-val-agl.bb
+++ b/recipes-connectivity/kuksa-val/kuksa-val-agl.bb
@@ -5,17 +5,13 @@ BUGTRACKER = "https://github.com/eclipse/kuksa.val/issues"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-SRC_URI = "file://00-agl_vss_overlay_2.2.json \
- file://kuksa-val.env \
-"
+SRC_URI = "file://kuksa-val.env"
inherit allarch update-alternatives
do_install() {
install -d ${D}${sysconfdir}/default
install -m 0644 ${WORKDIR}/kuksa-val.env ${D}${sysconfdir}/default/kuksa-val.agl
- install -d ${D}${datadir}/kuksa-val/overlays
- install -m 0644 ${WORKDIR}/00-agl_vss_overlay_2.2.json ${D}${datadir}/kuksa-val/overlays/
}
FILES:${PN} += "${datadir}/kuksa-val/overlays"
diff --git a/recipes-connectivity/kuksa-val/kuksa-val-agl/kuksa-val.env b/recipes-connectivity/kuksa-val/kuksa-val-agl/kuksa-val.env
index 74a5f4e4d..c7cffb387 100644
--- a/recipes-connectivity/kuksa-val/kuksa-val-agl/kuksa-val.env
+++ b/recipes-connectivity/kuksa-val/kuksa-val-agl/kuksa-val.env
@@ -1 +1 @@
-EXTRA_ARGS="--overlays /usr/share/kuksa-val/overlays"
+EXTRA_ARGS="--vss /usr/share/vss/vss.json"
diff --git a/recipes-connectivity/kuksa-val/kuksa-val.inc b/recipes-connectivity/kuksa-val/kuksa-val.inc
index 6d9a5cc04..f9369ae4d 100644
--- a/recipes-connectivity/kuksa-val/kuksa-val.inc
+++ b/recipes-connectivity/kuksa-val/kuksa-val.inc
@@ -1,6 +1,6 @@
-PV = "0.2.5+git${SRCPV}"
+PV = "0.3.1+git${SRCPV}"
SRC_URI = "gitsm://github.com/eclipse/kuksa.val.git;protocol=https;branch=master"
-SRCREV = "590198a35de7b2201bdd913750157bb9778a5214"
+SRCREV = "b57466bb2363e985cd7ea755aed4d0e98d6dacac"
S = "${WORKDIR}/git"
diff --git a/recipes-connectivity/kuksa-val/kuksa-val/0003-Make-install-locations-configurable.patch b/recipes-connectivity/kuksa-val/kuksa-val/0003-Make-install-locations-configurable.patch
index 8375d07a3..b4e918544 100644
--- a/recipes-connectivity/kuksa-val/kuksa-val/0003-Make-install-locations-configurable.patch
+++ b/recipes-connectivity/kuksa-val/kuksa-val/0003-Make-install-locations-configurable.patch
@@ -1,6 +1,6 @@
-From b9df9bcf058e072e4c67dc8cc6ab41c3db745cbf Mon Sep 17 00:00:00 2001
+From 8e3039af3fc2badb24ff5df9f60c8d5964d2389e Mon Sep 17 00:00:00 2001
From: Scott Murray <scott.murray@konsulko.com>
-Date: Thu, 6 Oct 2022 15:42:51 -0400
+Date: Wed, 5 Apr 2023 16:05:52 -0400
Subject: [PATCH] Make install locations configurable
Make binary, certificate, and configuration file install locations
@@ -17,21 +17,21 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
---
kuksa-val-server/config.ini | 7 ----
kuksa-val-server/config.ini.in | 7 ++++
- kuksa-val-server/src/CMakeLists.txt | 54 ++++++++++++++++++++++-------
- kuksa-val-server/src/config.hpp.in | 27 +++++++++++++++
- kuksa-val-server/src/main.cpp | 5 +--
- 5 files changed, 79 insertions(+), 21 deletions(-)
+ kuksa-val-server/src/CMakeLists.txt | 57 ++++++++++++++++++++++-------
+ kuksa-val-server/src/config.hpp.in | 27 ++++++++++++++
+ kuksa-val-server/src/main.cpp | 5 ++-
+ 5 files changed, 80 insertions(+), 23 deletions(-)
delete mode 100644 kuksa-val-server/config.ini
create mode 100644 kuksa-val-server/config.ini.in
create mode 100644 kuksa-val-server/src/config.hpp.in
diff --git a/kuksa-val-server/config.ini b/kuksa-val-server/config.ini
deleted file mode 100644
-index 34326aa..0000000
+index 3e4ada4..0000000
--- a/kuksa-val-server/config.ini
+++ /dev/null
@@ -1,7 +0,0 @@
--vss = vss_release_3.0.json
+-vss = vss_release_3.1.1.json
-log-level = ALL
-cert-path = .
-
@@ -40,11 +40,11 @@ index 34326aa..0000000
- topic-prefix = vss
diff --git a/kuksa-val-server/config.ini.in b/kuksa-val-server/config.ini.in
new file mode 100644
-index 0000000..3d888e5
+index 0000000..153f355
--- /dev/null
+++ b/kuksa-val-server/config.ini.in
@@ -0,0 +1,7 @@
-+vss = @KUKSA_DEFAULT_DATADIR@/vss_release_3.0.json
++vss = @KUKSA_DEFAULT_DATADIR@/vss_release_3.1.1.json
+log-level = ALL
+cert-path = @KUKSA_DEFAULT_CERTDIR@
+
@@ -52,10 +52,10 @@ index 0000000..3d888e5
+ publish =
+ topic-prefix = vss
diff --git a/kuksa-val-server/src/CMakeLists.txt b/kuksa-val-server/src/CMakeLists.txt
-index ea75ef7..e791a13 100644
+index d73462c..33518de 100644
--- a/kuksa-val-server/src/CMakeLists.txt
+++ b/kuksa-val-server/src/CMakeLists.txt
-@@ -161,6 +161,35 @@ if(BUILD_EXE)
+@@ -162,6 +162,35 @@ if(BUILD_EXE)
######
# Setup server install and packaging
@@ -91,10 +91,10 @@ index ea75ef7..e791a13 100644
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../kuksa_certificates/jwt/jwt.key.pub ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../kuksa_certificates/Server.pem ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../kuksa_certificates/Server.key ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
-@@ -171,20 +200,21 @@ if(BUILD_EXE)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_2.1.json ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
+@@ -173,22 +202,22 @@ if(BUILD_EXE)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_2.2.json ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_3.0.json ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_3.1.1.json ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../config.ini ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../config.ini.in ${CMAKE_CURRENT_BINARY_DIR}/config.ini @COPY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../config_grpc_client.ini ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
@@ -110,6 +110,8 @@ index ea75ef7..e791a13 100644
- install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_2.1.json DESTINATION bin/${SERVER_EXE_NAME})
- install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_2.2.json DESTINATION bin/${SERVER_EXE_NAME})
- install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_3.0.json DESTINATION bin/${SERVER_EXE_NAME})
+- install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_3.1.1.json DESTINATION bin/${SERVER_EXE_NAME})
+-
+ install( TARGETS ${SERVER_EXE_NAME} DESTINATION ${KUKSA_INSTALL_BINDIR})
+ install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../kuksa_certificates/jwt/jwt.key.pub DESTINATION ${KUKSA_INSTALL_CERTDIR})
+ install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../kuksa_certificates/Server.pem DESTINATION ${KUKSA_INSTALL_CERTDIR})
@@ -121,10 +123,11 @@ index ea75ef7..e791a13 100644
+ install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_2.1.json DESTINATION ${KUKSA_INSTALL_DATADIR})
+ install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_2.2.json DESTINATION ${KUKSA_INSTALL_DATADIR})
+ install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_3.0.json DESTINATION ${KUKSA_INSTALL_DATADIR})
++ install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../data/vss-core/vss_release_3.1.1.json DESTINATION ${KUKSA_INSTALL_DATADIR})
+ install( FILES ${CMAKE_CURRENT_BINARY_DIR}/config.ini DESTINATION ${KUKSA_INSTALL_CONFIGDIR})
-
# CPack
+ INCLUDE(InstallRequiredSystemLibraries)
diff --git a/kuksa-val-server/src/config.hpp.in b/kuksa-val-server/src/config.hpp.in
new file mode 100644
index 0000000..24226d2
@@ -159,7 +162,7 @@ index 0000000..24226d2
+
+#endif
diff --git a/kuksa-val-server/src/main.cpp b/kuksa-val-server/src/main.cpp
-index 234171a..2f7011a 100644
+index b085126..9c7f8ae 100644
--- a/kuksa-val-server/src/main.cpp
+++ b/kuksa-val-server/src/main.cpp
@@ -47,6 +47,7 @@
@@ -181,7 +184,7 @@ index 234171a..2f7011a 100644
"Sample of configuration file parameters looks like:\n"
@@ -115,7 +116,7 @@ int main(int argc, const char *argv[]) {
"log-level = ALL\n")
- ("vss", program_options::value<boost::filesystem::path>()->required(), "[mandatory] Path to VSS data file describing VSS data tree structure which `kuksa-val-server` shall handle. Sample 'vss_release_3.0.json' file can be found under [data](./data/vss-core/vss_release_3.0.json)")
+ ("vss", program_options::value<boost::filesystem::path>()->required(), "[mandatory] Path to VSS data file describing VSS data tree structure which `kuksa-val-server` shall handle. Sample 'vss_release_3.1.1.json' file can be found under [data](./data/vss-core/vss_release_3.1.1.json)")
("overlays", program_options::value<boost::filesystem::path>(), "Path to a directory cotaiing additional VSS models. All json files will be applied on top of the main vss file given by the -vss parameter in alphanumerical order")
- ("cert-path", program_options::value<boost::filesystem::path>()->required()->default_value(boost::filesystem::path(".")),
+ ("cert-path", program_options::value<boost::filesystem::path>()->required()->default_value(boost::filesystem::path(KUKSA_DEFAULT_CERTDIR)),
@@ -189,5 +192,5 @@ index 234171a..2f7011a 100644
("insecure", program_options::bool_switch()->default_value(false), "By default, `kuksa-val-server` shall accept only SSL (TLS) secured connections. If provided, `kuksa-val-server` shall also accept plain un-secured connections for Web-Socket and GRPC API connections, and also shall not fail connections due to self-signed certificates.")
("use-keycloak", "Use KeyCloak for permission management")
--
-2.37.3
+2.39.2
diff --git a/recipes-connectivity/kuksa-val/kuksa-viss-client/0001-kuksa_viss_client-Update-cmd2-completer-usage.patch b/recipes-connectivity/kuksa-val/kuksa-viss-client/0001-kuksa_viss_client-Update-cmd2-completer-usage.patch
deleted file mode 100644
index acd416911..000000000
--- a/recipes-connectivity/kuksa-val/kuksa-viss-client/0001-kuksa_viss_client-Update-cmd2-completer-usage.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 1da7b980d05706c8d4e9bcb0d12965258a4fc709 Mon Sep 17 00:00:00 2001
-From: Scott Murray <scott.murray@konsulko.com>
-Date: Thu, 6 Oct 2022 16:07:00 -0400
-Subject: [PATCH] kuksa_viss_client: Update cmd2 completer usage
-
-Update cmd2 usage to avoid using internal methods and fix breakage
-with newer versions of the cmd2 module.
-
-Upstream-Status: pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- kuksa_viss_client/__main__.py | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/kuksa_viss_client/__main__.py b/kuksa_viss_client/__main__.py
-index 5e595f8..e5798b8 100755
---- a/kuksa_viss_client/__main__.py
-+++ b/kuksa_viss_client/__main__.py
-@@ -23,7 +23,7 @@ from typing import Dict, List
- import queue, time, os, threading
- from pygments import highlight, lexers, formatters
- from cmd2 import Cmd, with_argparser, with_category, Cmd2ArgumentParser, CompletionItem
--from cmd2.utils import CompletionError, basic_complete
-+from cmd2.exceptions import CompletionError
- import functools, subprocess
- DEFAULT_SERVER_ADDR = "127.0.0.1"
- DEFAULT_SERVER_PORT = 8090
-@@ -103,7 +103,7 @@ class TestClient(Cmd):
- if 'children' in child:
- self.pathCompletionItems.append(CompletionItem(prefix + key+seperator, "Children of branch "+prefix+key))
-
-- return basic_complete(text, line, begidx, endidx, self.pathCompletionItems)
-+ return Cmd.basic_complete(self, text, line, begidx, endidx, self.pathCompletionItems)
-
- def subscribeCallback(self, path, attr, resp):
- self.subscribeFileDesc[(path,attr)].write(resp + "\n")
-@@ -113,7 +113,7 @@ class TestClient(Cmd):
- self.pathCompletionItems = []
- for id in self.subscribeIdToPath.keys():
- self.pathCompletionItems.append(CompletionItem(id))
-- return basic_complete(text, line, begidx, endidx, self.pathCompletionItems)
-+ return Cmd.basic_complete(self, text, line, begidx, endidx, self.pathCompletionItems)
-
- COMM_SETUP_COMMANDS = "Communication Set-up Commands"
- VISS_COMMANDS = "Kuksa Interaction Commands"
-@@ -126,45 +126,45 @@ class TestClient(Cmd):
- ap_authorize = argparse.ArgumentParser()
- tokenfile_completer_method = functools.partial(Cmd.path_complete,
- path_filter=lambda path: (os.path.isdir(path) or path.endswith(".token")))
-- ap_authorize.add_argument('Token', help='JWT(or the file storing the token) for authorizing the client.', completer_method=tokenfile_completer_method)
-+ ap_authorize.add_argument('Token', help='JWT(or the file storing the token) for authorizing the client.', completer=tokenfile_completer_method)
- ap_setServerAddr = argparse.ArgumentParser()
- ap_setServerAddr.add_argument('IP', help='VISS Server IP Address', default=DEFAULT_SERVER_ADDR)
- ap_setServerAddr.add_argument('Port', type=int, help='VISS Server Port', default=DEFAULT_SERVER_PORT)
- ap_setServerAddr.add_argument('-p', "--protocol", help='VISS Server Communication Protocol (ws or grpc)', default=DEFAULT_SERVER_PROTOCOL)
-
- ap_setValue = argparse.ArgumentParser()
-- ap_setValue.add_argument("Path", help="Path to be set", completer_method=path_completer)
-+ ap_setValue.add_argument("Path", help="Path to be set", completer=path_completer)
- ap_setValue.add_argument("Value", help="Value to be set")
- ap_setValue.add_argument("-a", "--attribute", help="Attribute to be set", default="value")
-
- ap_getValue = argparse.ArgumentParser()
-- ap_getValue.add_argument("Path", help="Path to be read", completer_method=path_completer)
-+ ap_getValue.add_argument("Path", help="Path to be read", completer=path_completer)
- ap_getValue.add_argument("-a", "--attribute", help="Attribute to be get", default="value")
-
- ap_setTargetValue = argparse.ArgumentParser()
-- ap_setTargetValue.add_argument("Path", help="Path whose target value to be set", completer_method=path_completer)
-+ ap_setTargetValue.add_argument("Path", help="Path whose target value to be set", completer=path_completer)
- ap_setTargetValue.add_argument("Value", help="Value to be set")
-
- ap_getTargetValue = argparse.ArgumentParser()
-- ap_getTargetValue.add_argument("Path", help="Path whose target value to be read", completer_method=path_completer)
-+ ap_getTargetValue.add_argument("Path", help="Path whose target value to be read", completer=path_completer)
-
- ap_subscribe = argparse.ArgumentParser()
-- ap_subscribe.add_argument("Path", help="Path to be subscribed", completer_method=path_completer)
-+ ap_subscribe.add_argument("Path", help="Path to be subscribed", completer=path_completer)
- ap_subscribe.add_argument("-a", "--attribute", help="Attribute to be subscribed", default="value")
-
- ap_unsubscribe = argparse.ArgumentParser()
-- ap_unsubscribe.add_argument("SubscribeId", help="Corresponding subscription Id", completer_method=subscriptionIdCompleter)
-+ ap_unsubscribe.add_argument("SubscribeId", help="Corresponding subscription Id", completer=subscriptionIdCompleter)
-
- ap_getMetaData = argparse.ArgumentParser()
-- ap_getMetaData.add_argument("Path", help="Path whose metadata is to be read", completer_method=path_completer)
-+ ap_getMetaData.add_argument("Path", help="Path whose metadata is to be read", completer=path_completer)
- ap_updateMetaData = argparse.ArgumentParser()
-- ap_updateMetaData.add_argument("Path", help="Path whose MetaData is to update", completer_method=path_completer)
-+ ap_updateMetaData.add_argument("Path", help="Path whose MetaData is to update", completer=path_completer)
- ap_updateMetaData.add_argument("Json", help="MetaData to update. Note, only attributes can be update, if update children or the whole vss tree, use `updateVSSTree` instead.")
-
- ap_updateVSSTree = argparse.ArgumentParser()
- jsonfile_completer_method = functools.partial(Cmd.path_complete,
- path_filter=lambda path: (os.path.isdir(path) or path.endswith(".json")))
-- ap_updateVSSTree.add_argument("Json", help="Json tree to update VSS", completer_method=jsonfile_completer_method)
-+ ap_updateVSSTree.add_argument("Json", help="Json tree to update VSS", completer=jsonfile_completer_method)
-
- # Constructor
- def __init__(self):
---
-2.37.3
-
diff --git a/recipes-connectivity/kuksa-val/kuksa-viss-client/0002-kuksa_viss_client-Add-external-certificates-support.patch b/recipes-connectivity/kuksa-val/kuksa-viss-client/0002-kuksa_viss_client-Add-external-certificates-support.patch
deleted file mode 100644
index 7ad5ac182..000000000
--- a/recipes-connectivity/kuksa-val/kuksa-viss-client/0002-kuksa_viss_client-Add-external-certificates-support.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From 101550383386f465e689aa846826b58aa72cf793 Mon Sep 17 00:00:00 2001
-From: Scott Murray <scott.murray@konsulko.com>
-Date: Mon, 24 Apr 2023 15:49:32 -0400
-Subject: [PATCH] kuksa_viss_client: Add external certificates support
-
-Tweak the definition of __certificate_dir__ in the kuksa_certificates
-package, and certificate location logic in the client library to allow
-picking up alternative certificates from /etc/kuksa-certificates or
-/etc/kuksa-val before falling back to the shipped defaults. The
-intent is to allow packagers to more straighhtforwardly use their own
-certificates with both the server and clients.
-
-Upstream-Status: pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- kuksa_certificates/__init__.py | 7 ++++++-
- kuksa_viss_client/KuksaGrpcComm.py | 10 +++++-----
- kuksa_viss_client/KuksaWsComm.py | 10 +++++-----
- 3 files changed, 16 insertions(+), 11 deletions(-)
-
-diff --git a/kuksa_certificates/__init__.py b/kuksa_certificates/__init__.py
-index 5f05b75..ac60bc3 100644
---- a/kuksa_certificates/__init__.py
-+++ b/kuksa_certificates/__init__.py
-@@ -2,4 +2,9 @@ import os
-
- from kuksa_viss_client._metadata import *
-
--__certificate_dir__= os.path.dirname(os.path.realpath(__file__))
-+if os.path.isdir("/etc/kuksa-certificates"):
-+ __certificate_dir__= "/etc/kuksa-certificates"
-+elif os.path.isdir("/etc/kuksa-val"):
-+ __certificate_dir__= "/etc/kuksa-val"
-+else:
-+ __certificate_dir__= os.path.dirname(os.path.realpath(__file__))
-diff --git a/kuksa_viss_client/KuksaGrpcComm.py b/kuksa_viss_client/KuksaGrpcComm.py
-index 1f55754..e425e7e 100644
---- a/kuksa_viss_client/KuksaGrpcComm.py
-+++ b/kuksa_viss_client/KuksaGrpcComm.py
-@@ -28,22 +28,22 @@ import uuid, time, threading
-
- from . import kuksa_pb2
- from . import kuksa_pb2_grpc
-+from kuksa_certificates import __certificate_dir__
-
- class KuksaGrpcComm:
-
- # Constructor
- def __init__(self, config):
-- scriptDir= os.path.dirname(os.path.realpath(__file__))
- self.serverIP = config.get('ip', "127.0.0.1")
- self.serverPort = config.get('port', 8090)
- try:
- self.insecure = config.getboolean('insecure', False)
- except AttributeError:
- self.insecure = config.get('insecure', False)
-- self.cacertificate = config.get('cacertificate', os.path.join(scriptDir, "../kuksa_certificates/CA.pem"))
-- self.certificate = config.get('certificate', os.path.join(scriptDir, "../kuksa_certificates/Client.pem"))
-- self.keyfile = config.get('key', os.path.join(scriptDir, "../kuksa_certificates/Client.key"))
-- self.tokenfile = config.get('token', os.path.join(scriptDir, "../kuksa_certificates/jwt/all-read-write.json.token"))
-+ self.cacertificate = config.get('cacertificate', os.path.join(__certificate_dir__, "CA.pem"))
-+ self.certificate = config.get('certificate', os.path.join(__certificate_dir__, "Client.pem"))
-+ self.keyfile = config.get('key', os.path.join(__certificate_dir__, "Client.key"))
-+ self.tokenfile = config.get('token', os.path.join(__certificate_dir__, "jwt/all-read-write.json.token"))
- self.grpcConnected = False
-
- self.subscriptionCallbacks = {}
-diff --git a/kuksa_viss_client/KuksaWsComm.py b/kuksa_viss_client/KuksaWsComm.py
-index b0d4cc1..b85b573 100644
---- a/kuksa_viss_client/KuksaWsComm.py
-+++ b/kuksa_viss_client/KuksaWsComm.py
-@@ -20,22 +20,22 @@
-
- import json, queue, time, uuid, os, ssl
- import asyncio, websockets
-+from kuksa_certificates import __certificate_dir__
-
- class KuksaWsComm:
-
- # Constructor
- def __init__(self, config):
-
-- scriptDir= os.path.dirname(os.path.realpath(__file__))
- self.serverIP = config.get('ip', "127.0.0.1")
- self.serverPort = config.get('port', 8090)
- try:
- self.insecure = config.getboolean('insecure', False)
- except AttributeError:
- self.insecure = config.get('insecure', False)
-- self.cacertificate = config.get('cacertificate', os.path.join(scriptDir, "../kuksa_certificates/CA.pem"))
-- self.certificate = config.get('certificate', os.path.join(scriptDir, "../kuksa_certificates/Client.pem"))
-- self.keyfile = config.get('key', os.path.join(scriptDir, "../kuksa_certificates/Client.key"))
-+ self.cacertificate = config.get('cacertificate', os.path.join(__certificate_dir__, "CA.pem"))
-+ self.certificate = config.get('certificate', os.path.join(__certificate_dir__, "Client.pem"))
-+ self.keyfile = config.get('key', os.path.join(__certificate_dir__, "Client.key"))
- self.wsConnected = False
-
- self.subscriptionCallbacks = {}
-@@ -254,4 +254,4 @@ class KuksaWsComm:
- await self._msgHandler(ws)
- except OSError as e:
- print("Disconnected!! " + str(e))
-- pass
-\ No newline at end of file
-+ pass
---
-2.39.2
-