Add mac address field into virtual router
Change-Id: I387507756d88732f9e1733b9d1037f8d0861f848
(cherry picked from commit c49017d483949554ab85c36b0f4cfd7b23d31690)
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java
index f6a9545..84a5998 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtRouter.java
@@ -18,6 +18,7 @@
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import org.onlab.packet.MacAddress;
import java.util.HashMap;
import java.util.HashSet;
@@ -37,6 +38,7 @@
private final String name;
private final String description;
private final boolean enableSnat;
+ private final MacAddress mac;
private final Set<String> internal;
private final Map<String, String> external;
private final KubevirtPeerRouter peerRouter;
@@ -48,12 +50,14 @@
* @param name router name
* @param description router description
* @param enableSnat snat use indicator
+ * @param mac MAC address
* @param internal internal networks
* @param external external network
* @param peerRouter external peer router
* @param gateway elected gateway node id
*/
- public DefaultKubevirtRouter(String name, String description, boolean enableSnat,
+ public DefaultKubevirtRouter(String name, String description,
+ boolean enableSnat, MacAddress mac,
Set<String> internal,
Map<String, String> external,
KubevirtPeerRouter peerRouter,
@@ -61,6 +65,7 @@
this.name = name;
this.description = description;
this.enableSnat = enableSnat;
+ this.mac = mac;
this.internal = internal;
this.external = external;
this.peerRouter = peerRouter;
@@ -83,6 +88,11 @@
}
@Override
+ public MacAddress mac() {
+ return mac;
+ }
+
+ @Override
public Set<String> internal() {
if (internal == null) {
return ImmutableSet.of();
@@ -116,6 +126,7 @@
.name(name)
.enableSnat(enableSnat)
.description(description)
+ .mac(mac)
.internal(internal)
.external(external)
.peerRouter(updated)
@@ -129,6 +140,7 @@
.name(name)
.enableSnat(enableSnat)
.description(description)
+ .mac(mac)
.internal(internal)
.external(external)
.peerRouter(peerRouter)
@@ -146,14 +158,14 @@
}
DefaultKubevirtRouter that = (DefaultKubevirtRouter) o;
return enableSnat == that.enableSnat && name.equals(that.name) &&
- description.equals(that.description) && internal.equals(that.internal) &&
- external.equals(that.external) && peerRouter.equals(that.peerRouter) &&
- gateway.equals(that.electedGateway());
+ description.equals(that.description) && mac.equals(that.mac) &&
+ internal.equals(that.internal) && external.equals(that.external) &&
+ peerRouter.equals(that.peerRouter) && gateway.equals(that.electedGateway());
}
@Override
public int hashCode() {
- return Objects.hash(name, description, enableSnat,
+ return Objects.hash(name, description, mac, enableSnat,
internal, external, peerRouter, gateway);
}
@@ -163,6 +175,7 @@
.add("name", name)
.add("description", description)
.add("enableSnat", enableSnat)
+ .add("mac", mac)
.add("internal", internal)
.add("external", external)
.add("peerRouter", peerRouter)
@@ -184,6 +197,7 @@
private String name;
private String description;
private boolean enableSnat;
+ private MacAddress mac;
private Set<String> internal;
private Map<String, String> external;
private KubevirtPeerRouter peerRouter;
@@ -193,7 +207,7 @@
public KubevirtRouter build() {
checkArgument(name != null, NOT_NULL_MSG, "name");
- return new DefaultKubevirtRouter(name, description, enableSnat,
+ return new DefaultKubevirtRouter(name, description, enableSnat, mac,
internal, external, peerRouter, gateway);
}
@@ -216,6 +230,12 @@
}
@Override
+ public Builder mac(MacAddress mac) {
+ this.mac = mac;
+ return this;
+ }
+
+ @Override
public Builder internal(Set<String> internal) {
this.internal = Objects.requireNonNullElseGet(internal, HashSet::new);
return this;
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java
index c7ae7b4..db62c77 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtRouter.java
@@ -15,6 +15,8 @@
*/
package org.onosproject.kubevirtnetworking.api;
+import org.onlab.packet.MacAddress;
+
import java.util.Map;
import java.util.Set;
@@ -45,6 +47,13 @@
boolean enableSnat();
/**
+ * Returns the MAC address.
+ *
+ * @return mac address
+ */
+ MacAddress mac();
+
+ /**
* Returns a set of internal networks.
*
* @return a set of internal networks
@@ -124,6 +133,14 @@
Builder enableSnat(boolean flag);
/**
+ * Returns kubevirt router builder with supplied MAC address.
+ *
+ * @param mac MAC address
+ * @return router builder
+ */
+ Builder mac(MacAddress mac);
+
+ /**
* Returns kubevirt router builder with supplied internal networks.
*
* @param internal internal network set