Spec for ITM Yang models cleanup 05/77605/22
authorApurba Mukherjee <apurba.mukherjee@ericsson.com>
Mon, 24 Jun 2019 06:01:09 +0000 (11:31 +0530)
committerFaseela K <faseela.k@ericsson.com>
Mon, 24 Jun 2019 06:36:24 +0000 (06:36 +0000)
1. Added specification document for ITM Yang Models cleanup
2. Linked spec to specs/index

Change-Id: I1217ae59584775a44cbe3b266ba3cbcded7f0b01
Signed-off-by: Apurba Mukherjee <apurba.mukherjee@ericsson.com>
docs/specs/index.rst
docs/specs/itm-yang-cleanup.rst [new file with mode: 0644]

index 2a888a305eed1352100a177c7b320741142c64d6..484b0b1d06b05de2818138d796abdc22e3238b5e 100644 (file)
@@ -20,3 +20,4 @@ Contents:
    service-binding-on-tunnels
    service-recovery
    arputil-dpn-id-in-notifications
+   itm-yang-cleanup
diff --git a/docs/specs/itm-yang-cleanup.rst b/docs/specs/itm-yang-cleanup.rst
new file mode 100644 (file)
index 0000000..bf4c6c6
--- /dev/null
@@ -0,0 +1,344 @@
+
+.. contents:: Table of Contents
+      :depth: 3
+
+=======================
+ITM Yang Models cleanup
+=======================
+
+This Spec review discusses the changes required as part of the clean up
+activity in ITM Module.
+
+Problem description
+===================
+
+It was discovered during the code review that in ITM yang models, there is some code
+which is now redundant because of various reasons, i.e. change in the requirements
+and new features coming in making the older code/models redundant. Hence it was felt
+that an activity needs to be taken to clean up such yang models so as to enhance
+code readability and stability.
+
+Use Cases
+---------
+There is no changes in the use cases. This is just a cleanup activity done to remove
+unwanted stuff from itm-yang and the corresponding code cleanup.
+
+Proposed change
+===============
+
+YANG changes
+------------
+Changes will be needed in ``itm.yang`` and ``itm-config.yang``.
+
+ITM YANG changes
+^^^^^^^^^^^^^^^^
+1.  The below container``vtep-config-schemas`` will be removed from ``itm-config.yang`` as
+    this is no longer required.
+
+.. code-block:: none
+
+        container vtep-config-schemas {
+          list vtep-config-schema {
+            key schema-name;
+
+            leaf schema-name {
+                type string;
+                mandatory true;
+                description "Schema name";
+            }
+
+            leaf transport-zone-name {
+                type string;
+                mandatory true;
+                description "Transport zone";
+            }
+
+            leaf tunnel-type {
+                type identityref {
+                base odlif:tunnel-type-base;
+                }
+            }
+
+            leaf port-name {
+                type string;
+                mandatory true;
+                description "Port name";
+            }
+
+            leaf vlan-id {
+                type uint16 {
+                    range "0..4094";
+                }
+                mandatory true;
+                description "VLAN ID";
+            }
+
+            leaf gateway-ip {
+                type inet:ip-address;
+                description "Gateway IP address";
+            }
+
+            leaf subnet {
+                type inet:ip-prefix;
+                mandatory true;
+                description "Subnet Mask in CIDR-notation string, e.g. 10.0.0.0/24";
+            }
+
+            leaf exclude-ip-filter {
+                type string;
+                description "IP Addresses which needs to be excluded from the specified subnet. IP address range or comma separated IP addresses can to be specified. e.g: 10.0.0.1-10.0.0.20,10.0.0.30,10.0.0.35";
+            }
+
+            list dpn-ids {
+                key "DPN";
+
+                leaf DPN {
+                    type uint64;
+                    description "DPN ID";
+                }
+            }
+          }
+        }
+
+
+2.  The list "transport-zone" in container "transport-zones" will have the following modifications: -
+
+    1. "weight" will be removed.
+
+    2. "option-tunnel-tos" will be a part of the list.
+
+    3. "option-of-tunnel" will be a part of the list.
+
+    4. "monitoring" will be part of the list.
+
+    5. "portname" will be removed.
+
+    6. list "subnets" will be removed along with the leaves "prefix", "gateway-ip" and "vlan-id".
+
+       The earlier list "vteps" and "device-vteps" which were part of the list "subnets"
+
+       will now be part of the parent list "transport-zone".
+
+    7. key for list "vteps" will be only "dpn-id".
+
+
+.. code-block:: none
+
+       container transport-zones {
+          list transport-zone {
+          ordered-by user;
+            key zone-name;
+            leaf zone-name {
+                type string;
+                mandatory true;
+            }
+
+            leaf tunnel-type {
+                type identityref {
+                    base odlif:tunnel-type-base;
+                }
+                mandatory true;
+            }
+
+            list vteps {
+                key "dpn-id";
+                leaf dpn-id {
+                     type uint64;
+                }
+                leaf ip-address {
+                     type inet:ip-address;
+                }
+                leaf option-tunnel-tos {
+                    description "Value of ToS bits to be set on the encapsulating
+                    packet.  The value of 'inherit' will copy the DSCP value
+                    from inner IPv4 or IPv6 packets.  When ToS is given as
+                    a numberic value, the least significant two bits will
+                    be ignored.";
+                    type string {
+                        length "1..8";
+                    }
+                }
+                container monitoring {
+                    uses tunnel-monitor-params
+                }
+            }
+             list device-vteps{
+                    key "ip-address";
+                    leaf ip-address{
+                        type inet:ip-address;
+                    }
+                    leaf tunnnel-type{
+                        type identityref {
+                              base odlif:tunnel-type-base;
+                        }
+                     }
+                }
+             }
+         }
+    }
+
+    grouping tunnel-monitoring-params {
+        leaf enabled {
+            type boolean;
+            default true;
+        }
+
+        leaf monitor-protocol {
+            type identityref {
+                base odlif:tunnel-monitoring-type-base;
+            }
+            default odlif:tunnel-monitoring-type-bfd;
+        }
+        leaf interval {
+            type uint16 {
+                range "1000..30000";
+            }
+        }
+    }
+
+
+3.  container "dc-gateway-ip-list" will be removed from the list "transport-zone"
+
+4.  The list "tunnel-end-points" in the container "dpn-endpoints" in file itm-state.yang
+    will have the below fields removed :-
+              leaf portname {
+                  type string;
+              }
+              leaf VLAN-ID {
+                  type uint16;
+              }
+              leaf gw-ip-address {
+                  type inet:ip-address;
+              }
+              leaf subnet-mask {
+                  type inet:ip-prefix;
+              }
+
+5.  The rest of the fields from the list "tunnel-end-points" will become leaves in "dpn-endpoints".
+    The list will be removed.
+
+6.  The leaf "internal" will be removed from the "dpn-teps-state" container in itm-state.yang
+
+Workflow
+--------
+N.A.
+
+Configuration impact
+---------------------
+The JSON, to create a transport zone, is going to be changed according to the new yang
+
+Clustering considerations
+-------------------------
+Any clustering requirements are already addressed in ITM , no new
+requirements added as part of this feature.
+
+Other Infra considerations
+--------------------------
+N.A.
+
+Security considerations
+-----------------------
+N.A.
+
+Scale and Performance Impact
+----------------------------
+This solution will improve the readability and code stability so as to remove
+dead/unwarranted code.
+Targeted Release(s)
+-------------------
+Neon
+
+Known Limitations
+-----------------
+N.A.
+
+Alternatives
+------------
+N.A.
+Usage
+=====
+
+Features to Install
+-------------------
+This feature doesn't add any new karaf feature.
+
+REST API
+--------
+
+For the changes listed in 2.,
+the REST API to configure a transport-zone will be changed.
+
+Implementation
+==============
+
+Assignee(s)
+-----------
+Primary assignee:
+  <Chintan Apte>
+
+Other contributors:
+  <Vacancies available>
+
+
+Work Items
+----------
+#. YANG changes
+#. Code changes
+#. Add UTs.
+#. Add ITs.
+#. Update CSIT.
+#. Add Documentation
+
+Dependencies
+============
+N.A.
+
+Testing
+=======
+
+Unit Tests
+----------
+Appropriate UTs will be added for the new code coming in once framework is in place.
+2. UT should cover configuring the tunnels via tep-add commands using the new JSON format (post-cleanup).
+
+Integration Tests
+-----------------
+Integration tests will be added once IT framework for ITM and IFM is ready.
+
+CSIT
+----
+2. CSIT should be updated to take care of configuring the transport-zone using the new JSON.
+The changes will need changes in the following: -
+Suites:-
+    Configure_ITM
+    ITM Direct Tunnels
+    BFD Monitoring
+    Service Recovery
+
+Keywords :
+    Create Vteps
+    Set Json
+
+CSIT/Variables/Genius :
+Itm_creation_no_vlan.json
+l2vlanmember.json
+
+
+Documentation Impact
+====================
+2. The change in the JSON format for configuring the transport-zone needs to be documented. The genius user guide
+will be modified to reflect the same.
+
+References
+==========
+
+N.A.
+
+Troubleshooting
+===============
+This section will be updated with the changes needed in ODLTools for this cleanup activity.
+A JIRA will be raised in ODLTools for this.
+
+Upgrade Impact
+==============
+In case of upgrade issue related to tunnel name, 'vlanid' and 'portname' to be configured in the 'genius-itm-config.xml'.
\ No newline at end of file