Neutron MTU extension in network model 51/77851/2
authorAswin Suryanarayanan <asuryana@redhat.com>
Thu, 15 Nov 2018 12:29:31 +0000 (17:59 +0530)
committerAswin Suryanarayanan <asuryana@redhat.com>
Tue, 20 Nov 2018 15:00:20 +0000 (20:30 +0530)
1)adds the model for Neutron MTU.
2)Populates a the MTU extension and augment it  to neutron network

Change-Id: Ib11a78eeed7cda529197164e42b3b9f94dbc4366
Signed-off-by: Aswin Suryanarayanan <asuryana@redhat.com>
model/src/main/yang/neutron-mtu-ext.yang [new file with mode: 0755]
model/src/main/yang/neutron-mtu.yang [new file with mode: 0755]
transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronNetworkInterface.java

diff --git a/model/src/main/yang/neutron-mtu-ext.yang b/model/src/main/yang/neutron-mtu-ext.yang
new file mode 100755 (executable)
index 0000000..25cfaae
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018 Redhat 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
+ */
+module neutron-mtu-ext {
+
+    yang-version 1;
+
+    namespace "urn:opendaylight:neutron-mtu-ext";
+
+    prefix neutron-mtu-ext;
+
+    import neutron { prefix "neutron"; }
+    import neutron-mtu { prefix "mtu"; }
+    import yang-ext { prefix "ext"; }
+
+    organization "OpenDaylight Neutron Group";
+
+    description "This YANG module defines Openstack Neutron mtu extensions model";
+
+    revision "2018-11-14" {
+        description
+                "OpenDaylight Neon release";
+    }
+
+    augment "/neutron:neutron/neutron:networks/neutron:network"{
+        description "This module augments the networks container
+                in the neutron-networks module with mtu information.";
+        ext:augment-identifier "network-mtu-extension";
+        uses mtu:mtu-attributes;
+    }
+}
diff --git a/model/src/main/yang/neutron-mtu.yang b/model/src/main/yang/neutron-mtu.yang
new file mode 100755 (executable)
index 0000000..6abdcf6
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2018 Redhat 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
+ */
+module neutron-mtu {
+
+    yang-version 1;
+
+    namespace "urn:opendaylight:neutron-mtu";
+
+    prefix neutron-mtu;
+
+    import neutron-networks { prefix "networks"; }
+
+    organization "OpenDaylight Neutron Group";
+
+    description "This YANG module defines Openstack Neutron mtu extension attributes";
+
+    revision "2018-11-14";
+
+    grouping mtu-attributes {
+        leaf mtu {
+            type uint16;
+            description "The maximum transmission unit (MTU) value to address fragmentation.
+             Minimum value is 68 for IPv4, and 1280 for IPv6.";
+        }
+    }
+}
index 8a89b4c15fcdb7bab95252105d70f17a84669682..716c0ef0599fd298968b1beb5d0ea735688fa7ec 100644 (file)
@@ -21,6 +21,8 @@ import org.opendaylight.neutron.spi.NeutronNetwork;
 import org.opendaylight.neutron.spi.NeutronNetworkSegment;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.ext.rev150712.NetworkL3Extension;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.ext.rev150712.NetworkL3ExtensionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.mtu.ext.rev181114.NetworkMtuExtension;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.mtu.ext.rev181114.NetworkMtuExtensionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeFlat;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeGre;
@@ -91,6 +93,10 @@ public final class NeutronNetworkInterface
         if (qos != null && qos.getQosPolicyId() != null) {
             result.setQosPolicyId(qos.getQosPolicyId().getValue());
         }
+        final NetworkMtuExtension mtu = network.augmentation(NetworkMtuExtension.class);
+        if (mtu != null && mtu.getMtu() != null) {
+            result.setMtu(mtu.getMtu());
+        }
         result.setSegments(segments);
         return result;
     }
@@ -145,6 +151,11 @@ public final class NeutronNetworkInterface
         }
         networkBuilder.addAugmentation(NetworkL3Extension.class, l3ExtensionBuilder.build());
         networkBuilder.addAugmentation(NetworkProviderExtension.class, providerExtensionBuilder.build());
+        if (network.getMtu() != null) {
+            final NetworkMtuExtensionBuilder mtuExtensionBuilder = new NetworkMtuExtensionBuilder();
+            mtuExtensionBuilder.setMtu(network.getMtu());
+            networkBuilder.addAugmentation(NetworkMtuExtension.class, mtuExtensionBuilder.build());
+        }
     }
 
     @Override