From 20482910226e9c3d49042ccd8539b4eaf949609d Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 7 Mar 2019 16:03:24 +0100 Subject: [PATCH 1/1] Add RFC8528 Schema Mount model This adds packaging for RFC8528 model, so that it can be reused by downstreams. JIRA: MDSAL-424 Change-Id: Ia6ec9ffd349cd6afa2629b9fa1eb9096d263aa39 Signed-off-by: Robert Varga --- artifacts/pom.xml | 14 ++ docs/pom.xml | 8 + features/features-mdsal/pom.xml | 6 + features/odl-mdsal-model-rfc8528/pom.xml | 37 +++ features/pom.xml | 1 + model/ietf/pom.xml | 3 + model/ietf/rfc8528/pom.xml | 35 +++ .../ietf-yang-schema-mount@2019-01-14.yang | 224 ++++++++++++++++++ 8 files changed, 328 insertions(+) create mode 100644 features/odl-mdsal-model-rfc8528/pom.xml create mode 100644 model/ietf/rfc8528/pom.xml create mode 100644 model/ietf/rfc8528/src/main/yang/ietf-yang-schema-mount@2019-01-14.yang diff --git a/artifacts/pom.xml b/artifacts/pom.xml index ecd7e1cfc8..a276aad091 100644 --- a/artifacts/pom.xml +++ b/artifacts/pom.xml @@ -643,6 +643,13 @@ 1.2.7-SNAPSHOT + + + org.opendaylight.mdsal.binding.model.ietf + rfc8528 + 1.0.7-SNAPSHOT + + @@ -815,6 +822,13 @@ features xml + + org.opendaylight.mdsal.model + odl-mdsal-model-rfc8528 + 1.0.7-SNAPSHOT + features + xml + org.opendaylight.mdsal.model diff --git a/docs/pom.xml b/docs/pom.xml index 525a506c12..6329b8eb37 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -303,6 +303,10 @@ org.opendaylight.mdsal.binding.model.ietf rfc8349-ietf-ipv6-unicast-routing + + org.opendaylight.mdsal.binding.model.ietf + rfc8528 + org.opendaylight.mdsal.model ietf-restconf @@ -647,6 +651,10 @@ Java Bindings for ietf-yang-library.yang org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library* + + Java Bindings for ietf-yang-schema-mount.yang + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.schema.mount* + Java Bindings for ietf-yang-types.yang org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types* diff --git a/features/features-mdsal/pom.xml b/features/features-mdsal/pom.xml index d1e06ab5f8..b3aefe448c 100644 --- a/features/features-mdsal/pom.xml +++ b/features/features-mdsal/pom.xml @@ -221,6 +221,12 @@ features xml + + org.opendaylight.mdsal.model + odl-mdsal-model-rfc8528 + features + xml + org.opendaylight.mdsal.model diff --git a/features/odl-mdsal-model-rfc8528/pom.xml b/features/odl-mdsal-model-rfc8528/pom.xml new file mode 100644 index 0000000000..355aeb5d34 --- /dev/null +++ b/features/odl-mdsal-model-rfc8528/pom.xml @@ -0,0 +1,37 @@ + + + + 4.0.0 + + org.opendaylight.mdsal + feature-parent + 3.0.7-SNAPSHOT + ../feature-parent + + + org.opendaylight.mdsal.model + odl-mdsal-model-rfc8528 + 1.0.7-SNAPSHOT + feature + OpenDaylight :: MD-SAL :: Model :: RFC8528 + Models from RFC8528 + + + + org.opendaylight.mdsal.model + odl-mdsal-model-rfc6991 + features + xml + + + org.opendaylight.mdsal.binding.model.ietf + rfc8528 + + + diff --git a/features/pom.xml b/features/pom.xml index da38cde0e0..8f047f6658 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -79,6 +79,7 @@ odl-mdsal-model-rfc8348 odl-mdsal-model-rfc8348-non-nmda odl-mdsal-model-rfc8349 + odl-mdsal-model-rfc8528 odl-mdsal-model-draft-bierman-netconf-restconf-02 diff --git a/model/ietf/pom.xml b/model/ietf/pom.xml index cb467e7844..0ae09a4a08 100644 --- a/model/ietf/pom.xml +++ b/model/ietf/pom.xml @@ -78,6 +78,9 @@ rfc8349-ietf-ipv4-unicast-routing rfc8349-ietf-ipv6-unicast-routing + + rfc8528 + ietf-packet-fields ietf-access-control-list ietf-lisp-address-types diff --git a/model/ietf/rfc8528/pom.xml b/model/ietf/rfc8528/pom.xml new file mode 100644 index 0000000000..6c824f6099 --- /dev/null +++ b/model/ietf/rfc8528/pom.xml @@ -0,0 +1,35 @@ + + + + + 4.0.0 + + org.opendaylight.mdsal + binding-parent + 3.0.7-SNAPSHOT + ../../../binding/binding-parent + + + org.opendaylight.mdsal.binding.model.ietf + rfc8528 + 1.0.7-SNAPSHOT + bundle + + ${project.artifactId} + RFC8528 YANG Schema Mount + + + + org.opendaylight.mdsal.binding.model.ietf + rfc6991 + + + diff --git a/model/ietf/rfc8528/src/main/yang/ietf-yang-schema-mount@2019-01-14.yang b/model/ietf/rfc8528/src/main/yang/ietf-yang-schema-mount@2019-01-14.yang new file mode 100644 index 0000000000..c49458a11c --- /dev/null +++ b/model/ietf/rfc8528/src/main/yang/ietf-yang-schema-mount@2019-01-14.yang @@ -0,0 +1,224 @@ +module ietf-yang-schema-mount { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount"; + prefix yangmnt; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Martin Bjorklund + + + Editor: Ladislav Lhotka + "; + + description + "This module defines a YANG extension statement that can be used + to incorporate data models defined in other YANG modules in a + module. It also defines operational state data that specify the + overall structure of the data model. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2019 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8528; + see the RFC itself for full legal notices."; + + revision 2019-01-14 { + description + "Initial revision."; + reference + "RFC 8528: YANG Schema Mount"; + } + + /* + * Extensions + */ + + extension mount-point { + argument label; + description + "The argument 'label' is a YANG identifier, i.e., it is of the + type 'yang:yang-identifier'. + + The 'mount-point' statement MUST NOT be used in a YANG + version 1 module, neither explicitly nor via a 'uses' + statement. + The 'mount-point' statement MAY be present as a substatement + of 'container' and 'list' and MUST NOT be present elsewhere. + There MUST NOT be more than one 'mount-point' statement in a + given 'container' or 'list' statement. + + If a mount point is defined within a grouping, its label is + bound to the module where the grouping is used. + + A mount point defines a place in the node hierarchy where + other data models may be attached. A server that implements a + module with a mount point populates the + '/schema-mounts/mount-point' list with detailed information on + which data models are mounted at each mount point. + + Note that the 'mount-point' statement does not define a new + data node."; + } + + /* + * State data nodes + */ + + container schema-mounts { + config false; + description + "Contains information about the structure of the overall + mounted data model implemented in the server."; + list namespace { + key "prefix"; + description + "This list provides a mapping of namespace prefixes that are + used in XPath expressions of 'parent-reference' leafs to the + corresponding namespace URI references."; + leaf prefix { + type yang:yang-identifier; + description + "Namespace prefix."; + } + leaf uri { + type inet:uri; + description + "Namespace URI reference."; + } + } + list mount-point { + key "module label"; + + description + "Each entry of this list specifies a schema for a particular + mount point. + + Each mount point MUST be defined using the 'mount-point' + extension in one of the modules listed in the server's + YANG library instance with conformance type 'implement'."; + leaf module { + type yang:yang-identifier; + description + "Name of a module containing the mount point."; + } + leaf label { + type yang:yang-identifier; + description + "Label of the mount point defined using the 'mount-point' + extension."; + } + leaf config { + type boolean; + default "true"; + description + "If this leaf is set to 'false', then all data nodes in the + mounted schema are read-only ('config false'), regardless + of their 'config' property."; + } + choice schema-ref { + mandatory true; + description + "Alternatives for specifying the schema."; + container inline { + presence + "A complete self-contained schema is mounted at the + mount point."; + description + "This node indicates that the server has mounted at least + the module 'ietf-yang-library' at the mount point, and + its instantiation provides the information about the + mounted schema. + + Different instances of the mount point may have + different schemas mounted."; + } + container shared-schema { + presence + "The mounted schema together with the 'parent-reference' + make up the schema for this mount point."; + + description + "This node indicates that the server has mounted at least + the module 'ietf-yang-library' at the mount point, and + its instantiation provides the information about the + mounted schema. When XPath expressions in the mounted + schema are evaluated, the 'parent-reference' leaf-list + is taken into account. + + Different instances of the mount point MUST have the + same schema mounted."; + leaf-list parent-reference { + type yang:xpath1.0; + description + "Entries of this leaf-list are XPath 1.0 expressions + that are evaluated in the following context: + + - The context node is the node in the parent data tree + where the mount-point is defined. + + - The accessible tree is the parent data tree + *without* any nodes defined in modules that are + mounted inside the parent schema. + + - The context position and context size are both equal + to 1. + + - The set of variable bindings is empty. + + - The function library is the core function library + defined in the W3C XPath 1.0 document + (http://www.w3.org/TR/1999/REC-xpath-19991116) and + the functions defined in Section 10 of RFC 7950. + + - The set of namespace declarations is defined by the + 'namespace' list under 'schema-mounts'. + + Each XPath expression MUST evaluate to a node-set + (possibly empty). For the purposes of evaluating + XPath expressions whose context nodes are defined in + the mounted schema, the union of all these node-sets + together with ancestor nodes are added to the + accessible data tree. + + Note that in the case 'ietf-yang-schema-mount' is + itself mounted, a 'parent-reference' in the mounted + module may refer to nodes that were brought into the + accessible tree through a 'parent-reference' in the + parent schema."; + } + } + } + } + } +} -- 2.36.6