Add implementation for flat L3 overlay
[groupbasedpolicy.git] / renderers / vpp / src / main / java / org / opendaylight / groupbasedpolicy / renderer / vpp / commands / VhostUserCommand.java
index f72452490485e63aca917952777e14f71b2a8969..2a60ddf33175a32fdba656cf02757236e164d76c 100644 (file)
@@ -8,26 +8,25 @@
 
 package org.opendaylight.groupbasedpolicy.renderer.vpp.commands;
 
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.General;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.General.Operations;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VhostUserRole;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.L2Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUserBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.base.attributes.interconnection.BridgeBasedBuilder;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.VhostUserRole;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.VppInterfaceAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.VppInterfaceAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.interfaces._interface.L2Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.interfaces._interface.RoutingBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.interfaces._interface.VhostUserBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.l2.base.attributes.interconnection.BridgeBasedBuilder;
 
-public class VhostUserCommand extends AbstractInterfaceCommand<VhostUserCommand> {
+public class VhostUserCommand extends AbstractInterfaceCommand {
 
     private String socket;
     private VhostUserRole role;
-    private String bridgeDomain;
 
     private VhostUserCommand(VhostUserCommandBuilder builder) {
         this.name = builder.getName();
@@ -37,6 +36,7 @@ public class VhostUserCommand extends AbstractInterfaceCommand<VhostUserCommand>
         this.enabled = builder.isEnabled();
         this.description = builder.getDescription();
         this.bridgeDomain = builder.getBridgeDomain();
+        this.enableProxyArp = builder.getEnableProxyArp();
 
     }
 
@@ -52,30 +52,32 @@ public class VhostUserCommand extends AbstractInterfaceCommand<VhostUserCommand>
         return role;
     }
 
-    public String getBridgeDomain() {
-        return bridgeDomain;
-    }
-
     @Override
     public InterfaceBuilder getInterfaceBuilder() {
         InterfaceBuilder interfaceBuilder =
                 new InterfaceBuilder().setKey(new InterfaceKey(name))
-                    .setEnabled(enabled)
-                    .setDescription(description)
-                    .setType(
-                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VhostUser.class)
-                    .setName(name)
-                    .setLinkUpDownTrapEnable(Interface.LinkUpDownTrapEnable.Enabled);
+                        .setEnabled(enabled)
+                        .setDescription(description)
+                        .setType(
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.VhostUser.class)
+                        .setName(name)
+                        .setLinkUpDownTrapEnable(Interface.LinkUpDownTrapEnable.Enabled);
 
         // Create the vhost augmentation
         VppInterfaceAugmentationBuilder vppAugmentationBuilder = new VppInterfaceAugmentationBuilder()
-            .setVhostUser(new VhostUserBuilder().setRole(role).setSocket(socket).build());
+                .setVhostUser(new VhostUserBuilder().setRole(role).setSocket(socket).build());
+
+        if (getVrfId() != null) {
+            vppAugmentationBuilder.setRouting(new RoutingBuilder().setIpv4VrfId(getVrfId()).build());
+        }
+
         if (!Strings.isNullOrEmpty(bridgeDomain)) {
             vppAugmentationBuilder.setL2(new L2Builder()
-                .setInterconnection(new BridgeBasedBuilder().setBridgeDomain(bridgeDomain).build()).build());
+                    .setInterconnection(new BridgeBasedBuilder().setBridgeDomain(bridgeDomain).build()).build());
         }
 
         interfaceBuilder.addAugmentation(VppInterfaceAugmentation.class, vppAugmentationBuilder.build());
+        addEnableProxyArpAugmentation(interfaceBuilder);
         return interfaceBuilder;
     }
 
@@ -95,6 +97,8 @@ public class VhostUserCommand extends AbstractInterfaceCommand<VhostUserCommand>
         private boolean enabled = true;
         private String description;
         private String bridgeDomain;
+        private Boolean enableProxyArp;
+        private Long vrfId;
 
         public String getName() {
             return name;
@@ -123,7 +127,7 @@ public class VhostUserCommand extends AbstractInterfaceCommand<VhostUserCommand>
             return this;
         }
 
-        public VhostUserRole getRole() {
+        VhostUserRole getRole() {
             return role;
         }
 
@@ -132,11 +136,11 @@ public class VhostUserCommand extends AbstractInterfaceCommand<VhostUserCommand>
             return this;
         }
 
-        public boolean isEnabled() {
+        boolean isEnabled() {
             return enabled;
         }
 
-        public VhostUserCommandBuilder setEnabled(boolean enabled) {
+        VhostUserCommandBuilder setEnabled(boolean enabled) {
             this.enabled = enabled;
             return this;
         }
@@ -150,15 +154,31 @@ public class VhostUserCommand extends AbstractInterfaceCommand<VhostUserCommand>
             return this;
         }
 
-        public String getBridgeDomain() {
+        String getBridgeDomain() {
             return bridgeDomain;
         }
 
-        public VhostUserCommandBuilder setBridgeDomain(String bridgeDomain) {
+        VhostUserCommandBuilder setBridgeDomain(String bridgeDomain) {
             this.bridgeDomain = bridgeDomain;
             return this;
         }
 
+        public Boolean getEnableProxyArp() {
+            return enableProxyArp;
+        }
+
+        public void setEnableProxyArp(Boolean enableProxyArp) {
+            this.enableProxyArp = enableProxyArp;
+        }
+
+        public Long getVrfId() {
+            return vrfId;
+        }
+
+        public void setVrfId(Long vrfId) {
+            this.vrfId = vrfId;
+        }
+
         /**
          * VhostUserCommand build method.
          *