blob: ade65fae982967949b837b9639f6461fc121c802 [file] [log] [blame]
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -07001package net.floodlightcontroller.core.web.serializers;
2import java.io.IOException;
3import java.util.List;
4
5import net.floodlightcontroller.core.web.OFGroupDescStatsEntryMod;
6
Fahad Naeem Khanc4e73882014-10-09 14:19:42 -07007import org.apache.commons.codec.binary.Hex;
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -07008import org.codehaus.jackson.JsonGenerationException;
9import org.codehaus.jackson.JsonGenerator;
10import org.codehaus.jackson.map.SerializerProvider;
11import org.codehaus.jackson.map.ser.std.SerializerBase;
12import org.projectfloodlight.openflow.protocol.OFActionType;
13import org.projectfloodlight.openflow.protocol.OFBucket;
14import org.projectfloodlight.openflow.protocol.OFGroupDescStatsEntry;
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070015import org.projectfloodlight.openflow.protocol.action.*;
16public class OFGroupDescStatsEntryModSerializer extends SerializerBase<OFGroupDescStatsEntryMod>{
17
18
19
20 protected OFGroupDescStatsEntryModSerializer(){
21 super(OFGroupDescStatsEntryMod.class);
22 }
Fahad Naeem Khan0c1c7b32014-10-07 16:22:23 -070023//TODO:- Java-doc
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070024
25 @Override
Fahad Naeem Khan8a8daf22014-10-06 14:07:43 -070026 public void serialize(OFGroupDescStatsEntryMod groupDescStatsModEntry, JsonGenerator jGen,
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070027 SerializerProvider sp) throws IOException,
28 JsonGenerationException {
Fahad Naeem Khan8a8daf22014-10-06 14:07:43 -070029 OFGroupDescStatsEntry groupDescStatsEntryMod = groupDescStatsModEntry.getGroupDescStatsEntry();
30 List<OFBucket> Buckets = groupDescStatsEntryMod.getBuckets();
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070031 jGen.writeStartObject();
Fahad Naeem Khan8a8daf22014-10-06 14:07:43 -070032 jGen.writeNumberField("groupId", groupDescStatsEntryMod.getGroup().getGroupNumber());
33 jGen.writeStringField("groupType", groupDescStatsEntryMod.getGroupType().name());
34 jGen.writeArrayFieldStart("bucketsActions");
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070035 for (OFBucket bucket : Buckets){
Fahad Naeem Khan8a8daf22014-10-06 14:07:43 -070036 jGen.writeStartObject();
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070037 List<OFAction> actions = bucket.getActions();
38 for (OFAction action : actions ){
39 if(action.getType().compareTo(OFActionType.SET_FIELD) == 0){
Fahad Naeem Khan0c1c7b32014-10-07 16:22:23 -070040 /*
41 * TODO: 1-Need better if condition.
42 * TODO: 2-Complete REST response. (Right now we are only sending what
43 * SegmentRouter CLI needs).
44 */
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070045 if (((OFActionSetField)action).getField().toString().contains("OFOxmEthSrcVer13")){
46 jGen.writeStringField("SET_DL_SRC", ((OFActionSetField)action).getField().getValue().toString());
47 }
48 else if (((OFActionSetField)action).getField().toString().contains("OFOxmEthDstVer13")){
49 jGen.writeStringField("SET_DL_DST", ((OFActionSetField)action).getField().getValue().toString());
50 }
Fahad Naeem Khanc4e73882014-10-09 14:19:42 -070051 else if (((OFActionSetField)action).getField().toString().contains("OFOxmMplsLabelVer13")){
Fahad Naeem Khan725bcf22014-10-20 11:35:53 -070052 jGen.writeNumberField("PUSH_MPLS_LABEL",
Fahad Naeem Khanf59c2852014-10-10 18:52:26 -070053 Integer.decode(((OFActionSetField)action).getField().getValue().toString()));
Fahad Naeem Khanc4e73882014-10-09 14:19:42 -070054 }
Fahad Naeem Khan725bcf22014-10-20 11:35:53 -070055 else if (((OFActionSetField)action).getField().toString().contains("OFOxmMplsBosVer13")){
56 jGen.writeStringField("PUSH_MPLS_BOS",
57 ((OFActionSetField)action).getField().getValue().toString());
58 }
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070059 }
60 else if(action.getType().compareTo(OFActionType.OUTPUT) == 0){
61 jGen.writeNumberField("OUTPPUT", ((OFActionOutput)action).getPort().getPortNumber());
62 }
Fahad Naeem Khanc4e73882014-10-09 14:19:42 -070063 else if(action.getType().compareTo(OFActionType.POP_MPLS) == 0){
Fahad Naeem Khan725bcf22014-10-20 11:35:53 -070064 jGen.writeStringField("POP_MPLS", ((OFActionPopMpls)action).getEthertype().toString());
Fahad Naeem Khanc4e73882014-10-09 14:19:42 -070065 }
Fahad Naeem Khan6ead4622014-10-16 12:33:29 -070066 else if(action.getType().compareTo(OFActionType.GROUP) == 0){
67 jGen.writeNumberField("goToGroup", ((OFActionGroup)action).getGroup().getGroupNumber());
68 }
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070069 }
Fahad Naeem Khan8a8daf22014-10-06 14:07:43 -070070 jGen.writeEndObject();
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070071 }
Fahad Naeem Khan8a8daf22014-10-06 14:07:43 -070072 jGen.writeEndArray();
Fahad Naeem Khan9ae7fa12014-10-03 14:30:55 -070073 jGen.writeEndObject();
74
75 }
76
77}