small fix to flowid
Change-Id: I7ba950cf3fe874a094ddd3f93a8d72df0cba89c0
Showing
3 changed files
with
80 additions
and
2 deletions
1 | +package org.onlab.onos.cli.net; | ||
2 | + | ||
3 | +import static com.google.common.collect.Lists.newArrayList; | ||
4 | + | ||
5 | +import java.util.Collections; | ||
6 | +import java.util.Comparator; | ||
7 | +import java.util.List; | ||
8 | +import java.util.Map; | ||
9 | + | ||
10 | +import org.apache.karaf.shell.commands.Command; | ||
11 | +import org.onlab.onos.cli.AbstractShellCommand; | ||
12 | +import org.onlab.onos.net.Device; | ||
13 | +import org.onlab.onos.net.device.DeviceService; | ||
14 | +import org.onlab.onos.net.flow.FlowRule; | ||
15 | +import org.onlab.onos.net.flow.FlowRuleService; | ||
16 | + | ||
17 | +import com.google.common.collect.Maps; | ||
18 | + | ||
19 | +/** | ||
20 | + * Lists all currently-known hosts. | ||
21 | + */ | ||
22 | +@Command(scope = "onos", name = "flows", | ||
23 | +description = "Lists all currently-known flows.") | ||
24 | +public class FlowsListCommand extends AbstractShellCommand { | ||
25 | + | ||
26 | + private static final String FMT = | ||
27 | + " id=%s, selector=%s, treatment=%s, state=%s"; | ||
28 | + | ||
29 | + protected static final Comparator<FlowRule> ID_COMPARATOR = new Comparator<FlowRule>() { | ||
30 | + @Override | ||
31 | + public int compare(FlowRule f1, FlowRule f2) { | ||
32 | + return Long.valueOf(f1.id().value()).compareTo(f2.id().value()); | ||
33 | + } | ||
34 | + }; | ||
35 | + | ||
36 | + @Override | ||
37 | + protected Object doExecute() throws Exception { | ||
38 | + DeviceService deviceService = getService(DeviceService.class); | ||
39 | + FlowRuleService service = getService(FlowRuleService.class); | ||
40 | + Map<Device, List<FlowRule>> flows = getSortedFlows(deviceService, service); | ||
41 | + for (Device d : deviceService.getDevices()) { | ||
42 | + printFlows(d, flows.get(d)); | ||
43 | + } | ||
44 | + return null; | ||
45 | + } | ||
46 | + | ||
47 | + | ||
48 | + /** | ||
49 | + * Returns the list of devices sorted using the device ID URIs. | ||
50 | + * | ||
51 | + * @param service device service | ||
52 | + * @return sorted device list | ||
53 | + */ | ||
54 | + protected Map<Device, List<FlowRule>> getSortedFlows(DeviceService deviceService, FlowRuleService service) { | ||
55 | + Map<Device, List<FlowRule>> flows = Maps.newHashMap(); | ||
56 | + List<FlowRule> rules; | ||
57 | + for (Device d : deviceService.getDevices()) { | ||
58 | + rules = newArrayList(service.getFlowEntries(d.id())); | ||
59 | + Collections.sort(rules, ID_COMPARATOR); | ||
60 | + flows.put(d, rules); | ||
61 | + } | ||
62 | + return flows; | ||
63 | + } | ||
64 | + | ||
65 | + /** | ||
66 | + * Prints flows. | ||
67 | + * @param d the device | ||
68 | + * @param flows the set of flows for that device. | ||
69 | + */ | ||
70 | + protected void printFlows(Device d, List<FlowRule> flows) { | ||
71 | + print("Device: " + d.id()); | ||
72 | + for (FlowRule f : flows) { | ||
73 | + print(FMT, f.id().value(), f.selector(), f.treatment(), f.state()); | ||
74 | + } | ||
75 | + | ||
76 | + } | ||
77 | + | ||
78 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -37,7 +37,7 @@ public class DefaultFlowRule implements FlowRule { | ... | @@ -37,7 +37,7 @@ public class DefaultFlowRule implements FlowRule { |
37 | 37 | ||
38 | public DefaultFlowRule(DeviceId deviceId, TrafficSelector selector, | 38 | public DefaultFlowRule(DeviceId deviceId, TrafficSelector selector, |
39 | TrafficTreatment treatment, int priority, FlowRuleState state, | 39 | TrafficTreatment treatment, int priority, FlowRuleState state, |
40 | - long life, long packets, long bytes, Integer flowId) { | 40 | + long life, long packets, long bytes, long flowId) { |
41 | this.deviceId = deviceId; | 41 | this.deviceId = deviceId; |
42 | this.priority = priority; | 42 | this.priority = priority; |
43 | this.selector = selector; | 43 | this.selector = selector; | ... | ... |
... | @@ -13,7 +13,7 @@ public final class FlowId { | ... | @@ -13,7 +13,7 @@ public final class FlowId { |
13 | this.flowid = id; | 13 | this.flowid = id; |
14 | } | 14 | } |
15 | 15 | ||
16 | - public static FlowId valueOf(int id) { | 16 | + public static FlowId valueOf(long id) { |
17 | return new FlowId(id); | 17 | return new FlowId(id); |
18 | } | 18 | } |
19 | 19 | ... | ... |
-
Please register or login to post a comment