Add lisp commands for L3 overlay 51/55951/3
authorShakib Ahmed <sheikahm@cisco.com>
Tue, 25 Apr 2017 00:01:16 +0000 (17:01 -0700)
committerShakib Ahmed <sheikahm@cisco.com>
Wed, 26 Apr 2017 09:48:22 +0000 (02:48 -0700)
Change-Id: Ib4d3df96c5b857bde09fe51d5fbd62891db4227a
Signed-off-by: Shakib Ahmed <sheikahm@cisco.com>
25 files changed:
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/AbstractLispCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLispStatusCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLocalMappingInEidTableCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLocatorSetCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapRegisterStatusCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapResolverCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapServerCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureVrfToVniMappingCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/DeleteLispFeatureDataCommand.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/LispCommandWrapper.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/CommandModel.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/EidDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/HmacKeyDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/InterfaceDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LispDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LocalMappingDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LocatorSetDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapRegisterDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapResolverDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapResolversDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapServerDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapServersDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/VniTableDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/VrfSubtableDom.java [new file with mode: 0644]
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/util/VppIidFactory.java

diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/AbstractLispCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/AbstractLispCommand.java
new file mode 100644 (file)
index 0000000..12ba339
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.General;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public abstract class AbstractLispCommand<T extends DataObject> {
+
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractLispCommand.class);
+    private General.Operations options;
+
+    public void setOptions(General.Operations options) {
+        this.options = options;
+    }
+
+    public General.Operations getOptions() {
+        if (options == null) {
+            LOG.debug("Options found null, setting Options to default PUT type");
+            options = General.Operations.PUT;
+        }
+        return options;
+    }
+
+    /**
+     * Execute command using a given data modification transaction.
+     *
+     * @param rwTx Transaction for command execution
+     */
+    public void execute(ReadWriteTransaction rwTx) {
+        switch (getOptions()) {
+            case PUT:
+                put(rwTx);
+                break;
+            case MERGE:
+                merge(rwTx);
+                break;
+            case DELETE:
+                delete(rwTx);
+                break;
+        }
+    }
+
+    private void put(ReadWriteTransaction rwTx) {
+        rwTx.put(LogicalDatastoreType.CONFIGURATION, getIid(), getData());
+    }
+
+    private void merge(ReadWriteTransaction rwTx) {
+        rwTx.merge(LogicalDatastoreType.CONFIGURATION, getIid(), getData());
+    }
+
+    private void delete(ReadWriteTransaction rwTx) {
+        try {
+            rwTx.delete(LogicalDatastoreType.CONFIGURATION, getIid());
+        } catch (IllegalStateException ex) {
+            LOG.debug("Configuration is not present in DS {}", this, ex);
+        }
+    }
+
+    public abstract InstanceIdentifier<T> getIid();
+
+    public abstract T getData();
+}
\ No newline at end of file
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLispStatusCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLispStatusCommand.java
new file mode 100644 (file)
index 0000000..845d25c
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LispDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Created by Shakib Ahmed on 3/16/17.
+ */
+public class ConfigureLispStatusCommand extends AbstractLispCommand<Lisp> {
+
+    private LispDom lispDom;
+
+    public ConfigureLispStatusCommand(LispDom data) {
+        lispDom = data;
+    }
+
+    @Override
+    public InstanceIdentifier<Lisp> getIid() {
+        return VppIidFactory.getLispStateIid();
+    }
+
+    @Override
+    public Lisp getData() {
+        return lispDom.getSALObject();
+    }
+
+    @Override
+    public String toString() {
+        return "state: " + lispDom.isEnabled();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLocalMappingInEidTableCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLocalMappingInEidTableCommand.java
new file mode 100644 (file)
index 0000000..313c887
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocalMappingDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMapping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMappingKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTableKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Created by Shakib Ahmed on 3/16/17.
+ */
+public class ConfigureLocalMappingInEidTableCommand extends AbstractLispCommand<LocalMapping> {
+
+    LocalMappingDom localMappingDom;
+
+    public ConfigureLocalMappingInEidTableCommand(LocalMappingDom localMappingDom) {
+        this.localMappingDom = localMappingDom;
+    }
+
+    @Override
+    public InstanceIdentifier<LocalMapping> getIid() {
+        return VppIidFactory.getLocalMappingIid(new VniTableKey(localMappingDom.getVni()),
+                                                new LocalMappingKey(localMappingDom.getMappingId()));
+    }
+
+    @Override
+    public LocalMapping getData() {
+        return localMappingDom.getSALObject();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLocatorSetCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureLocatorSetCommand.java
new file mode 100644 (file)
index 0000000..f73ec4a
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocatorSetDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSetKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Created by Shakib Ahmed on 3/16/17.
+ */
+public class ConfigureLocatorSetCommand extends AbstractLispCommand<LocatorSet> {
+
+    LocatorSetDom locatorSetDom;
+
+    public ConfigureLocatorSetCommand(LocatorSetDom locatorSetDom) {
+        this.locatorSetDom = locatorSetDom;
+    }
+
+    @Override
+    public InstanceIdentifier<LocatorSet> getIid() {
+        return VppIidFactory.getLocatorSetIid(new LocatorSetKey(locatorSetDom.getLocatorName()));
+    }
+
+    @Override
+    public LocatorSet getData() {
+        return locatorSetDom.getSALObject();
+    }
+}
\ No newline at end of file
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapRegisterStatusCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapRegisterStatusCommand.java
new file mode 100644 (file)
index 0000000..98f68cb
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapRegisterDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.register.grouping.MapRegister;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class ConfigureMapRegisterStatusCommand extends AbstractLispCommand<MapRegister>{
+
+    MapRegisterDom mapRegisterDom;
+
+    public ConfigureMapRegisterStatusCommand(MapRegisterDom mapRegisterDom) {
+        this.mapRegisterDom = mapRegisterDom;
+    }
+
+    @Override
+    public InstanceIdentifier<MapRegister> getIid() {
+        return VppIidFactory.getMapRegisterIid();
+    }
+
+    @Override
+    public MapRegister getData() {
+        return mapRegisterDom.getSALObject();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapResolverCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapResolverCommand.java
new file mode 100644 (file)
index 0000000..bc35717
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapResolverDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolver;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolverKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class ConfigureMapResolverCommand extends AbstractLispCommand<MapResolver>{
+    MapResolverDom mapResolverDom;
+
+    public ConfigureMapResolverCommand(MapResolverDom mapResolverDom) {
+        this.mapResolverDom = mapResolverDom;
+    }
+
+    @Override
+    public InstanceIdentifier<MapResolver> getIid() {
+        return VppIidFactory.getMapResolverIid(new MapResolverKey(mapResolverDom.getIpAddress()));
+    }
+
+    @Override
+    public MapResolver getData() {
+        return mapResolverDom.getSALObject();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapServerCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureMapServerCommand.java
new file mode 100644 (file)
index 0000000..152e1dd
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapServerDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServerKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class ConfigureMapServerCommand extends AbstractLispCommand<MapServer> {
+    private MapServerDom mapServerDom;
+
+    public ConfigureMapServerCommand(MapServerDom mapServerDom) {
+        this.mapServerDom = mapServerDom;
+    }
+
+    @Override
+    public InstanceIdentifier<MapServer> getIid() {
+        return VppIidFactory.getMapServerIid(new MapServerKey(mapServerDom.getIpAddress()));
+    }
+
+    @Override
+    public MapServer getData() {
+        return mapServerDom.getSALObject();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureVrfToVniMappingCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/ConfigureVrfToVniMappingCommand.java
new file mode 100644 (file)
index 0000000..9ad0716
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VniTableDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTableKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Created by Shakib Ahmed on 3/16/17.
+ */
+public class ConfigureVrfToVniMappingCommand extends AbstractLispCommand<VniTable> {
+
+    VniTableDom vniTableDom;
+
+    public ConfigureVrfToVniMappingCommand(VniTableDom vniTableDom) {
+        this.vniTableDom = vniTableDom;
+    }
+
+    @Override
+    public InstanceIdentifier<VniTable> getIid() {
+        return VppIidFactory.getVniTableIid(new VniTableKey(vniTableDom.getVirtualNetworkIdentifier()));
+    }
+
+    @Override
+    public VniTable getData() {
+        return vniTableDom.getSALObject();
+    }
+}
\ No newline at end of file
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/DeleteLispFeatureDataCommand.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/DeleteLispFeatureDataCommand.java
new file mode 100644 (file)
index 0000000..69d616a
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.lisp.feature.data.grouping.LispFeatureData;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by Shakib Ahmed on 4/18/17.
+ */
+public class DeleteLispFeatureDataCommand extends AbstractLispCommand<LispFeatureData> {
+    private static final Logger LOG = LoggerFactory.getLogger(DeleteLispFeatureDataCommand.class);
+
+    @Override
+    public InstanceIdentifier<LispFeatureData> getIid() {
+        return VppIidFactory.getLispFeatureDataIid();
+    }
+
+    @Override
+    public LispFeatureData getData() {
+        LOG.debug("Delete commands should not invoke getData()");
+        return null;
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/LispCommandWrapper.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/LispCommandWrapper.java
new file mode 100644 (file)
index 0000000..33dd40d
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.InterfaceDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LispDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocalMappingDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocatorSetDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapRegisterDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapResolverDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapServerDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VniTableDom;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VrfSubtableDom;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MappingId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMapping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.local.mapping.Eid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.hmac.key.grouping.HmacKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.lisp.feature.data.grouping.LispFeatureData;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.register.grouping.MapRegister;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolver;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServer;
+
+import java.util.Arrays;
+
+/**
+ * Created by Shakib Ahmed on 3/21/17.
+ */
+public class LispCommandWrapper {
+    public static AbstractLispCommand<Lisp> enableLisp() {
+        LispDom lispDom = new LispDom();
+        lispDom.setEnabled(true);
+        return new ConfigureLispStatusCommand(lispDom);
+    }
+
+    public static AbstractLispCommand<LocatorSet> addLocatorSet(String locatorName,
+                                                                String interfaceName,
+                                                                short priority,
+                                                                short weight) {
+        InterfaceDom interfaceDom = new InterfaceDom();
+        interfaceDom.setInterfaceName(interfaceName);
+        interfaceDom.setPriority(priority);
+        interfaceDom.setWeight(weight);
+
+        LocatorSetDom locatorSetDom = new LocatorSetDom();
+        locatorSetDom.setInterfaces(Arrays.asList(interfaceDom.getSALObject()));
+        locatorSetDom.setLocatorName(locatorName);
+        return new ConfigureLocatorSetCommand(locatorSetDom);
+    }
+
+    public static AbstractLispCommand<VniTable> mapVniToVrf(long vni, long vrfTableId) {
+        VrfSubtableDom vrfSubtableDom = new VrfSubtableDom();
+        vrfSubtableDom.setTableId(vrfTableId);
+
+        VniTableDom vniTableDom = new VniTableDom();
+        vniTableDom.setVirtualNetworkIdentifier(vni);
+        vniTableDom.setVrfSubtable(vrfSubtableDom.getSALObject());
+
+        return new ConfigureVrfToVniMappingCommand(vniTableDom);
+    }
+
+    public static AbstractLispCommand<MapRegister> enableMapRegister() {
+        MapRegisterDom mapRegisterDom = new MapRegisterDom();
+        mapRegisterDom.setEnabled(true);
+        return new ConfigureMapRegisterStatusCommand(mapRegisterDom);
+    }
+
+    public static AbstractLispCommand<MapResolver> addMapResolver(IpAddress ipAddress) {
+        MapResolverDom mapResolverDom = new MapResolverDom();
+        mapResolverDom.setIpAddress(ipAddress);
+
+        return new ConfigureMapResolverCommand(mapResolverDom);
+    }
+
+    public static AbstractLispCommand<MapServer> addMapServer(IpAddress ipAddress) {
+        MapServerDom mapServerDom = new MapServerDom();
+        mapServerDom.setIpAddress(ipAddress);
+
+        return new ConfigureMapServerCommand(mapServerDom);
+    }
+
+    public static AbstractLispCommand<LocalMapping> addLocalMappingInEidTable(String mappingName,
+                                                                              Eid eid,
+                                                                              String locatorName,
+                                                                              HmacKey hmacKey) {
+        LocalMappingDom localMappingDom = new LocalMappingDom();
+        localMappingDom.setMappingId(new MappingId(mappingName));
+        localMappingDom.setEid(eid);
+        localMappingDom.setLocatorName(locatorName);
+        localMappingDom.setHmacKey(hmacKey);
+
+        return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
+    }
+
+    public static AbstractLispCommand<LocalMapping> deleteLocalMappingFromEidTable(String mappingName,
+                                                                                   long vni) {
+        LocalMappingDom localMappingDom = new LocalMappingDom();
+        localMappingDom.setMappingId(new MappingId(mappingName));
+        localMappingDom.setVni(vni);
+
+        return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
+    }
+
+    public static AbstractLispCommand<LispFeatureData> deleteLispFeatureData() {
+        return new DeleteLispFeatureDataCommand();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/CommandModel.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/CommandModel.java
new file mode 100644 (file)
index 0000000..6a30c17
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yangtools.yang.binding.DataObject;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public interface CommandModel {
+    <T extends DataObject> T getSALObject();
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/EidDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/EidDom.java
new file mode 100644 (file)
index 0000000..e06d328
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.local.mapping.Eid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.local.mapping.EidBuilder;
+
+/**
+ * Created by Shakib Ahmed on 3/21/17.
+ */
+public class EidDom<T extends LispAddressFamily> implements CommandModel {
+
+    private long vni;
+    private Address address;
+    private Class<T> addressFamily;
+
+    public long getVni() {
+        return vni;
+    }
+
+    public void setVni(long vni) {
+        this.vni = vni;
+    }
+
+    public Address getAddress() {
+        return address;
+    }
+
+    public void setAddress(Address address) {
+        this.address = address;
+    }
+
+    public Class<T> getAddressFamily() {
+        return addressFamily;
+    }
+
+    public void setAddressFamily(Class<T> addressFamily) {
+        this.addressFamily = addressFamily;
+    }
+
+    @Override
+    public Eid getSALObject() {
+        return new EidBuilder()
+                    .setVirtualNetworkId(new InstanceIdType(vni))
+                    .setAddressType(getAddressFamily())
+                    .setAddress(address).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/HmacKeyDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/HmacKeyDom.java
new file mode 100644 (file)
index 0000000..c175b84
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.HmacKeyType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.hmac.key.grouping.HmacKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.hmac.key.grouping.HmacKeyBuilder;
+
+/**
+ * Created by Shakib Ahmed on 3/21/17.
+ */
+public class HmacKeyDom implements CommandModel {
+
+    private HmacKeyType keyType;
+    private String key;
+
+    public HmacKeyType getKeyType() {
+        return keyType;
+    }
+
+    public void setKeyType(HmacKeyType keyType) {
+        this.keyType = keyType;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    @Override
+    public HmacKey getSALObject() {
+        return new HmacKeyBuilder()
+                    .setKeyType(keyType)
+                    .setKey(key).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/InterfaceDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/InterfaceDom.java
new file mode 100644 (file)
index 0000000..05ece6d
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.locator.set.Interface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.locator.set.InterfaceBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.locator.set.InterfaceKey;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class InterfaceDom implements CommandModel {
+
+    private String interfaceName;
+    private short priority;
+    private short weight;
+
+    public String getInterfaceName() {
+        return interfaceName;
+    }
+
+    public void setInterfaceName(String interfaceName) {
+        this.interfaceName = interfaceName;
+    }
+
+    public short getPriority() {
+        return priority;
+    }
+
+    public void setPriority(short priority) {
+        this.priority = priority;
+    }
+
+    public short getWeight() {
+        return weight;
+    }
+
+    public void setWeight(short weight) {
+        this.weight = weight;
+    }
+
+    @Override
+    public Interface getSALObject() {
+        Preconditions.checkNotNull(interfaceName, "Interface Name needs to be set!");
+
+        return new InterfaceBuilder()
+                    .setKey(new InterfaceKey(interfaceName))
+                    .setInterfaceRef(interfaceName)
+                    .setPriority(priority)
+                    .setWeight(priority).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LispDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LispDom.java
new file mode 100644 (file)
index 0000000..f2c894c
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.LispBuilder;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class LispDom implements CommandModel {
+    private boolean enabled;
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+
+    @Override
+    public Lisp getSALObject() {
+        return new LispBuilder().setEnable(enabled).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LocalMappingDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LocalMappingDom.java
new file mode 100644 (file)
index 0000000..8c20538
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MappingId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMapping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMappingBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMappingKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.local.mapping.Eid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.hmac.key.grouping.HmacKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSet;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class LocalMappingDom implements CommandModel {
+
+    private MappingId mappingId;
+    private Eid eid;
+    private Long vni;
+    private String locatorName;
+    private HmacKey hmacKey;
+
+    public MappingId getMappingId() {
+        return mappingId;
+    }
+
+    public void setMappingId(MappingId mappingId) {
+        this.mappingId = mappingId;
+    }
+
+    public Eid getEid() {
+        return eid;
+    }
+
+    public void setEid(Eid eid) {
+        this.vni = eid.getVirtualNetworkId().getValue();
+        this.eid = eid;
+    }
+
+    public String getLocatorName() {
+        return locatorName;
+    }
+
+    public void setLocatorName(String locatorName) {
+        this.locatorName = locatorName;
+    }
+
+    public void setLocatorSet(LocatorSet locatorSet) {
+        this.locatorName = locatorSet.getName();
+    }
+
+    public HmacKey getHmacKey() {
+        return hmacKey;
+    }
+
+    public void setHmacKey(HmacKey hmacKey) {
+        this.hmacKey = hmacKey;
+    }
+
+    public Long getVni() {
+        return vni;
+    }
+
+    public void setVni(long vni) {
+        this.vni = vni;
+    }
+
+
+    @Override
+    public LocalMapping getSALObject() {
+        Preconditions.checkNotNull(mappingId, "Mapping Id needs to be set!");
+        Preconditions.checkNotNull(getVni(), "Vni needs to be set!");
+
+        return new LocalMappingBuilder()
+                .setKey(new LocalMappingKey(mappingId))
+                .setId(mappingId)
+                .setEid(eid)
+                .setLocatorSet(locatorName)
+                .setHmacKey(hmacKey).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LocatorSetDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/LocatorSetDom.java
new file mode 100644 (file)
index 0000000..963fc94
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSetBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSetKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.locator.set.Interface;
+
+import java.util.List;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class LocatorSetDom implements CommandModel {
+
+    private String locatorName;
+    private List<Interface> interfaces;
+
+    public String getLocatorName() {
+        return locatorName;
+    }
+
+    public void setLocatorName(String locatorName) {
+        this.locatorName = locatorName;
+    }
+
+    public List<Interface> getInterfaces() {
+        return interfaces;
+    }
+
+    public void setInterfaces(List<Interface> interfaces) {
+        this.interfaces = interfaces;
+    }
+
+    @Override
+    public LocatorSet getSALObject() {
+        Preconditions.checkNotNull(locatorName, "Locator Name needs to be set!");
+        return new LocatorSetBuilder()
+                    .setKey(new LocatorSetKey(locatorName))
+                    .setName(locatorName)
+                    .setInterface(interfaces).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapRegisterDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapRegisterDom.java
new file mode 100644 (file)
index 0000000..cd9cf87
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.register.grouping.MapRegister;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.register.grouping.MapRegisterBuilder;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class MapRegisterDom implements CommandModel {
+
+    private boolean enabled;
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    @Override
+    public MapRegister getSALObject() {
+        return new MapRegisterBuilder().setEnabled(enabled).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapResolverDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapResolverDom.java
new file mode 100644 (file)
index 0000000..5e5412c
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolver;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolverBuilder;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class MapResolverDom implements CommandModel {
+    private IpAddress ipAddress;
+
+    public IpAddress getIpAddress() {
+        return ipAddress;
+    }
+
+    public void setIpAddress(IpAddress ipAddress) {
+        this.ipAddress = ipAddress;
+    }
+
+    @Override
+    public MapResolver getSALObject() {
+        return new MapResolverBuilder().setIpAddress(ipAddress).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapResolversDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapResolversDom.java
new file mode 100644 (file)
index 0000000..d4da6f2
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.MapResolvers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.MapResolversBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolver;
+
+import java.util.List;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class MapResolversDom implements CommandModel {
+    private List<MapResolver> mapResolvers;
+
+    public List<MapResolver> getMapResolvers() {
+        return mapResolvers;
+    }
+
+    public void setMapResolvers(List<MapResolver> mapResolvers) {
+        this.mapResolvers = mapResolvers;
+    }
+
+    @Override
+    public MapResolvers getSALObject() {
+        return new MapResolversBuilder().setMapResolver(mapResolvers).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapServerDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapServerDom.java
new file mode 100644 (file)
index 0000000..860774c
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServerBuilder;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class MapServerDom implements CommandModel{
+    private IpAddress ipAddress;
+
+    public IpAddress getIpAddress() {
+        return ipAddress;
+    }
+
+    public void setIpAddress(IpAddress ipAddress) {
+        this.ipAddress = ipAddress;
+    }
+
+    @Override
+    public MapServer getSALObject() {
+        return new MapServerBuilder().setIpAddress(ipAddress).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapServersDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/MapServersDom.java
new file mode 100644 (file)
index 0000000..ce6b0c5
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.MapServers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.MapServersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServer;
+
+import java.util.List;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class MapServersDom implements CommandModel {
+    List<MapServer> mapServers;
+
+    public List<MapServer> getMapServers() {
+        return mapServers;
+    }
+
+    public void setMapServers(List<MapServer> mapServers) {
+        this.mapServers = mapServers;
+    }
+
+    @Override
+    public MapServers getSALObject() {
+        return new MapServersBuilder().setMapServer(mapServers).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/VniTableDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/VniTableDom.java
new file mode 100644 (file)
index 0000000..3fb3c08
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTableBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTableKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.vni.table.VrfSubtable;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class VniTableDom implements CommandModel {
+    private long virtualNetworkIdentifier;
+    private VrfSubtable vrfSubtable;
+
+    public long getVirtualNetworkIdentifier() {
+        return virtualNetworkIdentifier;
+    }
+
+    public void setVirtualNetworkIdentifier(long virtualNetworkIdentifier) {
+        this.virtualNetworkIdentifier = virtualNetworkIdentifier;
+    }
+
+    public VrfSubtable getVrfSubtable() {
+        return vrfSubtable;
+    }
+
+    public void setVrfSubtable(VrfSubtable vrfSubtable) {
+        this.vrfSubtable = vrfSubtable;
+    }
+
+    @Override
+    public VniTable getSALObject() {
+        Preconditions.checkNotNull(virtualNetworkIdentifier, "Virtual Network Identifier" +
+                " needs to be set!");
+
+        VniTableKey vniTableKey = new VniTableKey(virtualNetworkIdentifier);
+        return new VniTableBuilder()
+                        .setKey(vniTableKey)
+                        .setVirtualNetworkIdentifier(vniTableKey.getVirtualNetworkIdentifier())
+                        .setVrfSubtable(vrfSubtable).build();
+    }
+}
diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/VrfSubtableDom.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/commands/lisp/dom/VrfSubtableDom.java
new file mode 100644 (file)
index 0000000..97e5135
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2017 Cisco Systems. 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
+ */
+
+package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.vni.table.VrfSubtable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.vni.table.VrfSubtableBuilder;
+
+/**
+ * Created by Shakib Ahmed on 3/20/17.
+ */
+public class VrfSubtableDom implements CommandModel {
+    private long tableId;
+
+    public long getTableId() {
+        return tableId;
+    }
+
+    public void setTableId(long tableId) {
+        this.tableId = tableId;
+    }
+
+    @Override
+    public VrfSubtable getSALObject() {
+        return new VrfSubtableBuilder().setTableId(tableId).build();
+    }
+}
index 150bc312825f584ee013f1306181b6802906bf79..827b961014c0894aeee8fefc11a3df5c949b7046 100644 (file)
@@ -33,6 +33,25 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNodeKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang._interface.acl.rev161214.VppAclInterfaceAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.LocalMappings;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMapping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMappingKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.EidTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTableKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.vni.table.VrfSubtable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.lisp.feature.data.grouping.LispFeatureData;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.LocatorSets;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSetKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.register.grouping.MapRegister;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.MapResolvers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolver;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolverKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.MapServers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServerKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.BridgeDomainsState;
 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.interfaces._interface.L2;
@@ -133,4 +152,55 @@ public class VppIidFactory {
             .child(RoutingProtocol.class, routingProtocolKey)
             .build();
     }
+
+    public static InstanceIdentifier<Lisp> getLispStateIid() {
+        return InstanceIdentifier.create(Lisp.class);
+    }
+
+    public static InstanceIdentifier<VniTable> getVniTableIid(VniTableKey vniTableKey) {
+        return InstanceIdentifier.builder(Lisp.class)
+                .child(LispFeatureData.class)
+                .child(EidTable.class)
+                .child(VniTable.class, vniTableKey).build();
+    }
+
+    public static InstanceIdentifier<LocatorSet> getLocatorSetIid(LocatorSetKey locatorSetKey) {
+        return InstanceIdentifier.builder(Lisp.class)
+                .child(LispFeatureData.class)
+                .child(LocatorSets.class)
+                .child(LocatorSet.class, locatorSetKey).build();
+    }
+
+    public static InstanceIdentifier<MapRegister> getMapRegisterIid() {
+        return InstanceIdentifier.builder(Lisp.class)
+                .child(LispFeatureData.class)
+                .child(MapRegister.class).build();
+    }
+
+    public static InstanceIdentifier<MapResolver> getMapResolverIid(MapResolverKey mapResolverKey) {
+        return InstanceIdentifier.builder(Lisp.class)
+                .child(LispFeatureData.class)
+                .child(MapResolvers.class)
+                .child(MapResolver.class, mapResolverKey).build();
+    }
+
+    public static InstanceIdentifier<MapServer> getMapServerIid(MapServerKey mapServerKey) {
+        return InstanceIdentifier.builder(Lisp.class)
+                .child(LispFeatureData.class)
+                .child(MapServers.class)
+                .child(MapServer.class, mapServerKey).build();
+    }
+
+    public static InstanceIdentifier<LocalMapping> getLocalMappingIid(VniTableKey vniTableKey,
+                                                                      LocalMappingKey localMappingKey) {
+        return getVniTableIid(vniTableKey)
+                .child(VrfSubtable.class)
+                .child(LocalMappings.class)
+                .child(LocalMapping.class, localMappingKey);
+    }
+
+    public static InstanceIdentifier<LispFeatureData> getLispFeatureDataIid() {
+        return InstanceIdentifier.builder(Lisp.class)
+                .child(LispFeatureData.class).build();
+    }
 }