Revert "Revert "SEBA-814 To support Multi-Tcont on TT-workflow, SADIS configuration is updated.""
(Re-applying changes after releasing and bumping major version)
This reverts commit e4f4b63f171ffd2ec92ee6e3a3f35e8905bce215.
Change-Id: I7b34c094f95455becffa7fa55d1de9eba55d298a
diff --git a/app/src/main/java/org/opencord/sadis/impl/SubscriberAndDeviceInformationConfig.java b/app/src/main/java/org/opencord/sadis/impl/SubscriberAndDeviceInformationConfig.java
index 61e097b..d794433 100644
--- a/app/src/main/java/org/opencord/sadis/impl/SubscriberAndDeviceInformationConfig.java
+++ b/app/src/main/java/org/opencord/sadis/impl/SubscriberAndDeviceInformationConfig.java
@@ -20,10 +20,12 @@
import java.util.List;
import org.onlab.packet.Ip4Address;
+import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
import org.opencord.sadis.BaseConfig;
import org.opencord.sadis.SubscriberAndDeviceInformation;
+import org.opencord.sadis.UniTagInformation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,8 +52,6 @@
* "entries" : [
* {
* "id" : "uniqueid",
- * "ctag" : int,
- * "stag" : int,
* "nasportid" : string,
* "port" : int,
* "slot" : int,
@@ -59,10 +59,26 @@
* "ipAddress" : string,
* "nasId" : string,
* "circuitId" : string,
- * "removeId" : string,
- * "technologyProfileId" : int,
- * "upstreamBandwidthProfile" : string,
- * "downstreamBandwidthProfile" : string
+ * "remoteId" : string,
+ * "uniTagList": [
+ * {
+ * "uniTagMatch" : int,
+ * "ponCTag" : string,
+ * "ponSTag" : string,
+ * "usPonCTagPriority" : int,
+ * "dsPonCTagPriority" : int,
+ * "usPonSTagPriority" : int,
+ * "dsPonSTagPriority" : int,
+ * "technologyProfileId" : int,
+ * "upstreamBandwidthProfile" : string,
+ * "downstreamBandwidthProfile": string,
+ * "enableMacLearning" : string,
+ * "configuredDacAddress" : string,
+ * "isDhcpRequired" : string,
+ * "isIgmpRequired" : string,
+ * "serviceName" : string
+ * }
+ * ]
* }, ...
* ]
* }
@@ -71,6 +87,23 @@
public class SubscriberAndDeviceInformationConfig extends BaseConfig<SubscriberAndDeviceInformation> {
private final Logger log = LoggerFactory.getLogger(this.getClass());
+ private static final int NO_PCP = -1;
+ private static final String NO_SN = "";
+ private static final String UNI_TAG_MATCH = "uniTagMatch";
+ private static final String PON_C_TAG = "ponCTag";
+ private static final String PON_S_TAG = "ponSTag";
+ private static final String US_C_TAG_PCP = "usPonCTagPriority";
+ private static final String US_S_TAG_PCP = "usPonSTagPriority";
+ private static final String DS_C_TAG_PCP = "dsPonCTagPriority";
+ private static final String DS_S_TAG_PCP = "dsPonSTagPriority";
+ private static final String MAC_LEARNING = "enableMacLearning";
+ private static final String TP_ID = "technologyProfileId";
+ private static final String US_BW = "upstreamBandwidthProfile";
+ private static final String DS_BW = "downstreamBandwidthProfile";
+ private static final String SERVICE_NAME = "serviceName";
+ private static final String IS_DHCP_REQ = "isDhcpRequired";
+ private static final String IS_IGMP_REQ = "isIgmpRequired";
+ private static final String MAC_ADDRESS = "configuredMacAddress";
public List<SubscriberAndDeviceInformation> getEntries() {
List<SubscriberAndDeviceInformation> result = new ArrayList<>();
@@ -78,6 +111,7 @@
SimpleModule module = new SimpleModule();
module.addDeserializer(VlanId.class, new VlanIdDeserializer());
module.addDeserializer(Ip4Address.class, new Ip4AddressDeserializer());
+ module.addDeserializer(UniTagInformation.class, new UniTagDeserializer());
mapper.registerModule(module);
final JsonNode entries = this.object.path(ENTRIES);
entries.forEach(entry -> {
@@ -110,4 +144,44 @@
return Ip4Address.valueOf(node.asText());
}
}
+
+ public class UniTagDeserializer extends JsonDeserializer<UniTagInformation> {
+ @Override
+ public UniTagInformation deserialize(JsonParser jp, DeserializationContext ctxt)
+ throws IOException {
+ ObjectCodec oc = jp.getCodec();
+ JsonNode node = oc.readTree(jp);
+ return getUniTagInformation(node);
+ }
+ }
+
+ public UniTagInformation getUniTagInformation(JsonNode node) {
+ return new UniTagInformation.Builder()
+ .setUniTagMatch(VlanId.vlanId(node.get(UNI_TAG_MATCH) == null ? VlanId.NO_VID
+ : (short) node.get(UNI_TAG_MATCH).asInt()))
+ .setPonCTag(VlanId.vlanId((short) node.get(PON_C_TAG).asInt()))
+ .setPonSTag(VlanId.vlanId((short) node.get(PON_S_TAG).asInt()))
+ .setUsPonCTagPriority(node.get(US_C_TAG_PCP) == null ? NO_PCP :
+ node.get(US_C_TAG_PCP).asInt())
+ .setUsPonSTagPriority(node.get(US_S_TAG_PCP) == null ? NO_PCP :
+ node.get(US_S_TAG_PCP).asInt())
+ .setDsPonCTagPriority(node.get(DS_C_TAG_PCP) == null ? NO_PCP :
+ node.get(DS_C_TAG_PCP).asInt())
+ .setDsPonSTagPriority(node.get(DS_S_TAG_PCP) == null ? NO_PCP :
+ node.get(DS_S_TAG_PCP).asInt())
+ .setEnableMacLearning(node.get(MAC_LEARNING) == null ? false :
+ node.get(MAC_LEARNING).asBoolean())
+ .setTechnologyProfileId(node.get(TP_ID).asInt())
+ .setUpstreamBandwidthProfile(node.get(US_BW) == null ? null
+ : node.get(US_BW).asText())
+ .setDownstreamBandwidthProfile(node.get(DS_BW) == null ? null
+ : node.get(DS_BW).asText())
+ .setServiceName(node.get(SERVICE_NAME) == null ? NO_SN :
+ node.get(SERVICE_NAME).asText())
+ .setIsDhcpRequired(node.get(IS_DHCP_REQ) == null ? false : node.get(IS_DHCP_REQ).asBoolean())
+ .setIsIgmpRequired(node.get(IS_IGMP_REQ) == null ? false : node.get(IS_IGMP_REQ).asBoolean())
+ .setConfiguredMacAddress(node.get(MAC_ADDRESS) == null ? MacAddress.NONE.toString() :
+ node.get(MAC_ADDRESS).asText())
+ .build();
+ }
}