Bug 5679 - new module 'models' for new models in restconf 58/48858/4
authorJakub Toth <jatoth@cisco.com>
Wed, 30 Nov 2016 15:35:35 +0000 (16:35 +0100)
committerJakub Toth <jatoth@cisco.com>
Tue, 20 Dec 2016 10:24:08 +0000 (10:24 +0000)
  * added new module to models - ietf-yang-library with
    model ietf-yang-library.yang
  * added dependencies to sal-rest-connector and features
    on ietf-yang-library

Change-Id: If372a629443cab496fd42b7a71d726c181c4000e
Signed-off-by: Jakub Toth <jatoth@cisco.com>
features/restconf/pom.xml
features/restconf/src/main/features/features.xml
restconf/models/ietf-yang-library/pom.xml [new file with mode: 0644]
restconf/models/ietf-yang-library/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev160621/module/list/CommonLeafsRevisionBuilder.java [new file with mode: 0644]
restconf/models/ietf-yang-library/src/main/yang/ietf-yang-library@2016-06-21.yang [new file with mode: 0644]
restconf/models/pom.xml [new file with mode: 0644]
restconf/pom.xml
restconf/restconf-artifacts/pom.xml
restconf/sal-rest-connector/pom.xml

index 45be17258529c7a5c1b985ffaf454f927e357ce5..c2af176b827291804d051cc1da30bfdbfb4e5d2f 100644 (file)
       <artifactId>sal-rest-docgen</artifactId>
       <version>${restconf.version}</version>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>ietf-yang-library</artifactId>
+      <version>${project.version}</version>
+    </dependency>
 
   </dependencies>
   <scm>
index fc13c74f34ca993fb6820d3decacf70ee93debd7..b6482f2a41d69d152f4b139514d8c723dcac05a7 100644 (file)
@@ -30,6 +30,7 @@
         <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
         <feature version='[4.0.30,4.1.0)'>odl-netty</feature>
         <feature>war</feature>
+        <bundle>mvn:org.opendaylight.netconf/ietf-yang-library/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.netconf/sal-rest-connector/{{VERSION}}</bundle>
         <bundle>mvn:com.google.code.gson/gson/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.yangtools/yang-data-codec-gson/{{VERSION}}</bundle>
