adding iptv provisioning
Change-Id: I11fcc788402793d0bf3ac9d9f03ed77e093d98ad
diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
index f3bd96c..ab31aee 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
@@ -168,6 +168,8 @@
.withTreatment(down)
.add();
+
+
flowObjectiveService.forward(fabricDeviceId, upCtrl);
flowObjectiveService.forward(fabricDeviceId, downCtrl);
flowObjectiveService.forward(fabricDeviceId, radiusToController);
@@ -181,6 +183,10 @@
removeVlan(vlan.vlan());
+ if (vlan.iptv()) {
+ provisionIPTV();
+ }
+
vlan.ports().forEach(cp -> {
if (vlans.put(vlan.vlan(), cp)) {
addForwarding(vlan.vlan(), cp.deviceId(), cp.port(),
@@ -192,6 +198,46 @@
});
}
+ //FIXME: pass iptv vlan in here.
+ private void provisionIPTV() {
+ TrafficSelector ipTvUp = DefaultTrafficSelector.builder()
+ .matchVlanId(VlanId.vlanId((short) 7))
+ .matchInPort(PortNumber.portNumber(2))
+ .build();
+
+ TrafficTreatment ipTvActUp = DefaultTrafficTreatment.builder()
+ .setOutput(PortNumber.portNumber(7)).build();
+
+ TrafficSelector ipTvDown = DefaultTrafficSelector.builder()
+ .matchVlanId(VlanId.vlanId((short) 7))
+ .matchInPort(PortNumber.portNumber(7))
+ .build();
+
+ TrafficTreatment ipTvActDown = DefaultTrafficTreatment.builder()
+ .setOutput(PortNumber.portNumber(2)).build();
+
+ ForwardingObjective ipTvUpstream = DefaultForwardingObjective.builder()
+ .fromApp(appId)
+ .makePermanent()
+ .withFlag(ForwardingObjective.Flag.VERSATILE)
+ .withPriority(PRIORITY)
+ .withSelector(ipTvUp)
+ .withTreatment(ipTvActUp)
+ .add();
+
+ ForwardingObjective ipTvDownstream = DefaultForwardingObjective.builder()
+ .fromApp(appId)
+ .makePermanent()
+ .withFlag(ForwardingObjective.Flag.VERSATILE)
+ .withPriority(PRIORITY)
+ .withSelector(ipTvDown)
+ .withTreatment(ipTvActDown)
+ .add();
+
+ flowObjectiveService.forward(fabricDeviceId, ipTvUpstream);
+ flowObjectiveService.forward(fabricDeviceId, ipTvDownstream);
+ }
+
@Override
public void removeVlan(VlanId vlanId) {
vlans.removeAll(vlanId)
@@ -202,7 +248,9 @@
public List<FabricVlan> getVlans() {
List<FabricVlan> fVlans = new ArrayList<>();
vlans.keySet().forEach(vlan -> fVlans.add(
- new FabricVlan(vlan, vlans.get(vlan))));
+ //FIXME: Very aweful but will fo for now
+ new FabricVlan(vlan, vlans.get(vlan),
+ vlan.toShort() == 201 ? true : false)));
return fVlans;
}
@@ -217,6 +265,7 @@
private void addForwarding(VlanId vlanId, DeviceId deviceId, PortNumber inPort,
List<PortNumber> outPorts) {
+
TrafficSelector selector = DefaultTrafficSelector.builder()
.matchVlanId(vlanId)
.matchInPort(inPort)
diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlan.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlan.java
index d145928..a5cfc07 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlan.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlan.java
@@ -33,12 +33,14 @@
private final VlanId vlan;
private final List<ConnectPoint> ports;
+ private final boolean iptv;
- public FabricVlan(VlanId vlan, Collection<ConnectPoint> ports) {
+ public FabricVlan(VlanId vlan, Collection<ConnectPoint> ports, boolean iptv) {
checkNotNull(vlan);
checkNotNull(ports);
this.vlan = vlan;
this.ports = ImmutableList.copyOf(ports);
+ this.iptv = iptv;
}
public VlanId vlan() {
@@ -48,4 +50,8 @@
public List<ConnectPoint> ports() {
return ports;
}
+
+ public boolean iptv() {
+ return iptv;
+ }
}
diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlanCodec.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlanCodec.java
index 0a097b2..00736bc 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlanCodec.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricVlanCodec.java
@@ -37,6 +37,7 @@
// JSON field names
private static final String VLAN = "vlan";
private static final String PORTS = "ports";
+ private static final String IPTV = "iptv";
@Override
public ObjectNode encode(FabricVlan vlan, CodecContext context) {
@@ -54,6 +55,7 @@
@Override
public FabricVlan decode(ObjectNode json, CodecContext context) {
short vlan = json.path(VLAN).shortValue();
+ boolean iptv = json.path(IPTV).booleanValue();
List<ConnectPoint> ports = new ArrayList<>();
ArrayNode portArray = (ArrayNode) json.path(PORTS);
@@ -61,6 +63,6 @@
ports.add(context.codec(ConnectPoint.class).decode((ObjectNode) o, context));
}
- return new FabricVlan(VlanId.vlanId(vlan), ports);
+ return new FabricVlan(VlanId.vlanId(vlan), ports, iptv);
}
}
diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/cli/FabricAddCommand.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/cli/FabricAddCommand.java
index cfa26be..e8cc641 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/cli/FabricAddCommand.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/cli/FabricAddCommand.java
@@ -59,6 +59,6 @@
ports.add(ConnectPoint.deviceConnectPoint(portString));
}
- service.addVlan(new FabricVlan(vlan, ports));
+ service.addVlan(new FabricVlan(vlan, ports, false));
}
}