Develop a data model: o1-notify-pnf-registration

- add yes-o1-notify-pnf-registration-additional-fields

IssueID: OAM-288
Change-Id: I11d227182ae4d4909293ad5645e06c123f9f419d
Signed-off-by: demx8as6 <martin.skorupski@highstreet-technologies.com>
diff --git a/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration-additional-fields.yang b/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration-additional-fields.yang
new file mode 100644
index 0000000..1777b2c
--- /dev/null
+++ b/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration-additional-fields.yang
@@ -0,0 +1,192 @@
+module yes-o1-notify-pnf-registration-additional-fields {
+  yang-version 1.1;
+  namespace "urn:o-ran-sc:params:xml:ns:yang:yes-o1-notify-pnf-registration-additional-fields";
+  prefix ypra;
+
+  import yang-based-event-stream {
+    prefix yes;
+    reference
+      "wiki.opnfv.org/display/ves/VES+goes+YES";
+  }
+  import yes-o1-notify-pnf-registration {
+    prefix ypr;
+    reference
+      "O-RAN Operations and Maintenance Interface Specification (O-RAN.WG10.O1-Interface.0-v07.00)
+       section 2.7.2.4 Operations and Notifications";
+  }
+
+  organization
+    "O-RAN Software Community";
+  contact
+    "www.o-ran-sc.org";
+  description
+    "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+     describe the exchanged data format.
+     This module augments yes-o1-notify-pnf-registration for vendor specific
+     additional fields.
+
+     Copyright 2022 highstreet technologies GmbH and others.
+
+     Licensed under the Apache License, Version 2.0 (the 'License');
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an 'AS IS' BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.";
+
+  revision 2022-08-24 {
+    description
+      "Initial version";
+    reference
+      "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+       VES: wiki.opnfv.org/display/ves/VES+Home
+            docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+       YES: wiki.opnfv.org/display/ves/VES+goes+YES
+       O-RAN Operations and Maintenance Interface Specification (O-RAN.WG10.O1-Interface.0-v07.00)
+             section 2.7.2.4 Operations and Notifications";
+  }
+
+  /*
+   * Groupings
+   */
+
+  grouping o1-notify-pnf-registration-additional-fields-grp {
+    // TODO align with ietf-hardware, ONAP AAI, ONF manufactured-thing
+    leaf transport-protocol {
+      type enumeration {
+        enum ssh {
+          description
+            "NETCONF via SSH";
+        }
+        enum tls {
+          description
+            "NETCONF via TLS";
+          reference
+            "RFC7589: Using the NETCONF Protocol over Transport Layer Security (TLS)
+                      with Mutual X.509 Authentication";
+        }
+      }
+      default "ssh";
+      description
+        "Defines the security protocol for NETCONF";
+    }
+    leaf username {
+      type string {
+        length "3..255";
+      }
+      description
+        "The username for the connection.";
+    }
+    choice transport-protocol-details {
+      case ssh {
+        leaf password {
+          type string {
+            length "8..255";
+          }
+          description
+            "The user's password for the SSH session.";
+        }
+        leaf host-key {
+          type string;
+          description
+            "BASE-64 encoded public key which is used by the network-function
+              during the connection.";
+        }
+      }
+      case tls {
+        leaf key-reference {
+          type string;
+          description
+            "Key identifier inside the NETCONF server's keystore.
+              It is used during two-way TLS authentication.";
+          reference
+            "ietf-keystore.yang";
+        }
+      }
+      description
+        "Provides connectivity details for one of the supported transport protocols";
+    }
+    leaf reconnect-on-changed-schema {
+      type boolean;
+      default "false";
+      description
+        "Defines if the NETCONF client should reconnect to the network
+         function, if new YANG capabilities are exposed.";
+    }
+    leaf connection-timeout {
+      type uint32;
+      units "ms";
+      default "20000";
+      description
+        "Defines the NETCONF client timeout to indicate that the connection
+         was lost.";
+    }
+    leaf max-connection-attempts {
+      type uint32;
+      default "0";
+      description
+        "Defines the number of attempts by the NETCONF client to connect
+         to the NETCONF server, before the automated connection function, by
+         the NETCONF client is switched off. The value 0 means 'infinity'.";
+    }
+    leaf between-attempts-timeout {
+      type uint32;
+      units "ms";
+      default "2000";
+      description
+        "Defines the first delay time in milliseconds to try a new reconnect
+         by the NETCONF client. For the next attempts the values is
+         multiplied with the 'sleep-factor'.";
+    }
+    leaf sleep-factor {
+      type decimal64 {
+        fraction-digits 1;
+        range "1.0 .. 10.0";
+      }
+      default "1.5";
+      description
+        "Defines the factor to increase the reconnect attempt.";
+    }
+    leaf keepalive-delay {
+      type uint32;
+      units "s";
+      default "120";
+      description
+        "Defines the time in seconds between two 'empty' NETCONF request to
+         check if the NETCONF server is functional or can be reached. The
+         value 0 turns of such function.";
+    }
+    description
+      "An object class containing o1-notify-pnf-registration additional fields.";
+  }
+
+  /*
+   * Augmentation of o1-notify-pnf-registration
+   */
+
+  augment "/yes:event-history/yes:event/ypr:o1-notify-pnf-registration" {
+    when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'ypr:o1-notify-pnf-registration')" {
+      description
+        "The event header must indicate 'o1-notify-pnf-registration'.";
+    }
+    if-feature "yes:event-history";
+    uses o1-notify-pnf-registration-additional-fields-grp;
+    description
+      "Adds additional fields to o1-notify-pnf-registration notifications.";
+  }
+
+  augment "/yes:yang-based-event-stream/yes:event/ypr:o1-notify-pnf-registration" {
+    when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'ypr:o1-notify-pnf-registration')" {
+      description
+        "The event header must indicate 'o1-notify-pnf-registration'.";
+    }
+    uses o1-notify-pnf-registration-additional-fields-grp;
+    description
+      "Adds additional fields to o1-notify-pnf-registration notifications.";
+  }
+}