Robert Varga [Fri, 3 Sep 2021 07:40:13 +0000 (09:40 +0200)]
Use Stream.{of,concat}
Simplify stream handling by using utility methods more efficiently.
Change-Id: Iba3eaff410973f6e91a2b3933a7438fd02e4adb2
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 23 Aug 2021 23:35:44 +0000 (01:35 +0200)]
Move SendErrorExceptionUtil
SendErrorExceptionUtil is only used in netconf-impl, move it there
along with its tests. This improves our ability to reason about its
interactions.
Change-Id: I4e93c0d3fcbe87a6689f55d592a085d7aa6b8be3
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 25 Aug 2021 15:06:50 +0000 (17:06 +0200)]
Cleanup NetconfCapabilityMonitoringServiceTest
Use Set.{copyOf,of} and delete some dead code.
Change-Id: Ic75d3b64c4bdde0f1307836b9c2ea26bf1bcef74
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 27 Aug 2021 10:11:45 +0000 (12:11 +0200)]
Fix binding-parent mdsal reference
We are pointing to 8.0.2, which elicits a rather stern warning. Fix the
declaration to point to 8.0.4.
Change-Id: I3760225d1c4d0d43863f838ce9fec9586d48a4bd
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 25 Aug 2021 15:44:37 +0000 (17:44 +0200)]
Bump versions to 2.0.4-SNAPSHOT
This starts the next development iteration.
Change-Id: Ie3d13f666e18d888271d060ac8b39101a7bbc7b1
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 23 Aug 2021 08:53:08 +0000 (10:53 +0200)]
Bump MRI upstreams
Adopt:
- odlparent-9.0.5
- yangtools-7.0.7
- mdsal-8.0.4
- controller-4.0.2
- infrautils-2.0.5
- aaa-0.14.2
Change-Id: I525bcbd1c137cfe00c98b0d31c23de92035a98de
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 23 Aug 2021 14:02:10 +0000 (16:02 +0200)]
Fix revisionless capabilities
NetconfCapabilityMonitoringService seems to indicate it cannot work with
modules without a revision due to modeling restrictions. This is not
accurate, as we should be using empty string to represent an absent
revision.
JIRA: NETCONF-808
Change-Id: I2dbcdc0cc0bb7e6560a46986c8c06388b8cc23d6
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 23 Aug 2021 23:28:01 +0000 (01:28 +0200)]
Improve DeserializerExceptionHandler
We are getting a deprecation warning, as there exceptionCaught() really
makes sense only on inbound side. This happens to be what we actually
are doing with DeserializerExceptionHandler anyway, so just pick up
ChannelInboundHandlerAdapter and use that as the superclass.
Change-Id: Ic661e4e85f4442a395c820463abf00e71c52543e
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Tue, 17 Aug 2021 19:54:31 +0000 (21:54 +0200)]
Remove exceptions from utility constructors
The only way to test these is through reflections and they are just dead
weight. Use a simple comment instead.
Change-Id: I526f56b2abf207a0734327a9feb80f34bbd6f2db
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Sat, 14 Aug 2021 12:26:57 +0000 (14:26 +0200)]
Reduce NETCONF device disconnect warnings
Document java.io.EOFException as the natural end-of-stream cause and
handle that case with less alarm as other causes.
JIRA: NETCONF-805
Change-Id: If3b07125434e2a5faec90b1cd0144dc3d9f6c818
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Sat, 14 Aug 2021 00:49:18 +0000 (02:49 +0200)]
Hide StringModuleInstanceIdentifierCodec
This is a package-internal utility class, hide it from outside view and
optimize its dispatch. This entire class is quite dubious and needs to
be re-evaluated in terms of what it really provides -- it is not even
covered by UT.
Change-Id: I62a974f82b0ad5db6e7df7c4b09a1379ff23d7c6
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Sat, 14 Aug 2021 00:33:45 +0000 (02:33 +0200)]
Reduce use of StringModuleInstanceIdentifierCodec
JsonPatchBodyReader internally does not really need the entire codec,
just the underlying DataSchemaContextTree.
Change-Id: I6c2bca6609e10eb9f801e1e5ac1aab439eed3b8d
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 13 Aug 2021 20:28:24 +0000 (22:28 +0200)]
Fix patch target parsing
Our tests were not updated for RFC8040, hence they are written with
weird codecs which utterly do not match RFC8072 definition of
yang-patch.
The problem is that patch edit's target is interpreted in terms of an
extension to the URL, i.e. it does NOT follow JSON nor XML parsing
rules, nor is it anything in-between -- we must use ParserIdentifier's
facilities.
Update the parsers and the test suites, ditching a lot of complexity
in process of doing so.
JIRA: NETCONF-804
Change-Id: If9d9c77e0e2397ffdcb8e8c0f0fef0b9b02bac8b
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 13 Aug 2021 20:14:41 +0000 (22:14 +0200)]
Fix XmlPatchBodyReader revision handling
There is a nullness bug around the conversions through string and
calling Revision.of(). Our current interfaces allow us to do better,
with fewer objects.
Change-Id: I68163b7b8766e6063a27d280bae9c049a675ac76
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 13 Aug 2021 19:59:42 +0000 (21:59 +0200)]
Lower codec instantiation scope
Do not instantiate codec until we really need it. This also
short-circuits some of the other setup code.
Change-Id: I1b38951699395f18fe961e3c752a8bd8dde5eac5
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 13 Aug 2021 19:25:23 +0000 (21:25 +0200)]
Cleanup StringModuleInstanceIdentifierCodec a bit
Compact the implementation a bit by reusing code paths. Also we do not
really allow null defaultPrefix, but check for it being empty.
Make this.defaultPrefix nullable, which allows us to simplify the check
in moduleForPrefix() down to a simple null check.
JIRA: NETCONF-804
Change-Id: Ifa01017613761466a32e371d56b0bb6521145115
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 13 Aug 2021 19:33:58 +0000 (21:33 +0200)]
Cleanup ObjectCodec a bit
Use a return expression and do not use the useless this.obviously
field references.
Change-Id: I2144d8e855ff56269118df505c43741bb292e282
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 13 Aug 2021 17:37:29 +0000 (19:37 +0200)]
Move JsonPatchBodyReader's StringBuilder
readEditDefinition() does not care how the resulting string is being
created -- move StringBuilder allocation down to readValueNode() and let
it be a contract between that method and readValueObject().
Change-Id: Ic02ffea2acbb9686066a34aaca9cec2f914d2700
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 13 Aug 2021 14:00:38 +0000 (16:00 +0200)]
Report bad document on empty body
If we do not get a PatchContext report a 400 bad request instead
of 500 server failure.
JIRA: NETCONF-803
Change-Id: Ic314273cfa6074da16cf0b9182c94641358ccf38
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 11 Aug 2021 13:41:54 +0000 (15:41 +0200)]
Report data-missing when an invalid stream is requested
We should not be throwing a random IAE, but rather use a
RestconfDocumentedException to report the correct status.
JIRA: NETCONF-802
Change-Id: I4ac0a24f0acb059f08d14ab0abd4021e91b0d07b
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 11 Aug 2021 09:38:04 +0000 (11:38 +0200)]
Fix Server-Sent Events routing
I2534a6418dc0ca1f1d6aad3d41f874781ea1930d dropped a @Path specification,
which results in a path mismatch. Restore the specification.
JIRA: NETCONF-801
Change-Id: I88a9f8ce258b21c8f803cb05609822e1e4babba2
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 9 Aug 2021 13:08:01 +0000 (15:08 +0200)]
Use well-known Status enumeration
Response.status() can be used with an int, but that ends up walking all
Status.values() in an attempt to find the corresponding constant. While
we end up hitting the first element, use Status.OK explicitly to speed
things up a bit.
Change-Id: I7c72a88602c95ec4c7274369a9e5c613c3ce3b9b
Signed-off-by: Robert Varga <[email protected]>
PeterSuna [Tue, 27 Jul 2021 12:47:11 +0000 (14:47 +0200)]
Do not report failure on empty action output
When an action invocation results in an empty container
we should be emitting a normal 204 response, not go through
the error path -- as per RFC8040 section 6.3.
JIRA: NETCONF-799
Change-Id: Ie8f3d098fc65828998b088bfed5ca89e2f438828
Signed-off-by: PeterSuna <[email protected]>
Signed-off-by: Ivan Hrasko <[email protected]>
Signed-off-by: Robert Varga <[email protected]>
Tomas Cere [Wed, 4 Aug 2021 11:15:26 +0000 (13:15 +0200)]
Add infrautils features to netconf-karaf
Needed as well for csit, make sure to pull it in here
so we dont have to modify the features repo in jjb scripts.
Change-Id: I76b51a7fc2f1bd70f6eadee9fc045f78087f911c
Signed-off-by: Tomas Cere <[email protected]>
Tomas Cere [Wed, 4 Aug 2021 08:32:22 +0000 (10:32 +0200)]
Pull in controller-testing features in netconf karaf
Looks like we need this for csit.
Change-Id: I29d6de3943081d24e7a2e79280587fb89efe5b15
Signed-off-by: Tomas Cere <[email protected]>
Robert Varga [Mon, 2 Aug 2021 13:40:13 +0000 (15:40 +0200)]
Bump versions to 2.0.3-SNAPSHOT
This starts the next development iteration.
Change-Id: I3b46e1c7dfe80f4d86f552a14aae356fb60ceb59
Signed-off-by: Robert Varga <[email protected]>
Tomas Cere [Wed, 28 Jul 2021 11:29:40 +0000 (13:29 +0200)]
Publish netconf-karaf artifact
We want to eventually start running csit on individual distros
so make sure we have an artifact published.
Change-Id: I46aba477df05b175f0ad2e1df313ae37f51e59c2
Signed-off-by: Tomas Cere <[email protected]>
Ivan Hrasko [Thu, 29 Jul 2021 08:11:12 +0000 (10:11 +0200)]
Use RFC 8040 paths by testtool
Switch to use RFC 8040 implementation paths
for device registration in testool.
JIRA: NETCONF-796
Signed-off-by: Ivan Hrasko <[email protected]>
Change-Id: Id86fc5e7d6f0339f78e3dbc0c20aa45457bec799
Illia [Mon, 22 Feb 2021 11:39:30 +0000 (13:39 +0200)]
Fix testtool device registration
The NETCONF testtool functionality for automatic bulk
registration of devices was broken for some time.
We have decided to not only fix the problem but also
refactor testtool the following way:
- Create request bodies using NormalizedNodes
instead of using config templates.
- Register devices with PATCH instead of POST
to allow merging nodes into topology and prevent
error for consequent batch requests.
JIRA: NETCONF-796
Change-Id: Ifd7c74e9b07bb56b84e6a1ffea0bf2809b85246c
Signed-off-by: Illia <[email protected]>
Signed-off-by: Ivan Hrasko <[email protected]>
Dominik Vrbovsky [Fri, 30 Jul 2021 09:25:53 +0000 (11:25 +0200)]
Modernize test suite
- Remove try catch blocks and use assertThrows method instead
- Use assertEquals method where possible
Change-Id: I5790d8197187e2130b52920b8659acd56cc98e57
Signed-off-by: Dominik Vrbovsky <[email protected]>
Robert Varga [Mon, 19 Jul 2021 10:00:58 +0000 (12:00 +0200)]
Use Java 11 HttpClient
Reduce dependencies by using JRE-provided HTTP client.
JIRA: NETCONF-751
Change-Id: I49a51306a042ed534bafd7174633e300f00ce305
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 26 Jul 2021 20:08:47 +0000 (22:08 +0200)]
Remove DocumentedException.ErrorTag
We have an openly-extensible ErrorTag concept in yang-common. Remove
the hard-coded enum we have in DocumentedException.
JIRA: NETCONF-793
Change-Id: Ic4e1bebff549c5fd09a78995b8e76e37905241ef
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 26 Jul 2021 14:39:56 +0000 (16:39 +0200)]
Remove RestconfError.ErrorType
yang-common is providing us with a replacement, switch to using it,
which allows us to ditch some amount of legacy code.
JIRA: NETCONF-793
Change-Id: Id71b5f7a992456ff17b53795e54e7a8b49120586
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 26 Jul 2021 14:06:43 +0000 (16:06 +0200)]
Remove DocumentedException.ErrorType
Use ErrorType from yang-common instead of defining our own. This allows
us to reuse some mapping code as well.
JIRA: NETCONF-793
Change-Id: I00c3344f15f5e052784e9f439a025678b093655e
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 26 Jul 2021 13:22:59 +0000 (15:22 +0200)]
Remove DocumentedException.ErrorSeverity
Use ErrorServerity from yang-common, eliminating some amount of
duplication. This also allows us to take advantage of bidirectional
mapping to (now legacy) RpcError.ErrorSeverity.
Also modernize test suite to perform correct asserts.
JIRA: NETCONF-793
Change-Id: Ie7e592233e6a948a9a991e4309315e1fb857b8d2
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 26 Jul 2021 13:09:52 +0000 (15:09 +0200)]
Cleanup DocumentedException and subclasses
Do not qualify Error{Type,Tag,Severity} and use Map.of() instead
of Collections.emptyMap().
Change-Id: I9eb201a2c02f8ac4370341a98fdf94a1f7a6425e
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 18 Mar 2021 09:41:51 +0000 (10:41 +0100)]
Remove Jakub Toth from committers
Jakub has been mostly inactive in this project since 18.8.2020. He
has asked to step down now.
Change-Id: I8ee4705ee09bd6666b48bbd4dc10a9936b445cc9
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Sun, 25 Jul 2021 11:02:17 +0000 (13:02 +0200)]
Bump upstream versions
Adopt mdsal-8.0.1, controller-4.0.1, aaa-0.14.1. Also fix unit test
assertion now that yangtools reports the right layer.
Change-Id: If8c205094a55d8c956d575af8a8d7cec5eb2aadf
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Tue, 20 Jul 2021 11:09:07 +0000 (13:09 +0200)]
Log full exception when we are missing errors
Our current logging does not identify the source of the offending
exception. Make sure we log the entire input exception, so that
offenders may be fixed up.
JIRA: NETCONF-789
Change-Id: I30a24a615ce221a838e1ad95f6b11263e2d6f8f5
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 19 Jul 2021 10:49:55 +0000 (12:49 +0200)]
Bump versions to 2.0.2-SNAPSHOT
This starts the next development iteration.
Change-Id: Icfc93a2326c62319d8e82008141c2b7c21409353
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Mon, 19 Jul 2021 08:59:50 +0000 (10:59 +0200)]
Bump janino to 3.1.4
https://janino-compiler.github.io/janino/changelog.html
Change-Id: I40ce79d4001a10af6bedfaf8ff5657036d892a88
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 16 Jul 2021 16:12:35 +0000 (18:12 +0200)]
Convert netconf-client to OSGi DS
This is a rather straighforward migration, but we also ditch the
now-unneeded Autocloseable from AbstractNetconfDispatcher.
JIRA: NETCONF-791
Change-Id: I4737ef30e0ff3b12bbaedcf8940edf80d8eb7d7a
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 16 Jul 2021 17:21:40 +0000 (19:21 +0200)]
Ditch blueprint-maven-plugin
We have two artifacts using a combination of generated and hand-written
blueprint containers. This makes reasoning about the actual wiring
rather hard. Inline the generated XML into the hand-written one, so that
we can untangle it more easily.
JIRA: NETCONF-749
Change-Id: I380600215a0fadf438b9a44e6ea4465f15d63fbf
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 16 Jul 2021 16:56:35 +0000 (18:56 +0200)]
Cleanup NetconfConsoleUtils
We have a few strange methods here, clean them up to streamline.
Change-Id: Icf0ca4661d4b62cf9e3855af99a6611d1b719869
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 16 Jul 2021 16:36:16 +0000 (18:36 +0200)]
Convert netconf-console to OSGi DS
netconf-console is a very simple component, convert it to OSGi DS.
JIRA: NETCONF-792
Change-Id: Ic92a59b52a85af67a8ed648a53cb11a083928ece
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 16 Jul 2021 12:52:14 +0000 (14:52 +0200)]
Remove old AbstractNetconfDispatcher.getReconnectingClient()
This method is not used anywhere, remove it. Also deprecate the
corresponding re-establishment policy, as it is no longer used.
Change-Id: I89b5ebf3197e8d459501b11433f3c9eaa3845281
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 14 Jul 2021 11:38:11 +0000 (13:38 +0200)]
Move Rfc8040.Restconf constants
We are using most of these constants only in export, clean them up and
move them to their sole user.
Change-Id: I493bb2baed521367ff78d6ec07ad64ee56516c32
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 14 Jul 2021 11:15:23 +0000 (13:15 +0200)]
Move mapModulesByIetfYangLibraryYang()
This method has only a single production caller, migrate it to that
class, making reducing utility overloads.
Change-Id: I2c210e93797fbe5575c524e54c6c3ad6841b950f
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Tue, 13 Jul 2021 12:48:06 +0000 (14:48 +0200)]
Migrate getDataChildByName() callers
ControllerContext missed the migration of getDataChildByName(), hence
it's nullness checks are ineffective and it is tripping over. Make sure
we use plain dataChildByName() when we can tolerate missing data.
JIRA: NETCONF-790
Change-Id: Ic3aa31c764d08c199085b750674e5f98c9165f2e
Signed-off-by: Robert Varga <[email protected]>
Kostiantyn Nosach [Wed, 17 Mar 2021 13:57:14 +0000 (15:57 +0200)]
Update tests with Akka Artery
Upstream has switched to using Artery TCP instead of classic transport.
Update test config file
netconf/netconf-topology-singleton/src/test/resources/application.conf
with new transport (artery-tcp)
JIRA: NETCONF-787
Change-Id: I70a4a5bb23f53166d8b164fced7f1311f1d7f764
Signed-off-by: Kostiantyn Nosach <[email protected]>
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Sat, 10 Jul 2021 05:18:02 +0000 (07:18 +0200)]
Single out RestconfConstants.MOUNT
This constant should be used via its PathArgument equivalent. Reduce
its use in tests and mark it for removal.
Change-Id: Ia3b75b95b236e35167ffb213c138930ed419a7f1
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 23:02:58 +0000 (01:02 +0200)]
Remove RestconfConstants.IDENTIFIER
This constant is not really useful, as it is referenced once in
production code and once in testing. Inline the definitions, as we
really want to make an explicit assertion in tests.
Change-Id: I7fd7a6e64562cb054b15011c1aad7624c47fea3d
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 22:52:24 +0000 (00:52 +0200)]
Collapse streams.{sse,websocket}
This two packages have just a few classes, collapse them to simplify
overall structure.
Change-Id: Ib3df507ac7b68e8641b933ac45c42f3bd7494437
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 15:53:48 +0000 (17:53 +0200)]
RestconfTransaction always operates on a single datastore
Previous refactors in this area have suffered from lack of actual
clarity. All legitimate users of RestconfTransaction operate on
CONFIGURATION, hence use that without allowing a possiblity to
mix&match datastore access.
Change-Id: Ief9ff8d51e12c3cd3e04e55f9cd04b2b42f81068
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 14:38:57 +0000 (16:38 +0200)]
Clean up RestconfInvokeOperationsUtil
RPC/action invocation through mount point and service is the same,
except for an additional lookup/throws. Restructure code to take
advantage of that.
JIRA: NETCONF-773
Change-Id: I68a4d75564b2f0a42070ad9f8ebd140109a6eb62
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 14:16:09 +0000 (16:16 +0200)]
Clean up listener activation
We have a two-step process in listener create/activate. Move methods
around so that the process can become properly stateful, without
giving out too much in terms of actual implementation methods.
JIRA: NETCONF-773
Change-Id: Ib9aa28a7b00e8f292a8a97a56d472ed51a9c45fd
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 12:41:24 +0000 (14:41 +0200)]
Package ietf-yang-patch
This is the model published in RFC8072, which gives us some basic
structural elements. Its value will increase once we can generate
structures for rc:yang-data.
JIRA: NETCONF-788
Change-Id: I063cea05f33cc8191db4320ee686b253b0471679
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 12:31:11 +0000 (14:31 +0200)]
Rename {Xml,Json}ToPatchBodyReader
Make sure we have consistent naming here by dropping 'To'.
JIRA: NETCONF-773
Change-Id: If1fd3cb6b07c97c7faf18b8d8324e81e9888c084
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 10:42:56 +0000 (12:42 +0200)]
Move validation methods
PutDataTransactionUtil is rather ugly in that it is used only
by a single implementation. Start disolving it by moving data validation
methods to RestconfDataServiceImpl.
JIRA: NETCONF-773
Change-Id: I365c087392fb0f593560c4dac3583622b341b037
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 10:11:35 +0000 (12:11 +0200)]
Add AbstractPatchStatusBodyWriter
We have two specializations of this writer, create a common superclass
and share common code. Also improve error handling by mapping wrapping
XMLStreamException into an IOException.
JIRA: NETCONF-773
Change-Id: I000b9c7b333f59d000dc28ce2e75ee65477da193
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 10:02:02 +0000 (12:02 +0200)]
Add AbstractNormalizedNodeBodyWriter
We have two specializations of this writer, share common code in
an abstract class. Also use more regular class naming.
JIRA: NETCONF-773
Change-Id: I8f52090de19a44a0293cb2cb07bfb9623250e34c
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 09:58:25 +0000 (11:58 +0200)]
Move AbstractNormalizedNodeBodyReader
We have only two specializations in jersey.providers package, move
the base class there.
JIRA: NETCONF-773
Change-Id: I1ae2cadff525af8089a511738989de68a3866df7
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 09:53:51 +0000 (11:53 +0200)]
Refactor source export
Add AbstractSchemaExportBodyWriter and specialize it for YIN/YANG.
Also eliminate jersey.provides.schema package, as it does not really
make sense.
JIRA: NETCONF-773
Change-Id: Ia099e927da10f451cd843ba947a79312dd35af19
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 9 Jul 2021 09:44:22 +0000 (11:44 +0200)]
Remove MessageBodyWriter.getSize() implementations
getSize() is documented legacy method which has a default implementation
and does nothing. Remove unneeded implementations.
JIRA: NETCONF-773
Change-Id: I1e1a9310f3ad78fe684de02fbaec5035bd1fcb90
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 20:18:42 +0000 (22:18 +0200)]
Remove TransactionChainHandler
This class is pure overhead and serves no purpose. Remove it to
simplify lifecycle as well as improve latencies.
JIRA: NETCONF-773
Change-Id: I0506f17d05cec910057e40742adfbb04225f4211
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 19:55:01 +0000 (21:55 +0200)]
Reduce use of TransactionChainHandler
SchemaContextHandler does not need transaction chains at this point.
When it will need them, it will manage their lifecycle on its own.
JIRA: NETCONF-773
Change-Id: I89587b9777cb1ae7aa0b0fe628e3fa4ef16e83a3
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 19:13:49 +0000 (21:13 +0200)]
Use free-standing transaction in SubscribeToStreamUtil
There is no point in juggling transaction chains here, just use
a simple free-standing transaction. Also note we do not need a
read-write transaction, so allocate a write-only transaction, which
is generally cheaper.
JIRA: NETCONF-773
Change-Id: Ib9995f664a27a2d29e91c18032d2a02cca6d768d
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 18:50:55 +0000 (20:50 +0200)]
Unwrap ListenersAdapter
We are calling Optional.get() repeatedly here, after performing
an isPresent() check. Use .orElseThrows() to ditch the Optional,
making things simpler.
Change-Id: I4242b39176bfee52d316969eb806a1fef21c2f90
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 16:57:51 +0000 (18:57 +0200)]
Remove ResolveEnumUtil
ResolveEnumUtil is a rather timid utility, which is best eliminated
by adapting its users to do something smarter. We also suffle a few
constants around to make information scoping a bit clearer.
Change-Id: I54b347e7ec24876a3e1515c57af6c2db3cec9c55
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 18:55:25 +0000 (20:55 +0200)]
Make ListenersBroker.getInstance() lockless
While this is a huge antipattern in terms of retained global state,
we do not need to bounce a global lock to access it.
Use Initialization-on-demand holder idiom to make the access completely
lockless.
Change-Id: I374737f2dc5b3b07226eb7bbffcaaf2665cc8967
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 16:59:01 +0000 (18:59 +0200)]
Fix checkArgument() use
We do not want to concat the strings here, use a proper formatting
string -- speeding things up.
Change-Id: I0585752e07a4e58abf22d3e0facc93d0623ee198
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 12:58:02 +0000 (14:58 +0200)]
Deprecate restconf.common.util.MultivaluedHashMap
This is a custom-coded class, which has a direct competitor in
javax.ws.rs.core. Deprecate it in favor of the standard class.
Change-Id: I2397c4a3b72d410a39806c1b147d9816b95eb875
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 12:44:04 +0000 (14:44 +0200)]
Improve content checking
We have neat nested ifs to check for the content value, which makes
it rather hard to understand what is going on. Use a simple switch
expression to validate the values instead.
Change-Id: I7799fafd45ec393541a5f7f2ede92d8e6a178375
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 12:36:52 +0000 (14:36 +0200)]
Fix field count check
This is a simple copy&paste error which slipped past review, fix it up.
Change-Id: Ia381754abc7ec9d3adf53066ab2f8910e5554123
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 12:31:27 +0000 (14:31 +0200)]
Speed up checkParametersTypes()
Our checking logic here is rather sub-optimal, performing multiple
operations. Improve situation by using a fixed Set along with its
containsAll() method. The actual delta is computed only if we determine
there is something amiss.
Change-Id: If85e1049a34804444db6ad9849147b51b333b76f
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 8 Jul 2021 11:58:12 +0000 (13:58 +0200)]
Speed up parseUriParameters()
Pre-construct our default values and access query parameters only once.
Change-Id: Ice551e9c441e86711d7705bf40fe0f2670c0440a
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Sun, 4 Jul 2021 08:28:37 +0000 (10:28 +0200)]
Bump versions to 2.0.1-SNAPSHOT
This starts the next development iteration.
Change-Id: I4783ed8f10b04820f00857379dd316d030802cec
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 2 Jul 2021 21:56:08 +0000 (23:56 +0200)]
Add a logging event when schema is loaded
This is a useful indication as to when we are laying claim on the
directory.
Change-Id: I8a9057fa0b0ea84b54b1ec16c01979286a195277
JIRA: NETCONF-605
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 2 Jul 2021 20:44:28 +0000 (22:44 +0200)]
Use released aaa 0.14.0
Fix version to released artifacts.
Change-Id: I1a62c6475d9e7c0fc27426ba6b42c066bf676a0e
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 2 Jul 2021 20:22:28 +0000 (22:22 +0200)]
Remove OSGiSchemaResourceManager
We have OSGi R7, hence we have use constructor injection and express our
dependency on SCR.
Change-Id: I77f92de079aa2d51c444451ffd0db4bf2168695f
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 2 Jul 2021 16:12:23 +0000 (18:12 +0200)]
Update sal-rest-docgen dependencies
We do not need parser here, we are getting all we need from
yang-test-util.
Change-Id: I3450b7ad3b0422b01cf3d43e8e2ed1f67c04d756
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 2 Jul 2021 15:05:28 +0000 (17:05 +0200)]
Use controller-4.0.0
Do not use snapshots for controller artifacts.
Change-Id: I86a46dbc466d0c4dde611f364e57808fc23b8e33
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 25 Jun 2021 21:26:01 +0000 (23:26 +0200)]
Update RESTCONF error mapping
yang.common.YangError is an attachment used to propagate RFC6020-defined
failure modes enforced by YANG Tools as exceptions. One such example is
YangInvalidValueException, which is reporting YANG constraint
violations.
Recognize these when mapping to RestconfDocumentedException, so that
their error-app-tag and error-message are properly propagated.
JIRA: NETCONF-786
Change-Id: Id6ea1877e03f42fc193942a4e2b83ecb6daeb631
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 25 Jun 2021 15:00:49 +0000 (17:00 +0200)]
Fixup MD-SAL breakages
There are a few last-minute breaking changes coming from MD-SAL, make
sure we adapt to them. Also use released artifacts, so we should be fine
until we use snapshots again.
Change-Id: I12a44b2041fc47a824c039dddfdb21e3ebc8be17
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 08:09:56 +0000 (10:09 +0200)]
Cleanup yanglib dependencies
We do not need yang-model-{api,util} here, remove the declarations.
Change-Id: I63ebd0b2fba3be82009b7a3e1e916526d2f0d36a
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 08:01:50 +0000 (10:01 +0200)]
Update json-unit-assertj to 2.27.0
There have been a few releases over the past year, catch up with them.
Change-Id: Ia3f24f73ecb386a9d3d6850159cd2ae8167c9049
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 07:59:58 +0000 (09:59 +0200)]
Cleanup restconf-nb-rfc8040 dependencies
We have a few unnecessary dependencies here, readjust them to minimize
footprint.
Change-Id: Iacf49cce058aedc37e3d63067391026f65d0c235
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 07:57:22 +0000 (09:57 +0200)]
Cleanup restconf-nb-bierman02 dependencies
We have a ton of dependencies which are not used, or used only for
testing. Clean them up.
Change-Id: I8e86de3279b8f82b66b53879583cb2ec9b19c90d
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 07:52:24 +0000 (09:52 +0200)]
Cleanup restconf-common dependencies
We do not need parser-impl nor model-util, just model-ir.
Change-Id: Id37cd1fd37697b27f4f67ec40b652bb93403e571
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 07:49:49 +0000 (09:49 +0200)]
Cleanup netconf-topology-singleton dependencies
We are not using codec-xml here, remove it.
Change-Id: I1c0f8e264d9465c45daba805f744df5f48b482e6
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 07:47:02 +0000 (09:47 +0200)]
Clean up mdsal-netconf-connector dependencies
We have a few superfluous dependencies here, remove them.
Change-Id: I3a47677de71d134437b6ff321009386bd7fea435
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Thu, 24 Jun 2021 07:44:57 +0000 (09:44 +0200)]
Drop an unneeded dependency from mdsal-netconf-monitoring
We do not use ietf-inet-types here, remove it.
Change-Id: I359aa26a6cc9463e9f706070debb5f707501465c
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 23 Jun 2021 13:44:30 +0000 (15:44 +0200)]
Remove sal-rest-docgen-maven
Static generator for swagger documentation is not used anywhere and it
is an utter mess. Remove it.
JIRA: MDSAL-232
Change-Id: I8a131f22f7f5d01aa0d66116413ded822fda1341
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 23 Jun 2021 11:49:44 +0000 (13:49 +0200)]
Add restconf-wadl-generator
WADL generator is a tiny bit coming from MD-SAL's
maven-sal-api-gen-plugin, but dependent on RESTCONF semantics.
This patch imports its state as of commit
123a8fe79fa859b5e64e3efbd004d0730e25164d, taking ownership of it.
JIRA: MDSAL-232
Change-Id: I81cc5cb6e2ef3496605e3532087688eb4ab172e2
Signed-off-by: Robert Varga <[email protected]>
Ivan Hrasko [Wed, 16 Jun 2021 09:52:31 +0000 (11:52 +0200)]
Refactor Swagger unit tests
Get rid of incorrect equals call on module revision by
using SchemaContext#findModule methods to find
module according to namespace (and revision).
Because of incorrect equals call the tests
were just passing without any assertions and
were not maintained for long time, some of the
assertions needed to be adapted.
Remove unnecessary code to load EffectiveModelContext
from DocGenTestHelper and instead use YangParserTestUtils
methods directly in tests.
Refactor DocGenTestHelper to be utility class.
Refactor tests code, make tests logic more simple.
Also, introduce tests for ApiDocGeneratorRFC8040.
JIRA: NETCONF-785
Change-Id: I195acbca354cdfe80241430255254436d0dac23f
Signed-off-by: Ivan Hrasko <[email protected]>
Ivan Hrasko [Tue, 15 Jun 2021 07:46:05 +0000 (09:46 +0200)]
Fix multiple keys path in RFC8040 swagger
ListPathBuilder for RFC8040 needs to change its state
when processing multiple keys (= to ,) thus we have
to create it before the iteration over all list keys.
JIRA: NETCONF-708
Change-Id: If617ff1508e63b1001ab7857e3b3fdebff287f74
Signed-off-by: Ivan Hrasko <[email protected]>
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Wed, 9 Jun 2021 16:00:39 +0000 (18:00 +0200)]
Mark netconf node with ext:mount
Add an explicit marker for netconf topology nodes.
JIRA: NETCONF-783
Change-Id: Ie037ea099ed2ebb426242922cf3f7b791e5f7dc4
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Sun, 9 May 2021 20:18:07 +0000 (22:18 +0200)]
Bump MRI upstreams
Adopt latest versions, namely;
- odlparent-9.0.2
- yangtools-7.0.2-SNAPSHOT
- infrautils-2.0.2
- mdsal-8.0.0-SNAPSHOT
- controller-4.0.0-SNAPSHOT
- aaa-0.14.0-SNAPSHOT
Change-Id: Ic4cbc01d88134df26416cd2d6f3e7ac64a03dc1a
Signed-off-by: Robert Varga <[email protected]>
Robert Varga [Fri, 4 Jun 2021 13:01:57 +0000 (15:01 +0200)]
Use InstanceIdentifier.empty()
We do not need a builder here, just use the empty identifier.
Change-Id: I65d6cd0d27e71316b5a8eed330157b583e406474
Signed-off-by: Robert Varga <[email protected]>
Tomas Cere [Tue, 1 Jun 2021 08:41:51 +0000 (10:41 +0200)]
Handle NetconfDocumentedExceptions correctly
These need to be wrapped in TransactionCommitFailedException
so they are handled correctly, so restconf can map these and
return correct status code on failure.
JIRA: NETCONF-777
Change-Id: Id4833bfe46da6f97a216163452dd2a44af599063
Signed-off-by: Tomas Cere <[email protected]>
Signed-off-by: Robert Varga <[email protected]>