Skip to content
Snippets Groups Projects
Commit 2477697c authored by Ryan Izard's avatar Ryan Izard
Browse files

Merge pull request #7 from Naveen165/master

Statistics update - support for OF 1.3 stats
parents e9b66b18 6cf19322
No related branches found
No related tags found
No related merge requests found
......@@ -80,6 +80,31 @@ public class AllSwitchStatisticsResource extends SwitchResourceBase {
type = OFStatsType.TABLE;
rType = REQUESTTYPE.OFSTATS;
break;
case OFStatsTypeStrings.GROUP:
type = OFStatsType.GROUP;
rType = REQUESTTYPE.OFSTATS;
break;
case OFStatsTypeStrings.GROUP_DESC:
type = OFStatsType.GROUP_DESC;
rType = REQUESTTYPE.OFSTATS;
break;
case OFStatsTypeStrings.GROUP_FEATURES:
type = OFStatsType.GROUP_FEATURES;
rType = REQUESTTYPE.OFSTATS;
break;
case OFStatsTypeStrings.METER:
type = OFStatsType.METER;
rType = REQUESTTYPE.OFSTATS;
break;
case OFStatsTypeStrings.METER_CONFIG:
type = OFStatsType.METER_CONFIG;
rType = REQUESTTYPE.OFSTATS;
break;
case OFStatsTypeStrings.METER_FEATURES:
type = OFStatsType.METER_FEATURES;
rType = REQUESTTYPE.OFSTATS;
break;
case OFStatsTypeStrings.FEATURES:
rType = REQUESTTYPE.OFFEATURES;
break;
......
......@@ -27,6 +27,7 @@ import net.floodlightcontroller.core.internal.IOFSwitchService;
import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
import org.projectfloodlight.openflow.protocol.match.Match;
import org.projectfloodlight.openflow.protocol.ver13.OFMeterSerializerVer13;
import org.projectfloodlight.openflow.types.DatapathId;
import org.projectfloodlight.openflow.types.OFPort;
import org.projectfloodlight.openflow.types.TableId;
......@@ -114,22 +115,55 @@ public class SwitchResourceBase extends ServerResource {
.build();
break;
case DESC:
case TABLE:
// pass - nothing todo besides set the type above
req = sw.getOFFactory().buildDescStatsRequest()
.build();
break;
case PORT_DESC:
req = sw.getOFFactory().buildPortDescStatsRequest()
case GROUP:
req = sw.getOFFactory().buildGroupStatsRequest()
.build();
case EXPERIMENTER: //TODO @Ryan support new OF1.1+ stats types
case GROUP:
case GROUP_DESC:
case GROUP_FEATURES:
break;
case METER:
req = sw.getOFFactory().buildMeterStatsRequest()
.setMeterId(OFMeterSerializerVer13.ALL_VAL)
.build();
break;
case GROUP_DESC:
req = sw.getOFFactory().buildGroupDescStatsRequest()
.build();
break;
case GROUP_FEATURES:
req = sw.getOFFactory().buildGroupFeaturesStatsRequest()
.build();
break;
case METER_CONFIG:
req = sw.getOFFactory().buildMeterConfigStatsRequest()
.build();
break;
case METER_FEATURES:
case TABLE_FEATURES:
req = sw.getOFFactory().buildMeterFeaturesStatsRequest()
.build();
break;
case TABLE:
req = sw.getOFFactory().buildTableStatsRequest()
.build();
break;
case TABLE_FEATURES:
req = sw.getOFFactory().buildTableFeaturesStatsRequest()
.build();
break;
case PORT_DESC:
req = sw.getOFFactory().buildPortDescStatsRequest()
.build();
break;
case EXPERIMENTER: //TODO @Ryan support new OF1.1+ stats types
default:
log.error("Stats Request Type {} not implemented yet", statType.name());
break;
......@@ -174,6 +208,5 @@ public class SwitchResourceBase extends ServerResource {
protected OFFeaturesReply getSwitchFeaturesReply(String switchId) {
return getSwitchFeaturesReply(DatapathId.of(switchId));
}
}
}
......@@ -36,6 +36,7 @@ public class SwitchStatisticsResource extends SwitchResourceBase {
@Get("json")
public StatsReply retrieve(){
StatsReply result = new StatsReply();
Object values = null; // set for error detection in serializer
String switchIdStr = (String) getRequestAttributes().get(CoreWebRoutable.STR_SWITCH_ID);
......@@ -77,47 +78,47 @@ public class SwitchStatisticsResource extends SwitchResourceBase {
case OFStatsTypeStrings.DESC:
values = getSwitchStatistics(switchId, OFStatsType.DESC);
result.setStatType(OFStatsType.DESC);
break;
case OFStatsTypeStrings.TABLE:
values = getSwitchStatistics(switchId, OFStatsType.TABLE);
result.setStatType(OFStatsType.TABLE);
break;
case OFStatsTypeStrings.TABLE_FEATURES:
values = getSwitchFeaturesReply(switchId);
result.setStatType(OFStatsType.TABLE_FEATURES);
break;
case OFStatsTypeStrings.EXPERIMENTER:
values = getSwitchFeaturesReply(switchId);
result.setStatType(OFStatsType.EXPERIMENTER);
break;
break;
case OFStatsTypeStrings.PORT_DESC:
values = getSwitchStatistics(switchId, OFStatsType.PORT_DESC);
result.setStatType(OFStatsType.PORT_DESC);
break;
case OFStatsTypeStrings.GROUP:
values = getSwitchFeaturesReply(switchId);
values = getSwitchStatistics(switchId, OFStatsType.GROUP);
result.setStatType(OFStatsType.GROUP);
break;
case OFStatsTypeStrings.GROUP_DESC:
values = getSwitchFeaturesReply(switchId);
values = getSwitchStatistics(switchId, OFStatsType.GROUP_DESC);
result.setStatType(OFStatsType.GROUP_DESC);
break;
case OFStatsTypeStrings.GROUP_FEATURES:
values = getSwitchFeaturesReply(switchId);
values = getSwitchStatistics(switchId, OFStatsType.GROUP_FEATURES);
result.setStatType(OFStatsType.GROUP_FEATURES);
break;
case OFStatsTypeStrings.METER:
values = getSwitchFeaturesReply(switchId);
values = getSwitchStatistics(switchId, OFStatsType.METER);
result.setStatType(OFStatsType.METER);
break;
case OFStatsTypeStrings.METER_CONFIG:
values = getSwitchFeaturesReply(switchId);
values = getSwitchStatistics(switchId, OFStatsType.METER_CONFIG);
result.setStatType(OFStatsType.METER_CONFIG);
break;
case OFStatsTypeStrings.METER_FEATURES:
values = getSwitchFeaturesReply(switchId);
values = getSwitchStatistics(switchId, OFStatsType.METER_FEATURES);
result.setStatType(OFStatsType.METER_FEATURES);
break;
case OFStatsTypeStrings.TABLE:
values = getSwitchStatistics(switchId, OFStatsType.TABLE);
result.setStatType(OFStatsType.TABLE);
break;
case OFStatsTypeStrings.TABLE_FEATURES:
values = getSwitchStatistics(switchId, OFStatsType.TABLE_FEATURES);
result.setStatType(OFStatsType.TABLE_FEATURES);
break;
case OFStatsTypeStrings.EXPERIMENTER:
values = getSwitchFeaturesReply(switchId);
result.setStatType(OFStatsType.EXPERIMENTER);
break;
default:
log.error("Invalid or unimplemented stat request type {}", statType);
break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment