diff --git a/.github/workflows/lighty-rcgnmi-app/tests-lighty-rcgnmi-app.sh b/.github/workflows/lighty-rcgnmi-app/tests-lighty-rcgnmi-app.sh
index ade01ef226..02ec03339d 100755
--- a/.github/workflows/lighty-rcgnmi-app/tests-lighty-rcgnmi-app.sh
+++ b/.github/workflows/lighty-rcgnmi-app/tests-lighty-rcgnmi-app.sh
@@ -89,7 +89,7 @@ do \
assertHttpStatusCode $(curl -o /dev/null -s -w "%{http_code} GET %{url_effective}\n" --user admin:admin -H "Content-Type: application/json" --insecure http://$pod_controller_ip:8558/cluster/members) \
;done
sleep 1
-
+: ' FIXME uncomment this after NETCONF-1285 is resolved
#Pods healthcheck (:8888/restconf/operations)
for pod_controller_ip in $POD_CONTROLLER_IPS; \
@@ -100,7 +100,7 @@ sleep 1
#Service healthcheck (:30888/restconf/operations)
assertHttpStatusCode $(curl -o /dev/null -s -w "%{http_code} GET %{url_effective}\n" --user admin:admin -H "Content-Type: application/json" --insecure http://$MINIKUBE_IP:$CONTROLLER_PORT/restconf/operations)
-
+'
# add gNMI node into gNMI topology
assertHttpStatusCode $(curl -X PUT -o /dev/null -s -w "%{http_code} PUT %{url_effective}\n" \
http://"$MINIKUBE_IP":$CONTROLLER_PORT/restconf/data/network-topology:network-topology/topology=gnmi-topology/node=node-"${MINIKUBE_IP//.}" \
diff --git a/.github/workflows/lighty-rnc-app/test-lighty-rnc-app-cluster.sh b/.github/workflows/lighty-rnc-app/test-lighty-rnc-app-cluster.sh
index da7f47f9d0..7ede7a1411 100644
--- a/.github/workflows/lighty-rnc-app/test-lighty-rnc-app-cluster.sh
+++ b/.github/workflows/lighty-rnc-app/test-lighty-rnc-app-cluster.sh
@@ -182,7 +182,7 @@ do \
"http://$pod_controller_ip:8558/cluster/members")" \
;done
validateTestStatus
-
+: ' FIXME uncomment this after NETCONF-1285 is resolved
# Pods health check (:8888/restconf/operations)
for pod_controller_ip in $POD_CONTROLLER_IPS; \
do \
@@ -190,7 +190,7 @@ do \
-H "Content-Type: application/json" \
"http://$pod_controller_ip:$CONTROLLER_PORT/restconf/operations")" \
;done
-
+'
# Add node into topology
assertHttpStatusCode "$(curl -X PUT -o /dev/null -s -w "%{http_code} PUT %{url_effective}\n" \
"http://$CTRL0_IP:$CONTROLLER_PORT/restconf/data/network-topology:network-topology/topology=topology-netconf/node=node-${SIMULATOR_IP//.}" \
@@ -201,8 +201,10 @@ do \
"node-id": "node-'"${SIMULATOR_IP//.}"'",
"host": "'"$SIMULATOR_IP"'",
"port": '"$SIMULATOR_PORT"',
- "username": "admin",
- "password": "admin",
+ "login-password-unencrypted": {
+ "username": "admin",
+ "password": "admin"
+ },
"tcp-only": false,
"keepalive-delay": 0
}
diff --git a/.github/workflows/lighty-rnc-app/tests-lighty-rnc-app.sh b/.github/workflows/lighty-rnc-app/tests-lighty-rnc-app.sh
index 370f26a6b3..7a44300476 100755
--- a/.github/workflows/lighty-rnc-app/tests-lighty-rnc-app.sh
+++ b/.github/workflows/lighty-rnc-app/tests-lighty-rnc-app.sh
@@ -80,7 +80,7 @@ do \
assertHttpStatusCode $(curl -o /dev/null -s -w "%{http_code} GET %{url_effective}\n" --user admin:admin -H "Content-Type: application/json" --insecure http://$pod_controller_ip:8558/cluster/members) \
;done
sleep 1
-
+: ' FIXME uncomment this after NETCONF-1285 is resolved
# Pods healthcheck (:8888/restconf/operations)
for pod_controller_ip in $POD_CONTROLLER_IPS; \
@@ -92,7 +92,7 @@ sleep 1
# Service healthcheck (:30888/restconf/operations)
assertHttpStatusCode $(curl -o /dev/null -s -w "%{http_code} GET %{url_effective}\n" --user admin:admin -H "Content-Type: application/json" --insecure http://$MINIKUBE_IP:$CONTROLLER_PORT/restconf/operations)
sleep 1
-
+'
# add node into topology
assertHttpStatusCode $(curl -X PUT -o /dev/null -s -w "%{http_code} PUT %{url_effective}\n" http://"$MINIKUBE_IP":$CONTROLLER_PORT/restconf/data/network-topology:network-topology/topology=topology-netconf/node=node-"${SIMULATOR_IP//.}" \
-H 'Content-Type: application/json' \
@@ -102,8 +102,10 @@ sleep 1
"node-id": "node-'"${SIMULATOR_IP//.}"'",
"host": "'"$SIMULATOR_IP"'",
"port": '"$SIMULATOR_PORT"',
- "username": "admin",
- "password": "admin",
+ "login-password-unencrypted": {
+ "username": "admin",
+ "password": "admin"
+ },
"tcp-only": false,
"keepalive-delay": 0
}
diff --git a/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-helm/helm/lighty-rcgnmi-app-helm/templates/configmaps.yaml b/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-helm/helm/lighty-rcgnmi-app-helm/templates/configmaps.yaml
index d75422d968..e07e134e9b 100644
--- a/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-helm/helm/lighty-rcgnmi-app-helm/templates/configmaps.yaml
+++ b/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-helm/helm/lighty-rcgnmi-app-helm/templates/configmaps.yaml
@@ -39,11 +39,11 @@ data:
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners" , "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy": "CONTROLLER", "name": "cluster-admin", "revision": "2015-10-13", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "ietf-interfaces", "revision":"2018-02-20", "nameSpace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
diff --git a/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-module/src/test/resources/config.json b/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-module/src/test/resources/config.json
index 947408ea7e..2c83604a5b 100644
--- a/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-module/src/test/resources/config.json
+++ b/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app-module/src/test/resources/config.json
@@ -27,13 +27,13 @@
{ "usedBy": "CONTROLLER", "name": "iana-if-type", "revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "cluster-admin", "revision": "2015-10-13", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy": "CONTROLLER", "name":"ietf-interfaces", "revision":"2018-02-20", "nameSpace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"},
{ "usedBy": "RESTCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "GNMI", "name": "gnmi-topology", "revision": "2021-03-16", "nameSpace": "urn:lighty:gnmi:topology"},
diff --git a/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app/src/main/resources/example-config/example_config.json b/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app/src/main/resources/example-config/example_config.json
index 3b52d98c6e..b05ee51a6b 100644
--- a/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app/src/main/resources/example-config/example_config.json
+++ b/lighty-applications/lighty-rcgnmi-app-aggregator/lighty-rcgnmi-app/src/main/resources/example-config/example_config.json
@@ -28,7 +28,7 @@
"topLevelModels":[
{ "usedBy": "CONTROLLER", "name": "odl-general-entity", "revision": "2015-09-30", "nameSpace": "urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "ietf-yang-types", "revision": "2013-07-15", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-types"},
{ "usedBy": "CONTROLLER", "name": "iana-if-type", "revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners" , "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
@@ -37,7 +37,7 @@
{ "usedBy": "RESTCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "GNMI", "name": "gnmi-topology", "revision": "2021-03-16", "nameSpace": "urn:lighty:gnmi:topology"},
diff --git a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-docker/example-config/configuration.json b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-docker/example-config/configuration.json
index 5b7a740450..f6818b6192 100644
--- a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-docker/example-config/configuration.json
+++ b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-docker/example-config/configuration.json
@@ -28,7 +28,7 @@
"topLevelModels":[
{ "usedBy": "CONTROLLER", "name": "odl-general-entity", "revision": "2015-09-30", "nameSpace": "urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "ietf-yang-types", "revision": "2013-07-15", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-types"},
{ "usedBy": "CONTROLLER", "name": "iana-if-type", "revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
@@ -37,11 +37,11 @@
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "RESTCONF/NETCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
- { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2017-10-17", "nameSpace": "urn:opendaylight:netconf:keystore"},
- { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2022-12-25", "nameSpace": "urn:opendaylight:netconf-node-topology"},
+ { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2023-11-09", "nameSpace": "urn:opendaylight:netconf:keystore"},
+ { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2023-11-21", "nameSpace": "urn:opendaylight:netconf-node-topology"},
{ "usedBy": "NETCONF", "name":"ietf-netconf", "revision":"2011-06-01", "nameSpace":"urn:ietf:params:xml:ns:netconf:base:1.0"},
{ "usedBy": "AAA", "name": "aaa-cert-mdsal", "revision":"2016-03-21", "nameSpace":"urn:opendaylight:yang:aaa:cert:mdsal"},
{ "usedBy": "AAA", "name": "aaa", "revision": "2016-12-14", "nameSpace": "urn:opendaylight:params:xml:ns:yang:aaa"},
diff --git a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-helm/helm/lighty-rnc-app-helm/templates/configmaps.yaml b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-helm/helm/lighty-rnc-app-helm/templates/configmaps.yaml
index 5e113506ce..0a6346aefc 100644
--- a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-helm/helm/lighty-rnc-app-helm/templates/configmaps.yaml
+++ b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-app-helm/helm/lighty-rnc-app-helm/templates/configmaps.yaml
@@ -38,17 +38,17 @@ data:
{ "usedBy": "CONTROLLER", "name": "iana-if-type", "revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name":"ietf-interfaces", "revision":"2018-02-20", "nameSpace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"},
{ "usedBy": "CONTROLLER", "name": "cluster-admin", "revision": "2015-10-13", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "RESTCONF/NETCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
- { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2017-10-17", "nameSpace": "urn:opendaylight:netconf:keystore"},
- { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2022-12-25", "nameSpace": "urn:opendaylight:netconf-node-topology"},
+ { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2023-11-09", "nameSpace": "urn:opendaylight:netconf:keystore"},
+ { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2023-11-21", "nameSpace": "urn:opendaylight:netconf-node-topology"},
{ "usedBy": "NETCONF", "name":"ietf-netconf", "revision":"2011-06-01", "nameSpace":"urn:ietf:params:xml:ns:netconf:base:1.0"},
{ "usedBy": "AAA", "name": "aaa-cert-mdsal", "revision":"2016-03-21", "nameSpace":"urn:opendaylight:yang:aaa:cert:mdsal"},
{ "usedBy": "AAA", "name": "aaa", "revision": "2016-12-14", "nameSpace": "urn:opendaylight:params:xml:ns:yang:aaa"},
diff --git a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/config.json b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/config.json
index e883af0e58..5c27e17f49 100644
--- a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/config.json
+++ b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/config.json
@@ -27,17 +27,17 @@
{ "usedBy": "CONTROLLER", "name": "iana-if-type", "revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "cluster-admin", "revision": "2015-10-13", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy": "CONTROLLER", "name":"ietf-interfaces", "revision":"2018-02-20", "nameSpace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "RESTCONF/NETCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
- { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2017-10-17", "nameSpace": "urn:opendaylight:netconf:keystore"},
- { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2022-12-25", "nameSpace": "urn:opendaylight:netconf-node-topology"},
+ { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2023-11-09", "nameSpace": "urn:opendaylight:netconf:keystore"},
+ { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2023-11-21", "nameSpace": "urn:opendaylight:netconf-node-topology"},
{ "usedBy": "NETCONF", "name":"ietf-netconf", "revision":"2011-06-01", "nameSpace":"urn:ietf:params:xml:ns:netconf:base:1.0"},
{ "usedBy": "AAA", "name": "aaa", "revision": "2016-12-14", "nameSpace": "urn:opendaylight:params:xml:ns:yang:aaa"},
{ "usedBy": "AAA", "name": "aaa-cert-mdsal", "revision":"2016-03-21", "nameSpace":"urn:opendaylight:yang:aaa:cert:mdsal"},
diff --git a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/http2Config.json b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/http2Config.json
index 8cae0a0439..6af94a78ea 100644
--- a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/http2Config.json
+++ b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/http2Config.json
@@ -21,7 +21,7 @@
"topLevelModels":[
{ "usedBy": "CONTROLLER", "name": "odl-general-entity", "revision": "2015-09-30", "nameSpace": "urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "ietf-yang-types", "revision": "2013-07-15", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-types"},
{ "usedBy": "CONTROLLER", "name": "iana-if-type", "revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
@@ -30,11 +30,11 @@
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "RESTCONF/NETCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
- { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2017-10-17", "nameSpace": "urn:opendaylight:netconf:keystore"},
- { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2022-12-25", "nameSpace": "urn:opendaylight:netconf-node-topology"},
+ { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2023-11-09", "nameSpace": "urn:opendaylight:netconf:keystore"},
+ { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2023-11-21", "nameSpace": "urn:opendaylight:netconf-node-topology"},
{ "usedBy": "NETCONF", "name":"ietf-netconf", "revision":"2011-06-01", "nameSpace":"urn:ietf:params:xml:ns:netconf:base:1.0"},
{ "usedBy": "AAA", "name": "aaa-cert-mdsal", "revision":"2016-03-21", "nameSpace":"urn:opendaylight:yang:aaa:cert:mdsal"},
{ "usedBy": "AAA", "name": "aaa", "revision": "2016-12-14", "nameSpace": "urn:opendaylight:params:xml:ns:yang:aaa"},
diff --git a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/httpsConfig.json b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/httpsConfig.json
index 645a0f1c23..b425aeae2a 100644
--- a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/httpsConfig.json
+++ b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/httpsConfig.json
@@ -21,7 +21,7 @@
"topLevelModels":[
{ "usedBy": "CONTROLLER", "name": "odl-general-entity", "revision": "2015-09-30", "nameSpace": "urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "ietf-yang-types", "revision": "2013-07-15", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-types"},
{ "usedBy": "CONTROLLER", "name": "iana-if-type", "revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
@@ -30,11 +30,11 @@
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "RESTCONF/NETCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
- { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2017-10-17", "nameSpace": "urn:opendaylight:netconf:keystore"},
- { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2022-12-25", "nameSpace": "urn:opendaylight:netconf-node-topology"},
+ { "usedBy": "NETCONF", "name": "netconf-keystore", "revision": "2023-11-09", "nameSpace": "urn:opendaylight:netconf:keystore"},
+ { "usedBy": "NETCONF", "name": "netconf-node-topology", "revision": "2023-11-21", "nameSpace": "urn:opendaylight:netconf-node-topology"},
{ "usedBy": "NETCONF", "name":"ietf-netconf", "revision":"2011-06-01", "nameSpace":"urn:ietf:params:xml:ns:netconf:base:1.0"},
{ "usedBy": "AAA", "name": "aaa-cert-mdsal", "revision":"2016-03-21", "nameSpace":"urn:opendaylight:yang:aaa:cert:mdsal"},
{ "usedBy": "AAA", "name": "aaa", "revision": "2016-12-14", "nameSpace": "urn:opendaylight:params:xml:ns:yang:aaa"},
diff --git a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/openapi_config.json b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/openapi_config.json
index 7426c1abd2..b33e97c0b9 100644
--- a/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/openapi_config.json
+++ b/lighty-applications/lighty-rnc-app-aggregator/lighty-rnc-module/src/test/resources/openapi_config.json
@@ -40,12 +40,12 @@
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:toaster-app-config", "name": "toaster-app-config", "revision": "2016-05-03" },
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity", "name": "general-entity", "revision": "2015-08-20" },
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:pingpong", "name": "opendaylight-pingpong-broker", "revision": "2014-11-07" },
- { "nameSpace": "urn:sal:restconf:event:subscription", "name": "sal-remote-augment", "revision": "2014-07-08" },
+ { "nameSpace": "urn:sal:restconf:event:subscription", "name": "sal-remote-augment", "revision": "2023-11-03" },
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:netty", "name": "netty", "revision": "2013-11-19" },
{ "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library", "name": "ietf-yang-library", "revision": "2019-01-04" },
{ "nameSpace": "urn:ietf:params:xml:ns:yang:ospf-topology", "name": "ospf-topology", "revision": "2013-07-12" },
{ "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-netconf-notifications", "name": "ietf-netconf-notifications", "revision": "2012-02-06" },
- { "nameSpace": "urn:opendaylight:netconf:keystore", "name": "netconf-keystore", "revision": "2017-10-17" },
+ { "nameSpace": "urn:opendaylight:netconf:keystore", "name": "netconf-keystore", "revision": "2023-11-09" },
{ "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf", "name": "ietf-restconf", "revision": "2013-10-19" },
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin", "name": "cluster-admin", "revision": "2015-10-13" },
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:md:sal:config:impl:cluster-singleton-service", "name": "cluster-singleton-service-impl", "revision": "2016-07-18" },
@@ -54,13 +54,13 @@
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:inmemory-datastore-provider", "name": "opendaylight-inmemory-datastore-provider", "revision": "2014-06-17" },
{ "nameSpace": "urn:ietf:params:xml:ns:yang:iana-afn-safi", "name": "iana-afn-safi", "revision": "2013-07-04" },
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl", "name": "opendaylight-sal-binding-broker-impl", "revision": "2013-10-28" },
- { "nameSpace": "urn:opendaylight:netconf-node-topology", "name": "netconf-node-topology", "revision": "2022-12-25" },
+ { "nameSpace": "urn:opendaylight:netconf-node-topology", "name": "netconf-node-topology", "revision": "2023-11-21" },
{ "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf", "name": "ietf-restconf", "revision": "2017-01-26" },
{ "nameSpace": "urn:ietf:params:xml:ns:netmod:notification", "name": "nc-notifications", "revision": "2008-07-14" },
{ "nameSpace": "urn:opendaylight:l2:types", "name": "opendaylight-l2-types", "revision": "2013-08-27" },
{ "nameSpace": "urn:opendaylight:aaa:app:config", "name": "aaa-app-config", "revision": "2017-06-19" },
{ "nameSpace": "urn:TBD:params:xml:ns:yang:network:isis-topology", "name": "isis-topology", "revision": "2013-07-12" },
- { "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider", "name": "distributed-datastore-provider", "revision": "2014-06-12" },
+ { "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider", "name": "distributed-datastore-provider", "revision": "2023-12-29" },
{ "nameSpace": "urn:TBD:params:xml:ns:yang:ospf-topology", "name": "ospf-topology", "revision": "2013-10-21" },
{ "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:legacy-entity-ownership-service-provider", "name": "opendaylight-legacy-entity-ownership-service-provider", "revision": "2016-02-26" }
]
diff --git a/lighty-core/dependency-versions/pom.xml b/lighty-core/dependency-versions/pom.xml
index 2c54e398ae..488b123902 100644
--- a/lighty-core/dependency-versions/pom.xml
+++ b/lighty-core/dependency-versions/pom.xml
@@ -25,7 +25,7 @@
org.opendaylight.odlparent
odlparent
- 13.0.10
+ 13.0.11
pom
import
@@ -34,49 +34,49 @@
org.opendaylight.aaa
aaa-artifacts
- 0.18.4
+ 0.19.3
pom
import
org.opendaylight.controller
controller-artifacts
- 8.0.4
+ 9.0.2
pom
import
org.opendaylight.infrautils
infrautils-artifacts
- 6.0.5
+ 6.0.6
pom
import
org.opendaylight.mdsal
mdsal-artifacts
- 12.0.4
+ 13.0.1
pom
import
org.opendaylight.netconf
netconf-artifacts
- 6.0.6
+ 7.0.4
pom
import
org.opendaylight.yangtools
yangtools-artifacts
- 11.0.5
+ 13.0.2
pom
import
org.opendaylight.bgpcep
bgpcep-artifacts
- 0.20.6
+ 0.21.4
pom
import
@@ -294,4 +294,18 @@
https://oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+
+ opendaylight-snapshot
+ opendaylight-snapshot
+ https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/
+
+ false
+
+
+ true
+
+
+
diff --git a/lighty-core/lighty-binding-parent/pom.xml b/lighty-core/lighty-binding-parent/pom.xml
index e298c9fe7b..56481dac47 100644
--- a/lighty-core/lighty-binding-parent/pom.xml
+++ b/lighty-core/lighty-binding-parent/pom.xml
@@ -49,12 +49,12 @@
org.opendaylight.yangtools
yang-maven-plugin
- 11.0.5
+ 13.0.2
org.opendaylight.mdsal
mdsal-binding-java-api-generator
- 12.0.4
+ 13.0.1
diff --git a/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/ClusteringHandler.java b/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/ClusteringHandler.java
index 3a233d16c0..bb6347ed60 100644
--- a/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/ClusteringHandler.java
+++ b/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/ClusteringHandler.java
@@ -10,13 +10,13 @@
import com.typesafe.config.Config;
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
+import org.opendaylight.mdsal.binding.api.RpcService;
public interface ClusteringHandler {
void initClustering();
- void start(@NonNull ClusterAdminService clusterAdminRPCService);
+ void start(@NonNull RpcService clusterAdminRPCService);
Optional getModuleShardsConfig();
}
diff --git a/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/KubernetesClusteringHandlerImpl.java b/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/KubernetesClusteringHandlerImpl.java
index 69fe254a9b..ac861dff01 100644
--- a/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/KubernetesClusteringHandlerImpl.java
+++ b/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/KubernetesClusteringHandlerImpl.java
@@ -24,8 +24,11 @@
import java.util.concurrent.TimeUnit;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.controller.cluster.ActorSystemProvider;
+import org.opendaylight.mdsal.binding.api.RpcService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.AddReplicasForAllShards;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.AddReplicasForAllShardsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.AddReplicasForAllShardsInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
+import org.opendaylight.yangtools.yang.binding.Rpc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,10 +84,10 @@ public void initClustering() {
}
@Override
- public void start(@NonNull final ClusterAdminService clusterAdminRPCService) {
+ public void start(@NonNull final RpcService clusterAdminRPCService) {
this.actorSystemProvider.getActorSystem().actorOf(
MemberRemovedListener.props(clusterAdminRPCService), "memberRemovedListener");
- this.askForShards(clusterAdminRPCService);
+ this.askForShards(clusterAdminRPCService.getRpc(AddReplicasForAllShards.class));
}
@Override
@@ -96,12 +99,12 @@ public Optional getModuleShardsConfig() {
* The first member of the cluster (leader) will create his shards. Other joining members will query
* the leader for snapshots of the shards.
*/
- private void askForShards(final ClusterAdminService clusterAdminRPCService) {
+ private void askForShards(final Rpc clusterAdminRpcService) {
if (!Cluster.get(actorSystemProvider.getActorSystem()).selfAddress()
.equals(Cluster.get(actorSystemProvider.getActorSystem()).state().getLeader())) {
LOG.info("RPC call - Asking for Shard Snapshots");
try {
- final var rpcResult = clusterAdminRPCService.addReplicasForAllShards(
+ final var rpcResult = clusterAdminRpcService.invoke(
new AddReplicasForAllShardsInputBuilder().build()).get();
LOG.debug("RPC call - Asking for Shard Snapshots result: {}", rpcResult.getResult());
} catch (ExecutionException e) {
diff --git a/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/MemberRemovedListener.java b/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/MemberRemovedListener.java
index f81550eb23..1b8a1ad49d 100644
--- a/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/MemberRemovedListener.java
+++ b/lighty-core/lighty-clustering/src/main/java/io/lighty/core/cluster/kubernetes/MemberRemovedListener.java
@@ -12,11 +12,11 @@
import akka.cluster.Cluster;
import akka.cluster.ClusterEvent;
import akka.cluster.Member;
-import com.google.common.util.concurrent.ListenableFuture;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
+import org.opendaylight.mdsal.binding.api.RpcService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.RemoveAllShardReplicas;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.RemoveAllShardReplicasInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.RemoveAllShardReplicasOutput;
import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -28,15 +28,15 @@ public class MemberRemovedListener extends AbstractActor {
private static final Logger LOG = LoggerFactory.getLogger(MemberRemovedListener.class);
private final Cluster cluster;
- private final ClusterAdminService clusterAdminRPCService;
+ private final RpcService clusterAdminRPCService;
- public MemberRemovedListener(final ClusterAdminService clusterAdminRPCService) {
+ public MemberRemovedListener(final RpcService clusterAdminRPCService) {
LOG.info("{} created", this.getClass());
this.cluster = Cluster.get(super.getContext().getSystem());
this.clusterAdminRPCService = clusterAdminRPCService;
}
- public static Props props(ClusterAdminService clusterAdminRPCService) {
+ public static Props props(RpcService clusterAdminRPCService) {
return Props.create(MemberRemovedListener.class, () -> new MemberRemovedListener(clusterAdminRPCService));
}
@@ -69,15 +69,15 @@ private void processRemovedMember(Member member) {
try {
for (String removedMemberRole : removedMemberRoles) {
- ListenableFuture> rpcResultListenableFuture =
- clusterAdminRPCService.removeAllShardReplicas(new RemoveAllShardReplicasInputBuilder()
- .setMemberName(removedMemberRole).build());
- RpcResult removeAllShardReplicasResult = rpcResultListenableFuture.get();
- if (removeAllShardReplicasResult.isSuccessful()) {
+
+ final var removeRpc = clusterAdminRPCService.getRpc(RemoveAllShardReplicas.class);
+ RpcResult rpcResult = removeRpc.invoke(
+ new RemoveAllShardReplicasInputBuilder().setMemberName(removedMemberRole).build()).get();
+ if (rpcResult.isSuccessful()) {
LOG.info("RPC RemoveAllShards for member {} executed successfully", removedMemberRole);
} else {
LOG.warn("RPC RemoveAllShards for member {} failed: {}", removedMemberRole,
- removeAllShardReplicasResult.getErrors());
+ rpcResult.getErrors());
}
}
LOG.info("Shard replicas removed for member {}", member.address());
@@ -89,4 +89,5 @@ private void processRemovedMember(Member member) {
}
}
+
}
diff --git a/lighty-core/lighty-codecs-util/pom.xml b/lighty-core/lighty-codecs-util/pom.xml
index afca6b377c..e795328cd9 100644
--- a/lighty-core/lighty-codecs-util/pom.xml
+++ b/lighty-core/lighty-codecs-util/pom.xml
@@ -69,4 +69,18 @@
test
+
+
+
+ opendaylight-snapshot
+ opendaylight-snapshot
+ https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/
+
+ false
+
+
+ true
+
+
+
diff --git a/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/ConverterUtils.java b/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/ConverterUtils.java
index b31d66faad..a03d200a8b 100644
--- a/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/ConverterUtils.java
+++ b/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/ConverterUtils.java
@@ -16,6 +16,7 @@
import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.netconf.api.DocumentedException;
+import org.opendaylight.netconf.api.xml.MissingNameSpaceException;
import org.opendaylight.netconf.api.xml.XmlElement;
import org.opendaylight.netconf.api.xml.XmlUtil;
import org.opendaylight.yangtools.yang.common.QName;
@@ -90,15 +91,20 @@ public static Optional extends NotificationDefinition> loadNotification(
* @return {@link QName} for input data or empty.
*/
public static Optional getRpcQName(final XmlElement xmlElement) {
- Optional optionalNamespace = xmlElement.findNamespaceAttribute();
+ String optionalNamespace = null;
+ try {
+ optionalNamespace = xmlElement.getNamespace();
+ } catch (MissingNameSpaceException e) {
+ throw new RuntimeException(e);
+ }
String name = xmlElement.getName();
if (Strings.isNullOrEmpty(name)) {
return Optional.empty();
}
String revision = null;
String namespace;
- if (optionalNamespace.isPresent() && !Strings.isNullOrEmpty(optionalNamespace.get())) {
- String[] split = optionalNamespace.get().split("\\?");
+ if (optionalNamespace != null) {
+ String[] split = optionalNamespace.split("\\?");
if (split.length > 1 && split[1].contains("revision=")) {
revision = split[1].replace("revision=", "");
diff --git a/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/JsonNodeConverter.java b/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/JsonNodeConverter.java
index 01dff3ba0c..04d2fd2847 100644
--- a/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/JsonNodeConverter.java
+++ b/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/JsonNodeConverter.java
@@ -95,7 +95,7 @@ public JsonNodeConverter(final EffectiveModelContext effectiveModelContext,
public Writer serializeData(final Inference inference,
final NormalizedNode normalizedNode) throws SerializationException {
final Writer writer = new StringWriter();
- final XMLNamespace initialNamespace = normalizedNode.getIdentifier().getNodeType().getNamespace();
+ final XMLNamespace initialNamespace = normalizedNode.name().getNodeType().getNamespace();
// nnStreamWriter closes underlying JsonWriter, we don't need too
final JsonWriter jsonWriter = new JsonWriter(writer);
// Exclusive nnWriter closes underlying NormalizedNodeStreamWriter, we don't need too
@@ -127,9 +127,9 @@ public Writer serializeRpc(final Inference inference,
final NormalizedNode normalizedNode) throws SerializationException {
Preconditions.checkState(normalizedNode instanceof ContainerNode,
"RPC input/output to serialize is expected to be a ContainerNode");
- final XMLNamespace namespace = normalizedNode.getIdentifier().getNodeType().getNamespace();
+ final XMLNamespace namespace = normalizedNode.name().getNodeType().getNamespace();
// Input/output
- final String localName = normalizedNode.getIdentifier().getNodeType().getLocalName();
+ final String localName = normalizedNode.name().getNodeType().getLocalName();
final Writer writer = new StringWriter();
// nnStreamWriter closes underlying JsonWriter, we don't need too
final JsonWriter jsonWriter = new JsonWriter(writer);
@@ -184,7 +184,7 @@ private void parseToResult(final NormalizedNodeStreamWriter writer, final Reader
@Override
public EffectiveModelContext getModelContext() {
- return jsonCodecFactory.getEffectiveModelContext();
+ return jsonCodecFactory.modelContext();
}
}
diff --git a/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/XmlNodeConverter.java b/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/XmlNodeConverter.java
index e428cf2523..29c526cd8d 100644
--- a/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/XmlNodeConverter.java
+++ b/lighty-core/lighty-codecs-util/src/main/java/io/lighty/codecs/util/XmlNodeConverter.java
@@ -106,9 +106,9 @@ public Writer serializeRpc(final Inference inference, final NormalizedNode norma
} catch (XMLStreamException | FactoryConfigurationError e) {
throw new SerializationException(e);
}
- final XMLNamespace namespace = normalizedNode.getIdentifier().getNodeType().getNamespace();
+ final XMLNamespace namespace = normalizedNode.name().getNodeType().getNamespace();
// Input/output
- final String localName = normalizedNode.getIdentifier().getNodeType().getLocalName();
+ final String localName = normalizedNode.name().getNodeType().getLocalName();
final NormalizedNodeStreamWriter nnStreamWriter = XMLStreamNormalizedNodeStreamWriter
.create(xmlStreamWriter, inference);
try (NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nnStreamWriter)) {
diff --git a/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/AbstractCodecTest.java b/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/AbstractCodecTest.java
index 3be02e8e9c..f135bb1c9d 100644
--- a/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/AbstractCodecTest.java
+++ b/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/AbstractCodecTest.java
@@ -40,10 +40,10 @@
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.impl.ImmutableContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.data.spi.node.impl.ImmutableMapEntryNodeBuilder;
+import org.opendaylight.yangtools.yang.data.spi.node.impl.ImmutableSystemMapNodeBuilder;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.parser.api.YangParserException;
import org.opendaylight.yangtools.yang.parser.impl.DefaultYangParserFactory;
@@ -73,7 +73,7 @@ public abstract class AbstractCodecTest {
public AbstractCodecTest() throws YangParserException {
this.bindingCodecContext = createCodecContext(loadModuleInfos());
- this.effectiveModelContext = bindingCodecContext.getRuntimeContext().getEffectiveModelContext();
+ this.effectiveModelContext = bindingCodecContext.getRuntimeContext().modelContext();
this.toasterTopLevelContainerNode = topLevelContainerNode();
this.rpcLeafInputNode = rpcLeafInputNode();
@@ -93,7 +93,7 @@ private static BindingCodecContext createCodecContext(final List
defaultYangParserFactory);
moduleInfoSnapshotBuilder.add(moduleInfos);
final BindingRuntimeTypes bindingRuntimeTypes = bindingRuntimeGenerator
- .generateTypeMapping(moduleInfoSnapshotBuilder.build().getEffectiveModelContext());
+ .generateTypeMapping(moduleInfoSnapshotBuilder.build().modelContext());
final DefaultBindingRuntimeContext defaultBindingRuntimeContext = new DefaultBindingRuntimeContext(
bindingRuntimeTypes, moduleInfoSnapshotBuilder.build());
@@ -124,72 +124,72 @@ private static List loadModuleInfos() {
}
private static NormalizedNode topLevelContainerNode() {
- return ImmutableContainerNodeBuilder.create().withNodeIdentifier(NodeIdentifier.create(Toaster.QNAME))
+ return new ImmutableContainerNodeBuilder().withNodeIdentifier(NodeIdentifier.create(Toaster.QNAME))
.withValue(List.of(
- ImmutableLeafNodeBuilder.createNode(
+ ImmutableNodes.leafNode(
NodeIdentifier.create(qOfToasterModel("toasterManufacturer")), "manufacturer"),
- ImmutableLeafNodeBuilder.createNode(
+ ImmutableNodes.leafNode(
NodeIdentifier.create(qOfToasterModel("toasterStatus")), ToasterStatus.Up.getName()),
- ImmutableLeafNodeBuilder.createNode(
+ ImmutableNodes.leafNode(
NodeIdentifier.create(qOfToasterModel("darknessFactor")), 50)))
.build();
}
private static NormalizedNode rpcLeafInputNode() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(NodeIdentifier.create(SimpleInputOutputRpcInput.QNAME))
- .withChild(ImmutableLeafNodeBuilder.createNode(
+ .withChild(ImmutableNodes.leafNode(
NodeIdentifier.create(qOfTestModel("input-obj")), "testValue"))
.build();
}
private static NormalizedNode rpcLeafOutputNode() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(NodeIdentifier.create(SimpleInputOutputRpcOutput.QNAME))
- .withChild(ImmutableLeafNodeBuilder.createNode(
+ .withChild(ImmutableNodes.leafNode(
NodeIdentifier.create(qOfTestModel("output-obj")), "testValue"))
.build();
}
private static NormalizedNode notificationContainer() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(NodeIdentifier.create(ToasterRestocked.QNAME))
- .withChild(ImmutableLeafNodeBuilder.createNode(
+ .withChild(ImmutableNodes.leafNode(
NodeIdentifier.create(qOfToasterModel("amountOfBread")), 1)).build();
}
private static NormalizedNode listEntryNode() {
final QName key = qOfTestModel("name");
- return ImmutableMapEntryNodeBuilder.create()
+ return new ImmutableMapEntryNodeBuilder()
.withNodeIdentifier(NodeIdentifierWithPredicates.of(
SampleList.QNAME, key, "nameValue"))
.withValue(List.of(
- ImmutableLeafNodeBuilder.createNode(NodeIdentifier.create(key), "nameValue"),
- ImmutableLeafNodeBuilder.createNode(NodeIdentifier
+ ImmutableNodes.leafNode(NodeIdentifier.create(key), "nameValue"),
+ ImmutableNodes.leafNode(NodeIdentifier
.create(qOfTestModel("value")), 1)))
.build();
}
private static NormalizedNode listNode() {
- return ImmutableMapNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(SampleList.QNAME))
+ return new ImmutableSystemMapNodeBuilder().withNodeIdentifier(new NodeIdentifier(SampleList.QNAME))
.withChild((MapEntryNode) listEntryNode()).build();
}
private static NormalizedNode innerContainerNode() {
- return ImmutableContainerNodeBuilder.create().withNodeIdentifier(NodeIdentifier.create(SampleContainer.QNAME))
+ return new ImmutableContainerNodeBuilder().withNodeIdentifier(NodeIdentifier.create(SampleContainer.QNAME))
.withValue(List.of(
- ImmutableLeafNodeBuilder.createNode(
+ org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes.leafNode(
NodeIdentifier.create(qOfTestModel("name")), "name")))
.build();
}
protected static QName qOfTestModel(final String localName) {
- return org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.$YangModuleInfoImpl
+ return org.opendaylight.yang.svc.v1.http.pantheon.tech.ns.test.models.rev180119.YangModuleInfoImpl
.qnameOf(localName);
}
protected static QName qOfToasterModel(final String localName) {
- return org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.$YangModuleInfoImpl
+ return org.opendaylight.yang.svc.v1.http.netconfcentral.org.ns.toaster.rev091120.YangModuleInfoImpl
.qnameOf(localName);
}
diff --git a/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/XmlNodeConverterTest.java b/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/XmlNodeConverterTest.java
index 72008834bd..f6879ef619 100644
--- a/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/XmlNodeConverterTest.java
+++ b/lighty-core/lighty-codecs-util/src/test/java/io/lighty/codecs/util/XmlNodeConverterTest.java
@@ -16,13 +16,13 @@
import org.junit.Ignore;
import org.junit.Test;
import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.Toaster;
-import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.$YangModuleInfoImpl;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.ContainerIoRpcInput;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.SampleList;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.SimpleInputOutputRpcInput;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.SimpleInputOutputRpcOutput;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.TopLevelContainer;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.container.group.SampleContainer;
+import org.opendaylight.yang.svc.v1.http.pantheon.tech.ns.test.models.rev180119.YangModuleInfoImpl;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.opendaylight.yangtools.yang.parser.api.YangParserException;
@@ -127,7 +127,7 @@ public void testDeserializeInnerContainer() throws DeserializationException {
@Test
public void testDeserializeInnerLeaf() throws DeserializationException {
final NormalizedNode result = bindingSerializer.deserialize(Absolute.of(TopLevelContainer.QNAME,
- SampleContainer.QNAME, $YangModuleInfoImpl.qnameOf("name")),
+ SampleContainer.QNAME, YangModuleInfoImpl.qnameOf("name")),
new StringReader(loadResourceAsString("inner-leaf.xml")));
assertNotNull(result);
}
diff --git a/lighty-core/lighty-common/src/test/java/io/lighty/core/common/models/tests/YangModelUtilsTests.java b/lighty-core/lighty-common/src/test/java/io/lighty/core/common/models/tests/YangModelUtilsTests.java
index 4d5a0fba16..f022a4c7c2 100644
--- a/lighty-core/lighty-common/src/test/java/io/lighty/core/common/models/tests/YangModelUtilsTests.java
+++ b/lighty-core/lighty-common/src/test/java/io/lighty/core/common/models/tests/YangModelUtilsTests.java
@@ -27,12 +27,12 @@ public class YangModelUtilsTests {
private static final String TEST_NAME = "ietf-inet-types";
private static final String TEST_REVISION = "2013-07-15";
private static final Set YANG_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev230126
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715
- .$YangModuleInfoImpl.getInstance()
+ org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev230126
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715
+ .YangModuleInfoImpl.getInstance()
);
@DataProvider(name = "equalsTestData")
@@ -95,10 +95,10 @@ public static Object[][] gatModuleIdStringInits() {
//valid inits
{TEST_NAMESPACE, TEST_NAME, TEST_REVISION, true},
{"", TEST_NAME, TEST_REVISION, true},
+ {TEST_NAMESPACE, TEST_NAME, null, true},
//invalid inits
{TEST_NAMESPACE, TEST_NAME, "", false},
- {TEST_NAMESPACE, TEST_NAME, null, false},
{null, TEST_NAME, TEST_REVISION, false},
{TEST_NAMESPACE, null, TEST_REVISION, false},
{TEST_NAMESPACE, "", TEST_REVISION, false},
diff --git a/lighty-core/lighty-controller-guice-di/src/main/java/io/lighty/core/controller/guice/LightyControllerModule.java b/lighty-core/lighty-controller-guice-di/src/main/java/io/lighty/core/controller/guice/LightyControllerModule.java
index f124256c1c..9b33a8804c 100644
--- a/lighty-core/lighty-controller-guice-di/src/main/java/io/lighty/core/controller/guice/LightyControllerModule.java
+++ b/lighty-core/lighty-controller-guice-di/src/main/java/io/lighty/core/controller/guice/LightyControllerModule.java
@@ -14,10 +14,11 @@
import io.netty.channel.EventLoopGroup;
import io.netty.util.Timer;
import io.netty.util.concurrent.EventExecutor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
import org.opendaylight.controller.cluster.ActorSystemProvider;
import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface;
-import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
-import org.opendaylight.controller.config.threadpool.ThreadPool;
+import org.opendaylight.controller.cluster.datastore.admin.ClusterAdminRpcService;
import org.opendaylight.infrautils.diagstatus.DiagStatusService;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.MountPointService;
@@ -33,13 +34,11 @@
import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
-import org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
+import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,13 +64,13 @@ protected void configure() {
.toInstance(lightyServices.getDiagStatusService());
bind(ActorSystemProvider.class)
.toInstance(lightyServices.getActorSystemProvider());
- bind(EffectiveModelContextProvider.class).toInstance(lightyServices.getEffectiveModelContextProvider());
+ bind(EffectiveModelContext.class).toInstance(lightyServices.getEffectiveModelContext());
bind(DOMSchemaService.class)
.toInstance(lightyServices.getDOMSchemaService());
- bind(DOMYangTextSourceProvider.class)
- .toInstance(lightyServices.getDOMYangTextSourceProvider());
- bind(DOMNotificationSubscriptionListenerRegistry.class)
- .toInstance(lightyServices.getDOMNotificationSubscriptionListenerRegistry());
+ bind(DOMSchemaService.YangTextSourceExtension.class)
+ .toInstance(lightyServices.getYangTextSourceExtension());
+ bind(DOMNotificationRouter.class)
+ .toInstance(lightyServices.getDOMNotificationRouter());
bind(DistributedDataStoreInterface.class)
.annotatedWith(Names.named("ControllerConfigDatastore"))
.toInstance(lightyServices.getConfigDatastore());
@@ -86,7 +85,7 @@ protected void configure() {
.toInstance(lightyServices.getDOMEntityOwnershipService());
bind(EntityOwnershipService.class)
.toInstance(lightyServices.getEntityOwnershipService());
- bind(ClusterAdminService.class)
+ bind(ClusterAdminRpcService.class)
.toInstance(lightyServices.getClusterAdminRPCService());
bind(ClusterSingletonServiceProvider.class)
.toInstance(lightyServices.getClusterSingletonServiceProvider());
@@ -98,9 +97,9 @@ protected void configure() {
bind(EventLoopGroup.class)
.annotatedWith(Names.named("WorkerGroup"))
.toInstance(lightyServices.getWorkerGroup());
- bind(ThreadPool.class)
+ bind(ExecutorService.class)
.toInstance(lightyServices.getThreadPool());
- bind(ScheduledThreadPool.class)
+ bind(ScheduledExecutorService.class)
.toInstance(lightyServices.getScheduledThreadPool());
bind(Timer.class)
.toInstance(lightyServices.getTimer());
diff --git a/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/GuiceDITest.java b/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/GuiceDITest.java
index 2b28091fc2..6b7f9f76ae 100644
--- a/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/GuiceDITest.java
+++ b/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/GuiceDITest.java
@@ -69,7 +69,7 @@ public void testDIActorSystemProvider() {
@Test
public void testDISchemaContextProvider() {
- assertNotNull(testService.getSchemaContextProvider());
+ assertNotNull(testService.getSchemaContext());
}
@Test
diff --git a/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/TestService.java b/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/TestService.java
index c92546d739..76536ca4eb 100644
--- a/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/TestService.java
+++ b/lighty-core/lighty-controller-guice-di/src/test/java/io/lighty/core/controller/guice/tests/TestService.java
@@ -14,10 +14,11 @@
import io.netty.util.concurrent.EventExecutor;
import jakarta.inject.Inject;
import jakarta.inject.Named;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
import org.opendaylight.controller.cluster.ActorSystemProvider;
import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface;
-import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
-import org.opendaylight.controller.config.threadpool.ThreadPool;
+import org.opendaylight.controller.cluster.datastore.admin.ClusterAdminRpcService;
import org.opendaylight.infrautils.diagstatus.DiagStatusService;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.MountPointService;
@@ -33,13 +34,11 @@
import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
-import org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
+import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
public class TestService {
@@ -50,16 +49,16 @@ public class TestService {
private ActorSystemProvider actorSystemProvider;
@Inject
- private EffectiveModelContextProvider effectiveModelContextProvider;
+ private EffectiveModelContext effectiveModelContext;
@Inject
private DOMSchemaService domSchemaService;
@Inject
- private DOMYangTextSourceProvider domYangTextSourceProvider;
+ private DOMSchemaService.YangTextSourceExtension domYangTextSourceProvider;
@Inject
- private DOMNotificationSubscriptionListenerRegistry domNotificationSubscriptionListenerRegistry;
+ private DOMNotificationRouter domNotificationSubscriptionListenerRegistry;
@Inject
@Named("ControllerConfigDatastore")
@@ -82,7 +81,7 @@ public class TestService {
private EntityOwnershipService entityOwnershipService;
@Inject
- private ClusterAdminService clusterAdminService;
+ private ClusterAdminRpcService clusterAdminService;
@Inject
private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
@@ -99,10 +98,10 @@ public class TestService {
private EventLoopGroup eventLoopGroupWorker;
@Inject
- private ThreadPool threadPool;
+ private ExecutorService threadPool;
@Inject
- private ScheduledThreadPool scheduledThreadPool;
+ private ScheduledExecutorService scheduledThreadPool;
@Inject
private Timer timer;
@@ -156,19 +155,19 @@ public ActorSystemProvider getActorSystemProvider() {
return actorSystemProvider;
}
- public EffectiveModelContextProvider getSchemaContextProvider() {
- return effectiveModelContextProvider;
+ public EffectiveModelContext getSchemaContext() {
+ return effectiveModelContext;
}
public DOMSchemaService getDomSchemaService() {
return domSchemaService;
}
- public DOMYangTextSourceProvider getDomYangTextSourceProvider() {
+ public DOMSchemaService.YangTextSourceExtension getDomYangTextSourceProvider() {
return domYangTextSourceProvider;
}
- public DOMNotificationSubscriptionListenerRegistry getDomNotificationSubscriptionListenerRegistry() {
+ public DOMNotificationRouter getDomNotificationSubscriptionListenerRegistry() {
return domNotificationSubscriptionListenerRegistry;
}
@@ -196,7 +195,7 @@ public EntityOwnershipService getEntityOwnershipService() {
return entityOwnershipService;
}
- public ClusterAdminService getClusterAdminService() {
+ public ClusterAdminRpcService getClusterAdminService() {
return clusterAdminService;
}
@@ -216,11 +215,11 @@ public EventLoopGroup getEventLoopGroupWorker() {
return eventLoopGroupWorker;
}
- public ThreadPool getThreadPool() {
+ public ExecutorService getThreadPool() {
return threadPool;
}
- public ScheduledThreadPool getScheduledThreadPool() {
+ public ScheduledExecutorService getScheduledThreadPool() {
return scheduledThreadPool;
}
diff --git a/lighty-core/lighty-controller-spring-di/src/main/java/io/lighty/core/controller/spring/LightyCoreSpringConfiguration.java b/lighty-core/lighty-controller-spring-di/src/main/java/io/lighty/core/controller/spring/LightyCoreSpringConfiguration.java
index 6b350ef10d..d4aaaa1b0c 100644
--- a/lighty-core/lighty-controller-spring-di/src/main/java/io/lighty/core/controller/spring/LightyCoreSpringConfiguration.java
+++ b/lighty-core/lighty-controller-spring-di/src/main/java/io/lighty/core/controller/spring/LightyCoreSpringConfiguration.java
@@ -14,10 +14,11 @@
import io.netty.util.concurrent.EventExecutor;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
import org.opendaylight.controller.cluster.ActorSystemProvider;
import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface;
-import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
-import org.opendaylight.controller.config.threadpool.ThreadPool;
+import org.opendaylight.controller.cluster.datastore.admin.ClusterAdminRpcService;
import org.opendaylight.infrautils.diagstatus.DiagStatusService;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.MountPointService;
@@ -33,13 +34,11 @@
import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
-import org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
+import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
@@ -140,8 +139,8 @@ public ActorSystemProvider actorSystemProvider() {
}
@Bean(destroyMethod = "")
- public EffectiveModelContextProvider effectiveModelContextProvider() {
- return this.lightyController.getServices().getEffectiveModelContextProvider();
+ public EffectiveModelContext effectiveModelContext() {
+ return this.lightyController.getServices().getEffectiveModelContext();
}
@Bean(destroyMethod = "")
@@ -151,8 +150,8 @@ public DOMSchemaService domSchemaService() {
}
@Bean(destroyMethod = "")
- public DOMYangTextSourceProvider domYangTextSourceProvider() {
- return this.lightyController.getServices().getDOMYangTextSourceProvider();
+ public DOMSchemaService.YangTextSourceExtension domYangTextSourceProvider() {
+ return this.lightyController.getServices().getYangTextSourceExtension();
}
@Bean(destroyMethod = "")
@@ -172,8 +171,8 @@ public DOMNotificationService domNotificationService() {
}
@Bean(destroyMethod = "")
- public DOMNotificationSubscriptionListenerRegistry domNotificationSubscriptionListenerRegistry() {
- return this.lightyController.getServices().getDOMNotificationSubscriptionListenerRegistry();
+ public DOMNotificationRouter domNotificationRouter() {
+ return this.lightyController.getServices().getDOMNotificationRouter();
}
@Bean(name = "ConfigDatastore", destroyMethod = "")
@@ -223,7 +222,7 @@ public EntityOwnershipService entityOwnershipService() {
}
@Bean(destroyMethod = "")
- public ClusterAdminService clusterAdminRPCService() {
+ public ClusterAdminRpcService clusterAdminRPCService() {
return this.lightyController.getServices().getClusterAdminRPCService();
}
@@ -274,12 +273,12 @@ public EventLoopGroup workerGroup() {
@Bean(destroyMethod = "")
@Primary
- public ThreadPool threadPool() {
+ public ExecutorService threadPool() {
return this.lightyController.getServices().getThreadPool();
}
@Bean(destroyMethod = "")
- public ScheduledThreadPool scheduledThreadPool() {
+ public ScheduledExecutorService scheduledThreadPool() {
return this.lightyController.getServices().getScheduledThreadPool();
}
diff --git a/lighty-core/lighty-controller-spring-di/src/test/java/io/lighty/core/controller/spring/LightyCoreSpringConfigurationTest.java b/lighty-core/lighty-controller-spring-di/src/test/java/io/lighty/core/controller/spring/LightyCoreSpringConfigurationTest.java
index 9bb9c3c753..57740b1e7b 100644
--- a/lighty-core/lighty-controller-spring-di/src/test/java/io/lighty/core/controller/spring/LightyCoreSpringConfigurationTest.java
+++ b/lighty-core/lighty-controller-spring-di/src/test/java/io/lighty/core/controller/spring/LightyCoreSpringConfigurationTest.java
@@ -21,11 +21,12 @@
import io.netty.util.concurrent.EventExecutor;
import java.util.Collections;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
import org.junit.jupiter.api.Test;
import org.opendaylight.controller.cluster.ActorSystemProvider;
import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface;
-import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
-import org.opendaylight.controller.config.threadpool.ThreadPool;
+import org.opendaylight.controller.cluster.datastore.admin.ClusterAdminRpcService;
import org.opendaylight.infrautils.diagstatus.DiagStatusService;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.MountPointService;
@@ -41,13 +42,11 @@
import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
-import org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
+import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -81,13 +80,13 @@ public class LightyCoreSpringConfigurationTest extends AbstractJUnit4SpringConte
ActorSystemProvider actorSystemProviderTestProperty;
@Autowired
- EffectiveModelContextProvider effectiveModelContextProvider;
+ EffectiveModelContext effectiveModelContext;
@Autowired
DOMSchemaService domSchemaServiceTestProperty;
@Autowired
- DOMYangTextSourceProvider domYangTextSourceProviderTestProperty;
+ DOMSchemaService.YangTextSourceExtension domYangTextSourceProviderTestProperty;
@Autowired
DOMMountPointService domMountPointServiceTestProperty;
@@ -99,7 +98,7 @@ public class LightyCoreSpringConfigurationTest extends AbstractJUnit4SpringConte
DOMNotificationService domNotificationServiceTestProperty;
@Autowired
- DOMNotificationSubscriptionListenerRegistry domNotificationSubscriptionListenerRegistryTestProperty;
+ DOMNotificationRouter domNotificationSubscriptionListenerRegistryTestProperty;
@Autowired
@Qualifier("ConfigDatastore")
@@ -131,7 +130,7 @@ public class LightyCoreSpringConfigurationTest extends AbstractJUnit4SpringConte
EntityOwnershipService entityOwnershipServiceTestProperty;
@Autowired
- ClusterAdminService clusterAdminRPCServiceTestProperty;
+ ClusterAdminRpcService clusterAdminRPCServiceTestProperty;
@Autowired
ClusterSingletonServiceProvider clusterSingletonServiceProviderTestProperty;
@@ -163,10 +162,11 @@ public class LightyCoreSpringConfigurationTest extends AbstractJUnit4SpringConte
EventLoopGroup workerGroupTestProperty;
@Autowired
- ThreadPool threadPoolTestProperty;
+ ExecutorService threadPoolTestProperty;
@Autowired
- ScheduledThreadPool scheduledThreadPoolTestProperty;
+ @Qualifier("scheduledThreadPool")
+ ScheduledExecutorService scheduledThreadPoolTestProperty;
@Autowired
Timer timerTestProperty;
@@ -177,7 +177,7 @@ public void testLightyBeansExists() {
assertNotNull(lightyModuleRegistryServiceTestProperty);
assertNotNull(diagStatusServiceTestProperty);
assertNotNull(actorSystemProviderTestProperty);
- assertNotNull(effectiveModelContextProvider);
+ assertNotNull(effectiveModelContext);
assertNotNull(domSchemaServiceTestProperty);
assertNotNull(domYangTextSourceProviderTestProperty);
assertNotNull(domMountPointServiceTestProperty);
diff --git a/lighty-core/lighty-controller/README.md b/lighty-core/lighty-controller/README.md
index 791a12254e..e125f116b1 100644
--- a/lighty-core/lighty-controller/README.md
+++ b/lighty-core/lighty-controller/README.md
@@ -109,7 +109,7 @@ or completely override it if required.
"schemaServiceConfig":{
"topLevelModels":[
{ "usedBy": "CONTROLLER", "name": "cluster-admin", "revision": "2015-10-13", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy": "CONTROLLER", "name": "ietf-yang-types", "revision": "2013-07-15", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-types"},
{ "usedBy": "CONTROLLER", "name": "odl-general-entity", "revision": "2015-09-30", "nameSpace": "urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
diff --git a/lighty-core/lighty-controller/pom.xml b/lighty-core/lighty-controller/pom.xml
index 9f19ae5f16..4c70e1be7d 100644
--- a/lighty-core/lighty-controller/pom.xml
+++ b/lighty-core/lighty-controller/pom.xml
@@ -144,7 +144,7 @@
org.opendaylight.mdsal
- mdsal-singleton-dom-impl
+ mdsal-singleton-impl
@@ -164,14 +164,6 @@
io.netty
netty-common
-
- org.opendaylight.controller
- threadpool-config-api
-
-
- org.opendaylight.controller
- threadpool-config-impl
-
org.opendaylight.controller
@@ -225,6 +217,10 @@
lighty-test-models
test
+
+ org.opendaylight.netconf
+ yanglib-mdsal-writer
+
diff --git a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/AbstractLightyModule.java b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/AbstractLightyModule.java
index 68267d2e29..101ad8f942 100644
--- a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/AbstractLightyModule.java
+++ b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/AbstractLightyModule.java
@@ -13,6 +13,7 @@
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -98,7 +99,7 @@ public AbstractLightyModule() {
* @return success of stop.
* @throws InterruptedException if stopping was interrupted.
*/
- protected abstract boolean stopProcedure() throws InterruptedException;
+ protected abstract boolean stopProcedure() throws InterruptedException, ExecutionException;
@Override
public synchronized ListenableFuture start() {
diff --git a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyModuleRegistryService.java b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyModuleRegistryService.java
index c5079ab539..58f5774433 100644
--- a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyModuleRegistryService.java
+++ b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyModuleRegistryService.java
@@ -8,7 +8,7 @@
package io.lighty.core.controller.api;
import java.util.List;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
/**
@@ -19,8 +19,9 @@
public interface LightyModuleRegistryService {
/**
* Register instances of Yang modules into global schema context.
+ *
* @param yangModuleInfos modules to register
* @return list of registrations
*/
- List> registerModuleInfos(Iterable extends YangModuleInfo> yangModuleInfos);
+ List registerModuleInfos(Iterable extends YangModuleInfo> yangModuleInfos);
}
diff --git a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyServices.java b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyServices.java
index 0087984b8a..d873c8728b 100644
--- a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyServices.java
+++ b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/api/LightyServices.java
@@ -11,10 +11,11 @@
import io.netty.channel.EventLoopGroup;
import io.netty.util.Timer;
import io.netty.util.concurrent.EventExecutor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
import org.opendaylight.controller.cluster.ActorSystemProvider;
import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface;
-import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
-import org.opendaylight.controller.config.threadpool.ThreadPool;
+import org.opendaylight.controller.cluster.datastore.admin.ClusterAdminRpcService;
import org.opendaylight.infrautils.diagstatus.DiagStatusService;
import org.opendaylight.infrautils.ready.SystemReadyMonitor;
import org.opendaylight.mdsal.binding.api.ActionProviderService;
@@ -23,8 +24,8 @@
import org.opendaylight.mdsal.binding.api.MountPointService;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
import org.opendaylight.mdsal.binding.api.NotificationService;
-import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.mdsal.binding.api.RpcService;
import org.opendaylight.mdsal.binding.dom.adapter.ConstantAdapterContext;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -37,13 +38,11 @@
import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
-import org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
+import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.parser.api.YangParserFactory;
/**
@@ -62,13 +61,13 @@ public interface LightyServices extends LightyModuleRegistryService {
ActorSystemProvider getActorSystemProvider();
- EffectiveModelContextProvider getEffectiveModelContextProvider();
+ EffectiveModelContext getEffectiveModelContext();
DOMSchemaService getDOMSchemaService();
- DOMYangTextSourceProvider getDOMYangTextSourceProvider();
+ DOMSchemaService.YangTextSourceExtension getYangTextSourceExtension();
- DOMNotificationSubscriptionListenerRegistry getDOMNotificationSubscriptionListenerRegistry();
+ DOMNotificationRouter getDOMNotificationRouter();
DistributedDataStoreInterface getConfigDatastore();
@@ -84,7 +83,7 @@ public interface LightyServices extends LightyModuleRegistryService {
EntityOwnershipService getEntityOwnershipService();
- ClusterAdminService getClusterAdminRPCService();
+ ClusterAdminRpcService getClusterAdminRPCService();
ClusterSingletonServiceProvider getClusterSingletonServiceProvider();
@@ -94,9 +93,9 @@ public interface LightyServices extends LightyModuleRegistryService {
EventLoopGroup getWorkerGroup();
- ThreadPool getThreadPool();
+ ExecutorService getThreadPool();
- ScheduledThreadPool getScheduledThreadPool();
+ ScheduledExecutorService getScheduledThreadPool();
Timer getTimer();
@@ -132,6 +131,6 @@ public interface LightyServices extends LightyModuleRegistryService {
ActionService getActionService();
- RpcConsumerRegistry getRpcConsumerRegistry();
+ RpcService getRpcConsumerRegistry();
}
diff --git a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/LightyControllerImpl.java b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/LightyControllerImpl.java
index 5db7e2eee9..7516230fc3 100644
--- a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/LightyControllerImpl.java
+++ b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/LightyControllerImpl.java
@@ -10,6 +10,7 @@
import akka.actor.Terminated;
import akka.management.javadsl.AkkaManagement;
import com.google.common.base.Stopwatch;
+import com.google.common.util.concurrent.ListenableFuture;
import com.typesafe.config.Config;
import io.lighty.codecs.util.exception.DeserializationException;
import io.lighty.core.cluster.ClusteringHandler;
@@ -43,6 +44,9 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.eclipse.jdt.annotation.Nullable;
@@ -63,10 +67,6 @@
import org.opendaylight.controller.cluster.datastore.config.Configuration;
import org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl;
import org.opendaylight.controller.cluster.datastore.config.HybridModuleShardConfigProvider;
-import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
-import org.opendaylight.controller.config.threadpool.ThreadPool;
-import org.opendaylight.controller.config.threadpool.util.FixedThreadPoolWrapper;
-import org.opendaylight.controller.config.threadpool.util.ScheduledThreadPoolWrapper;
import org.opendaylight.controller.eos.akka.AkkaEntityOwnershipService;
import org.opendaylight.controller.remote.rpc.RemoteOpsProvider;
import org.opendaylight.controller.remote.rpc.RemoteOpsProviderConfig;
@@ -79,8 +79,8 @@
import org.opendaylight.mdsal.binding.api.MountPointService;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
import org.opendaylight.mdsal.binding.api.NotificationService;
-import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.mdsal.binding.api.RpcService;
import org.opendaylight.mdsal.binding.dom.adapter.BindingAdapterFactory;
import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMMountPointServiceAdapter;
import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMNotificationPublishServiceAdapter;
@@ -107,26 +107,23 @@
import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
import org.opendaylight.mdsal.dom.broker.DOMMountPointServiceImpl;
import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
import org.opendaylight.mdsal.dom.broker.DOMRpcRouter;
-import org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
import org.opendaylight.mdsal.dom.spi.FixedDOMSchemaService;
import org.opendaylight.mdsal.dom.spi.store.DOMStore;
import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
-import org.opendaylight.mdsal.eos.binding.dom.adapter.BindingDOMEntityOwnershipServiceAdapter;
+import org.opendaylight.mdsal.eos.binding.dom.adapter.DefaultEntityOwnershipService;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.mdsal.singleton.dom.impl.DOMClusterSingletonServiceProviderImpl;
-import org.opendaylight.mdsal.singleton.dom.impl.di.DefaultClusterSingletonServiceProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
+import org.opendaylight.mdsal.singleton.impl.EOSClusterSingletonServiceProvider;
+import org.opendaylight.netconf.yanglib.writer.YangLibraryWriterSingleton;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.util.DurationStatisticsTracker;
import org.opendaylight.yangtools.util.concurrent.SpecialExecutors;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
import org.opendaylight.yangtools.yang.parser.api.YangParserFactory;
import org.opendaylight.yangtools.yang.parser.impl.DefaultYangParserFactory;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathParserFactory;
@@ -168,9 +165,9 @@ public class LightyControllerImpl extends AbstractLightyModule implements Lighty
private DOMActionService domActionService;
private DOMActionProviderService domActionProviderService;
private AkkaEntityOwnershipService akkaEntityOwnershipService;
- private BindingDOMEntityOwnershipServiceAdapter bindingDOMEntityOwnershipServiceAdapter;
+ private DefaultEntityOwnershipService defaultEntityOwnershipService;
private ClusterAdminRpcService clusterAdminRpcService;
- private DOMClusterSingletonServiceProviderImpl clusterSingletonServiceProvider;
+ private EOSClusterSingletonServiceProvider clusterSingletonServiceProvider;
private NotificationService notificationService;
private NotificationPublishService notificationPublishService;
private DataBroker dataBroker;
@@ -178,8 +175,8 @@ public class LightyControllerImpl extends AbstractLightyModule implements Lighty
private EventExecutor eventExecutor;
private EventLoopGroup bossGroup;
private EventLoopGroup workerGroup;
- private ThreadPool threadPool;
- private ScheduledThreadPool scheduledThreadPool;
+ private ExecutorService threadPool;
+ private ScheduledExecutorService scheduledThreadPool;
private Timer timer;
private ModuleInfoSnapshot moduleInfoSnapshot;
private ModuleInfoSnapshotResolver snapshotResolver;
@@ -193,11 +190,12 @@ public class LightyControllerImpl extends AbstractLightyModule implements Lighty
private ActionService actionService;
private ActionProviderService actionProviderService;
private final LightySystemReadyMonitorImpl systemReadyMonitor;
- private List> modelsRegistration = new ArrayList<>();
+ private List modelsRegistration = new ArrayList<>();
private AkkaManagement akkaManagement;
private Optional clusteringHandler;
private Optional initialConfigData;
- private RpcConsumerRegistry rpcConsumerRegistry;
+ private RpcService rpcConsumerRegistry;
+ private YangLibraryWriterSingleton yangLibraryWriter;
public LightyControllerImpl(final ExecutorService executorService, final Config actorSystemConfig,
@@ -217,7 +215,7 @@ public LightyControllerImpl(final ExecutorService executorService, final Config
this.actorSystemConfig = actorSystemConfig;
this.actorSystemClassLoader = actorSystemClassLoader;
this.domMountPointService = new DOMMountPointServiceImpl();
- this.domNotificationRouter = DOMNotificationRouter.create(domNotificationRouterConfig.getQueueDepth());
+ this.domNotificationRouter = new DOMNotificationRouter(domNotificationRouterConfig.getQueueDepth());
this.restoreDirectoryPath = restoreDirectoryPath;
this.maxDataBrokerFutureCallbackQueueSize = maxDataBrokerFutureCallbackQueueSize;
this.maxDataBrokerFutureCallbackPoolSize = maxDataBrokerFutureCallbackPoolSize;
@@ -275,13 +273,14 @@ protected boolean initProcedure() {
this.snapshotResolver = new ModuleInfoSnapshotResolver("binding-dom-codec", yangParserFactory);
this.modelsRegistration = snapshotResolver.registerModuleInfos(modelSet);
this.moduleInfoSnapshot = snapshotResolver.takeSnapshot();
- this.schemaService = FixedDOMSchemaService.of(this.moduleInfoSnapshot, this.moduleInfoSnapshot);
+ this.schemaService = new FixedDOMSchemaService(this::getEffectiveModelContext,
+ sourceId -> (ListenableFuture) moduleInfoSnapshot.yangTextSource(sourceId));
// INIT CODEC FACTORY
final BindingRuntimeGenerator bindingRuntimeGenerator = new DefaultBindingRuntimeGenerator();
final BindingRuntimeTypes bindingRuntimeTypes = bindingRuntimeGenerator
- .generateTypeMapping(moduleInfoSnapshot.getEffectiveModelContext());
+ .generateTypeMapping(moduleInfoSnapshot.modelContext());
final DefaultBindingRuntimeContext bindingRuntimeContext
= new DefaultBindingRuntimeContext(bindingRuntimeTypes, moduleInfoSnapshot);
@@ -300,18 +299,18 @@ protected boolean initProcedure() {
createConcurrentDOMDataBroker();
this.domRpcRouter = DOMRpcRouter.newInstance(this.schemaService);
- this.domActionProviderService = domRpcRouter.getActionProviderService();
- this.domActionService = domRpcRouter.getActionService();
+ this.domActionProviderService = domRpcRouter.actionProviderService();
+ this.domActionService = domRpcRouter.actionService();
createRemoteOpsProvider();
this.bindingAdapterFactory = new BindingAdapterFactory(getAdapterContext());
this.actionProviderService = this.bindingAdapterFactory.createActionProviderService(
this.domActionProviderService);
this.actionService = bindingAdapterFactory.createActionService(this.domActionService);
- rpcConsumerRegistry = bindingAdapterFactory.createRpcConsumerRegistry(domRpcRouter.getRpcService());
+ rpcConsumerRegistry = bindingAdapterFactory.createRpcService(domRpcRouter.rpcService());
this.rpcProviderService = new BindingDOMRpcProviderServiceAdapter(this.codec,
- this.domRpcRouter.getRpcProviderService());
+ this.domRpcRouter.rpcProviderService());
// ENTITY OWNERSHIP
try {
@@ -323,43 +322,44 @@ protected boolean initProcedure() {
return false;
}
- this.bindingDOMEntityOwnershipServiceAdapter = new BindingDOMEntityOwnershipServiceAdapter(
+ this.defaultEntityOwnershipService = new DefaultEntityOwnershipService(
akkaEntityOwnershipService, this.codec);
this.clusterAdminRpcService =
- new ClusterAdminRpcService(this.configDatastore, this.operDatastore, this.codec.currentSerializer(),
- this.akkaEntityOwnershipService);
+ new ClusterAdminRpcService(this.configDatastore, this.operDatastore, this.akkaEntityOwnershipService);
this.clusterSingletonServiceProvider =
- new DefaultClusterSingletonServiceProvider(this.akkaEntityOwnershipService);
- this.clusterSingletonServiceProvider.initializeProvider();
+ new EOSClusterSingletonServiceProvider(this.akkaEntityOwnershipService);
//create binding mount point service
this.mountPointService = new BindingDOMMountPointServiceAdapter(this.codec, this.domMountPointService);
- this.notificationService = new BindingDOMNotificationServiceAdapter(this.codec, this.domNotificationRouter);
- this.notificationPublishService =
- new BindingDOMNotificationPublishServiceAdapter(this.codec, this.domNotificationRouter);
+ this.notificationService = new BindingDOMNotificationServiceAdapter(
+ this.codec, this.domNotificationRouter.notificationService());
+ this.notificationPublishService = new BindingDOMNotificationPublishServiceAdapter(
+ this.codec, this.domNotificationRouter.notificationPublishService());
//create data broker
this.dataBroker = bindingAdapterFactory.createDataBroker(concurrentDOMDataBroker);
- this.clusteringHandler.ifPresent(handler -> handler.start(clusterAdminRpcService));
+ this.clusteringHandler.ifPresent(handler -> handler.start(rpcConsumerRegistry));
this.bossGroup = new NioEventLoopGroup();
this.workerGroup = new NioEventLoopGroup();
this.eventExecutor = new DefaultEventExecutor();
this.timer = new HashedWheelTimer();
this.threadPool =
- new FixedThreadPoolWrapper(2, new DefaultThreadFactory("default-pool"));
+ Executors.newFixedThreadPool(2, new DefaultThreadFactory("default-pool"));
this.scheduledThreadPool =
- new ScheduledThreadPoolWrapper(2, new DefaultThreadFactory("default-scheduled-pool"));
+ new ScheduledThreadPoolExecutor(2, new DefaultThreadFactory("default-scheduled-pool"));
+ this.yangLibraryWriter = new YangLibraryWriterSingleton(clusterSingletonServiceProvider, schemaService,
+ dataBroker, true);
+ yangLibraryWriter.instantiateServiceInstance();
if (this.initialConfigData.isPresent()) {
final InitialConfigData initialData = this.initialConfigData.get();
try (InputStream inputStream = initialData.getAsInputStream()) {
FileToDatastoreUtils.importConfigDataFile(inputStream, initialData.getFormat(),
- getEffectiveModelContextProvider().getEffectiveModelContext(),
- this.getClusteredDOMDataBroker(), true);
+ getEffectiveModelContext(), this.getClusteredDOMDataBroker(), true);
} catch (TimeoutException | ExecutionException | IOException | DeserializationException e) {
LOG.error("Exception occurred while importing config data from file", e);
return false;
@@ -388,24 +388,21 @@ private AbstractDataStore prepareDataStore(final DatastoreContext datastoreConte
}
@Override
- protected boolean stopProcedure() throws InterruptedException {
+ protected boolean stopProcedure() throws InterruptedException, ExecutionException {
LOG.debug("Lighty Controller stopProcedure");
boolean stopSuccessful = true;
if (this.timer != null) {
this.timer.stop();
}
- if (this.threadPool != null && this.threadPool.getExecutor() != null) {
- this.threadPool.getExecutor().shutdown();
+ if (this.threadPool != null) {
+ this.threadPool.shutdown();
}
- if (this.scheduledThreadPool != null && this.scheduledThreadPool.getExecutor() != null) {
- this.scheduledThreadPool.getExecutor().shutdown();
+ if (this.scheduledThreadPool != null) {
+ this.scheduledThreadPool.shutdown();
}
if (this.clusterSingletonServiceProvider != null) {
this.clusterSingletonServiceProvider.close();
}
- if (this.bindingDOMEntityOwnershipServiceAdapter != null) {
- this.bindingDOMEntityOwnershipServiceAdapter.close();
- }
if (this.akkaEntityOwnershipService != null) {
try {
this.akkaEntityOwnershipService.close();
@@ -464,8 +461,8 @@ protected boolean stopProcedure() throws InterruptedException {
private void createRemoteOpsProvider() {
final RemoteOpsProviderConfig remoteOpsProviderConfig = RemoteOpsProviderConfig.newInstance(
this.actorSystemProvider.getActorSystem().name(), this.metricCaptureEnabled, this.mailboxCapacity);
- this.remoteOpsProvider = RemoteOpsProviderFactory.createInstance(this.domRpcRouter.getRpcProviderService(),
- this.domRpcRouter.getRpcService(), this.actorSystemProvider.getActorSystem(), remoteOpsProviderConfig,
+ this.remoteOpsProvider = RemoteOpsProviderFactory.createInstance(this.domRpcRouter.rpcProviderService(),
+ this.domRpcRouter.rpcService(), this.actorSystemProvider.getActorSystem(), remoteOpsProviderConfig,
this.domActionProviderService, this.domActionService);
this.remoteOpsProvider.start();
}
@@ -508,8 +505,8 @@ public ActorSystemProvider getActorSystemProvider() {
}
@Override
- public EffectiveModelContextProvider getEffectiveModelContextProvider() {
- return this.moduleInfoSnapshot;
+ public EffectiveModelContext getEffectiveModelContext() {
+ return this.moduleInfoSnapshot.modelContext();
}
@Override
@@ -518,12 +515,12 @@ public DOMSchemaService getDOMSchemaService() {
}
@Override
- public DOMYangTextSourceProvider getDOMYangTextSourceProvider() {
- return getDOMSchemaService().getExtensions().getInstance(DOMYangTextSourceProvider.class);
+ public DOMSchemaService.YangTextSourceExtension getYangTextSourceExtension() {
+ return getDOMSchemaService().findExtension(DOMSchemaService.YangTextSourceExtension.class).orElse(null);
}
@Override
- public DOMNotificationSubscriptionListenerRegistry getDOMNotificationSubscriptionListenerRegistry() {
+ public DOMNotificationRouter getDOMNotificationRouter() {
return this.domNotificationRouter;
}
@@ -559,11 +556,11 @@ public DOMEntityOwnershipService getDOMEntityOwnershipService() {
@Override
public EntityOwnershipService getEntityOwnershipService() {
- return this.bindingDOMEntityOwnershipServiceAdapter;
+ return this.defaultEntityOwnershipService;
}
@Override
- public ClusterAdminService getClusterAdminRPCService() {
+ public ClusterAdminRpcService getClusterAdminRPCService() {
return this.clusterAdminRpcService;
}
@@ -588,12 +585,12 @@ public EventLoopGroup getWorkerGroup() {
}
@Override
- public ThreadPool getThreadPool() {
+ public ExecutorService getThreadPool() {
return this.threadPool;
}
@Override
- public ScheduledThreadPool getScheduledThreadPool() {
+ public ScheduledExecutorService getScheduledThreadPool() {
return this.scheduledThreadPool;
}
@@ -609,12 +606,12 @@ public DOMMountPointService getDOMMountPointService() {
@Override
public DOMNotificationPublishService getDOMNotificationPublishService() {
- return this.domNotificationRouter;
+ return domNotificationRouter.notificationPublishService();
}
@Override
public DOMNotificationService getDOMNotificationService() {
- return this.domNotificationRouter;
+ return domNotificationRouter.notificationService();
}
@Override
@@ -624,12 +621,12 @@ public DOMDataBroker getClusteredDOMDataBroker() {
@Override
public DOMRpcService getDOMRpcService() {
- return this.domRpcRouter.getRpcService();
+ return this.domRpcRouter.rpcService();
}
@Override
public DOMRpcProviderService getDOMRpcProviderService() {
- return this.domRpcRouter.getRpcProviderService();
+ return this.domRpcRouter.rpcProviderService();
}
@Override
@@ -668,7 +665,7 @@ public ActionProviderService getActionProviderService() {
}
@Override
- public RpcConsumerRegistry getRpcConsumerRegistry() {
+ public RpcService getRpcConsumerRegistry() {
return rpcConsumerRegistry;
}
@@ -678,7 +675,7 @@ public ActionService getActionService() {
}
@Override
- public List> registerModuleInfos(
+ public List registerModuleInfos(
Iterable extends YangModuleInfo> yangModuleInfos) {
return this.snapshotResolver.registerModuleInfos(yangModuleInfos);
}
diff --git a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/ControllerConfigUtils.java b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/ControllerConfigUtils.java
index 57b8074ced..6fdd2d7586 100644
--- a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/ControllerConfigUtils.java
+++ b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/ControllerConfigUtils.java
@@ -39,31 +39,31 @@ public final class ControllerConfigUtils {
* YANG files. This is also recommended default model set for majority of Lighty controller applications.
*/
public static final Set YANG_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev230126
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.yang.extension.yang.ext.rev130709
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.distributed.datastore
- .provider.rev140612
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.entity.owners.norev
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.rpc.rev151215
- .$YangModuleInfoImpl.getInstance()
+ org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev230126
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev180220
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.l2.types.rev130827
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.yang.extension.yang.ext.rev130709
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.controller.config.distributed.datastore
+ .provider.rev231229
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.controller.entity.owners.norev
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.yang.aaa.cert.rpc.rev151215
+ .YangModuleInfoImpl.getInstance()
);
public static final String CONTROLLER_CONFIG_ROOT_ELEMENT_NAME = "controller";
diff --git a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/DatastoreConfigurationUtils.java b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/DatastoreConfigurationUtils.java
index 8ca2bc7b55..3728a8e7b5 100644
--- a/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/DatastoreConfigurationUtils.java
+++ b/lighty-core/lighty-controller/src/main/java/io/lighty/core/controller/impl/util/DatastoreConfigurationUtils.java
@@ -62,9 +62,6 @@ private static Builder setNotNullElementWithoutDefaultConstant(final JsonNode co
if (!configNode.path("transactionDebugContextEnabled").asText().isBlank()) {
builder.transactionDebugContextEnabled(configNode.path("transactionDebugContextEnabled").asBoolean());
}
- if (!configNode.path("useTellBasedProtocol").asText().isBlank()) {
- builder.useTellBasedProtocol(configNode.path("useTellBasedProtocol").asBoolean());
- }
if (!configNode.path("fileBackedStreamingThresholdInMegabytes").asText().isBlank()) {
builder.fileBackedStreamingThresholdInMegabytes(
configNode.path("fileBackedStreamingThresholdInMegabytes").asInt());
diff --git a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/config/ConfigLoadingTest.java b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/config/ConfigLoadingTest.java
index e3ac9569a1..19344759ec 100644
--- a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/config/ConfigLoadingTest.java
+++ b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/config/ConfigLoadingTest.java
@@ -55,7 +55,6 @@ public void loadControllerConfigurationNoDsContexts() throws IOException, Config
Assert.assertEquals(configDatastoreContext.getShardBatchedModificationCount(), 1000);
Assert.assertEquals(configDatastoreContext.getShardCommitQueueExpiryTimeoutInMillis(), 120000);
Assert.assertEquals(configDatastoreContext.isTransactionDebugContextEnabled(), false);
- Assert.assertEquals(configDatastoreContext.isUseTellBasedProtocol(), true);
Assert.assertEquals(configDatastoreContext.getMaximumMessageSliceSize(), 491520);
Assert.assertEquals(configDatastoreContext.getFileBackedStreamingThreshold(), 134217728);
Assert.assertEquals(configDatastoreContext.getShardRaftConfig().getSyncIndexThreshold(), 10);
@@ -82,7 +81,6 @@ public void loadControllerConfigurationNoDsContexts() throws IOException, Config
Assert.assertEquals(operDatastoreContext.getShardBatchedModificationCount(), 1000);
Assert.assertEquals(operDatastoreContext.getShardCommitQueueExpiryTimeoutInMillis(), 120000);
Assert.assertEquals(operDatastoreContext.isTransactionDebugContextEnabled(), false);
- Assert.assertEquals(operDatastoreContext.isUseTellBasedProtocol(), true);
Assert.assertEquals(operDatastoreContext.getMaximumMessageSliceSize(), 491520);
Assert.assertEquals(operDatastoreContext.getFileBackedStreamingThreshold(), 134217728);
Assert.assertEquals(operDatastoreContext.getShardRaftConfig().getSyncIndexThreshold(), 10);
@@ -180,7 +178,6 @@ public void loadConfigDatastoreCtxTest() throws IOException {
Assert.assertEquals(dataStoreContext.getShardBatchedModificationCount(), 10000);
Assert.assertEquals(dataStoreContext.getShardCommitQueueExpiryTimeoutInMillis(), 1200000);
Assert.assertEquals(dataStoreContext.isTransactionDebugContextEnabled(), true);
- Assert.assertEquals(dataStoreContext.isUseTellBasedProtocol(), true);
Assert.assertEquals(dataStoreContext.getMaximumMessageSliceSize(), 2048001);
Assert.assertEquals(dataStoreContext.getFileBackedStreamingThreshold(), 135266304);
Assert.assertEquals(dataStoreContext.getShardRaftConfig().getSyncIndexThreshold(), 11);
@@ -212,7 +209,6 @@ public void loadOperationalDatastoreCtxTest() throws IOException {
Assert.assertEquals(dataStoreContext.getShardBatchedModificationCount(), -10000);
Assert.assertEquals(dataStoreContext.getShardCommitQueueExpiryTimeoutInMillis(), -1200000);
Assert.assertEquals(dataStoreContext.isTransactionDebugContextEnabled(), false);
- Assert.assertEquals(dataStoreContext.isUseTellBasedProtocol(), false);
Assert.assertEquals(dataStoreContext.getMaximumMessageSliceSize(), 2048002);
Assert.assertEquals(dataStoreContext.getFileBackedStreamingThreshold(), 136314880);
Assert.assertEquals(dataStoreContext.getShardRaftConfig().getSyncIndexThreshold(), 12);
diff --git a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/datainit/ToasterListener.java b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/datainit/ToasterListener.java
index 5cdfd03a1b..41b25a85eb 100644
--- a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/datainit/ToasterListener.java
+++ b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/datainit/ToasterListener.java
@@ -7,7 +7,7 @@
*/
package io.lighty.core.controller.datainit;
-import java.util.Collection;
+import java.util.List;
import java.util.concurrent.CountDownLatch;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.DataObjectModification;
@@ -30,7 +30,7 @@ public ToasterListener(CountDownLatch latch, int factor) {
}
@Override
- public void onDataTreeChanged(@NonNull Collection> changes) {
+ public void onDataTreeChanged(@NonNull List> changes) {
LOG.debug("Got onDataTreeChanged!");
for (DataTreeModification modification : changes) {
DataObjectModification.ModificationType type = modification.getRootNode().getModificationType();
diff --git a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerNotificationTest.java b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerNotificationTest.java
index 8e4a2c4144..0c073533d8 100644
--- a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerNotificationTest.java
+++ b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerNotificationTest.java
@@ -15,7 +15,7 @@
import org.opendaylight.mdsal.dom.api.DOMNotificationService;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.data.spi.node.impl.ImmutableContainerNodeBuilder;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -36,7 +36,7 @@ public Absolute getType() {
@Override
public ContainerNode getBody() {
- return ImmutableContainerNodeBuilder.create().build();
+ return new ImmutableContainerNodeBuilder().build();
}
};
final int[] listenerMethodsCalled = { 0 };
diff --git a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerTest.java b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerTest.java
index fa0a332e6b..7dac3ab79d 100644
--- a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerTest.java
+++ b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/impl/tests/LightyControllerTest.java
@@ -24,10 +24,10 @@ public void controllerSimpleTest() {
lightyController.getServices().getDiagStatusService().getAllServiceDescriptors());
Assert.assertNotNull(lightyController.getServices().getActorSystemProvider());
Assert.assertNotNull(lightyController.getServices().getActorSystemProvider().getActorSystem());
- Assert.assertNotNull(lightyController.getServices().getEffectiveModelContextProvider());
+ Assert.assertNotNull(lightyController.getServices().getEffectiveModelContext());
Assert.assertNotNull(lightyController.getServices().getDOMSchemaService());
- Assert.assertNotNull(lightyController.getServices().getDOMYangTextSourceProvider());
- Assert.assertNotNull(lightyController.getServices().getDOMNotificationSubscriptionListenerRegistry());
+ Assert.assertNotNull(lightyController.getServices().getYangTextSourceExtension());
+ Assert.assertNotNull(lightyController.getServices().getDOMNotificationRouter());
Assert.assertNotNull(lightyController.getServices().getConfigDatastore());
Assert.assertNotNull(lightyController.getServices().getOperationalDatastore());
Assert.assertNotNull(lightyController.getServices().getYangParserFactory());
diff --git a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/util/FileToDatastoreUtilsTest.java b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/util/FileToDatastoreUtilsTest.java
index 1c2a6a37e8..1bfeef0c43 100644
--- a/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/util/FileToDatastoreUtilsTest.java
+++ b/lighty-core/lighty-controller/src/test/java/io/lighty/core/controller/util/FileToDatastoreUtilsTest.java
@@ -21,7 +21,6 @@
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.$YangModuleInfoImpl;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.ChoiceContainer;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.SampleList;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.SampleListKey;
@@ -29,6 +28,7 @@
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.choice.container.Snack;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.choice.container.snack.SportsArena;
import org.opendaylight.yang.gen.v1.http.pantheon.tech.ns.test.models.rev180119.container.group.SampleContainer;
+import org.opendaylight.yang.svc.v1.http.pantheon.tech.ns.test.models.rev180119.YangModuleInfoImpl;
import org.opendaylight.yangtools.yang.binding.ChildOf;
import org.opendaylight.yangtools.yang.binding.DataRoot;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -67,7 +67,7 @@ public class FileToDatastoreUtilsTest {
private static final YangInstanceIdentifier INNER_VALUE_YII = YangInstanceIdentifier.create(
NodeIdentifier.create(TopLevelContainer.QNAME),
NodeIdentifier.create(SampleContainer.QNAME),
- NodeIdentifier.create($YangModuleInfoImpl.qnameOf("value")));
+ NodeIdentifier.create(YangModuleInfoImpl.qnameOf("value")));
private static final long TIMEOUT_MILLIS = 20_000;
@@ -78,7 +78,7 @@ public class FileToDatastoreUtilsTest {
public void startUp() throws Exception {
lightyController = new LightyControllerBuilder()
.from(ControllerConfigUtils.getDefaultSingleNodeConfiguration(
- Set.of($YangModuleInfoImpl.getInstance())))
+ Set.of(YangModuleInfoImpl.getInstance())))
.build();
assertTrue(lightyController.start().get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS));
dataBroker = lightyController.getServices().getBindingDataBroker();
@@ -157,7 +157,7 @@ private void importFile(final String path, final YangInstanceIdentifier yii, fin
FileToDatastoreUtils.importConfigDataFile(FileToDatastoreUtils.class.getResourceAsStream(path),
yii,
format,
- lightyController.getServices().getEffectiveModelContextProvider().getEffectiveModelContext(),
+ lightyController.getServices().getEffectiveModelContext(),
lightyController.getServices().getClusteredDOMDataBroker(),
true);
}
diff --git a/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigJson.json b/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigJson.json
index 63fd18edf8..901d470926 100644
--- a/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigJson.json
+++ b/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigJson.json
@@ -13,7 +13,7 @@
{
"nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider",
"name": "distributed-datastore-provider",
- "revision": "2014-06-12"
+ "revision": "2023-12-29"
},
{
"nameSpace": "http://netconfcentral.org/ns/toaster",
diff --git a/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigXml.json b/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigXml.json
index 4c2d898a03..15815a1cd7 100644
--- a/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigXml.json
+++ b/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitConfigXml.json
@@ -13,7 +13,7 @@
{
"nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider",
"name": "distributed-datastore-provider",
- "revision": "2014-06-12"
+ "revision": "2023-12-29"
},
{
"nameSpace": "http://netconfcentral.org/ns/toaster",
diff --git a/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitPathConfig.json b/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitPathConfig.json
index b811cde079..0b42808858 100644
--- a/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitPathConfig.json
+++ b/lighty-core/lighty-controller/src/test/resources/DataInitInvalidInitPathConfig.json
@@ -13,7 +13,7 @@
{
"nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider",
"name": "distributed-datastore-provider",
- "revision": "2014-06-12"
+ "revision": "2023-12-29"
},
{
"nameSpace": "http://netconfcentral.org/ns/toaster",
diff --git a/lighty-core/lighty-controller/src/test/resources/DataInitJsonConfig.json b/lighty-core/lighty-controller/src/test/resources/DataInitJsonConfig.json
index a207ffccb9..5e3114b89a 100644
--- a/lighty-core/lighty-controller/src/test/resources/DataInitJsonConfig.json
+++ b/lighty-core/lighty-controller/src/test/resources/DataInitJsonConfig.json
@@ -13,7 +13,7 @@
{
"nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider",
"name": "distributed-datastore-provider",
- "revision": "2014-06-12"
+ "revision": "2023-12-29"
},
{
"nameSpace": "http://netconfcentral.org/ns/toaster",
diff --git a/lighty-core/lighty-controller/src/test/resources/DataInitXmlConfig.json b/lighty-core/lighty-controller/src/test/resources/DataInitXmlConfig.json
index 4fe73c6e70..479d70bfe4 100644
--- a/lighty-core/lighty-controller/src/test/resources/DataInitXmlConfig.json
+++ b/lighty-core/lighty-controller/src/test/resources/DataInitXmlConfig.json
@@ -13,7 +13,7 @@
{
"nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider",
"name": "distributed-datastore-provider",
- "revision": "2014-06-12"
+ "revision": "2023-12-29"
},
{
"nameSpace": "http://netconfcentral.org/ns/toaster",
diff --git a/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig-example.json b/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig-example.json
index c337bfd92a..14c7b75280 100644
--- a/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig-example.json
+++ b/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig-example.json
@@ -28,7 +28,6 @@
"shardBatchedModificationCount": 1000,
"shardCommitQueueExpiryTimeoutInMillis": 120000,
"transactionDebugContextEnabled": false,
- "useTellBasedProtocol": false,
"maximumMessageSliceSize": 2048000,
"fileBackedStreamingThresholdInMegabytes": 128,
"syncIndexThreshold": 10,
@@ -51,7 +50,6 @@
"shardBatchedModificationCount": 1000,
"shardCommitQueueExpiryTimeoutInMillis": 120000,
"transactionDebugContextEnabled": false,
- "useTellBasedProtocol": false,
"maximumMessageSliceSize": 2048000,
"fileBackedStreamingThresholdInMegabytes": 128,
"syncIndexThreshold": 10,
diff --git a/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig.json b/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig.json
index 73be1b2f9e..ce27cb983c 100644
--- a/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig.json
+++ b/lighty-core/lighty-controller/src/test/resources/testLightyControllerConfig.json
@@ -54,7 +54,6 @@
"shardBatchedModificationCount": -10000,
"shardCommitQueueExpiryTimeoutInMillis": -1200000,
"transactionDebugContextEnabled": false,
- "useTellBasedProtocol": false,
"maximumMessageSliceSize": 2048002,
"fileBackedStreamingThresholdInMegabytes": 130,
"syncIndexThreshold": 12,
diff --git a/lighty-core/lighty-parent/pom.xml b/lighty-core/lighty-parent/pom.xml
index ceaace74a6..edd20d0803 100644
--- a/lighty-core/lighty-parent/pom.xml
+++ b/lighty-core/lighty-parent/pom.xml
@@ -203,7 +203,7 @@
org.opendaylight.odlparent
checkstyle
- 13.0.10
+ 13.0.11
@@ -220,7 +220,7 @@
org.opendaylight.odlparent
spotbugs
- 13.0.10
+ 13.0.11
diff --git a/lighty-examples/lighty-community-aaa-restconf-app/src/main/assembly/resources/sampleConfigSingleNode.json b/lighty-examples/lighty-community-aaa-restconf-app/src/main/assembly/resources/sampleConfigSingleNode.json
index c90e653672..2850ae2205 100644
--- a/lighty-examples/lighty-community-aaa-restconf-app/src/main/assembly/resources/sampleConfigSingleNode.json
+++ b/lighty-examples/lighty-community-aaa-restconf-app/src/main/assembly/resources/sampleConfigSingleNode.json
@@ -29,7 +29,7 @@
{ "usedBy":"CONTROLLER","name":"iana-if-type","revision":"2023-01-26","nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy":"CONTROLLER","name":"odl-entity-owners","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy":"CONTROLLER","name":"ietf-yang-types","revision":"2013-07-15","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-yang-types"},
- { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2014-06-12","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2023-12-29","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy":"CONTROLLER","name":"cluster-admin","revision":"2015-10-13","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy":"CONTROLLER","name":"network-topology","revision":"2013-10-21","nameSpace":"urn:TBD:params:xml:ns:yang:network-topology"},
{ "usedBy":"CONTROLLER","name":"odl-general-entity","revision": "2015-09-30" ,"nameSpace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
@@ -37,7 +37,7 @@
{ "usedBy":"RESTCONF","name":"ietf-restconf","revision":"2017-01-26","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy":"RESTCONF","name":"ietf-yang-library","revision":"2019-01-04","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"},
{ "usedBy":"RESTCONF","name":"sal-remote","revision":"2014-01-14","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"},
- { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2014-07-08","nameSpace":"urn:sal:restconf:event:subscription"},
+ { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2023-11-03","nameSpace":"urn:sal:restconf:event:subscription"},
{ "usedBy":"RESTCONF","name":"subscribe-to-notification","revision":"2016-10-28","nameSpace":"subscribe:to:notification"},
{ "usedBy":"RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy":"AAA","name":"aaa-cert-mdsal","revision":"2016-03-21","nameSpace":"urn:opendaylight:yang:aaa:cert:mdsal"},
diff --git a/lighty-examples/lighty-community-aaa-restconf-app/src/test/resources/testConfig.json b/lighty-examples/lighty-community-aaa-restconf-app/src/test/resources/testConfig.json
index b4e71a3112..d984057854 100644
--- a/lighty-examples/lighty-community-aaa-restconf-app/src/test/resources/testConfig.json
+++ b/lighty-examples/lighty-community-aaa-restconf-app/src/test/resources/testConfig.json
@@ -26,7 +26,7 @@
{ "usedBy":"CONTROLLER","name":"iana-if-type","revision":"2023-01-26","nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy":"CONTROLLER","name":"odl-entity-owners","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy":"CONTROLLER","name":"ietf-yang-types","revision":"2013-07-15","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-yang-types"},
- { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2014-06-12","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2023-12-29","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy":"CONTROLLER","name":"cluster-admin","revision":"2015-10-13","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy":"CONTROLLER","name":"network-topology","revision":"2013-10-21","nameSpace":"urn:TBD:params:xml:ns:yang:network-topology"},
{ "usedBy":"CONTROLLER","name":"odl-general-entity","revision": "2015-09-30" ,"nameSpace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
@@ -34,7 +34,7 @@
{ "usedBy":"RESTCONF","name":"ietf-restconf","revision":"2017-01-26","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy":"RESTCONF","name":"ietf-yang-library","revision":"2019-01-04","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"},
{ "usedBy":"RESTCONF","name":"sal-remote","revision":"2014-01-14","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"},
- { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2014-07-08","nameSpace":"urn:sal:restconf:event:subscription"},
+ { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2023-11-03","nameSpace":"urn:sal:restconf:event:subscription"},
{ "usedBy":"RESTCONF","name":"subscribe-to-notification","revision":"2016-10-28","nameSpace":"subscribe:to:notification"},
{ "usedBy":"RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy":"AAA","name":"aaa-cert-rpc","revision":"2015-12-15","nameSpace":"urn:opendaylight:yang:aaa:cert:rpc"},
diff --git a/lighty-examples/lighty-community-restconf-actions-app/src/main/assembly/resources/sampleConfigSingleNode.json b/lighty-examples/lighty-community-restconf-actions-app/src/main/assembly/resources/sampleConfigSingleNode.json
index fc5c68afbb..7eeae08d85 100644
--- a/lighty-examples/lighty-community-restconf-actions-app/src/main/assembly/resources/sampleConfigSingleNode.json
+++ b/lighty-examples/lighty-community-restconf-actions-app/src/main/assembly/resources/sampleConfigSingleNode.json
@@ -29,7 +29,7 @@
{ "usedBy":"CONTROLLER","name":"network-topology","revision":"2013-10-21","nameSpace":"urn:TBD:params:xml:ns:yang:network-topology"},
{ "usedBy":"CONTROLLER","name":"ietf-inet-types","revision":"2013-07-15","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-inet-types"},
{ "usedBy":"CONTROLLER/NETCONF","name":"yang-ext","revision":"2013-07-09","nameSpace":"urn:opendaylight:yang:extension:yang-ext"},
- { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2014-06-12","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2023-12-29","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy":"CONTROLLER","name": "odl-entity-owners","nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy":"CONTROLLER","name":"cluster-admin","revision":"2015-10-13","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy":"CONTROLLER","name": "odl-general-entity", "revision":"2015-09-30" ,"nameSpace": "urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
@@ -37,12 +37,12 @@
{ "usedBy":"RESTCONF","name":"ietf-restconf","revision":"2017-01-26","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy":"RESTCONF","name":"ietf-restconf-monitoring","revision":"2017-01-26","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy":"RESTCONF","name":"sal-remote","revision":"2014-01-14","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"},
- { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2014-07-08","nameSpace":"urn:sal:restconf:event:subscription"},
+ { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2023-11-03","nameSpace":"urn:sal:restconf:event:subscription"},
{ "usedBy":"RESTCONF","name":"subscribe-to-notification","revision":"2016-10-28","nameSpace":"subscribe:to:notification"},
{ "usedBy":"RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
- { "usedBy":"NETCONF","name":"netconf-keystore","revision":"2017-10-17","nameSpace":"urn:opendaylight:netconf:keystore"},
- { "usedBy":"NETCONF","name":"netconf-node-topology","revision":"2022-12-25","nameSpace":"urn:opendaylight:netconf-node-topology"},
- { "usedBy":"NETCONF","name":"netconf-node-optional","revision":"2022-12-25","nameSpace":"urn:opendaylight:netconf-node-optional"},
+ { "usedBy":"NETCONF","name":"netconf-keystore","revision":"2023-11-09","nameSpace":"urn:opendaylight:netconf:keystore"},
+ { "usedBy":"NETCONF","name":"netconf-node-topology","revision":"2023-11-21","nameSpace":"urn:opendaylight:netconf-node-topology"},
+ { "usedBy":"NETCONF","name":"netconf-node-optional","revision":"2023-11-21","nameSpace":"urn:opendaylight:netconf-node-optional"},
{ "usedBy":"NETCONF","name":"ietf-netconf","revision":"2011-06-01","nameSpace":"urn:ietf:params:xml:ns:netconf:base:1.0"},
{ "usedBy":"NETCONF_ACTION","name":"example-data-center","revision":"2018-08-07","nameSpace":"urn:example:data-center"}
]
diff --git a/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/Main.java b/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/Main.java
index 7997d9e39c..76fb55352e 100644
--- a/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/Main.java
+++ b/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/Main.java
@@ -40,9 +40,7 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.opendaylight.mdsal.dom.api.DOMActionImplementation;
-import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.server.Reset;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,8 +53,8 @@ public class Main {
private CommunityRestConf restconf;
private LightyModule netconfSBPlugin;
private ModulesConfig modulesConfig = ModulesConfig.getDefaultModulesConfig();
- private ObjectRegistration domActionRegistration;
- private ObjectRegistration bindingActionRegistration;
+ private Registration domActionRegistration;
+ private Registration bindingActionRegistration;
public static void main(final String[] args) {
final Main app = new Main();
@@ -102,8 +100,8 @@ public void start(String[] args, boolean registerShutdownHook) {
modelPaths.addAll(ControllerConfigUtils.YANG_MODELS);
modelPaths.addAll(RestConfConfigUtils.YANG_MODELS);
modelPaths.addAll(NetconfConfigUtils.NETCONF_TOPOLOGY_MODELS);
- modelPaths.add(org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807
- .$YangModuleInfoImpl.getInstance());
+ modelPaths.add(org.opendaylight.yang.svc.v1.urn.example.data.center.rev180807
+ .YangModuleInfoImpl.getInstance());
final ArrayNode arrayNode = YangModuleUtils.generateJSONModelSetConfiguration(modelPaths);
//0. print the list of schema context models
LOG.info("JSON model config snippet: {}", arrayNode.toString());
@@ -122,10 +120,10 @@ public void start(String[] args, boolean registerShutdownHook) {
LOG.info("Lighty.io and RESTCONF-ACTIONS started in {}", stopwatch.stop());
// Register example DOM action
domActionRegistration = DeviceStartRegistrationUtil.registerDOMAction(lightyController);
- LOG.info("Example DOM action implementation registered: {}", domActionRegistration.getInstance());
+ LOG.info("Example DOM action implementation registered: {}", domActionRegistration);
// Register example binding action
bindingActionRegistration = ServerResetRegistrationUtil.registerBindingAction(lightyController);
- LOG.info("Example binding action implementation registered: {}", bindingActionRegistration.getInstance());
+ LOG.info("Example binding action implementation registered: {}", bindingActionRegistration);
} catch (IOException e) {
LOG.error("Main RESTCONF-ACTIONS application - error reading config file: ", e);
shutdown();
diff --git a/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/binding/ServerResetRegistrationUtil.java b/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/binding/ServerResetRegistrationUtil.java
index 6ccbb1ed4e..d3d7a4ee01 100644
--- a/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/binding/ServerResetRegistrationUtil.java
+++ b/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/binding/ServerResetRegistrationUtil.java
@@ -14,7 +14,7 @@
import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.Server;
import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.ServerKey;
import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.server.Reset;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public final class ServerResetRegistrationUtil {
@@ -29,7 +29,7 @@ private ServerResetRegistrationUtil() {
* @param lightyController {@code LightyController} instance for easy access to controller services.
* @return {@code ObjectRegistration} Registration instance of binding action implementation on the controller.
*/
- public static ObjectRegistration registerBindingAction(final LightyController lightyController) {
+ public static Registration registerBindingAction(final LightyController lightyController) {
final var actionProviderService = lightyController.getServices().getActionProviderService();
final var validNode =
InstanceIdentifier.builder(Server.class, new ServerKey("server-earth")).build();
diff --git a/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/dom/DeviceStartRegistrationUtil.java b/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/dom/DeviceStartRegistrationUtil.java
index e4a9cdf795..6058f571d3 100644
--- a/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/dom/DeviceStartRegistrationUtil.java
+++ b/lighty-examples/lighty-community-restconf-actions-app/src/main/java/io/lighty/examples/controllers/actions/dom/DeviceStartRegistrationUtil.java
@@ -9,12 +9,11 @@
import io.lighty.core.controller.api.LightyController;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.dom.api.DOMActionImplementation;
import org.opendaylight.mdsal.dom.api.DOMActionInstance;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.Device;
import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.device.Start;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
@@ -30,7 +29,7 @@ private DeviceStartRegistrationUtil() {
* @param lightyController {@code LightyController} instance for easy access to controller services.
* @return {@code ObjectRegistration} Registration instance of the DOM action implementation on the controller.
*/
- public static ObjectRegistration registerDOMAction(
+ public static Registration registerDOMAction(
final LightyController lightyController) {
final var domActionProviderService = lightyController.getServices().getDOMActionProviderService();
final var domDataTreeIdentifier = new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL,
diff --git a/lighty-examples/lighty-community-restconf-actions-app/src/test/java/io/lighty/examples/controller/actions/RestconfActionsAppTest.java b/lighty-examples/lighty-community-restconf-actions-app/src/test/java/io/lighty/examples/controller/actions/RestconfActionsAppTest.java
index 5ffc051461..1f196e164a 100644
--- a/lighty-examples/lighty-community-restconf-actions-app/src/test/java/io/lighty/examples/controller/actions/RestconfActionsAppTest.java
+++ b/lighty-examples/lighty-community-restconf-actions-app/src/test/java/io/lighty/examples/controller/actions/RestconfActionsAppTest.java
@@ -31,11 +31,11 @@ public class RestconfActionsAppTest {
private static final String DOM_ACTION_PATH = "restconf/data/example-data-center:device/start";
private static final String DOM_ACTION_INPUT = "{\"input\":{\"start-at\":\"2021-09-09T16:20:00Z\"}}";
private static final String DOM_ACTION_OUTPUT =
- "{\"example-data-center:output\":{\"example-data-center:start-finished-at\":\"2021-09-09T16:20:00Z\"}}";
+ "{\"example-data-center:output\":{\"start-finished-at\":\"2021-09-09T16:20:00Z\"}}";
private static final String BINDING_ACTION_PATH = "restconf/data/example-data-center:server=server-earth/reset";
private static final String BINDING_ACTION_INPUT = "{\"input\":{\"reset-at\":\"2021-09-09T16:20:00Z\"}}";
private static final String BINDING_ACTION_OUTPUT =
- "{\"example-data-center:output\":{\"example-data-center:reset-finished-at\":\"2021-09-09T16:20:00Z\"}}";
+ "{\"example-data-center:output\":{\"reset-finished-at\":\"2021-09-09T16:20:00Z\"}}";
private static final long SLEEP_AFTER_SHUTDOWN_TIMEOUT_MILLIS = 3_000;
private static Main restconfApp;
@@ -63,8 +63,10 @@ public void simpleApplicationTest() throws Exception {
}
]
}""");
+ /* FIXME uncomment this after NETCONF-1285 is resolved
operations = restClient.GET("restconf/operations");
assertEquals(operations.statusCode(), 200);
+ */
operations = restClient.GET("restconf/data/network-topology:network-topology?content=config");
assertEquals(operations.statusCode(), 200);
operations = restClient.GET("restconf/data/network-topology:network-topology?content=nonconfig");
diff --git a/lighty-examples/lighty-community-restconf-netconf-app/src/main/assembly/resources/sampleConfigSingleNode.json b/lighty-examples/lighty-community-restconf-netconf-app/src/main/assembly/resources/sampleConfigSingleNode.json
index 689bead364..d950dc0d3c 100644
--- a/lighty-examples/lighty-community-restconf-netconf-app/src/main/assembly/resources/sampleConfigSingleNode.json
+++ b/lighty-examples/lighty-community-restconf-netconf-app/src/main/assembly/resources/sampleConfigSingleNode.json
@@ -29,7 +29,7 @@
{ "usedBy":"CONTROLLER","name":"network-topology","revision":"2013-10-21","nameSpace":"urn:TBD:params:xml:ns:yang:network-topology"},
{ "usedBy":"CONTROLLER","name":"ietf-inet-types","revision":"2013-07-15","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-inet-types"},
{ "usedBy":"CONTROLLER/NETCONF","name":"yang-ext","revision":"2013-07-09","nameSpace":"urn:opendaylight:yang:extension:yang-ext"},
- { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2014-06-12","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy":"CONTROLLER","name":"distributed-datastore-provider","revision":"2023-12-29","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy":"CONTROLLER","name":"odl-entity-owners","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy":"CONTROLLER","name":"cluster-admin","revision":"2015-10-13","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy":"CONTROLLER","name":"odl-general-entity","revision": "2015-09-30","nameSpace": "urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"},
@@ -37,12 +37,12 @@
{ "usedBy":"RESTCONF","name":"ietf-restconf","revision":"2017-01-26","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy":"RESTCONF","name":"ietf-restconf-monitoring","revision":"2017-01-26","nameSpace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy":"RESTCONF","name":"sal-remote","revision":"2014-01-14","nameSpace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"},
- { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2014-07-08","nameSpace":"urn:sal:restconf:event:subscription"},
+ { "usedBy":"RESTCONF","name":"sal-remote-augment","revision":"2023-11-03","nameSpace":"urn:sal:restconf:event:subscription"},
{ "usedBy":"RESTCONF","name":"subscribe-to-notification","revision":"2016-10-28","nameSpace":"subscribe:to:notification"},
{ "usedBy":"RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
- { "usedBy":"NETCONF","name":"netconf-keystore","revision":"2017-10-17","nameSpace":"urn:opendaylight:netconf:keystore"},
- { "usedBy":"NETCONF","name":"netconf-node-topology","revision":"2022-12-25","nameSpace":"urn:opendaylight:netconf-node-topology"},
- { "usedBy":"NETCONF","name":"netconf-node-optional","revision":"2022-12-25","nameSpace":"urn:opendaylight:netconf-node-optional"},
+ { "usedBy":"NETCONF","name":"netconf-keystore","revision":"2023-11-09","nameSpace":"urn:opendaylight:netconf:keystore"},
+ { "usedBy":"NETCONF","name":"netconf-node-topology","revision":"2023-11-21","nameSpace":"urn:opendaylight:netconf-node-topology"},
+ { "usedBy":"NETCONF","name":"netconf-node-optional","revision":"2023-11-21","nameSpace":"urn:opendaylight:netconf-node-optional"},
{ "usedBy":"NETCONF","name":"ietf-netconf","revision":"2011-06-01","nameSpace":"urn:ietf:params:xml:ns:netconf:base:1.0"}
]
}
diff --git a/lighty-examples/lighty-community-restconf-netconf-app/src/test/java/io/lighty/examples/controllers/restconfapp/tests/RestconfAppTest.java b/lighty-examples/lighty-community-restconf-netconf-app/src/test/java/io/lighty/examples/controllers/restconfapp/tests/RestconfAppTest.java
index 3a295516e1..6655272d75 100644
--- a/lighty-examples/lighty-community-restconf-netconf-app/src/test/java/io/lighty/examples/controllers/restconfapp/tests/RestconfAppTest.java
+++ b/lighty-examples/lighty-community-restconf-netconf-app/src/test/java/io/lighty/examples/controllers/restconfapp/tests/RestconfAppTest.java
@@ -56,8 +56,10 @@ public void simpleApplicationTest() throws IOException, InterruptedException {
]
}""");
+ /* FIXME uncomment this after NETCONF-1285 is resolved
operations = restClient.GET("rests/operations");
Assert.assertEquals(operations.statusCode(), 200);
+ */
operations = restClient.GET("rests/data/network-topology:network-topology?content=config");
Assert.assertEquals(operations.statusCode(), 200);
operations = restClient.GET("rests/data/network-topology:network-topology?content=nonconfig");
diff --git a/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/config/LightyConfiguration.java b/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/config/LightyConfiguration.java
index bd07ef4783..3009c84b24 100644
--- a/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/config/LightyConfiguration.java
+++ b/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/config/LightyConfiguration.java
@@ -29,7 +29,7 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.$YangModuleInfoImpl;
+import org.opendaylight.yang.svc.v1.http.netconfcentral.org.ns.toaster.rev091120.YangModuleInfoImpl;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,7 +51,7 @@ protected LightyController initLightyController() throws LightyLaunchException,
final LightyControllerBuilder lightyControllerBuilder = new LightyControllerBuilder();
final Set mavenModelPaths = new HashSet<>();
mavenModelPaths.addAll(NetconfConfigUtils.NETCONF_TOPOLOGY_MODELS);
- mavenModelPaths.add($YangModuleInfoImpl.getInstance());
+ mavenModelPaths.add(YangModuleInfoImpl.getInstance());
final LightyController lightyController = lightyControllerBuilder
.from(ControllerConfigUtils.getDefaultSingleNodeConfiguration(mavenModelPaths))
.build();
diff --git a/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/NetconfDeviceRestService.java b/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/NetconfDeviceRestService.java
index 327372dced..8df96ac9f5 100644
--- a/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/NetconfDeviceRestService.java
+++ b/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/NetconfDeviceRestService.java
@@ -30,8 +30,9 @@
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.credentials.credentials.LoginPasswordBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.credentials.credentials.LoginPwUnencryptedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.credentials.credentials.login.pw.unencrypted.LoginPasswordUnencryptedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev231121.NetconfNodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -136,10 +137,11 @@ public ResponseEntity connectNetconfDevice(@PathVariable final String netconfDev
.addAugmentation(new NetconfNodeBuilder()
.setHost(new Host(new IpAddress(new Ipv4Address(deviceInfo.getAddress()))))
.setPort(new PortNumber(Uint16.valueOf(deviceInfo.getPort())))
- .setCredentials(new LoginPasswordBuilder()
+ .setCredentials(new LoginPwUnencryptedBuilder().setLoginPasswordUnencrypted(
+ new LoginPasswordUnencryptedBuilder()
.setUsername(deviceInfo.getUsername())
.setPassword(deviceInfo.getPassword())
- .build())
+ .build()).build())
.setTcpOnly(false)
.build())
.build();
diff --git a/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/dto/NetconfDeviceResponse.java b/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/dto/NetconfDeviceResponse.java
index 728339d042..324665830e 100644
--- a/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/dto/NetconfDeviceResponse.java
+++ b/lighty-examples/lighty-controller-springboot-netconf/src/main/java/io/lighty/core/controller/springboot/rest/dto/NetconfDeviceResponse.java
@@ -10,8 +10,8 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.ConnectionOper.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev231121.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
public class NetconfDeviceResponse {
diff --git a/lighty-examples/lighty-gnmi-community-restconf-app/example_config.json b/lighty-examples/lighty-gnmi-community-restconf-app/example_config.json
index 586df7168d..475effce1c 100644
--- a/lighty-examples/lighty-gnmi-community-restconf-app/example_config.json
+++ b/lighty-examples/lighty-gnmi-community-restconf-app/example_config.json
@@ -23,13 +23,13 @@
{ "usedBy": "CONTROLLER", "name": "odl-entity-owners", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},
{ "usedBy": "CONTROLLER", "name": "cluster-admin", "revision": "2015-10-13", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},
{ "usedBy": "CONTROLLER", "name": "opendaylight-l2-types", "revision": "2013-08-27", "nameSpace": "urn:opendaylight:l2:types"},
- { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2014-06-12", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
+ { "usedBy": "CONTROLLER", "name": "distributed-datastore-provider", "revision": "2023-12-29", "nameSpace": "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"},
{ "usedBy": "CONTROLLER", "name": "ietf-interfaces", "revision": "2018-02-20", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-interfaces"},
{ "usedBy": "CONTROLLER", "name": "iana-if-type","revision": "2023-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:iana-if-type"},
{ "usedBy": "RESTCONF", "name": "ietf-yang-library", "revision": "2019-01-04", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-yang-library"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf-monitoring", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"},
{ "usedBy": "RESTCONF", "name": "subscribe-to-notification", "revision": "2016-10-28", "nameSpace": "subscribe:to:notification"},
- { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2014-07-08", "nameSpace": "urn:sal:restconf:event:subscription"},
+ { "usedBy": "RESTCONF", "name": "sal-remote-augment", "revision": "2023-11-03", "nameSpace": "urn:sal:restconf:event:subscription"},
{ "usedBy": "RESTCONF", "name": "ietf-restconf", "revision": "2017-01-26", "nameSpace": "urn:ietf:params:xml:ns:yang:ietf-restconf"},
{ "usedBy": "RESTCONF", "name": "instance-identifier-patch-module", "revision": "2015-11-21", "nameSpace": "instance:identifier:patch:module"},
{ "usedBy": "GNMI", "name": "gnmi-topology", "revision": "2021-03-16", "nameSpace": "urn:lighty:gnmi:topology"},
diff --git a/lighty-models/README.md b/lighty-models/README.md
index 1934ca9bca..e3599ca273 100644
--- a/lighty-models/README.md
+++ b/lighty-models/README.md
@@ -90,7 +90,7 @@ import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
public class Main {
private static final Set MY_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.urn.example.my.model.rev180914.$YangModuleInfoImpl.getInstance()
+ org.opendaylight.yang.svc.v1.urn.example.my.model.rev180914.YangModuleInfoImpl.getInstance()
);
public static void main(String[] args) {
diff --git a/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/CallhomePluginTest.java b/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/CallhomePluginTest.java
index 201c0c68ec..e16860e71e 100644
--- a/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/CallhomePluginTest.java
+++ b/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/CallhomePluginTest.java
@@ -16,7 +16,6 @@
import io.lighty.modules.southbound.netconf.impl.NetconfCallhomePluginBuilder;
import io.lighty.modules.southbound.netconf.impl.config.NetconfConfiguration;
import io.lighty.modules.southbound.netconf.impl.util.NetconfConfigUtils;
-import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
@@ -46,7 +45,9 @@ public void beforeClass() throws ConfigurationException {
final NetconfConfiguration configuration =
NetconfConfigUtils.createDefaultNetconfConfiguration();
NetconfConfigUtils.injectServicesToTopologyConfig(configuration, lightyController.getServices());
- netconfPlugin = NetconfCallhomePluginBuilder.from(configuration, lightyController.getServices()).build();
+ netconfPlugin = NetconfCallhomePluginBuilder.from(configuration, lightyController.getServices(),
+ restConfConfig.getInetAddress().getHostAddress(), restConfConfig.getHttpPort()).build();
+
}
@AfterClass
@@ -67,7 +68,8 @@ public void testStart() throws Exception {
netconfPlugin.start().get();
// check, whether TCP server is running on port
try (Socket socket = new Socket()) {
- final SocketAddress endpoint = new InetSocketAddress(InetAddress.getLocalHost(), 4334);
+ final SocketAddress endpoint = new InetSocketAddress(
+ RestConfConfigUtils.getDefaultRestConfConfiguration().getInetAddress(), 4334);
socket.connect(endpoint);
}
}
diff --git a/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/TopologyPluginsTest.java b/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/TopologyPluginsTest.java
index 22d1e62420..3f761e8c64 100644
--- a/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/TopologyPluginsTest.java
+++ b/lighty-modules/integration-tests/src/test/java/io/lighty/modules/southbound/netconf/tests/TopologyPluginsTest.java
@@ -8,10 +8,6 @@
package io.lighty.modules.southbound.netconf.tests;
import static io.lighty.modules.southbound.netconf.tests.LightyTestUtils.MAX_START_TIME_MILLIS;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import io.lighty.core.controller.api.LightyController;
import io.lighty.core.controller.api.LightyModule;
@@ -32,16 +28,16 @@
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.netconf.client.NetconfClientDispatcher;
import org.opendaylight.netconf.client.NetconfClientSession;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.credentials.Credentials;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240118.credentials.credentials.LoginPasswordBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.credentials.Credentials;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.credentials.credentials.LoginPwUnencryptedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.credentials.credentials.login.pw.unencrypted.LoginPasswordUnencryptedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev231121.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev231121.NetconfNodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -68,16 +64,12 @@ public class TopologyPluginsTest {
private CommunityRestConf restConf;
private LightyModule netconfPlugin;
@Mock
- private NetconfClientDispatcher dispatcher;
- @Mock
private Future initFuture;
- private static LightyModule startSingleNodeNetconf(final LightyServices services,
- final NetconfClientDispatcher dispatcher)
+ private static LightyModule startSingleNodeNetconf(final LightyServices services)
throws ConfigurationException {
final NetconfConfiguration config = NetconfConfigUtils.createDefaultNetconfConfiguration();
NetconfConfigUtils.injectServicesToConfig(config);
- config.setClientDispatcher(dispatcher);
return NetconfTopologyPluginBuilder.from(config, services).build();
}
@@ -85,13 +77,12 @@ private static LightyModule startSingleNodeNetconf(final LightyServices services
public void beforeClass()
throws ConfigurationException, ExecutionException, InterruptedException, TimeoutException {
MockitoAnnotations.initMocks(this);
- when(this.dispatcher.createClient(any())).thenAnswer(invocation -> initFuture);
this.lightyController = LightyTestUtils.startController();
RestConfConfiguration restConfConfig =
RestConfConfigUtils.getDefaultRestConfConfiguration();
this.restConf = LightyTestUtils.startRestconf(restConfConfig, this.lightyController.getServices());
- this.netconfPlugin = startSingleNodeNetconf(this.lightyController.getServices(), this.dispatcher);
+ this.netconfPlugin = startSingleNodeNetconf(this.lightyController.getServices());
this.netconfPlugin.start().get(MAX_START_TIME_MILLIS, TimeUnit.MILLISECONDS);
}
@@ -111,10 +102,11 @@ public void afterClass() {
@Test
public void testMountDevice() throws Exception {
final NodeId nodeId = new NodeId("device1");
- final Credentials loginPassword = new LoginPasswordBuilder()
+ final Credentials loginPassword = new LoginPwUnencryptedBuilder().setLoginPasswordUnencrypted(
+ new LoginPasswordUnencryptedBuilder()
.setUsername("user1")
.setPassword("password1")
- .build();
+ .build()).build();
final NetconfNode netconfNode = new NetconfNodeBuilder()
.setHost(new Host(new IpAddress(new Ipv4Address("10.10.8.8"))))
.setPort(new PortNumber(Uint16.valueOf(17830)))
@@ -134,7 +126,6 @@ public void testMountDevice() throws Exception {
final WriteTransaction writeTransaction = bindingDataBroker.newWriteOnlyTransaction();
writeTransaction.mergeParentStructurePut(LogicalDatastoreType.CONFIGURATION, path, node);
writeTransaction.commit().get();
- verify(this.dispatcher, timeout(20000)).createClient(any());
}
}
diff --git a/lighty-modules/lighty-aaa-aggregator/lighty-aaa-encryption-service/src/main/java/io/lighty/aaa/encrypt/service/impl/AAAEncryptionServiceImpl.java b/lighty-modules/lighty-aaa-aggregator/lighty-aaa-encryption-service/src/main/java/io/lighty/aaa/encrypt/service/impl/AAAEncryptionServiceImpl.java
index 5237357ba6..c017dc5ca3 100644
--- a/lighty-modules/lighty-aaa-aggregator/lighty-aaa-encryption-service/src/main/java/io/lighty/aaa/encrypt/service/impl/AAAEncryptionServiceImpl.java
+++ b/lighty-modules/lighty-aaa-aggregator/lighty-aaa-encryption-service/src/main/java/io/lighty/aaa/encrypt/service/impl/AAAEncryptionServiceImpl.java
@@ -7,11 +7,9 @@
*/
package io.lighty.aaa.encrypt.service.impl;
-import java.nio.charset.StandardCharsets;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
-import javax.xml.bind.DatatypeConverter;
import org.opendaylight.aaa.encrypt.AAAEncryptionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,24 +26,6 @@ public AAAEncryptionServiceImpl(Cipher encryptCipher, Cipher decryptCipher) {
this.decryptCipher = decryptCipher;
}
- @Override
- public String encrypt(String data) {
- if (data != null && data.length() != 0) {
- try {
- synchronized (encryptCipher) {
- byte[] cryptobytes = encryptCipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
- return DatatypeConverter.printBase64Binary(cryptobytes);
- }
- } catch (IllegalBlockSizeException | BadPaddingException e) {
- LOG.error("Failed to encrypt data.", e);
- return data;
- }
- } else {
- LOG.warn("data is empty or null.");
- return data;
- }
- }
-
@Override
public byte[] encrypt(byte[] data) {
if (data != null && data.length != 0) {
@@ -63,23 +43,6 @@ public byte[] encrypt(byte[] data) {
}
}
- @Override
- public String decrypt(String encryptedData) {
- if (encryptedData != null && encryptedData.length() != 0) {
- try {
- byte[] cryptobytes = DatatypeConverter.parseBase64Binary(encryptedData);
- byte[] clearbytes = decryptCipher.doFinal(cryptobytes);
- return new String(clearbytes, StandardCharsets.UTF_8);
- } catch (IllegalBlockSizeException | BadPaddingException e) {
- LOG.error("Failed to decrypt encoded data", e);
- return encryptedData;
- }
- } else {
- LOG.warn("encryptedData is empty or null.");
- return encryptedData;
- }
- }
-
@Override
public byte[] decrypt(byte[] encryptedData) {
if (encryptedData != null && encryptedData.length != 0) {
diff --git a/lighty-modules/lighty-aaa-aggregator/lighty-aaa/src/main/java/io/lighty/aaa/util/AAAConfigUtils.java b/lighty-modules/lighty-aaa-aggregator/lighty-aaa/src/main/java/io/lighty/aaa/util/AAAConfigUtils.java
index a0566442a0..2a8d655176 100644
--- a/lighty-modules/lighty-aaa-aggregator/lighty-aaa/src/main/java/io/lighty/aaa/util/AAAConfigUtils.java
+++ b/lighty-modules/lighty-aaa-aggregator/lighty-aaa/src/main/java/io/lighty/aaa/util/AAAConfigUtils.java
@@ -14,7 +14,18 @@
import io.lighty.core.controller.impl.config.ConfigurationException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.Reader;
+import java.security.KeyPair;
+import java.security.Provider;
+import java.security.Security;
import java.util.Set;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.openssl.PEMDecryptorProvider;
+import org.bouncycastle.openssl.PEMEncryptedKeyPair;
+import org.bouncycastle.openssl.PEMKeyPair;
+import org.bouncycastle.openssl.PEMParser;
+import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
+import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -24,12 +35,19 @@ public final class AAAConfigUtils {
private static final String AAA_ROOT_ELEMENT_NAME = "aaa";
public static final Set YANG_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.config.aaa.authn.encrypt.service.config.rev160915
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev160321
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214
- .$YangModuleInfoImpl.getInstance());
+ org.opendaylight.yang.svc.v1.config.aaa.authn.encrypt.service.config.rev160915
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.yang.aaa.cert.mdsal.rev160321
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.aaa.rev161214
+ .YangModuleInfoImpl.getInstance());
+
+ private static final Provider BCPROV;
+
+ static {
+ final var prov = Security.getProvider(BouncyCastleProvider.PROVIDER_NAME);
+ BCPROV = prov != null ? prov : new BouncyCastleProvider();
+ }
private AAAConfigUtils() {
// Hide on purpose
@@ -60,6 +78,23 @@ public static AAAConfiguration getAAAConfiguration(final InputStream jsonConfigI
return aaaConfiguration;
}
+ public static KeyPair decodePrivateKey(final Reader reader, final String passphrase) throws IOException {
+ try (PEMParser keyReader = new PEMParser(reader)) {
+ JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
+ PEMDecryptorProvider decryptionProv = new JcePEMDecryptorProviderBuilder().setProvider(BCPROV)
+ .build(passphrase.toCharArray());
+
+ Object privateKey = keyReader.readObject();
+ KeyPair keyPair;
+ if (privateKey instanceof PEMEncryptedKeyPair pemPrivateKey) {
+ keyPair = converter.getKeyPair(pemPrivateKey.decryptKeyPair(decryptionProv));
+ } else {
+ keyPair = converter.getKeyPair((PEMKeyPair) privateKey);
+ }
+ return keyPair;
+ }
+ }
+
public static AAAConfiguration createDefaultAAAConfiguration() {
return new AAAConfiguration();
}
diff --git a/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/config/BgpConfigUtils.java b/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/config/BgpConfigUtils.java
index 3611fd0ee7..f869fb9278 100644
--- a/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/config/BgpConfigUtils.java
+++ b/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/config/BgpConfigUtils.java
@@ -21,86 +21,86 @@ private BgpConfigUtils() {
}
private static final Set BASE_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.peer.rpc.rev180329
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.operational.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.interfaces.rev160412
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.local.routing.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.types.rev151018
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.openconfig.ext.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.openconfig.types.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.policy.types.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.http.openconfig.net.yang.routing.policy.rev151009
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.route.target.constrain.rev180618
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.ll.graceful.restart.rev181112
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev200120
- .$YangModuleInfoImpl.getInstance()
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.peer.rpc.rev180329
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.bgp.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.bgp.operational.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.bgp.policy.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.bgp.types.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.interfaces.rev160412
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.local.routing.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.network.instance.rev151018
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.network.instance.types.rev151018
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.openconfig.ext.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.openconfig.types.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.policy.types.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.http.openconfig.net.yang.routing.policy.rev151009
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.route.target.constrain.rev180618
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.ll.graceful.restart.rev181112
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev200120
+ .YangModuleInfoImpl.getInstance()
);
private static final Set TOPOLOGY_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.config.rev180329
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.isis.topology.rev131021
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.ted.rev131021
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.sr.rev130819
- .$YangModuleInfoImpl.getInstance()
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.config.rev180329
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.tbd.params.xml.ns.yang.network.isis.topology.rev131021
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.tbd.params.xml.ns.yang.network.ted.rev131021
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.sr.rev130819
+ .YangModuleInfoImpl.getInstance()
);
private static final Set EXTENSIONS_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pmsi.tunnel.rev200120
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.route.target.constrain.rev180618
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720
- .$YangModuleInfoImpl.getInstance()
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.pmsi.tunnel.rev200120
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.route.target.constrain.rev180618
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720
+ .YangModuleInfoImpl.getInstance()
);
public static final Set ALL_BGP_MODELS = Set.copyOf(
diff --git a/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/deployer/BgpModule.java b/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/deployer/BgpModule.java
index 923e3a293f..451f3361e9 100644
--- a/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/deployer/BgpModule.java
+++ b/lighty-modules/lighty-bgp/src/main/java/io/lighty/modules/bgp/deployer/BgpModule.java
@@ -26,7 +26,7 @@
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext;
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
+import org.opendaylight.mdsal.singleton.api.ClusterSingletonServiceProvider;
import org.opendaylight.protocol.bgp.openconfig.routing.policy.impl.DefaultBGPRibRoutingPolicyFactory;
import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.SimpleStatementRegistry;
import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.StatementActivator;
@@ -35,6 +35,7 @@
import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext;
import org.opendaylight.protocol.bgp.parser.spi.pojo.DefaultBGPExtensionConsumerContext;
import org.opendaylight.protocol.bgp.rib.impl.BGPDispatcherImpl;
+import org.opendaylight.protocol.bgp.rib.impl.BGPNettyGroups;
import org.opendaylight.protocol.bgp.rib.impl.ConstantCodecsRegistry;
import org.opendaylight.protocol.bgp.rib.impl.StrictBGPPeerRegistry;
import org.opendaylight.protocol.bgp.rib.impl.config.DefaultBgpDeployer;
@@ -52,7 +53,7 @@ public class BgpModule extends AbstractLightyModule {
//Basic BGP
private final SimpleStatementRegistry simpleStatementRegistry;
- private final BGPDispatcherImpl bgpDispatcher;
+ private final BGPNettyGroups bgpNettyGroups;
private final DefaultBgpDeployer bgpDeployer;
private final StateProviderImpl stateProvider;
private final StrictBGPPeerRegistry peerRegistry;
@@ -73,7 +74,8 @@ public BgpModule(final EffectiveModelContext modelContext, final DataBroker data
final EventLoopGroup bossGroup, final EventLoopGroup workerGroup) {
initialConfigLoader = new InitialBgpConfigLoader(domDataBroker, modelContext);
peerRegistry = new StrictBGPPeerRegistry();
- bgpDispatcher = new BGPDispatcherImpl(createBgpExtensions(), bossGroup, workerGroup, peerRegistry);
+ bgpNettyGroups = new BGPNettyGroups();
+ final var bgpDispatcher = new BGPDispatcherImpl(createBgpExtensions(), bgpNettyGroups, peerRegistry);
simpleStatementRegistry = createStatementRegistry(dataBroker);
final DefaultBGPRibRoutingPolicyFactory routingPolicyFactory = new DefaultBGPRibRoutingPolicyFactory(
dataBroker, simpleStatementRegistry);
@@ -105,7 +107,7 @@ public BgpModule(final EffectiveModelContext modelContext, final DataBroker data
}
public BgpModule(final LightyServices lightyServices) {
- this(lightyServices.getEffectiveModelContextProvider().getEffectiveModelContext(),
+ this(lightyServices.getEffectiveModelContext(),
lightyServices.getBindingDataBroker(), lightyServices.getClusteredDOMDataBroker(),
lightyServices.getBindingCodecTreeFactory(),
lightyServices.getAdapterContext().currentSerializer().getRuntimeContext(),
@@ -147,7 +149,7 @@ protected boolean stopProcedure() {
closeSuccess = false;
}
try {
- bgpDispatcher.close();
+ bgpNettyGroups.close();
} catch (Exception e) {
LOG.warn("Failed to stop BGP dispatcher", e);
closeSuccess = false;
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/DataConverter.java b/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/DataConverter.java
index 2f16de61c0..2e58847374 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/DataConverter.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/DataConverter.java
@@ -33,8 +33,8 @@
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.Module;
@@ -72,7 +72,7 @@ private static String createJsonWithExclusiveWriter(final Inference inference, f
final JSONCodecFactory jsonCodecFactory) {
final Writer writer = new StringWriter();
final JsonWriter jsonWriter = new JsonWriter(writer);
- final XMLNamespace namespace = data.getIdentifier().getNodeType().getNamespace();
+ final XMLNamespace namespace = data.name().getNodeType().getNamespace();
final NormalizedNodeStreamWriter nodeWriter = JSONNormalizedNodeStreamWriter
.createExclusiveWriter(jsonCodecFactory, inference, namespace, jsonWriter);
final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(nodeWriter);
@@ -91,7 +91,7 @@ private static String createJsonWithNestedWriter(final Inference inference, fina
final JSONCodecFactory jsonCodecFactory) {
final Writer writer = new StringWriter();
final JsonWriter jsonWriter = new JsonWriter(writer);
- final XMLNamespace namespace = data.getIdentifier().getNodeType().getNamespace();
+ final XMLNamespace namespace = data.name().getNodeType().getNamespace();
final NormalizedNodeStreamWriter nodeWriter = JSONNormalizedNodeStreamWriter
.createNestedWriter(jsonCodecFactory, inference, namespace, jsonWriter);
final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(nodeWriter);
@@ -121,13 +121,12 @@ private static NormalizedNode fromJson(final String inputJson, final Inference i
Write result into container builder with identifier (netconf:base)data. Makes possible to write multiple
top level elements.
*/
- final DataContainerNodeBuilder resultBuilder = ImmutableContainerNodeBuilder
- .create()
+ final DataContainerNodeBuilder resultBuilder = Builders.containerBuilder()
.withNodeIdentifier(YangInstanceIdentifier.NodeIdentifier.create(SchemaContext.NAME));
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(resultBuilder);
final JSONCodecFactory jsonCodecFactory =
- JSONCodecFactorySupplier.RFC7951.createLazy(inference.getEffectiveModelContext());
+ JSONCodecFactorySupplier.RFC7951.createLazy(inference.modelContext());
try (JsonParserStream jsonParser = JsonParserStream.create(streamWriter,
jsonCodecFactory, inference)) {
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/YangModelSanitizer.java b/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/YangModelSanitizer.java
index 48624cf1d2..f68cb2c637 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/YangModelSanitizer.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/main/java/io/lighty/modules/gnmi/commons/util/YangModelSanitizer.java
@@ -9,8 +9,8 @@
package io.lighty.modules.gnmi.commons.util;
import com.google.common.io.ByteSource;
+import com.google.common.io.CharSource;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -43,10 +43,9 @@ private YangModelSanitizer() {
* @return Sanitized regex posix inside YANG model regex patterns.
* @throws IOException Throw when is execute {@link ByteSource#read()}
*/
- public static ByteSource removeRegexpPosix(final ByteSource data) throws IOException {
- final String textModel = new String(data.read(), StandardCharsets.UTF_8);
- final String sanitizedModel = removeRegexpPosix(textModel);
- return ByteSource.wrap(sanitizedModel.getBytes(StandardCharsets.UTF_8));
+ public static CharSource removeRegexpPosix(final CharSource data) throws IOException {
+ final String sanitizedModel = removeRegexpPosix(data.read());
+ return CharSource.wrap(sanitizedModel);
}
/**
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/test/java/io/lighty/modules/gnmi/commons/util/GnmiDataConverterTest.java b/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/test/java/io/lighty/modules/gnmi/commons/util/GnmiDataConverterTest.java
index 4663f4cd57..65cd898ac8 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/test/java/io/lighty/modules/gnmi/commons/util/GnmiDataConverterTest.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-commons/src/test/java/io/lighty/modules/gnmi/commons/util/GnmiDataConverterTest.java
@@ -17,7 +17,8 @@
import org.junit.jupiter.api.Test;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.source.DelegatedYangTextSource;
import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource;
@@ -57,10 +58,9 @@ private static EffectiveModelContext prepareSchemaWithMultipleRootContainersWith
String content = new String(bytes); // Convert byte[] to String
final YangStatementStreamSource yangModelRootSource = YangStatementStreamSource.create(
- YangTextSchemaSource.delegateForCharSource(
- YangTextSchemaSource.identifierFromFilename(modelName),
- CharSource.wrap(content))); // Pass String as argument
-
+ new DelegatedYangTextSource(
+ SourceIdentifier.ofYangFileName(modelName),
+ CharSource.wrap(content))); // Pass String as argument
buildAction.addSource(yangModelRootSource);
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-connector/pom.xml b/lighty-modules/lighty-gnmi/lighty-gnmi-connector/pom.xml
index 9a8b169ff9..83d9e32798 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-connector/pom.xml
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-connector/pom.xml
@@ -43,6 +43,11 @@
aaa-encrypt-service
test
+
+ io.lighty.modules
+ lighty-aaa
+ test
+
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-connector/src/test/java/io/lighty/modules/gnmi/connector/tests/commons/TestUtils.java b/lighty-modules/lighty-gnmi/lighty-gnmi-connector/src/test/java/io/lighty/modules/gnmi/connector/tests/commons/TestUtils.java
index 48fe843ee9..8d7eec6c53 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-connector/src/test/java/io/lighty/modules/gnmi/connector/tests/commons/TestUtils.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-connector/src/test/java/io/lighty/modules/gnmi/connector/tests/commons/TestUtils.java
@@ -9,6 +9,7 @@
package io.lighty.modules.gnmi.connector.tests.commons;
import com.google.common.io.CharStreams;
+import io.lighty.aaa.util.AAAConfigUtils;
import io.lighty.modules.gnmi.connector.configuration.SecurityFactory;
import io.lighty.modules.gnmi.connector.gnmi.session.impl.GnmiSessionFactoryImpl;
import io.lighty.modules.gnmi.connector.security.Security;
@@ -20,7 +21,6 @@
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.security.KeyPair;
-import org.opendaylight.aaa.encrypt.PKIUtil;
public final class TestUtils {
@@ -36,7 +36,7 @@ private TestUtils() {
}
public static SessionManager createSessionManagerWithCerts() throws Exception {
- final KeyPair keyPair = new PKIUtil().decodePrivateKey(new StringReader(readResource(CLIENT_KEY)), PASSPHRASE);
+ final KeyPair keyPair = AAAConfigUtils.decodePrivateKey(new StringReader(readResource(CLIENT_KEY)), PASSPHRASE);
final Security gnmiSecurity = SecurityFactory.createGnmiSecurity(readResource(CA_CERTS),
readResource(CLIENT_CERTS), keyPair.getPrivate());
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/gnmi/GnmiCrudService.java b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/gnmi/GnmiCrudService.java
index 68b62128ec..092d2adec9 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/gnmi/GnmiCrudService.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/gnmi/GnmiCrudService.java
@@ -143,7 +143,7 @@ Gnmi.SetResponse set(final Gnmi.SetRequest request) {
Map.Entry getResultInJsonFormat(final Map.Entry entry,
final NormalizedNode node) {
final Optional extends Module> module
- = DataConverter.findModuleByQName(node.getIdentifier().getNodeType(), context);
+ = DataConverter.findModuleByQName(node.name().getNodeType(), context);
final String moduleName = module.map(Module::getName).orElse(null);
final String jsonValue = DataConverter.jsonStringFromNormalizedNodes(entry.getValue(), node, context);
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/EffectiveModelContextBuilder.java b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/EffectiveModelContextBuilder.java
index 095e37889f..ac8abb488e 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/EffectiveModelContextBuilder.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/EffectiveModelContextBuilder.java
@@ -8,7 +8,7 @@
package io.lighty.modules.gnmi.simulatordevice.utils;
-import com.google.common.io.ByteSource;
+import com.google.common.io.CharSource;
import io.lighty.modules.gnmi.commons.util.YangModelSanitizer;
import java.io.File;
import java.io.IOException;
@@ -23,7 +23,8 @@
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.source.DelegatedYangTextSource;
import org.opendaylight.yangtools.yang.parser.api.YangParserException;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource;
@@ -108,12 +109,12 @@ private static List getYangStatementsFromYangModulesP
.map(Path::toFile)
.collect(Collectors.toList());
for (File file : filesInFolder) {
- final ByteSource sanitizedYangByteSource = YangModelSanitizer
- .removeRegexpPosix(com.google.common.io.Files.asByteSource(file));
+ final CharSource sanitizedYangByteSource = YangModelSanitizer
+ .removeRegexpPosix(com.google.common.io.Files.asCharSource(file, StandardCharsets.UTF_8));
final YangStatementStreamSource statementSource = YangStatementStreamSource.create(
- YangTextSchemaSource.delegateForByteSource(
- YangTextSchemaSource.identifierFromFilename(file.getName()),
- sanitizedYangByteSource, StandardCharsets.UTF_8));
+ new DelegatedYangTextSource(
+ SourceIdentifier.ofYangFileName(file.getName()),
+ sanitizedYangByteSource));
sourceArrayList.add(statementSource);
}
@@ -130,12 +131,12 @@ private static List getYangStatementsFromYangModulesI
final ArrayList sourceArrayList = new ArrayList<>();
for (YangModuleInfo yangModuleInfo : yangModulesInfo) {
try {
- final ByteSource sanitizedYangByteSource = YangModelSanitizer
- .removeRegexpPosix(yangModuleInfo.getYangTextByteSource());
+ final CharSource sanitizedYangByteSource = YangModelSanitizer
+ .removeRegexpPosix(yangModuleInfo.getYangTextCharSource());
final YangStatementStreamSource statementSource
- = YangStatementStreamSource.create(YangTextSchemaSource.delegateForByteSource(
- YangTextSchemaSource.identifierFromFilename(yangModuleInfo.getName().getLocalName() + ".yang"),
- sanitizedYangByteSource, StandardCharsets.UTF_8));
+ = YangStatementStreamSource.create(new DelegatedYangTextSource(
+ SourceIdentifier.ofYangFileName(yangModuleInfo.getName().getLocalName() + ".yang"),
+ sanitizedYangByteSource));
sourceArrayList.add(statementSource);
} catch (IOException | YangParserException e) {
final String errorMsg = String.format("Failed to create YangStatementStreamSource from"
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/FileUtils.java b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/FileUtils.java
index 4e9f30e15f..68fe899711 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/FileUtils.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/utils/FileUtils.java
@@ -8,6 +8,7 @@
package io.lighty.modules.gnmi.simulatordevice.utils;
+import com.google.common.io.CharSource;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -18,7 +19,8 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.source.DelegatedYangTextSource;
import org.opendaylight.yangtools.yang.parser.api.YangParserException;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource;
@@ -46,9 +48,9 @@ public static EffectiveModelContext buildSchemaFromYangsDir(final String path) {
for (File file : filesInFolder) {
final YangStatementStreamSource statementSource = YangStatementStreamSource.create(
- YangTextSchemaSource.delegateForByteSource(
- YangTextSchemaSource.identifierFromFilename(file.getName()),
- com.google.common.io.Files.asByteSource(file), StandardCharsets.UTF_8));
+ new DelegatedYangTextSource(
+ SourceIdentifier.ofYangFileName(file.getName()), CharSource.wrap(
+ (CharSequence) com.google.common.io.Files.asCharSource(file,StandardCharsets.UTF_8))));
buildAction.addSource(statementSource);
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/yang/YangDataService.java b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/yang/YangDataService.java
index ad43bb6d4a..0a63797797 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/yang/YangDataService.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/main/java/io/lighty/modules/gnmi/simulatordevice/yang/YangDataService.java
@@ -126,11 +126,11 @@ private void initDataTree(final InputStream stream, final DatastoreType datastor
If QName of parsed node is a root node (SchemaContext.NAME), that means we parsed multiple
top-level element, in that case we need to write this node on ROOT YII.
*/
- if (node.getIdentifier().getNodeType().equals(SchemaContext.NAME)) {
+ if (node.name().getNodeType().equals(SchemaContext.NAME)) {
writeDataByPath(datastoreType, YangInstanceIdentifier.empty(), node);
// Else we parsed only one top-level element, in that case we write this node on it's identifier.
} else {
- writeDataByPath(datastoreType, YangInstanceIdentifier.of(node.getIdentifier().getNodeType()), node);
+ writeDataByPath(datastoreType, YangInstanceIdentifier.of(node.name().getNodeType()), node);
}
} catch (final IOException e) {
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/test/java/io/lighty/modules/gnmi/simulatordevice/gnmi/LoadAugmentationFromGnmiPath.java b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/test/java/io/lighty/modules/gnmi/simulatordevice/gnmi/LoadAugmentationFromGnmiPath.java
index 01af356ccd..675c81341a 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/test/java/io/lighty/modules/gnmi/simulatordevice/gnmi/LoadAugmentationFromGnmiPath.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-device-simulator/src/test/java/io/lighty/modules/gnmi/simulatordevice/gnmi/LoadAugmentationFromGnmiPath.java
@@ -73,7 +73,7 @@ public void validateParsingProcessFromGnmiPathToYangInstanceIdentifierToJson() {
Assert.assertTrue(result.isPresent(),
String.format("Failed to load [%s] from data-store", entry.getValue().getLastPathArgument()));
NormalizedNode normalizedNode = result.get();
- Assert.assertEquals(normalizedNode.getIdentifier(), entry.getValue().getLastPathArgument());
+ Assert.assertEquals(normalizedNode.name(), entry.getValue().getLastPathArgument());
//Test to parse data retrieved from data-store to JSON format.
Map.Entry resultInJsonFormat
= this.gnmiCrudService.getResultInJsonFormat(entry, normalizedNode);
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/pom.xml b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/pom.xml
index b2004a139b..b568106d45 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/pom.xml
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/pom.xml
@@ -101,6 +101,10 @@
aaa-encrypt-service-impl
test
+
+ io.lighty.modules
+ lighty-aaa
+
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/device/session/security/KeystoreGnmiSecurityProvider.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/device/session/security/KeystoreGnmiSecurityProvider.java
index 042a97f3de..51c93fe15d 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/device/session/security/KeystoreGnmiSecurityProvider.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/device/session/security/KeystoreGnmiSecurityProvider.java
@@ -8,19 +8,20 @@
package io.lighty.gnmi.southbound.device.session.security;
+import io.lighty.aaa.util.AAAConfigUtils;
import io.lighty.gnmi.southbound.schema.certstore.service.CertificationStorageService;
import io.lighty.gnmi.southbound.timeout.TimeoutUtils;
import io.lighty.modules.gnmi.connector.configuration.SecurityFactory;
import io.lighty.modules.gnmi.connector.security.Security;
import java.io.IOException;
import java.io.StringReader;
+import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.cert.CertificateException;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.opendaylight.aaa.encrypt.PKIUtil;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.Keystore;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.topology.rev210316.GnmiNode;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.topology.rev210316.security.SecurityChoice;
@@ -99,13 +100,16 @@ private Security createSecurityFromKeystore(final KeyPair keyPair, final Keystor
private KeyPair getKeyPair(final String clientKey, final String passphrase) throws SessionSecurityException {
try {
- return new PKIUtil().decodePrivateKey(
+ return AAAConfigUtils.decodePrivateKey(
new StringReader(this.certService
.decrypt(clientKey)
.replace("\\\\n", "\n")),
this.certService.decrypt(passphrase));
} catch (IOException e) {
throw new SessionSecurityException("Error while creating KeyPair from private key and passphrase", e);
+ } catch (GeneralSecurityException e) {
+ LOG.error("Failed do decrypt input {}", clientKey);
+ throw new RuntimeException(e);
}
}
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/identifier/IdentifierUtils.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/identifier/IdentifierUtils.java
index 11ac5d4fe2..c828145480 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/identifier/IdentifierUtils.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/identifier/IdentifierUtils.java
@@ -16,9 +16,9 @@
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
+import org.opendaylight.yangtools.yang.binding.DataObjectStep;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.binding.KeyStep;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -46,10 +46,10 @@ public static YangInstanceIdentifier nodeidToYii(final NodeId nodeId) {
.build();
}
- public static NodeId nodeIdOfPathArgument(final PathArgument pathArgument)
+ public static NodeId nodeIdOfPathArgument(final DataObjectStep pathArgument)
throws IllegalStateException {
- if (pathArgument instanceof IdentifiableItem, ?> identifiableItem) {
- final var key = identifiableItem.getKey();
+ if (pathArgument instanceof KeyStep, ?> identifiableItem) {
+ final var key = identifiableItem.key();
if (key instanceof NodeKey nodeKey) {
return nodeKey.getNodeId();
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/lightymodule/util/GnmiConfigUtils.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/lightymodule/util/GnmiConfigUtils.java
index b0d9c5940c..4a5373f977 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/lightymodule/util/GnmiConfigUtils.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/lightymodule/util/GnmiConfigUtils.java
@@ -30,14 +30,14 @@ public final class GnmiConfigUtils {
public static final String GNMI_CONFIG_JSON_ROOT_ELEMENT = "gnmi";
public static final Set YANG_MODELS = Set.of(
- org.opendaylight.yang.gen.v1.urn.lighty.gnmi.topology.rev210316
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.lighty.gnmi.force.capabilities.rev210702
- .$YangModuleInfoImpl.getInstance(),
- org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504
- .$YangModuleInfoImpl.getInstance()
+ org.opendaylight.yang.svc.v1.urn.lighty.gnmi.topology.rev210316
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.lighty.gnmi.yang.storage.rev210331
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.lighty.gnmi.force.capabilities.rev210702
+ .YangModuleInfoImpl.getInstance(),
+ org.opendaylight.yang.svc.v1.urn.lighty.gnmi.certificate.storage.rev210504
+ .YangModuleInfoImpl.getInstance()
);
private GnmiConfigUtils() {
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/listener/GnmiNodeListener.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/listener/GnmiNodeListener.java
index 4a3deb0c0c..7b5c47d058 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/listener/GnmiNodeListener.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/listener/GnmiNodeListener.java
@@ -17,7 +17,7 @@
import io.lighty.gnmi.southbound.device.connection.DeviceConnectionManager;
import io.lighty.gnmi.southbound.identifier.IdentifierUtils;
import io.lighty.gnmi.southbound.timeout.TimeoutUtils;
-import java.util.Collection;
+import java.util.List;
import java.util.Objects;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
@@ -61,7 +61,7 @@ public GnmiNodeListener(final DeviceConnectionManager deviceConnectionManager, f
@Override
- public void onDataTreeChanged(@NonNull Collection> changes) {
+ public void onDataTreeChanged(@NonNull List> changes) {
LOG.debug("Data tree change on gNMI topology triggered");
for (final DataTreeModification change : changes) {
final DataObjectModification rootNode = change.getRootNode();
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/GnmiMountPointRegistrator.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/GnmiMountPointRegistrator.java
index 1322f5f459..b0dedb748e 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/GnmiMountPointRegistrator.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/GnmiMountPointRegistrator.java
@@ -45,7 +45,7 @@ public void registerMountPoint(final Node node, final EffectiveModelContext sche
"Mount point for node %s already exists!", node.getNodeId().getValue());
final DOMMountPointService.DOMMountPointBuilder builder = mountPointService
.createMountPoint(IdentifierUtils.nodeidToYii(node.getNodeId()));
- builder.addService(DOMSchemaService.class, FixedDOMSchemaService.of(schemaContext));
+ builder.addService(DOMSchemaService.class, new FixedDOMSchemaService(schemaContext));
builder.addService(DOMDataBroker.class, dataBroker);
final ObjectRegistration registration = builder.register();
registeredMountPoints.put(node.getNodeId(), registration);
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/broker/GnmiDataBroker.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/broker/GnmiDataBroker.java
index 7968da6d1d..a1b6fdcc44 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/broker/GnmiDataBroker.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/broker/GnmiDataBroker.java
@@ -8,21 +8,21 @@
package io.lighty.gnmi.southbound.mountpoint.broker;
-import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.ImmutableClassToInstanceMap;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.ListenableFuture;
import io.lighty.gnmi.southbound.mountpoint.ops.GnmiGet;
import io.lighty.gnmi.southbound.mountpoint.ops.GnmiSet;
import io.lighty.gnmi.southbound.mountpoint.transactions.ReadOnlyTx;
import io.lighty.gnmi.southbound.mountpoint.transactions.ReadWriteTx;
import io.lighty.gnmi.southbound.mountpoint.transactions.WriteOnlyTx;
+import java.util.concurrent.Executor;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension;
import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
import org.opendaylight.mdsal.dom.spi.PingPongMergingDOMDataBroker;
+import org.opendaylight.yangtools.yang.common.Empty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,7 +39,7 @@ public GnmiDataBroker(final GnmiGet getProvider, final GnmiSet setProvider) {
}
@Override
- public @NonNull DOMTransactionChain createTransactionChain(DOMTransactionChainListener listener) {
+ public @NonNull DOMTransactionChain createTransactionChain() {
return new DOMTransactionChain() {
@Override
public DOMDataTreeReadTransaction newReadOnlyTransaction() {
@@ -51,6 +51,21 @@ public DOMDataTreeReadWriteTransaction newReadWriteTransaction() {
return GnmiDataBroker.this.newReadWriteTransaction();
}
+ @Override
+ public void addCallback(FutureCallback callback) {
+ DOMTransactionChain.super.addCallback(callback);
+ }
+
+ @Override
+ public void addCallback(FutureCallback callback, Executor executor) {
+ DOMTransactionChain.super.addCallback(callback, executor);
+ }
+
+ @Override
+ public @NonNull ListenableFuture future() {
+ return createMergingTransactionChain().future();
+ }
+
@Override
public DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
return GnmiDataBroker.this.newWriteOnlyTransaction();
@@ -63,11 +78,6 @@ public void close() {
};
}
- @Override
- public @NonNull ClassToInstanceMap getExtensions() {
- return ImmutableClassToInstanceMap.of();
- }
-
@Override
public DOMDataTreeReadTransaction newReadOnlyTransaction() {
return new ReadOnlyTx(gnmiGet);
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/ReadWriteTx.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/ReadWriteTx.java
index 4f81cfcc80..53babf50b1 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/ReadWriteTx.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/ReadWriteTx.java
@@ -10,6 +10,7 @@
import com.google.common.util.concurrent.FluentFuture;
import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
@@ -51,6 +52,11 @@ public void delete(final LogicalDatastoreType store, final YangInstanceIdentifie
delegateWriteTx.delete(store, path);
}
+ @Override
+ public @NonNull FluentFuture> completionFuture() {
+ return delegateWriteTx.commit();
+ }
+
@Override
public FluentFuture extends CommitInfo> commit() {
return delegateWriteTx.commit();
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/WriteOnlyTx.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/WriteOnlyTx.java
index 6b6f09a321..407a0c0e06 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/WriteOnlyTx.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/mountpoint/transactions/WriteOnlyTx.java
@@ -10,6 +10,7 @@
import com.google.common.util.concurrent.FluentFuture;
import io.lighty.gnmi.southbound.mountpoint.ops.GnmiSet;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.common.api.CommitInfo;
public class WriteOnlyTx extends AbstractWriteTx {
@@ -26,4 +27,9 @@ public WriteOnlyTx(final GnmiSet gnmiSet) {
public synchronized FluentFuture performCommit() {
return FluentFuture.from(setProvider.set(putList, mergeList, deleteList));
}
+
+ @Override
+ public @NonNull FluentFuture> completionFuture() {
+ return FluentFuture.from(setProvider.set(putList, mergeList, deleteList));
+ }
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/provider/GnmiSouthboundProvider.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/provider/GnmiSouthboundProvider.java
index 799eb9677a..10ad80c21d 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/provider/GnmiSouthboundProvider.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/provider/GnmiSouthboundProvider.java
@@ -43,9 +43,7 @@
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMMountPointService;
-import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.GnmiCertificateStorageService;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.topology.rev210316.GnmiTopologyTypesBuilder;
-import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331.GnmiYangStorageService;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder;
@@ -97,14 +95,14 @@ public void init() throws ExecutionException, InterruptedException, TimeoutExcep
//----Load initial yang models to datastore and register yang load rpc----
final YangDataStoreService yangDataStoreService = new YangDataStoreServiceImpl(dataBroker, gnmiExecutorService);
final YangStorageServiceRpcImpl yangStorageServiceRpc = new YangStorageServiceRpcImpl(yangDataStoreService);
- closeables.add(rpcProvider.registerRpcImplementation(GnmiYangStorageService.class, yangStorageServiceRpc));
+ closeables.add(rpcProvider.registerRpcImplementations(yangStorageServiceRpc.getRpcClassToInstanceMap()));
final CertificationStorageServiceImpl certStorageService
= new CertificationStorageServiceImpl(encryptionService, dataBroker);
final CertificationStorageServiceRpcImpl certStorageServiceRpc
= new CertificationStorageServiceRpcImpl(certStorageService);
closeables.add(rpcProvider
- .registerRpcImplementation(GnmiCertificateStorageService.class,certStorageServiceRpc));
+ .registerRpcImplementations(certStorageServiceRpc.getRpcClassToInstanceMap()));
// Load initial Yang models
if (!initialYangsLoaders.isEmpty()) {
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/impl/CertificationStorageServiceImpl.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/impl/CertificationStorageServiceImpl.java
index 9924613005..9e86ad6c75 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/impl/CertificationStorageServiceImpl.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/impl/CertificationStorageServiceImpl.java
@@ -10,7 +10,10 @@
import com.google.common.util.concurrent.ListenableFuture;
import io.lighty.gnmi.southbound.schema.certstore.service.CertificationStorageService;
+import java.nio.charset.Charset;
+import java.security.GeneralSecurityException;
import java.util.Optional;
+import javax.xml.bind.DatatypeConverter;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.aaa.encrypt.AAAEncryptionService;
import org.opendaylight.mdsal.binding.api.DataBroker;
@@ -36,11 +39,16 @@ public CertificationStorageServiceImpl(final AAAEncryptionService encryptionServ
}
@Override
- public @NonNull ListenableFuture extends CommitInfo> writeCertificates(final AddKeystoreCertificateInput input) {
+ public @NonNull ListenableFuture extends CommitInfo> writeCertificates(final AddKeystoreCertificateInput input)
+ throws GeneralSecurityException {
+ byte[] encryptedParaphrase = this.encryptionService.encrypt(
+ input.getPassphrase() != null ? input.getPassphrase().getBytes(Charset.defaultCharset()) : null);
final Keystore keystore = new KeystoreBuilder()
.setKeystoreId(input.getKeystoreId())
- .setClientKey(this.encryptionService.encrypt(input.getClientKey()))
- .setPassphrase(this.encryptionService.encrypt(input.getPassphrase()))
+ .setClientKey(DatatypeConverter.printBase64Binary(
+ this.encryptionService.encrypt(input.getClientKey().getBytes(Charset.defaultCharset()))))
+ .setPassphrase(
+ encryptedParaphrase != null ? DatatypeConverter.printBase64Binary(encryptedParaphrase) : null)
.setClientCert(input.getClientCert())
.setCaCertificate(input.getCaCertificate())
.build();
@@ -66,8 +74,9 @@ public CertificationStorageServiceImpl(final AAAEncryptionService encryptionServ
}
@Override
- public String decrypt(final String data) {
- return this.encryptionService.decrypt(data);
+ public String decrypt(final String data) throws GeneralSecurityException {
+ return new String(this.encryptionService.decrypt(DatatypeConverter.parseBase64Binary(data)),
+ Charset.defaultCharset());
}
private InstanceIdentifier getKeystoreII(final String keystoreId) {
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/rpc/CertificationStorageServiceRpcImpl.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/rpc/CertificationStorageServiceRpcImpl.java
index d601b91de4..586cac0870 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/rpc/CertificationStorageServiceRpcImpl.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/rpc/CertificationStorageServiceRpcImpl.java
@@ -9,26 +9,31 @@
package io.lighty.gnmi.southbound.schema.certstore.rpc;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import io.lighty.gnmi.southbound.schema.certstore.service.CertificationStorageService;
+import java.security.GeneralSecurityException;
import org.opendaylight.mdsal.common.api.CommitInfo;
+import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.AddKeystoreCertificate;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.AddKeystoreCertificateInput;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.AddKeystoreCertificateOutput;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.AddKeystoreCertificateOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.GnmiCertificateStorageService;
+import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.RemoveKeystoreCertificate;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.RemoveKeystoreCertificateInput;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.RemoveKeystoreCertificateOutput;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.certificate.storage.rev210504.RemoveKeystoreCertificateOutputBuilder;
+import org.opendaylight.yangtools.yang.binding.Rpc;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class CertificationStorageServiceRpcImpl implements GnmiCertificateStorageService {
+public class CertificationStorageServiceRpcImpl {
private static final Logger LOG = LoggerFactory.getLogger(CertificationStorageServiceRpcImpl.class);
private final CertificationStorageService certStorage;
@@ -37,10 +42,15 @@ public CertificationStorageServiceRpcImpl(final CertificationStorageService cert
this.certStorage = certStorage;
}
- @Override
- public ListenableFuture> addKeystoreCertificate(
+ private ListenableFuture> addKeystoreCertificate(
final AddKeystoreCertificateInput input) {
- final ListenableFuture extends CommitInfo> writeResult = this.certStorage.writeCertificates(input);
+ final ListenableFuture extends CommitInfo> writeResult;
+ try {
+ writeResult = this.certStorage.writeCertificates(input);
+ } catch (GeneralSecurityException e) {
+ LOG.error("Failed do encrypt input {}", input);
+ throw new RuntimeException(e);
+ }
final SettableFuture> rpcResult = SettableFuture.create();
Futures.addCallback(writeResult, new FutureCallback() {
@@ -59,8 +69,7 @@ public void onFailure(final Throwable throwable) {
return rpcResult;
}
- @Override
- public ListenableFuture> removeKeystoreCertificate(
+ private ListenableFuture> removeKeystoreCertificate(
final RemoveKeystoreCertificateInput input) {
final ListenableFuture extends CommitInfo> removeResult = this.certStorage.removeCertificates(input);
final SettableFuture> rpcResult = SettableFuture.create();
@@ -80,4 +89,11 @@ public void onFailure(final Throwable throwable) {
}, MoreExecutors.directExecutor());
return rpcResult;
}
+
+ public ClassToInstanceMap> getRpcClassToInstanceMap() {
+ return ImmutableClassToInstanceMap.>builder()
+ .put(AddKeystoreCertificate.class, this::addKeystoreCertificate)
+ .put(RemoveKeystoreCertificate.class, this::removeKeystoreCertificate)
+ .build();
+ }
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/service/CertificationStorageService.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/service/CertificationStorageService.java
index 1ac5512a59..d877d9e805 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/service/CertificationStorageService.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/certstore/service/CertificationStorageService.java
@@ -9,6 +9,7 @@
package io.lighty.gnmi.southbound.schema.certstore.service;
import com.google.common.util.concurrent.ListenableFuture;
+import java.security.GeneralSecurityException;
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.common.api.CommitInfo;
@@ -18,11 +19,12 @@
public interface CertificationStorageService {
- @NonNull ListenableFuture extends CommitInfo> writeCertificates(AddKeystoreCertificateInput input);
+ @NonNull ListenableFuture extends CommitInfo> writeCertificates(AddKeystoreCertificateInput input)
+ throws GeneralSecurityException;
@NonNull ListenableFuture extends CommitInfo> removeCertificates(RemoveKeystoreCertificateInput input);
@NonNull ListenableFuture> readCertificate(String keystoreId);
- String decrypt(String data);
+ String decrypt(String data) throws GeneralSecurityException;
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/impl/SchemaContextHolderImpl.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/impl/SchemaContextHolderImpl.java
index 03784114d7..93ecf8f3c3 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/impl/SchemaContextHolderImpl.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/impl/SchemaContextHolderImpl.java
@@ -9,16 +9,13 @@
package io.lighty.gnmi.southbound.schema.impl;
import com.google.common.collect.Sets;
-import com.google.common.io.ByteSource;
+import com.google.common.io.CharSource;
import io.lighty.gnmi.southbound.capabilities.GnmiDeviceCapability;
import io.lighty.gnmi.southbound.schema.SchemaConstants;
import io.lighty.gnmi.southbound.schema.SchemaContextHolder;
import io.lighty.gnmi.southbound.schema.yangstore.service.YangDataStoreService;
import io.lighty.gnmi.southbound.timeout.TimeoutUtils;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -31,14 +28,13 @@
import java.util.concurrent.TimeoutException;
import javax.annotation.Nullable;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331.gnmi.yang.models.GnmiYangModel;
-import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.common.UnresolvedQName;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.ModuleImport;
-import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.api.source.SourceDependency;
+import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.source.DelegatedYangTextSource;
+import org.opendaylight.yangtools.yang.model.spi.source.SourceInfo;
import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException;
-import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangModelDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangIRSourceInfoExtractor;
import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
@@ -79,13 +75,13 @@ private Set prepareModelsForSchema(
// Read models reported in capabilities
fullModelSet = readCapabilities(baseCaps, processedModuleNames, schemaException);
// Get dependencies of models reported in capabilities
- Set dependencyInfos = getDependenciesOfModels(fullModelSet, schemaException);
+ Set dependencyInfos = getDependenciesOfModels(fullModelSet, schemaException);
boolean nonComplete = true;
while (nonComplete) {
// Read dependency models
Set dependencyModels = new HashSet<>();
- for (YangModelDependencyInfo dependencyInfo : dependencyInfos) {
+ for (SourceInfo dependencyInfo : dependencyInfos) {
final Set gnmiYangModels =
readDependencyModels(dependencyInfo, processedModuleNames, schemaException);
dependencyModels.addAll(gnmiYangModels);
@@ -148,19 +144,19 @@ private Optional tryToReadModel(final GnmiDeviceCapability capabi
gnmiYangModel.getVersion().getValue()));
}
} else {
- readImport = yangDataStoreService.readYangModel(capability.getName())
+ readImport = yangDataStoreService.readYangModel(capability.toString())
.get(TimeoutUtils.DATASTORE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
}
return readImport;
}
- private Set getDependenciesOfModels(final Set toCheck,
+ private Set getDependenciesOfModels(final Set toCheck,
final SchemaException schemaException) {
- Set dependencies = new HashSet<>();
+ Set dependencies = new HashSet<>();
for (GnmiYangModel model : toCheck) {
try {
- final YangModelDependencyInfo dependencyInfo = YangModelDependencyInfo.forYangText(
+ final SourceInfo dependencyInfo = YangIRSourceInfoExtractor.forYangText(
makeTextSchemaSource(model));
dependencies.add(dependencyInfo);
} catch (IOException | YangSyntaxErrorException e) {
@@ -170,23 +166,37 @@ private Set getDependenciesOfModels(final Set readDependencyModels(final YangModelDependencyInfo dependencyInfo,
+ private Set readDependencyModels(final SourceInfo dependencyInfo,
final Set processedModuleNames,
final SchemaException schemaException)
throws InterruptedException, ExecutionException, TimeoutException {
Set models = new HashSet<>();
- for (ModuleImport moduleImport : dependencyInfo.getDependencies()) {
- if (!processedModuleNames.contains(moduleImport.getModuleName().getLocalName())) {
+ for (SourceDependency.Include moduleImport : dependencyInfo.includes()) {
+ if (!processedModuleNames.contains(moduleImport.name().getLocalName())) {
final GnmiDeviceCapability importedCapability = new GnmiDeviceCapability(
- moduleImport.getModuleName().getLocalName(), null,
- moduleImport.getRevision().orElse(null));
+ moduleImport.name().getLocalName(), null,
+ moduleImport.revision());
final Optional gnmiYangModel = tryToReadModel(importedCapability);
if (gnmiYangModel.isPresent()) {
models.add(gnmiYangModel.get());
} else {
schemaException.addMissingModel(importedCapability);
}
- processedModuleNames.add(moduleImport.getModuleName().getLocalName());
+ processedModuleNames.add(moduleImport.name().getLocalName());
+ }
+ }
+ for (SourceDependency.Import moduleImport : dependencyInfo.imports()) {
+ if (!processedModuleNames.contains(moduleImport.name().getLocalName())) {
+ final GnmiDeviceCapability importedCapability = new GnmiDeviceCapability(
+ moduleImport.name().getLocalName(), null,
+ moduleImport.revision());
+ final Optional gnmiYangModel = tryToReadModel(importedCapability);
+ if (gnmiYangModel.isPresent()) {
+ models.add(gnmiYangModel.get());
+ } else {
+ schemaException.addMissingModel(importedCapability);
+ }
+ processedModuleNames.add(moduleImport.name().getLocalName());
}
}
return models;
@@ -228,26 +238,14 @@ public EffectiveModelContext getSchemaContext(final List c
throw schemaException;
}
- private YangTextSchemaSource makeTextSchemaSource(final GnmiYangModel model) {
- if (model.getVersion().getValue().matches(SchemaConstants.REVISION_REGEX)) {
- return YangTextSchemaSource.delegateForByteSource(
- new SourceIdentifier(UnresolvedQName.Unqualified.of(model.getName()),
- Revision.of(model.getVersion().getValue())), bodyByteSource(model.getBody()),
- StandardCharsets.UTF_8);
- } else {
- return YangTextSchemaSource.delegateForByteSource(new SourceIdentifier(model.getName()),
- bodyByteSource(model.getBody()), StandardCharsets.UTF_8);
- }
+ private DelegatedYangTextSource makeTextSchemaSource(final GnmiYangModel model) {
+ return new DelegatedYangTextSource(
+ new SourceIdentifier(model.getName()), bodyCharSource(model.getBody()));
}
- private ByteSource bodyByteSource(final String yangBody) {
- return new ByteSource() {
- @Override
- public InputStream openStream() {
- return new ByteArrayInputStream(yangBody.getBytes(StandardCharsets.UTF_8));
- }
- };
+ private CharSource bodyCharSource(final String yangBody) {
+ return CharSource.wrap(yangBody);
}
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByClassPathYangLoaderService.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByClassPathYangLoaderService.java
index 0c8ced331c..af50827de9 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByClassPathYangLoaderService.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByClassPathYangLoaderService.java
@@ -16,7 +16,6 @@
import io.lighty.gnmi.southbound.timeout.TimeoutUtils;
import java.io.IOException;
import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -25,7 +24,8 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.source.DelegatedYangTextSource;
import org.opendaylight.yangtools.yang.parser.api.YangParser;
import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException;
import org.opendaylight.yangtools.yang.parser.impl.DefaultYangParserFactory;
@@ -54,10 +54,10 @@ public ByClassPathYangLoaderService(final Set yangModulesInfo) {
public List load(final YangDataStoreService storeService) throws YangLoadException {
final List loadedModels = new ArrayList<>();
for (YangModuleInfo yangModuleInfo : this.yangModulesInfo) {
- final YangTextSchemaSource yangTextSchemaSource = YangTextSchemaSource.delegateForByteSource(
- YangTextSchemaSource.identifierFromFilename(
+ final DelegatedYangTextSource yangTextSchemaSource = new DelegatedYangTextSource(
+ SourceIdentifier.ofYangFileName(
yangModuleInfo.getName().getLocalName() + ".yang"),
- yangModuleInfo.getYangTextByteSource(), StandardCharsets.UTF_8);
+ yangModuleInfo.getYangTextCharSource());
try (InputStream yangTextStream = yangModuleInfo.openYangTextStream()) {
// This validates the yang
this.yangParser.addSource(yangTextSchemaSource);
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByPathYangLoaderService.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByPathYangLoaderService.java
index 98d73c6585..a731df0502 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByPathYangLoaderService.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/impl/ByPathYangLoaderService.java
@@ -28,7 +28,8 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.opendaylight.yangtools.yang.common.YangConstants;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
+import org.opendaylight.yangtools.yang.model.spi.source.FileYangTextSource;
import org.opendaylight.yangtools.yang.parser.api.YangParser;
import org.opendaylight.yangtools.yang.parser.api.YangParserException;
import org.opendaylight.yangtools.yang.parser.impl.DefaultYangParserFactory;
@@ -68,7 +69,7 @@ public List load(final YangDataStoreService storeService)
for (Path path : paths) {
try (InputStream bodyInputStream = Files.newInputStream(path)) {
- final YangTextSchemaSource yangTextSchemaSource = YangTextSchemaSource.forPath(path);
+ final YangTextSource yangTextSchemaSource = new FileYangTextSource(path);
// This validates the yang
this.yangParser.addSource(yangTextSchemaSource);
final YangLoadModelUtil yangLoadModelUtil = new YangLoadModelUtil(yangTextSchemaSource,
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/util/YangLoadModelUtil.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/util/YangLoadModelUtil.java
index ac1369cb2d..b358a3e8ff 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/util/YangLoadModelUtil.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/loader/util/YangLoadModelUtil.java
@@ -11,6 +11,9 @@
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Comparator;
import java.util.Optional;
import org.apache.commons.io.IOUtils;
import org.opendaylight.yangtools.concepts.SemVer;
@@ -18,10 +21,10 @@
import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.ir.IRArgument.Single;
import org.opendaylight.yangtools.yang.ir.IRStatement;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException;
import org.opendaylight.yangtools.yang.parser.rfc7950.repo.TextToIRTransformer;
-import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangModelDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangIRSourceInfoExtractor;
public class YangLoadModelUtil {
@@ -32,19 +35,21 @@ public class YangLoadModelUtil {
private final String modelBody;
private final String modelName;
- public YangLoadModelUtil(final YangTextSchemaSource yangTextSchemaSource, final InputStream yangTextStream)
+ public YangLoadModelUtil(final YangTextSource yangTextSchemaSource, final InputStream yangTextStream)
throws YangSyntaxErrorException, IOException {
final var irSchemaSource = TextToIRTransformer.transformText(yangTextSchemaSource);
- final var semanticVersion = getSemVer(irSchemaSource.getRootStatement());
+ final var semanticVersion = getSemVer(irSchemaSource.statement());
- final YangModelDependencyInfo yangModelDependencyInfo =
- YangModelDependencyInfo.forYangText(yangTextSchemaSource);
+ final var yangModelDependencyInfo =
+ YangIRSourceInfoExtractor.forYangText(yangTextSchemaSource);
// If revision is present in fileName, prefer that
- this.modelRevision = Optional.ofNullable(yangTextSchemaSource.getIdentifier().revision())
- .or(yangModelDependencyInfo::getRevision).orElse(null);
+ this.modelRevision = yangModelDependencyInfo.revisions().stream()
+ .max(Comparator.comparing(revision -> LocalDate.parse(revision.toString(),
+ DateTimeFormatter.ofPattern("yyyy-MM-dd"))))
+ .orElse(null);
this.modelSemVer = semanticVersion.orElse(null);
this.modelBody = IOUtils.toString(yangTextStream, StandardCharsets.UTF_8);
- this.modelName = yangModelDependencyInfo.getName();
+ this.modelName = yangModelDependencyInfo.sourceId().name().getLocalName();
}
public String getVersionToStore() {
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/yangstore/rpc/YangStorageServiceRpcImpl.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/yangstore/rpc/YangStorageServiceRpcImpl.java
index a802863364..22b7106e77 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/yangstore/rpc/YangStorageServiceRpcImpl.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/main/java/io/lighty/gnmi/southbound/schema/yangstore/rpc/YangStorageServiceRpcImpl.java
@@ -8,6 +8,8 @@
package io.lighty.gnmi.southbound.schema.yangstore.rpc;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@@ -16,17 +18,18 @@
import io.lighty.gnmi.southbound.schema.yangstore.service.YangDataStoreService;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.opendaylight.mdsal.common.api.CommitInfo;
-import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331.GnmiYangStorageService;
+import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331.UploadYangModel;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331.UploadYangModelInput;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331.UploadYangModelOutput;
import org.opendaylight.yang.gen.v1.urn.lighty.gnmi.yang.storage.rev210331.UploadYangModelOutputBuilder;
+import org.opendaylight.yangtools.yang.binding.Rpc;
import org.opendaylight.yangtools.yang.common.ErrorType;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class YangStorageServiceRpcImpl implements GnmiYangStorageService {
+public class YangStorageServiceRpcImpl {
private static final Logger LOG = LoggerFactory.getLogger(YangStorageServiceRpcImpl.class);
private final YangDataStoreService yangDataStoreService;
@@ -35,8 +38,7 @@ public YangStorageServiceRpcImpl(final YangDataStoreService yangDataStoreService
this.yangDataStoreService = yangDataStoreService;
}
- @Override
- public ListenableFuture> uploadYangModel(final UploadYangModelInput input) {
+ private ListenableFuture> uploadYangModel(final UploadYangModelInput input) {
final ListenableFuture extends CommitInfo> uploadResultFuture =
yangDataStoreService
.addYangModel(input.getName(), input.getVersion().getValue(), input.getBody());
@@ -67,4 +69,9 @@ public void onFailure(Throwable throwable) {
return rpcResultFuture;
}
+ public ClassToInstanceMap> getRpcClassToInstanceMap() {
+ return ImmutableClassToInstanceMap.>builder()
+ .put(UploadYangModel.class, this::uploadYangModel)
+ .build();
+ }
}
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/device/KeystoreGnmiSecurityTest.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/device/KeystoreGnmiSecurityTest.java
index 2db1a8216a..b5f99d2b74 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/device/KeystoreGnmiSecurityTest.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/device/KeystoreGnmiSecurityTest.java
@@ -33,6 +33,7 @@
import io.lighty.modules.gnmi.connector.session.api.SessionProviderImpl;
import java.io.IOException;
import java.net.URISyntaxException;
+import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.InvalidAlgorithmParameterException;
@@ -52,6 +53,7 @@
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -416,19 +418,20 @@ private static Keystore getKeystore1WithPassResponse() {
return new KeystoreBuilder()
.setCaCertificate(getResource(CA_CRT))
.setClientCert(getResource(CLIENT_ENCRYPTED_CRT))
- .setClientKey(AAA_ENCRYPTION_SERVICE.encrypt(getResource(CLIENT_ENCRYPTED_KEY)))
- .setPassphrase(AAA_ENCRYPTION_SERVICE.encrypt(PASSPHRASE))
+ .setClientKey(DatatypeConverter.printBase64Binary(
+ (AAA_ENCRYPTION_SERVICE.encrypt(getResource(CLIENT_ENCRYPTED_KEY).getBytes(
+ Charset.defaultCharset())))))
+ .setPassphrase(
+ DatatypeConverter.printBase64Binary(AAA_ENCRYPTION_SERVICE.encrypt(PASSPHRASE.getBytes())))
.setKeystoreId(KEYSTORE_PASSPHRASE_ID_1)
.build();
}
private static Keystore getKeystore2Response() {
- return new KeystoreBuilder()
- .setCaCertificate(getResource(CA_CRT))
- .setClientCert(getResource(CLIENT_CRT))
- .setClientKey(AAA_ENCRYPTION_SERVICE.encrypt(getResource(CLIENT_KEY)))
- .setKeystoreId(KEYSTORE_ID_2)
- .build();
+ return new KeystoreBuilder().setCaCertificate(getResource(CA_CRT)).setClientCert(getResource(CLIENT_CRT))
+ .setClientKey(DatatypeConverter.printBase64Binary(
+ (AAA_ENCRYPTION_SERVICE.encrypt((getResource(CLIENT_KEY).getBytes())))))
+ .setKeystoreId(KEYSTORE_ID_2).build();
}
private static FluentFuture> getReadResult(T data) {
diff --git a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/mountpoint/codecs/testcases/CodecTestCasesBase.java b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/mountpoint/codecs/testcases/CodecTestCasesBase.java
index d627bcca6b..dfd4bfbfc8 100644
--- a/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/mountpoint/codecs/testcases/CodecTestCasesBase.java
+++ b/lighty-modules/lighty-gnmi/lighty-gnmi-sb/src/test/java/io/lighty/gnmi/southbound/mountpoint/codecs/testcases/CodecTestCasesBase.java
@@ -27,10 +27,10 @@
import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.impl.ImmutableContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.data.spi.node.impl.ImmutableMapEntryNodeBuilder;
+import org.opendaylight.yangtools.yang.data.spi.node.impl.ImmutableSystemMapNodeBuilder;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
/**
@@ -91,7 +91,7 @@ protected ImmutablePair listEntryCase(fi
.node(getMapEntryIdentifierOfNodeInModule(OC_INTERFACES_ID, "interface", "name", "eth3"));
return ImmutablePair.of(identifier, wrapInMapNode
- ? ImmutableMapNodeBuilder.create()
+ ? new ImmutableSystemMapNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_INTERFACES_ID, "interface"))
.withValue(List.of(interfaceEth3Node())).build()
: interfaceEth3Node());
@@ -237,7 +237,7 @@ public QNameModule getQNameOfModule(final String moduleName) {
}
private NormalizedNode makeRoot() {
- final NormalizedNode normalizedNode = ImmutableContainerNodeBuilder.create()
+ final NormalizedNode normalizedNode = new ImmutableContainerNodeBuilder()
.withNodeIdentifier(YangInstanceIdentifier.NodeIdentifier.create(SchemaContext.NAME))
.withChild((DataContainerChild) makeInterfaces())
.withChild((DataContainerChild) makeComponents()).build();
@@ -245,15 +245,15 @@ private NormalizedNode makeRoot() {
}
private NormalizedNode makeComponents() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_PLATFORM_ID, "components"))
- .withChild(ImmutableMapNodeBuilder.create()
+ .withChild(new ImmutableSystemMapNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_PLATFORM_ID, "component"))
- .withChild(ImmutableMapEntryNodeBuilder.create()
+ .withChild(new ImmutableMapEntryNodeBuilder()
.withNodeIdentifier(getMapEntryIdentifierOfNodeInModule(OC_PLATFORM_ID, "component",
"name", "admin"))
.withChild(makeLeafNode(OC_PLATFORM_ID,"name","admin"))
- .withChild(ImmutableContainerNodeBuilder.create()
+ .withChild(new ImmutableContainerNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_PLATFORM_ID, "config"))
.withChild(makeLeafNode(OC_PLATFORM_ID,"name","admin"))
.build())
@@ -263,27 +263,27 @@ private NormalizedNode makeComponents() {
}
public NormalizedNode makeInterfaces() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_INTERFACES_ID, "interfaces"))
- .withChild(ImmutableMapNodeBuilder.create()
+ .withChild(new ImmutableSystemMapNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_INTERFACES_ID, "interface"))
.withChild(interfaceEth3Node())
- .withChild(ImmutableMapEntryNodeBuilder.create()
+ .withChild(new ImmutableMapEntryNodeBuilder()
.withNodeIdentifier(getMapEntryIdentifierOfNodeInModule(OC_INTERFACES_ID, "interface",
"name", "br0"))
.withChild(makeLeafNode(OC_INTERFACES_ID, "name", "br0"))
.withChild(interfaceConfigNode())
- .withChild(ImmutableContainerNodeBuilder.create()
+ .withChild(new ImmutableContainerNodeBuilder()
.withNodeIdentifier(
getNodeIdentifierOfNodeInModule(OC_IF_ETHERNET_ID, "ethernet"))
.withChild(ethConfigNode())
.withChild(switchedVlanNode())
.build())
- .withChild(ImmutableContainerNodeBuilder.create()
+ .withChild(new ImmutableContainerNodeBuilder()
.withNodeIdentifier(YangInstanceIdentifier.NodeIdentifier.create(
QName.create(getQNameOfModule(OC_IF_AGGREGATE_ID),
"aggregation")))
- .withChild(ImmutableContainerNodeBuilder.create()
+ .withChild(new ImmutableContainerNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(
OC_IF_AGGREGATE_ID, "config"))
.withValue(List.of(
@@ -299,7 +299,7 @@ public NormalizedNode makeInterfaces() {
}
private ContainerNode ethConfigNode() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(
getNodeIdentifierOfNodeInModule(OC_IF_ETHERNET_ID, "config"))
.withValue(List.of(
@@ -313,7 +313,7 @@ private ContainerNode ethConfigNode() {
}
public MapEntryNode interfaceEth3Node() {
- return ImmutableMapEntryNodeBuilder.create()
+ return new ImmutableMapEntryNodeBuilder()
.withNodeIdentifier(
getMapEntryIdentifierOfNodeInModule(OC_INTERFACES_ID, "interface", "name", "eth3"))
.withChild(interfaceConfigNode())
@@ -322,7 +322,7 @@ public MapEntryNode interfaceEth3Node() {
}
public ContainerNode interfaceConfigNode() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_INTERFACES_ID, "config"))
.withValue(List.of(
makeLeafNode(OC_INTERFACES_ID, "name", "admin"),
@@ -334,9 +334,9 @@ public ContainerNode interfaceConfigNode() {
}
public ContainerNode switchedVlanNode() {
- return ImmutableContainerNodeBuilder.create()
+ return new ImmutableContainerNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_VLAN_ID, "switched-vlan"))
- .withChild(ImmutableContainerNodeBuilder.create()
+ .withChild(new ImmutableContainerNodeBuilder()
.withNodeIdentifier(getNodeIdentifierOfNodeInModule(OC_VLAN_ID, "config"))
.withValue(List.of(
makeLeafNode(OC_VLAN_ID, "native-vlan", Uint16.valueOf(37)),
@@ -347,16 +347,14 @@ public ContainerNode switchedVlanNode() {
}
public LeafNode