diff --git a/restconf/models/ietf-yang-library/pom.xml b/restconf/models/ietf-yang-library/pom.xml
new file mode 100644 (file)
index 0000000..2b4f2b8
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+  ~
+  ~ This program and the accompanying materials are made available under the
+  ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+  ~ and is available at http://www.eclipse.org/legal/epl-v10.html
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.opendaylight.mdsal</groupId>
+        <artifactId>binding-parent</artifactId>
+        <version>0.10.0-SNAPSHOT</version>
+        <relativePath>../../../binding/binding-parent</relativePath>
+    </parent>
+
+    <groupId>org.opendaylight.netconf</groupId>
+    <artifactId>ietf-yang-library</artifactId>
+    <version>1.5.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>${project.artifactId}</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.opendaylight.mdsal.model</groupId>
+            <artifactId>ietf-inet-types-2013-07-15</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal.model</groupId>
+            <artifactId>ietf-yang-types-20130715</artifactId>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/restconf/models/ietf-yang-library/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev160621/module/list/CommonLeafsRevisionBuilder.java b/restconf/models/ietf-yang-library/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev160621/module/list/CommonLeafsRevisionBuilder.java
new file mode 100644 (file)
index 0000000..e0b6bfa
--- /dev/null
@@ -0,0 +1,20 @@
+package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.module.list;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.module.list.CommonLeafs.Revision;
+
+
+/**
+ * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation.
+ * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32).
+ *
+ * The reason behind putting it under src/main/java is:
+ * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent
+ * loss of user code.
+ *
+ */
+public class CommonLeafsRevisionBuilder {
+
+    public static Revision getDefaultInstance(final java.lang.String defaultValue) {
+        return new Revision(defaultValue);
+    }
+
+}
diff --git a/restconf/models/ietf-yang-library/src/main/yang/ietf-yang-library@2016-06-21.yang b/restconf/models/ietf-yang-library/src/main/yang/ietf-yang-library@2016-06-21.yang
new file mode 100644 (file)
index 0000000..bc466ee
--- /dev/null
@@ -0,0 +1,208 @@
+module ietf-yang-library {
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
+  prefix "yanglib";
+  import ietf-yang-types {
+    prefix yang;
+  }
+  import ietf-inet-types {
+    prefix inet;
+  }
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
+     WG List:  <mailto:netconf@ietf.org>
+     WG Chair: Mehmet Ersue
+               <mailto:mehmet.ersue@nsn.com>
+     WG Chair: Mahesh Jethanandani
+               <mailto:mjethanandani@gmail.com>
+     Editor:   Andy Bierman
+               <mailto:andy@yumaworks.com>
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>
+     Editor:   Kent Watsen
+               <mailto:kwatsen@juniper.net>";
+  description
+    "This module contains monitoring information about the YANG
+     modules and submodules that are used within a YANG-based
+     server.
+     Copyright (c) 2016 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
+     (http://trustee.ietf.org/license-info).
+     This version of this YANG module is part of RFC 7895; see
+     the RFC itself for full legal notices.";
+  revision 2016-06-21 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 7895: YANG Module Library.";
+  }
+  /*
+   * Typedefs
+   */
+  typedef revision-identifier {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}';
+    }
+    description
+      "Represents a specific date in YYYY-MM-DD format.";
+  }
+  /*
+   * Groupings
+   */
+  grouping module-list {
+    description
+      "The module data structure is represented as a grouping
+       so it can be reused in configuration or another monitoring
+       data structure.";
+    grouping common-leafs {
+      description
+        "Common parameters for YANG modules and submodules.";
+      leaf name {
+        type yang:yang-identifier;
+        description
+          "The YANG module or submodule name.";
+      }
+      leaf revision {
+        type union {
+          type revision-identifier;
+          type string { length 0; }
+        }
+        description
+          "The YANG module or submodule revision date.
+           A zero-length string is used if no revision statement
+           is present in the YANG module or submodule.";
+      }
+    }
+    grouping schema-leaf {
+      description
+        "Common schema leaf parameter for modules and submodules.";
+      leaf schema {
+        type inet:uri;
+        description
+          "Contains a URL that represents the YANG schema
+           resource for this module or submodule.
+           This leaf will only be present if there is a URL
+           available for retrieval of the schema for this entry.";
+      }
+    }
+    list module {
+      key "name revision";
+      description
+        "Each entry represents one revision of one module
+         currently supported by the server.";
+      uses common-leafs;
+      uses schema-leaf;
+      leaf namespace {
+        type inet:uri;
+        mandatory true;
+        description
+          "The XML namespace identifier for this module.";
+      }
+      leaf-list feature {
+        type yang:yang-identifier;
+        description
+          "List of YANG feature names from this module that are
+           supported by the server, regardless of whether they are
+           defined in the module or any included submodule.";
+      }
+      list deviation {
+        key "name revision";
+        description
+          "List of YANG deviation module names and revisions
+           used by this server to modify the conformance of
+           the module associated with this entry.  Note that
+           the same module can be used for deviations for
+           multiple modules, so the same entry MAY appear
+           within multiple 'module' entries.
+           The deviation module MUST be present in the 'module'
+           list, with the same name and revision values.
+           The 'conformance-type' value will be 'implement' for
+           the deviation module.";
+        uses common-leafs;
+      }
+      leaf conformance-type {
+        type enumeration {
+          enum implement {
+            description
+              "Indicates that the server implements one or more
+               protocol-accessible objects defined in the YANG module
+               identified in this entry.  This includes deviation
+               statements defined in the module.
+               For YANG version 1.1 modules, there is at most one
+               module entry with conformance type 'implement' for a
+               particular module name, since YANG 1.1 requires that,
+               at most, one revision of a module is implemented.
+               For YANG version 1 modules, there SHOULD NOT be more
+               than one module entry for a particular module name.";
+          }
+          enum import {
+            description
+              "Indicates that the server imports reusable definitions
+               from the specified revision of the module but does
+               not implement any protocol-accessible objects from
+               this revision.
+               Multiple module entries for the same module name MAY
+               exist.  This can occur if multiple modules import the
+               same module but specify different revision dates in
+               the import statements.";
+          }
+        }
+        mandatory true;
+        description
+          "Indicates the type of conformance the server is claiming
+           for the YANG module identified by this entry.";
+      }
+      list submodule {
+        key "name revision";
+        description
+          "Each entry represents one submodule within the
+           parent module.";
+        uses common-leafs;
+        uses schema-leaf;
+      }
+    }
+  }
+  /*
+   * Operational state data nodes
+   */
+  container modules-state {
+    config false;
+    description
+      "Contains YANG module monitoring information.";
+    leaf module-set-id {
+      type string;
+      mandatory true;
+      description
+        "Contains a server-specific identifier representing
+         the current set of modules and submodules.  The
+         server MUST change the value of this leaf if the
+         information represented by the 'module' list instances
+         has changed.";
+    }
+    uses module-list;
+  }
+  /*
+   * Notifications
+   */
+  notification yang-library-change {
+    description
+      "Generated when the set of modules and submodules supported
+       by the server has changed.";
+    leaf module-set-id {
+      type leafref {
+        path "/yanglib:modules-state/yanglib:module-set-id";
+      }
+      mandatory true;
+      description
+        "Contains the module-set-id value representing the
+         set of modules and submodules supported at the server at
+         the time the notification is generated.";
+    }
+  }
+}
diff --git a/restconf/models/pom.xml b/restconf/models/pom.xml
new file mode 100644 (file)
index 0000000..91534e0
--- /dev/null
@@ -0,0 +1,25 @@
+<!--
+  ~ Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+  ~
+  ~ This program and the accompanying materials are made available under the
+  ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+  ~ and is available at http://www.eclipse.org/legal/epl-v10.html
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.opendaylight.netconf</groupId>
+    <artifactId>restconf-parent</artifactId>
+    <version>1.5.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>restconf-models</artifactId>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+
+  <modules>
+    <module>ietf-yang-library</module>
+  </modules>
+</project>
index 8e335edf5893a171b051f5f76f0aa3e5219c0e8b..2c9957a7c79e9d4eca5caee333c13afe28f3b36e 100644 (file)
@@ -32,6 +32,7 @@
         <module>sal-restconf-broker</module>
         -->
         <module>restconf-artifacts</module>
+        <module>models</module>
     </modules>
 
     <dependencyManagement>
index aaf6ab54ea6b33f95ec29af6d9aa95e9276fdf15..1fe2c88155ec78fa95cb7bb39db71cfd5a67e216 100644 (file)
 
     <dependencyManagement>
         <dependencies>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>ietf-yang-library</artifactId>
+                <version>${project.version}</version>
+            </dependency>
             <dependency>
                 <groupId>${project.groupId}</groupId>
                 <artifactId>sal-rest-connector</artifactId>
index bce2cbfe3b686874f9153ecb9989255e8d8213cf..0481ad923eba0e704743f2d6dd84dfea20b5fc27 100644 (file)
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>yang-model-export</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.netconf</groupId>
+      <artifactId>ietf-yang-library</artifactId>
+      <version>${project.version}</version>
+    </dependency>
     <dependency>
       <groupId>net.java.dev.stax-utils</groupId>
       <artifactId>stax-utils</artifactId>