Add Interfaces for Openstack L3 forwarding 79/10379/1
authorDave Tucker <djt@redhat.com>
Wed, 27 Aug 2014 14:24:12 +0000 (15:24 +0100)
committerDave Tucker <djt@redhat.com>
Wed, 27 Aug 2014 14:24:12 +0000 (15:24 +0100)
Change-Id: I59c9b7f2d91edd5e9427cc1587ae8e4fc741b5c8
Signed-off-by: Dave Tucker <djt@redhat.com>
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantAwareRouter.java [new file with mode: 0644]
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantRouterForwardingProvider.java [new file with mode: 0644]
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Router.java [new file with mode: 0644]
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OpenstackRouter.java [new file with mode: 0644]

diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantAwareRouter.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantAwareRouter.java
new file mode 100644 (file)
index 0000000..b71807e
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * 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
+ *
+ * Authors : Dave Tucker, Flavio Fernandes
+ */
+
+package org.opendaylight.ovsdb.openstack.netvirt.api;
+
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.util.Set;
+import java.util.UUID;
+
+/**
+ * A Router that is Multi-Tenant Aware
+ * Each tenant has a Unique Identifier which is used to isolate interfaces/routes
+ */
+public interface MultiTenantAwareRouter {
+
+  void addInterface(UUID tenantId, String interfaceName, Set<InterfaceAddress> addresses);
+
+  void addInterface(UUID tenantId, String interfaceName, String macAddress, Set<InterfaceAddress> addresses);
+
+  void updateInterface(UUID tenantId, String interfaceName, Set<InterfaceAddress> addresses);
+
+  void updateInterface(UUID tenantId, String interfaceName, String macAddress, Set<InterfaceAddress> addresses);
+
+  void removeInterface(UUID tenantId, String interfaceName);
+
+  void addRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop);
+
+  void addRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop, Integer priority);
+
+  void removeRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop);
+
+  void removeRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop, Integer priority);
+
+  void addDefaultRoute(UUID tenantId, InetAddress nextHop);
+
+  void addDefaultRoute(UUID tenantId, InetAddress nextHop, Integer priority);
+
+
+}
diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantRouterForwardingProvider.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantRouterForwardingProvider.java
new file mode 100644 (file)
index 0000000..cdf52a7
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * 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
+ *
+ * Authors : Dave Tucker, Flavio Fernandes
+ */
+
+package org.opendaylight.ovsdb.openstack.netvirt.api;
+
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.util.Set;
+import java.util.UUID;
+
+/**
+ * A MultiTenantForwardingProvider provides Multi-Tenant L3 Forwarding
+ */
+public interface MultiTenantRouterForwardingProvider {
+
+  void addStaticArpEntry(UUID tenantId, String macAddress, InetAddress ipAddress);
+
+  void addIpRewriteRule(UUID tenantId, InetAddress matchAddress, InetAddress rewriteAddress);
+
+  void addRouterInterface(UUID tenantId, String macAddress, Set<InterfaceAddress> addresses);
+
+  void addForwardingTableEntry(UUID tenantId, InetAddress ipAddress, String macAddress);
+
+  void addDefaultRouteEntry(UUID tenantId, String macAddress, InetAddress nextHop);
+
+}
diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Router.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Router.java
new file mode 100644 (file)
index 0000000..9d0eda3
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * 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
+ *
+ * Authors : Dave Tucker, Flavio Fernandes
+ */
+
+package org.opendaylight.ovsdb.openstack.netvirt.api;
+
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.util.Set;
+
+/**
+ * A Router
+ */
+public interface Router {
+
+  void addInterface(String interfaceName, Set<InterfaceAddress> addresses);
+
+  void addInterface(String interfaceName, String macAddress, Set<InterfaceAddress> addresses);
+
+  void updateInterface(String interfaceName, Set<InterfaceAddress> addresses);
+
+  void updateInterface(String interfaceName, String macAddress, Set<InterfaceAddress> addresses);
+
+  void removeInterface(String interfaceName);
+
+  void addRoute(InterfaceAddress destination, InetAddress nextHop);
+
+  void addRoute(InterfaceAddress destination, InetAddress nextHop, Integer priority);
+
+  void removeRoute(InterfaceAddress destination, InetAddress nextHop);
+
+  void removeRoute(InterfaceAddress destination, InetAddress nextHop, Integer priority);
+
+  void addDefaultRoute(InetAddress nextHop);
+
+  void addDefaultRoute(InetAddress nextHop, Integer priority);
+
+  void addNatRule(InetAddress matchAddress, InetAddress rewriteAddress);
+
+}
diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OpenstackRouter.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OpenstackRouter.java
new file mode 100644 (file)
index 0000000..eada33c
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * 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
+ *
+ * Authors : Dave Tucker, Flavio Fernandes
+ */
+
+package org.opendaylight.ovsdb.openstack.netvirt.impl;
+
+import org.opendaylight.ovsdb.openstack.netvirt.api.MultiTenantAwareRouter;
+
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.util.Set;
+import java.util.UUID;
+
+/**
+ * OpenStack router implements the MultiTenantAwareRouter interfaces
+ * It provides routing functionality for multiple tenants in an OpenStack cloud
+ */
+public class OpenstackRouter implements MultiTenantAwareRouter {
+
+
+  @Override
+  public void addInterface(UUID tenantId, String interfaceName, Set<InterfaceAddress> addresses) {
+
+  }
+
+  @Override
+  public void addInterface(UUID tenantId, String interfaceName, String macAddress, Set<InterfaceAddress> addresses) {
+
+  }
+
+  @Override
+  public void updateInterface(UUID tenantId, String interfaceName, Set<InterfaceAddress> addresses) {
+
+  }
+
+  @Override
+  public void updateInterface(UUID tenantId, String interfaceName, String macAddress, Set<InterfaceAddress> addresses) {
+
+  }
+
+  @Override
+  public void removeInterface(UUID tenantId, String interfaceName) {
+
+  }
+
+  @Override
+  public void addRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop) {
+
+  }
+
+  @Override
+  public void addRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop, Integer priority) {
+
+  }
+
+  @Override
+  public void removeRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop) {
+
+  }
+
+  @Override
+  public void removeRoute(UUID tenantId, InterfaceAddress destination, InetAddress nextHop, Integer priority) {
+
+  }
+
+  @Override
+  public void addDefaultRoute(UUID tenantId, InetAddress nextHop) {
+
+  }
+
+  @Override
+  public void addDefaultRoute(UUID tenantId, InetAddress nextHop, Integer priority) {
+
+  }
+}