Robert Varga [Mon, 26 Aug 2019 10:14:28 +0000 (12:14 +0200)]
Share test model SchemaContext
There is no point really to construct this context multiple times,
as it is an invariant. This shaves off some time from test execution.
Change-Id: I4335181bb6992ce5fe1820a452b7a90e0ea14f3a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 26 Aug 2019 12:48:01 +0000 (14:48 +0200)]
Fix schema source registrations not being cleared
When a device goes down, we need to clear the registration list, so
we do not touch them multiple times.
Change-Id: Ic2e67cd21d05a413882f1d3d37b33c5dfabe2261
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 26 Aug 2019 12:49:34 +0000 (14:49 +0200)]
Introduce CREATE_SUBSCRIPTION_RPC_PATH
This path is used multiple times, it does not really make sense
to create it each and every time.
Change-Id: Iabca29c2745cd046fc54c0b768fd675a25f6b493
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 15:55:06 +0000 (17:55 +0200)]
Improve action lookup
The code here is extremely twisty, but at the end of the day it
ends up creating the path to an action's input -- which we can
readily get from schema. Simplify the logic, speeding it up
significantly.
Change-Id: Ic29689bd03b99b5a2095efa4e3fb3866afc08526
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 15:34:09 +0000 (17:34 +0200)]
Make NetconfMessageTransformer.getActions() static
This method only requires a SchemaContext, hence we can easily
make it static.
Change-Id: Ic144c217b6eb5cd1b51532de3c585829189ebdb2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 15:31:12 +0000 (17:31 +0200)]
Reuse schema in NetconfMessageTransformerTest
SchemaContext is an invariant, and hence it does not make sense
to re-create it for each test case. Use @{before,after}Class to
initialize it exactly once -- saving about a second from execution
time.
Change-Id: Ib691dbab9893e02f50d79d9d87e4cfe7892db62d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 20 Aug 2019 17:24:23 +0000 (19:24 +0200)]
Cleanup karaf distro
Simplify declaration that we do not want to install/deploy
the karaf distribution. Since we are not publishing the
artifact, there is no point to carry an <scm/> section.
Change-Id: I503495eefb0ee3dd02dcb618275346071a685009
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 20 Aug 2019 17:04:21 +0000 (19:04 +0200)]
Move netconf-parent
This parent is a dead ringer for restconf-parent, promote it to
project-wide parent and inherit dependencies from restconf-parent,
hence we lose duplicate definitions of upstream dependencies.
Change-Id: If2e994a6a76f1826e2976855f9e9624597628ca8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 20 Aug 2019 16:54:02 +0000 (18:54 +0200)]
Eliminate unneeded version specifications
All ouor published artifacts are declared in our artifacts file,
hence there is no need to specify versions.
Change-Id: I20fa898bbe9bf542cfac2b4d6648f91b58bc29a0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 14:43:58 +0000 (16:43 +0200)]
Close module URL stream as soon as possible
This refactors LibraryModulesSchemas.createFromURLConnection()
to close the stream before doing any further processing. This
lowers resource needs as well as makes for simpler code.
Change-Id: I08f242005185637f6dcbd37fe4ba86051624e56d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 14:31:33 +0000 (16:31 +0200)]
Use constant NodeIdentifiers in LibraryModulesSchemas
There is no point in re-creating these constants each time we need
them -- promote them to proper constants.
Change-Id: If7844b9d0b4b7b075f1f8cfc9bd9821528e3a587
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 14:08:47 +0000 (16:08 +0200)]
Reduce code duplication in LibraryModulesSchemas
The entry derivation code is shared among two cases, merge it
into a utility method.
Also removes a thinko where each entry would actually be created
twice. Furthermore the Optional use for internal utility is removed
in favor of a nullable return.
Change-Id: Ic758eeedf741efb11884eae60ee93d2d510f7360
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 13:47:02 +0000 (15:47 +0200)]
Shorten nested class references
Both Entry and NodeIdentifier are unique in this source, there is no
point wasting terminal space in spelling them out.
Change-Id: I2ca1e3fd56124d9d60cf5045e63534fbe03a64ab
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 13:25:21 +0000 (15:25 +0200)]
Simplify guessJsonFromFileName()
46 here means '.', so the logic is:
- if there is no '.', return false
- if there is, return true IFF the string after the last '.' equals
to ".json" in whatever case combination
Change-Id: Idbd7716a7c37ba8e428a2ecaf60031d32a3adbab
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 13:15:23 +0000 (15:15 +0200)]
LibraryModulesSchemas.availableModels is immutable
This field holds an ImmutableMap, which is initialized to either
empty or a result of ImmutableMap.Builder. Make this contract
explicit by requiring the field to be ImmutableMap.
Change-Id: I13c5dcbd843b79075b31dfd62369abafa00b9e15
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 13:09:50 +0000 (15:09 +0200)]
Cleanup state checking
This cleans up checks to make it clear we are talking about
the same instance when we look at an Optional. Furthermore migrate
away from checkNotNull().
Change-Id: Ie7aeafee45b3140bd6c1e930d3ddbb6b0999de01
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 12:28:47 +0000 (14:28 +0200)]
Remove unneeded type arguments
Type inference is able to deduce the arguments here, remove them.
Change-Id: I552ea2bfd668122d49ac5d081fe3aca5ce9463bc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 12:32:11 +0000 (14:32 +0200)]
Cleanup toRpcResult()
We have a NETCONF_RPC_REPLY_NODEID readily available, there is no
point in recreating its equivalent. Also use proper nested builder
pattern to get rid of some useless temporary variables.
Change-Id: Iffa0cc8f9e3bb46cbb06b18afec23a60cb9282e1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 12:04:09 +0000 (14:04 +0200)]
Centralize NETCONF_(DATA)_QNAME
This constant is already defined in netconf-util, it does make
sense to use it from there rather than brewing our own. Also
updates a few users which were ignoring existence of
NETCONF_DATA_NODEID.
Change-Id: Ic7fa531c4f3cb5f0a79ab663e8ce2c767bf3e570
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 11:50:12 +0000 (13:50 +0200)]
Make mappedRpcs an ImmutableMap
This map is known to be immutable in all cases, make sure we
propagate that knowledge.
Change-Id: Iac97ab3227b88ae6fd5e6fadd896f357412947a2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 23 Aug 2019 11:49:04 +0000 (13:49 +0200)]
Simplify GET_SCHEMAS_RPC initialization
There is no need for static initializer, as we are using a simple
builder.
Change-Id: I55bbb8e54ee2df436ec242373739ca6aba1dc03d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 20 Aug 2019 16:47:29 +0000 (18:47 +0200)]
Alias restconf-artifacts
Each project should provide a single artifacts file, this patch
unifies them in 'netconf-artifacts', making restconf-artifacts
only an alias for downstreams.
Change-Id: I3e1a12882a42bcac0a402d49420fdf0360b43ae0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 20 Aug 2019 15:28:14 +0000 (17:28 +0200)]
Move netconf-artifacts
Each project should be exposing only a single set of artifacts, so
that it's "release" version is consistent across all build entrypoints.
Change-Id: Ief9997e39a71fb3addbfe0999368a3e82a6da804
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 20 Aug 2019 12:08:57 +0000 (14:08 +0200)]
Change in the version name
This fixes the reference to current release stream.
Change-Id: I7161745536fda8acb47f2ea4c677269c970c8b2e
Signed-off-by: Anushka Bhandari <anushka16134@iiitd.ac.in>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jaroslav Tóth [Mon, 12 Aug 2019 14:38:38 +0000 (16:38 +0200)]
Fixed wrong exception types
- After implementation of exception mapper we can throw on error
events RestconfDocumentedException that will be automatically
mapped to response errors container.
- This patch changes IAE or NPE during serialization/deserialition
of instance identifier to right RDE types - HTTP method invoked
on non-existing/malformed IID will lead to returned errors
container (compliancy against spec.) and not status code 500
without any description.
Change-Id: I0982e89b90d4a254656b2b9dcdab87fcbb4a8103
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 19 Aug 2019 13:26:19 +0000 (15:26 +0200)]
Simplify RestconfValidationUtils users
Rather than having users to immediate formatting of the String
value, introduce a simple alternative to throw exceptions.
Change-Id: Id82506398858667f5bd9214beab34dd5bb6638e6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jaroslav Tóth [Thu, 8 Aug 2019 15:01:13 +0000 (17:01 +0200)]
Added ExceptionMapper to RFC-8040 impl
It is similar to draft-02 implementation but with several diffs
that had to be made because of compliancy against specification,
different revisions of QNames, and need for refactoring:
- Response must have yang-data+json or yang-data+xml types, the
parsing of request content type and acceptable media types was
adjusted accordingly.
- Schema context was used as feed to NormalizedNode builders -
this approach is useless.
- Anonymous classes used for special serializaton with disabled
validation of error-info leaf were moved to distinct classes
(they share some lines of code, so the abstract parent class
is added).
- Added error-path leaf to serialized JSON/XML data (it was in
todo tag for unknown reasons).
- Next small fixes and refactoring of code by extraction of
methods.
- Unit test was written from scratch, because of changes done
to parsing of status code and media type.
Change-Id: I9c17229e8df1b382a37ca588a506128040c6d42f
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 15 Aug 2019 08:33:07 +0000 (10:33 +0200)]
Bump mdsal to 4.0.4
This brings in latest fixes.
Change-Id: I59f89ef4fe76ef16fcdc9b59f8d9b50aa0849847
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jaroslav Tóth [Mon, 12 Aug 2019 15:10:52 +0000 (17:10 +0200)]
Fixed response errors for HTTP PUT
- Added correct error types and tags that previously weren't
specified at all so it always returned 500 status code.
Change-Id: Ie77d324ee6b2fc149714e24451f40b01b3e47827
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Jaroslav Tóth [Mon, 12 Aug 2019 14:55:05 +0000 (16:55 +0200)]
Fixed POST data error response
- Added correct error types and tags that previously weren't
specified at all so it always returned 500 status code.
Change-Id: I911fcd04546d2c2884f52e197c44cde67ed214a8
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Tibor Král [Thu, 15 Aug 2019 15:13:28 +0000 (17:13 +0200)]
Fix mapping of Revision in Deviations
"IllegalArgumentException: Unknown value type Optional" exception
is thrown during initialization of RESTCONF with yang model containing
deviation.
JIRA: NETCONF-637
Change-Id: I8c19eb39d06ff38e691ea9a079507dab40311341
Signed-off-by: Tibor Král <tibor.kral@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jaroslav Tóth [Thu, 1 Aug 2019 19:52:08 +0000 (21:52 +0200)]
Removal of dup code in RestconfDataServiceImpl
- Deriving of schema context and transaction chain handler
repeats multiple times in the class.
Change-Id: Ic8b91c99f47dd1ae3d177b8e8070149f46ed288e
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Jaroslav Tóth [Thu, 1 Aug 2019 15:17:40 +0000 (17:17 +0200)]
Fixing of useless message 'Unknown key : content' (read data)
- After reading of data in RFC-8040 with set content query
parameter, the INFO log with unknown query parameter was sent
(but it was recognized correctly in another part of code).
- Refactoring of the readData(..) method, so the parsing of
withDefaults query parameter is moved to ReadDataTransactionUtil
that contains other parsing logic.
- Adding of withDefaults query paramameter to WriteParameters
data class.
- Added unit tests.
Change-Id: I25a01c62a995facce24f29a0dc48048aa1e49f56
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Jaroslav Tóth [Thu, 1 Aug 2019 18:42:28 +0000 (20:42 +0200)]
Fix NPE after invoking of GET on /rests/data
- NPE was caused by comparing of identifier with various stream
paths.
- Resolved by adding identifier != null checks.
- Added unit test.
Change-Id: Ieca8adf0f6686b67e3ddfee53b7f3d47cd1d9f3e
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Mario Abraham [Wed, 14 Aug 2019 10:18:22 +0000 (12:18 +0200)]
Update user-guide.rst
- added info about 2 different endpoints
related to RESTCONF
Issue-ID: NETCONF-500
Signed-off-by: Mario Abraham <mario.abraham@pantheon.tech>
Change-Id: I3ab9517e6ac2afe3e061eb31dfa8b642e1d34614
Jakub Toth [Thu, 8 Aug 2019 12:15:17 +0000 (08:15 -0400)]
Custom scheme-cache-directory yang models are not replicated among
cluster members
The problem was talking about the MissingSchemaSources, where in
the master wasn't setup schema repo & schema registry correctly
based on the data from NetconfNode (from NetconfTopologySetup).
Espacially if the node was using the specific schema cache directory.
According to, slaves were trying to ask the master for sources
(YangTextSchemaSource). In this way, master was trying to resolve
sources from the empty schema repo and it was failing there.
JIRA: NETCONF-610
Change-Id: I84290c085b8a54a9758a85b68113c18aee284a1c
Signed-off-by: Jakub Toth <jtoth@luminanetworks.com>
jenkins-releng [Mon, 12 Aug 2019 16:14:12 +0000 (16:14 +0000)]
Bump versions by x.y.(z+1)
Signed-off-by: jenkins-releng <jenkins-releng@opendaylight.org>
Change-Id: I27bf05f0560a166dc0fd825ae3c119ac128ef7ca
Robert Varga [Wed, 31 Jul 2019 09:09:16 +0000 (11:09 +0200)]
Add checkValidIdentifierStart()
We have slight code duplicate, fix this by adding a utility method.
Change-Id: I696fdba4df956066fe0ebb8226d00ea6c1e0a416
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 31 Jul 2019 09:06:39 +0000 (11:06 +0200)]
Use String.indexOf() to check for percent
Rather than using String-based lookup, use a simple indexOf(),
which is faster.
Change-Id: Ic2ece2e69e4bb00a492ad129e10dc1ca0422fcbb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 31 Jul 2019 09:01:40 +0000 (11:01 +0200)]
Use static imports for constants
Current code is needlessly verbose in its references to simple
constants. Fix this by using static imports, reducing clutter.
Change-Id: I4b0e80a518e10de98a1a75ed8f80d3440e6a3f38
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 31 Jul 2019 00:41:17 +0000 (02:41 +0200)]
Fold MainVarsWrapper
It does not make any sense to keep a separate object to keep
state, while YangInstanceIdentifierDeserializer is pure static.
Eliminate MainVarsWrapper as a separate subclass, encapsulating
it in an YangInstanceIdentifierDeserializer instead. This allows
us manipulate state data freely, without having to go through
accessors, and thus make it much easier to follow as to what is
happening.
Change-Id: Ifa241c7343e13fe524ad8cf7d05cb3a6bbd6a18b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 31 Jul 2019 00:00:55 +0000 (02:00 +0200)]
Move validArg()
This method has a single caller, which just passes it the state --
which really makes the method an instance method.
Change-Id: I8346e53e7b4f47e6da458fdef936812f914d2ef2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 18 Jul 2019 10:35:23 +0000 (12:35 +0200)]
Bump mdsal to 4.0.3
This bumps mdsal to 4.0.3, bringing in latest fixes and improvements.
Change-Id: Ie8e03aab1f31edf80bc9f1d7896c334c9d83be8d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 18 Jul 2019 10:35:09 +0000 (12:35 +0200)]
Bump yangtools to 3.0.4
This picks up latest fixes and improvements.
Change-Id: I03201927d23762acf641c1ab0ff3419ba8b94969
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 18 Jul 2019 10:34:53 +0000 (12:34 +0200)]
Bump odlparent to 5.0.1
This picks up the latest upgrades.
Change-Id: If6006a94197839a9718cd5eae16b0a025913af93
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jul 2019 23:57:55 +0000 (01:57 +0200)]
Migrate nextIdentifierFromNextSequence()
This method is very simple and operates on state. Move it into
the state object, allowing us to eliminate some amount of verbosity.
Change-Id: I07dbb5a612a63d6dd7a1f428138a6750c91c1e3e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jul 2019 23:48:23 +0000 (01:48 +0200)]
Migrate skipCurrentChar() and checkValid()
These two methods always operate on the same instance of data,
hence making the method an instance method saves quite a bit of
verbosity.
Change-Id: I27d621c0f4b28e15fbe6126119f7cfc45475d0b4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jul 2019 23:38:39 +0000 (01:38 +0200)]
Move currentChar()
All users are acquiring state from the same instance, hence making
the method an instance method ditches quite a bit of verbosity.
Change-Id: Ib3a26055a0ee1cb6562adf30997e311e8f013aaa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jul 2019 23:32:26 +0000 (01:32 +0200)]
Move allCharsConsumed()
All users are doing the same thing, this method is better served
as an instance method.
Change-Id: I7e0d76dd0909bd6eee6be2ff10ab6fb9ba51dc10
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jul 2019 23:18:47 +0000 (01:18 +0200)]
Simplify ParserIdentifier
There is no point to allocate the context while finding the schema
node. Refactor the code a bit, reducing the need to pass (and ignore)
mount point.
Change-Id: Ic8832c81c4fcc34445d4ed47df5a45e6a9ba430f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jul 2019 22:31:39 +0000 (00:31 +0200)]
Fixup URL path resolution process
RESTCONF parsing currently entails masking its own path domain
(which is InstanceIdentifier + optional operation) as a
YangInstanceIdentifier.
This patch reworks the interpretation of this encapsulation into
the corresponding SchemaContext searches.
JIRA: NETCONF-619
Change-Id: I6a722760ba3955e9a105ab1c1029e23f12fa0596
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
ajay.dp001 [Mon, 1 Jul 2019 11:40:03 +0000 (12:40 +0100)]
Teach RFC8040 URL parser about actions
RFC8040 allows invocation of actions, but unfortunately our
parser is not equipped to deal with them.
This updates the utilities to try to locate actions when the
data is not found.
JIRA: NETCONF-619
Change-Id: I93d69ea76fd928f963cb7a8c703c97c125820818
Signed-off-by: ajay.dp001 <ajay.deep.singh@ericsson.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 18 Jul 2019 12:15:41 +0000 (14:15 +0200)]
Fix odlparent reference
We should not be referncing odlparent-4.0.2, but rather 5.0.0.
Change-Id: Ia238cf79c1324b3764ede4e920d8bd8caac2ca97
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jakub Toth [Mon, 24 Jun 2019 09:17:16 +0000 (05:17 -0400)]
Attempt netconf remount regardless of error-type
Even if there's a 'no more sources' for schema context, go through
normal remount cycle. It's added a new optional boolean to the netconf
mount fields specifically for this, default to false/ current behavior.
JIRA: NETCONF-611
Change-Id: If983ef0dded606fb75b5e41236c9d0f8328ab7c6
Signed-off-by: Jakub Toth <jtoth@luminanetworks.com>
Jakub Toth [Fri, 14 Jun 2019 15:32:00 +0000 (11:32 -0400)]
Netconf stack by default locks the data store before issuing
edit-config, and then unlocks it.
This poses some scalabilty issues when multiple requests for
the same device arrives. Also some devices automatically
queues the requests at the device itself.
The patch provides an option to allow lock/unlock operations
for edit-config. Default value is true which defaults to today's
behavior.
JIRA: NETCONF-629
Change-Id: I0531b27c0807dfb586f9e80c9b9fc9b189e3cadf
Signed-off-by: Jakub Toth <jtoth@luminanetworks.com>
esobmar [Thu, 11 Jul 2019 12:43:47 +0000 (13:43 +0100)]
Update netconf user guide with the information
on how to use custom RPC with test-tool.
Change-Id: Ie5c9c91ed19f7c25880a4b8590a28bd07d1be98e
JIRA: NETCONF-633
Signed-off-by: Mariusz Sobucki <mariusz.sobucki@est.tech>
Eliezio Oliveira [Mon, 1 Jul 2019 16:53:52 +0000 (17:53 +0100)]
Fix testtool GetSchema broken since v1.6.0
Offending commit:
af7babe
Change-Id: Ia43cdcf10b54d9528921675fed321665771bd667
JIRA: NETCONF-624
Signed-off-by: Eliezio Oliveira <eliezio.oliveira@est.tech>
Eliezio Oliveira [Fri, 28 Jun 2019 08:41:49 +0000 (09:41 +0100)]
Add E2E testing for testtool
Change-Id: I87d7de23c210f5b4b0480a8737323d3f8ac78eb9
JIRA: NETCONF-630
Signed-off-by: Eliezio Oliveira <eliezio.oliveira@est.tech>
Jakub Toth [Sun, 12 May 2019 20:15:34 +0000 (13:15 -0700)]
Convert anyxml nodes lazily
The problem is talking about the direct creating of ContainerNode
from the Anyxml in the NetconfMessageTransformer. Later, while
the YT is parsing data, it expects the anyxml on that place
according to the schema context. In this way, we need to use
the AnyXml builder while the NetconfMessage is processing.
Transformation to a container-based layout is performed afterwards
as needed.
JIRA: NETCONF-616
Change-Id: I8ca6d93e42a845de67721209e5e6362c47703db9
Signed-off-by: Jakub Toth <jtoth@luminanetworks.com>
Robert Varga [Mon, 1 Jul 2019 09:10:00 +0000 (11:10 +0200)]
Remove aaa-encrypt-service version
This version is propagated out of aaa-artifacts, remove it.
Change-Id: Ia4cf3ab202f96027a97a1e5568f9a87607db5eea
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
9612e983a55540fdd30631db943bb303520f890c)
Jaroslav Tóth [Sun, 14 Apr 2019 17:40:12 +0000 (19:40 +0200)]
JETTY web-sockets client tool
- Testing tool is place in new module "tools" under "restconf"
root module and the name of the testtool executable file with
all dependencies is named ${project.artifactId}
-${project.version}-executable.
- See ApplicationSettings class for possible input parameters
of the application as well as the usage. Mandatory parameter is
stream/s name/s using which the web-socket sessions are
established. Other parameters can be categorized into two groups:
1) setup of ping messages (enabled, interval, message)
2) TLS configuration for WSS streams - keystore, trustore,
passwords, cipher suites, protocols, ...
JIRA: NETCONF-623
Change-Id: Ifaf340ee1e0ba26c203bb1c663588cc94fb5496d
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jaroslav Tóth [Sun, 7 Apr 2019 18:23:42 +0000 (20:23 +0200)]
Porting of WebSockets to Jetty in RFC-8040 RESTCONF
- Reimplementation of the web-socket servlet using JETTY library:
1) added configuration holder with persistent-id="websockets"
- configurable maximum web-socket frame length, session idle
timeout, and ping control frames interval.
2) implemented web-socket initilizer that represents servlet -
configuration of web-socket factory
3) imlemented web-socket factory that creates new web-socket
session based on input URI from which the stream-name can be
extracted
4) implemented session handler that just reflects netty's session
hadler with these differences:
- configurable heartbeat interval (PING intialized at server)
- configurable max. frame length that breaks longer messages
to smaller fragments (in old config. long notifications
caused issues)
- PONG frames are sent implicitly (respondation using PING)
- TCP list. port is not specified, because we want to reuse
web server's port (it is possible to share WS/WSS with
HTTP/HTTPS)
- Integration of web-socket servlet in WebInitialzer; we had to
modify stream paths, so they contain also "rests" prefix before
stream name - it is not possible to register more context path
roots... and the upgrade reqests go to common web session.
- Removal of old web-socket server implementation with netty's
dependencies and replacing of Channel references with
WebSocketSessionHandler that is now responsible for communication
with remote endpoint.
JIRA: NETCONF-623
Change-Id: I568aa6375ea3c6a5db3183a54324ef02aa0bd74a
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 21 Jun 2019 05:32:36 +0000 (07:32 +0200)]
Remove use of StringBuffer
StringBuilder is a faster replacement for StringBuffer, use that.
Also cleans up append() usage, so we do not do superfluous string
concatenations.
Change-Id: I2dd973dab6199290e2cbdd840f36b754b14827ad
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 20 Jun 2019 09:16:33 +0000 (11:16 +0200)]
Remove use of Objects.isNull/nonNull
These methods obscure null checks from static analysis tools,
and are explicitly documented to be intended for method references
only -- remove them in favor of proper null checks.
Change-Id: Ibe0a20015eb55d92f19b0ac487a8e48a186216a3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Anna Bencurova [Wed, 19 Jun 2019 19:50:53 +0000 (21:50 +0200)]
Return new generatedKeyPair in loadKeys of testtool
This can be done to avoid sendKexInit() no resolved signatures available
error while first login.
JIRA: NETCONF-612
Change-Id: I32f5b8ea5f3c9a9c613e000932ca0fe205451c74
Signed-off-by: Anna Bencurova <Anna.Bencurova@pantheon.tech>
Jaroslav Tóth [Mon, 17 Jun 2019 14:54:10 +0000 (16:54 +0200)]
Fix building of wrong YANG notify stream
- Identification of stream should start with "notification-stream"
and not "create-notification-stream".
- Added missing '/' before JSON suffix.
JIRA: NETCONF-623
Change-Id: Ia3b78ba8af1b0f53f60dd88b39dff8b92b881ffd
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Jaroslav Tóth [Mon, 17 Jun 2019 13:41:29 +0000 (15:41 +0200)]
Remove deadlock scenario in ListenersBroker
- After call to removeAndCloseDataChangeListener(..),
the dataChangeListenersLock is allocated but inside this method
removeAndCloseDataChangeListenerTemplate(..) is called too which
tries to allocate the same lock again.
JIRA: NETCONF-623
Change-Id: Iaa56ce8936bb2f659b8b42357d19df999621eff1
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Tibor Král [Tue, 11 Jun 2019 09:02:34 +0000 (11:02 +0200)]
Fix for deviation list mapping in Restconf
RESTCONF NBP initialization fails with
RestconfDocumentedException when global schema context
contains yang models using deviations.
JIRA: TRNSPRTPCE-126
Change-Id: I480ac6641006e3e82ffd6ac3aa4cf169fe8b665d
Signed-off-by: Tibor Král <tibor.kral@pantheon.tech>
Robert Varga [Wed, 5 Jun 2019 08:08:05 +0000 (10:08 +0200)]
Another update to SerializationUtils update
Write-side of serialization changed, this updates our only caller.
Change-Id: Ife1537be690b9d662c3be13558a78349823e379d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 5 Jun 2019 07:28:12 +0000 (09:28 +0200)]
Update SerializationUtils method
SerializationUtils changed API, this updates our use of it.
Change-Id: Ie6c15b005cbc6437f88c9c414cd6f2cca54bb858
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 4 Jun 2019 15:18:30 +0000 (17:18 +0200)]
Revert "Convert anyxml nodes lazily"
This reverts commit
49988c53b1741cca9797373eba0c8d7f21a7da3d,
as it breaks CSIT.
JIRA: NETCONF-616
Change-Id: I48bdde78422006c188096620d4029e255b950bc2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 2 May 2019 17:05:38 +0000 (19:05 +0200)]
Do not attempt to form leaf metadata on empty path
This thinko was introduced during Sodium MRI integration. As
NormalizedNodes no longer hold attributes, the corresponding
metadata needs to be constructed -- but only in the case
we have created the structure ourselves.
In order to fix this, we iterate over both the node and the path,
thus correctly mirroring the structure.
JIRA: NETCONF-613
Change-Id: Ib2c9736c577c5dbdd8f4c826f13acbd7cbc21418
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 28 May 2019 07:20:03 +0000 (09:20 +0200)]
Bump mdsal to 4.0.2
This picks up the latest improvements.
Change-Id: Iec9465229b165cb177cf2568ac43e16c8a102c26
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 28 May 2019 07:19:52 +0000 (09:19 +0200)]
Bump yangtools to 3.0.1
This picks up yangtools-3.0.1, which contains a fix required
for NETCONF-613.
Change-Id: I4d9df3fdbbaeaba31e9fc695fdd57bae1561d1a5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 31 May 2019 16:20:01 +0000 (18:20 +0200)]
Remove dependency on sal-connector-api
We are not using anything from this artifact, just remove
the dependency.
Change-Id: I89fe3482a9482bdaf2fce88d66fd778539c0a55d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jakub Toth [Sun, 12 May 2019 20:15:34 +0000 (13:15 -0700)]
Convert anyxml nodes lazily
The problem is talking about the direct creating of ContainerNode
from the Anyxml in the NetconfMessageTransformer. Later, while
the YT is parsing data, it expects the anyxml on that place
according to the schema context. In this way, we need to use
the AnyXml builder while the NetconfMessage is processing.
Transformation to a container-based layout is performed afterwards
as needed.
JIRA: NETCONF-616
Change-Id: Iab00b9ef712dbebf0661546550b10bf04507e97a
Signed-off-by: Jakub Toth <jtoth@luminanetworks.com>
Signed-off-by: Miroslav Macko <mmacko@luminanetworks.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 30 May 2019 14:02:44 +0000 (16:02 +0200)]
Improve NetconfMessageTransformer.isBaseOrNotificationRpc()
Rather than performing up to three equality comparisons, keep
matching URIs in a constant set and perform Set.contains().
Change-Id: Iaddf2bfee70ed0f53d633998f005bf9bb2290099
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 30 May 2019 13:55:28 +0000 (15:55 +0200)]
Cleanup NodeIdentifier instantiation
We have pre-computed NodeIdentifier instances for most cases where
we are using just a QName. This patch exposes constants and makes
sure we rely on them.
Change-Id: I8165e1679773c1ba390a17008061e2e0574f0e8f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 30 May 2019 14:06:08 +0000 (16:06 +0200)]
Do not compare path to YangInstanceIdentifier.EMPTY
YangInstanceIdentifier has a highly efficient isEmpty() method,
use that instead of .equals(EMPTY).
Change-Id: I755560f3cbb204015a2469b6995691cb1f5d1b83
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
jluhrsen [Tue, 28 May 2019 19:34:31 +0000 (12:34 -0700)]
Fix typo: s/then/than
Change-Id: Iee0d7d34f4bdcd24b3baadb54820a7060c205d4b
Signed-off-by: jluhrsen <jluhrsen@gmail.com>
Robert Varga [Tue, 28 May 2019 16:29:15 +0000 (18:29 +0200)]
Teach ModelGenerator about AnyDataSchemaNodes
anydata is a valid construct coming from YANG 1.1, effectively
replacing anyxml. This patch adds the support for processing anydata
nodes.
JIRA: NETCONF-622
Change-Id: I71207f5a053d718daaeaa4f3dcd6aa9ab27e3d57
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 24 May 2019 14:30:12 +0000 (16:30 +0200)]
Add ietf-netconf-nmda data model
This adds NMDA and with-defaults models, so that we can build up
the implementation.
Change-Id: I33104b40863983df23b0f1984922daf294c2fa4f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 24 May 2019 14:33:29 +0000 (16:33 +0200)]
Add ietf-netconf-with-defaults model
This model is a dependency of NMDA, add it first, so we can
implement it separately, if need be. Also clean up odl-netconf-api
dependencies, so we specify the bare minimum and pull the rest
as dependencies.
Change-Id: I78a09d11f3e1ae78dabe16de8b30a3b8549cdb9e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 24 May 2019 14:48:45 +0000 (16:48 +0200)]
Use version ranges for mdsal features
This eases up migration by allowing features to be resolved
by any subsequent version.
Change-Id: Ic64b9a86855bce3f81971a94902682b0aff32e8a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
agosain [Fri, 8 Feb 2019 21:31:42 +0000 (13:31 -0800)]
Add flexible mount point naming strategy
The user can now configure mount point names to either contain
IP address and port (default), or just the IP address.
Change-Id: Iea07f49ace2f9d0c5826e08791847e414c261403
Signed-off-by: agosain <agosain@luminanetworks.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 21 May 2019 11:37:51 +0000 (13:37 +0200)]
Improve global config application
Rather than iterating through all reported changes and publishing
configuration for each of them, acquire the last component and
publish only that.
This leads to faster DTCL (as not all roots need to be acquired)
as well as better atomicity, as readers do not observe intermediate
state if there are multiple changes reported.
Change-Id: I5805566291ea6ebdd6a6c49594fded5aa4243bcb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 21 May 2019 11:27:02 +0000 (13:27 +0200)]
Fix unsafe global config access
Current global config is a volatile variable, hence it must be
acquired into a local variable for proper nullness checks --
otherwise it is open to TOCTOU race conditions leading to NPEs.
Change-Id: I9316b3ed976575726da7a065668c507e15fe0ddf
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 21 May 2019 10:40:50 +0000 (10:40 +0000)]
Merge "Fix DeviceOp DTCL"
Anna Bencurova [Mon, 20 May 2019 15:08:41 +0000 (17:08 +0200)]
Fix preparing action with path containing augment
- Augment does not have QName, so call getNodeType causes exception.
JIRA: NETCONF-620
Change-Id: Ib5f64eb1980784ad8df617a1ad9676cad9c2111c
Signed-off-by: Anna Bencurova <Anna.Bencurova@pantheon.tech>
(cherry picked from commit
45550671df11ff4df23dbd4072561b20919df1a2)
Robert Varga [Thu, 16 May 2019 15:32:36 +0000 (17:32 +0200)]
Fix DeviceOp DTCL
The did not account for the possiblity of null host keys, hence
it incurred NPEs when it was attempting to update its internal
cache.
This also refactor the code so that we share the code path between
DeviceOp and DeviceConfig.
JIRA: NETCONF-615
Change-Id: I1e3329604e1686ee4a79baeea96dc354c49c9e04
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 15 May 2019 14:10:23 +0000 (14:10 +0000)]
Merge "Do not deploy shaded-exificient-jar"
Robert Varga [Tue, 14 May 2019 11:29:03 +0000 (13:29 +0200)]
Remove dependencies on controller APIs
We are no longer using these, remove the declarations.
Change-Id: If05a4d061e3d72caa15807dcf7eb312cbe2db0f5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 15 May 2019 09:18:14 +0000 (11:18 +0200)]
Do not deploy shaded-exificient-jar
This artifact should not be necessary for our operation, do not
deploy it.
Change-Id: I853b301c6c99db652c13d8a67b1a7049ba19dc53
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tomas Cere [Wed, 15 May 2019 07:15:30 +0000 (07:15 +0000)]
Merge "Close read-only transactions"
Robert Varga [Tue, 14 May 2019 20:07:49 +0000 (22:07 +0200)]
Fix mdsal-netconf-connector dependencies
sal-broker-impl is not needed and it not pulling in in-memory DS
has broken the build. Fix up dependencies to pull in mdsal
counterparts, which is what we really need.
Change-Id: I5795877b16f55a9376e7635a360eadc962ff9b48
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Apr 2019 11:52:18 +0000 (13:52 +0200)]
Bump mdsal to 4.0.1
This bumps mdsal to 4.0.1.
Change-Id: I42366367b001b64d2ae23b88992fcdebcaa881d3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 7 May 2019 17:54:18 +0000 (19:54 +0200)]
Close read-only transactions
Transactions are resources just as any other, make sure we close
them as soon as we do not need them.
Change-Id: Ic11becba1a76f2aeecbf5c1e17401f6a55fd84cc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 6 May 2019 20:56:54 +0000 (22:56 +0200)]
Capture server key before returning from callback
The key exchange structure is torn down immediately after
KeyEstablished callback returns, hence we need to capture
the server key before returning.
JIRA: NETCONF-614
Change-Id: Iebe69fe374a766f1502325cb610eed8dadb5f099
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 7 May 2019 06:54:14 +0000 (06:54 +0000)]
Merge changes from topic 'web-sockets'
* changes:
Removal of EventBusChangeRecorder
Refactoring of web-sockets in RESTCONF RFC-8040
Jaroslav Tóth [Sat, 30 Mar 2019 18:12:03 +0000 (19:12 +0100)]
Fixed deadlock between AsyncSshHandlerReader and AsyncSshHandler
First was fix in AsyncSshHandlerReader but there was another
deadlock after that. Therefore a change in AsyncSshHandler is also
needed. Both ABBA deadlockw occur when AsyncSshHandler.disconnect
(..) and AsyncSshHandlerReader.invokeDisconnect(..) methods are
executed concurrently within the same SSH session that is going
to be closed.
Note: Snippets from stack-traces are from Oxygen distribution, so
the line numbers don't have to match exactly.
Deadlock #1:
"nioEventLoopGroupCloseable-3-20":
at org.opendaylight.netconf.nettyutil.handler.ssh.client
.AsyncSshHandlerReader.close(AsyncSshHandlerReader.java:96)
- waiting to lock <0x000000072ecffff8> (a org.opendaylight
.netconf.nettyutil.handler.ssh.client.AsyncSshHandlerReader)
at org.opendaylight.netconf.nettyutil.handler.ssh.client
.AsyncSshHandler.disconnect(AsyncSshHandler.java:235)
- locked <0x000000072ed00020> (a org.opendaylight.netconf
.nettyutil.handler.ssh.client.AsyncSshHandler)
at org.opendaylight.netconf.nettyutil.handler.ssh.client
.AsyncSshHandler.close(AsyncSshHandler.java:215)
...
"sshd-SshClient[
57f78db1]-nio2-thread-1":
at org.opendaylight.netconf.nettyutil.handler.ssh.client
.AsyncSshHandler.disconnect(AsyncSshHandler.java:221)
- waiting to lock <0x000000072ed00020> (a org.opendaylight
.netconf.nettyutil.handler.ssh.client.AsyncSshHandler)
...
org.opendaylight.netconf.nettyutil.handler.ssh.client
.AsyncSshHandlerReader.operationComplete(AsyncSshHandlerReader
.java:64)
- locked <0x000000072ecffff8> (a org.opendaylight.netconf
.nettyutil.handler.ssh.client.AsyncSshHandlerReader)
...
Deadlock #2:
"nioEventLoopGroupCloseable-3-19":
at org.apache.sshd.client.session.ClientSessionImpl
.signalAuthFailure(ClientSessionImpl.java:138)
- waiting to lock <0x000000072c800218> (a java.lang.Object)
at org.apache.sshd.client.session.ClientSessionImpl
.preClose(ClientSessionImpl.java:126)
at org.apache.sshd.common.util.closeable.AbstractCloseable
.close(AbstractCloseable.java:95)
at org.opendaylight.netconf.nettyutil.handler.ssh.client
.AsyncSshHandler.disconnect(AsyncSshHandler.java:251)
- locked <0x000000072c800480> (a org.opendaylight.netconf
.nettyutil.handler.ssh.client.AsyncSshHandler)
...
"sshd-SshClient[
411a406d]-nio2-thread-8":
at org.opendaylight.netconf.nettyutil.handler.ssh.client
.AsyncSshHandler.disconnect(AsyncSshHandler.java:221)
- waiting to lock <0x000000072c800480> (a org.opendaylight
.netconf.nettyutil.handler.ssh.client.AsyncSshHandler)
...
org.apache.sshd.common.session.helpers.AbstractSession
.handleMessage(AbstractSession.java:499)
- locked <0x000000072c800218> (a java.lang.Object)
...
Change-Id: I42260213cad82250832451539d6ce11035ba37e2
Signed-off-by: Martin Sunal <msunal@frinx.io>
Signed-off-by: Jaroslav Tóth <jtoth@frinx.io>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>