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 { ...@@ -80,6 +80,31 @@ public class AllSwitchStatisticsResource extends SwitchResourceBase {
type = OFStatsType.TABLE; type = OFStatsType.TABLE;
rType = REQUESTTYPE.OFSTATS; rType = REQUESTTYPE.OFSTATS;
break; 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: case OFStatsTypeStrings.FEATURES:
rType = REQUESTTYPE.OFFEATURES; rType = REQUESTTYPE.OFFEATURES;
break; break;
......
...@@ -27,6 +27,7 @@ import net.floodlightcontroller.core.internal.IOFSwitchService; ...@@ -27,6 +27,7 @@ import net.floodlightcontroller.core.internal.IOFSwitchService;
import org.projectfloodlight.openflow.protocol.OFFeaturesReply; import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
import org.projectfloodlight.openflow.protocol.match.Match; 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.DatapathId;
import org.projectfloodlight.openflow.types.OFPort; import org.projectfloodlight.openflow.types.OFPort;
import org.projectfloodlight.openflow.types.TableId; import org.projectfloodlight.openflow.types.TableId;
...@@ -114,22 +115,55 @@ public class SwitchResourceBase extends ServerResource { ...@@ -114,22 +115,55 @@ public class SwitchResourceBase extends ServerResource {
.build(); .build();
break; break;
case DESC: case DESC:
case TABLE:
// pass - nothing todo besides set the type above // pass - nothing todo besides set the type above
req = sw.getOFFactory().buildDescStatsRequest() req = sw.getOFFactory().buildDescStatsRequest()
.build(); .build();
break; break;
case PORT_DESC: case GROUP:
req = sw.getOFFactory().buildPortDescStatsRequest() req = sw.getOFFactory().buildGroupStatsRequest()
.build(); .build();
case EXPERIMENTER: //TODO @Ryan support new OF1.1+ stats types break;
case GROUP:
case GROUP_DESC:
case GROUP_FEATURES:
case METER: 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: case METER_CONFIG:
req = sw.getOFFactory().buildMeterConfigStatsRequest()
.build();
break;
case METER_FEATURES: 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: default:
log.error("Stats Request Type {} not implemented yet", statType.name()); log.error("Stats Request Type {} not implemented yet", statType.name());
break; break;
...@@ -174,6 +208,5 @@ public class SwitchResourceBase extends ServerResource { ...@@ -174,6 +208,5 @@ public class SwitchResourceBase extends ServerResource {
protected OFFeaturesReply getSwitchFeaturesReply(String switchId) { protected OFFeaturesReply getSwitchFeaturesReply(String switchId) {
return getSwitchFeaturesReply(DatapathId.of(switchId)); return getSwitchFeaturesReply(DatapathId.of(switchId));
} }
} }
...@@ -36,6 +36,7 @@ public class SwitchStatisticsResource extends SwitchResourceBase { ...@@ -36,6 +36,7 @@ public class SwitchStatisticsResource extends SwitchResourceBase {
@Get("json") @Get("json")
public StatsReply retrieve(){ public StatsReply retrieve(){
StatsReply result = new StatsReply(); StatsReply result = new StatsReply();
Object values = null; // set for error detection in serializer Object values = null; // set for error detection in serializer
String switchIdStr = (String) getRequestAttributes().get(CoreWebRoutable.STR_SWITCH_ID); String switchIdStr = (String) getRequestAttributes().get(CoreWebRoutable.STR_SWITCH_ID);
...@@ -77,47 +78,47 @@ public class SwitchStatisticsResource extends SwitchResourceBase { ...@@ -77,47 +78,47 @@ public class SwitchStatisticsResource extends SwitchResourceBase {
case OFStatsTypeStrings.DESC: case OFStatsTypeStrings.DESC:
values = getSwitchStatistics(switchId, OFStatsType.DESC); values = getSwitchStatistics(switchId, OFStatsType.DESC);
result.setStatType(OFStatsType.DESC); result.setStatType(OFStatsType.DESC);
break; 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;
case OFStatsTypeStrings.PORT_DESC: case OFStatsTypeStrings.PORT_DESC:
values = getSwitchStatistics(switchId, OFStatsType.PORT_DESC); values = getSwitchStatistics(switchId, OFStatsType.PORT_DESC);
result.setStatType(OFStatsType.PORT_DESC); result.setStatType(OFStatsType.PORT_DESC);
break; break;
case OFStatsTypeStrings.GROUP: case OFStatsTypeStrings.GROUP:
values = getSwitchFeaturesReply(switchId); values = getSwitchStatistics(switchId, OFStatsType.GROUP);
result.setStatType(OFStatsType.GROUP); result.setStatType(OFStatsType.GROUP);
break; break;
case OFStatsTypeStrings.GROUP_DESC: case OFStatsTypeStrings.GROUP_DESC:
values = getSwitchFeaturesReply(switchId); values = getSwitchStatistics(switchId, OFStatsType.GROUP_DESC);
result.setStatType(OFStatsType.GROUP_DESC); result.setStatType(OFStatsType.GROUP_DESC);
break; break;
case OFStatsTypeStrings.GROUP_FEATURES: case OFStatsTypeStrings.GROUP_FEATURES:
values = getSwitchFeaturesReply(switchId); values = getSwitchStatistics(switchId, OFStatsType.GROUP_FEATURES);
result.setStatType(OFStatsType.GROUP_FEATURES); result.setStatType(OFStatsType.GROUP_FEATURES);
break; break;
case OFStatsTypeStrings.METER: case OFStatsTypeStrings.METER:
values = getSwitchFeaturesReply(switchId); values = getSwitchStatistics(switchId, OFStatsType.METER);
result.setStatType(OFStatsType.METER); result.setStatType(OFStatsType.METER);
break; break;
case OFStatsTypeStrings.METER_CONFIG: case OFStatsTypeStrings.METER_CONFIG:
values = getSwitchFeaturesReply(switchId); values = getSwitchStatistics(switchId, OFStatsType.METER_CONFIG);
result.setStatType(OFStatsType.METER_CONFIG); result.setStatType(OFStatsType.METER_CONFIG);
break; break;
case OFStatsTypeStrings.METER_FEATURES: case OFStatsTypeStrings.METER_FEATURES:
values = getSwitchFeaturesReply(switchId); values = getSwitchStatistics(switchId, OFStatsType.METER_FEATURES);
result.setStatType(OFStatsType.METER_FEATURES); result.setStatType(OFStatsType.METER_FEATURES);
break; 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: default:
log.error("Invalid or unimplemented stat request type {}", statType); log.error("Invalid or unimplemented stat request type {}", statType);
break; 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