Committed by
Gerrit Code Review
Currently need to specify handshaker behavior in onos-drivers xml file.
Later this need will be removed as the system will use default behaviors. Fixed a bug in group checker where it was consulting the wrong map. Cleaned up some logs Change-Id: I45d91bc8d4c19474dcf0c37f82763985e5d2c84f
Showing
4 changed files
with
35 additions
and
23 deletions
... | @@ -366,14 +366,14 @@ public class BgpRouter { | ... | @@ -366,14 +366,14 @@ public class BgpRouter { |
366 | @Override | 366 | @Override |
367 | public void onSuccess(Objective objective) { | 367 | public void onSuccess(Objective objective) { |
368 | log.info("Successfully installed interface based " | 368 | log.info("Successfully installed interface based " |
369 | - + "filtering objcetives"); | 369 | + + "filtering objcetives for intf {}", intf); |
370 | } | 370 | } |
371 | 371 | ||
372 | @Override | 372 | @Override |
373 | public void onError(Objective objective, | 373 | public void onError(Objective objective, |
374 | ObjectiveError error) { | 374 | ObjectiveError error) { |
375 | - log.error("Failed to install interface filters {}: {}", | 375 | + log.error("Failed to install interface filters for intf {}: {}", |
376 | - objective, error); | 376 | + intf, error); |
377 | // TODO something more than just logging | 377 | // TODO something more than just logging |
378 | } | 378 | } |
379 | })); | 379 | })); | ... | ... |
... | @@ -353,14 +353,14 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline | ... | @@ -353,14 +353,14 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline |
353 | flowRuleService.apply(ops.build(new FlowRuleOperationsContext() { | 353 | flowRuleService.apply(ops.build(new FlowRuleOperationsContext() { |
354 | @Override | 354 | @Override |
355 | public void onSuccess(FlowRuleOperations ops) { | 355 | public void onSuccess(FlowRuleOperations ops) { |
356 | - pass(filt); | ||
357 | log.info("Applied filtering rules"); | 356 | log.info("Applied filtering rules"); |
357 | + pass(filt); | ||
358 | } | 358 | } |
359 | 359 | ||
360 | @Override | 360 | @Override |
361 | public void onError(FlowRuleOperations ops) { | 361 | public void onError(FlowRuleOperations ops) { |
362 | - fail(filt, ObjectiveError.FLOWINSTALLATIONFAILED); | ||
363 | log.info("Failed to apply filtering rules"); | 362 | log.info("Failed to apply filtering rules"); |
363 | + fail(filt, ObjectiveError.FLOWINSTALLATIONFAILED); | ||
364 | } | 364 | } |
365 | })); | 365 | })); |
366 | 366 | ||
... | @@ -377,7 +377,7 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline | ... | @@ -377,7 +377,7 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline |
377 | * @param nextObj the nextObjective of type SIMPLE | 377 | * @param nextObj the nextObjective of type SIMPLE |
378 | */ | 378 | */ |
379 | private void processSimpleNextObjective(NextObjective nextObj) { | 379 | private void processSimpleNextObjective(NextObjective nextObj) { |
380 | - // break up next objective to GroupChain objects | 380 | + // break up simple next objective to GroupChain objects |
381 | TrafficTreatment treatment = nextObj.next().iterator().next(); | 381 | TrafficTreatment treatment = nextObj.next().iterator().next(); |
382 | // for the l2interface group, get vlan and port info | 382 | // for the l2interface group, get vlan and port info |
383 | // for the l3unicast group, get the src/dst mac and vlan info | 383 | // for the l3unicast group, get the src/dst mac and vlan info |
... | @@ -824,7 +824,7 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline | ... | @@ -824,7 +824,7 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline |
824 | private class GroupChecker implements Runnable { | 824 | private class GroupChecker implements Runnable { |
825 | @Override | 825 | @Override |
826 | public void run() { | 826 | public void run() { |
827 | - Set<GroupKey> keys = pendingNextObjectives.asMap().keySet().stream() | 827 | + Set<GroupKey> keys = pendingGroups.keySet().stream() |
828 | .filter(key -> groupService.getGroup(deviceId, key) != null) | 828 | .filter(key -> groupService.getGroup(deviceId, key) != null) |
829 | .collect(Collectors.toSet()); | 829 | .collect(Collectors.toSet()); |
830 | 830 | ||
... | @@ -832,43 +832,49 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline | ... | @@ -832,43 +832,49 @@ public class OFDPA1Pipeline extends AbstractHandlerBehaviour implements Pipeline |
832 | //first check for group chain | 832 | //first check for group chain |
833 | GroupChainElem gce = pendingGroups.remove(key); | 833 | GroupChainElem gce = pendingGroups.remove(key); |
834 | if (gce != null) { | 834 | if (gce != null) { |
835 | - log.info("Heard back from group service. Processing next " | 835 | + log.info("Group service processed group key {}. Processing next " |
836 | - + "group in group chain with group key {}", gce.getGkey()); | 836 | + + "group in group chain with group key {}", |
837 | + appKryo.deserialize(key.key()), | ||
838 | + appKryo.deserialize(gce.getGkey().key())); | ||
837 | processGroupChain(gce); | 839 | processGroupChain(gce); |
838 | } else { | 840 | } else { |
839 | OfdpaGroupChain obj = pendingNextObjectives.getIfPresent(key); | 841 | OfdpaGroupChain obj = pendingNextObjectives.getIfPresent(key); |
840 | - if (obj == null) { | 842 | + log.info("Group service processed group key {}. Done implementing " |
841 | - return; | 843 | + + "next objective: {}", appKryo.deserialize(key.key()), |
844 | + obj.nextObjective().id()); | ||
845 | + if (obj != null) { | ||
846 | + pass(obj.nextObjective()); | ||
847 | + pendingNextObjectives.invalidate(key); | ||
848 | + flowObjectiveStore.putNextGroup(obj.nextObjective().id(), obj); | ||
842 | } | 849 | } |
843 | - pass(obj.nextObjective()); | ||
844 | - pendingNextObjectives.invalidate(key); | ||
845 | - log.info("Heard back from group service. Applying pending " | ||
846 | - + "objectives for nextId {}", obj.nextObjective().id()); | ||
847 | - flowObjectiveStore.putNextGroup(obj.nextObjective().id(), obj); | ||
848 | } | 850 | } |
849 | }); | 851 | }); |
850 | } | 852 | } |
851 | } | 853 | } |
852 | 854 | ||
853 | - | ||
854 | private class InnerGroupListener implements GroupListener { | 855 | private class InnerGroupListener implements GroupListener { |
855 | @Override | 856 | @Override |
856 | public void event(GroupEvent event) { | 857 | public void event(GroupEvent event) { |
858 | + log.info("received group event of type {}", event.type()); | ||
857 | if (event.type() == GroupEvent.Type.GROUP_ADDED) { | 859 | if (event.type() == GroupEvent.Type.GROUP_ADDED) { |
858 | GroupKey key = event.subject().appCookie(); | 860 | GroupKey key = event.subject().appCookie(); |
859 | // first check for group chain | 861 | // first check for group chain |
860 | GroupChainElem gce = pendingGroups.remove(key); | 862 | GroupChainElem gce = pendingGroups.remove(key); |
861 | if (gce != null) { | 863 | if (gce != null) { |
862 | - log.info("group ADDED .. Processing next group in group chain " | 864 | + log.info("group ADDED with group key {} .. " |
863 | - + "with group key {}", gce.getGkey()); | 865 | + + "Processing next group in group chain with group key {}", |
866 | + appKryo.deserialize(key.key()), | ||
867 | + appKryo.deserialize(gce.getGkey().key())); | ||
864 | processGroupChain(gce); | 868 | processGroupChain(gce); |
865 | } else { | 869 | } else { |
866 | OfdpaGroupChain obj = pendingNextObjectives.getIfPresent(key); | 870 | OfdpaGroupChain obj = pendingNextObjectives.getIfPresent(key); |
867 | - log.info("group ADDED .. Applying pending objectives if any"); | ||
868 | if (obj != null) { | 871 | if (obj != null) { |
869 | - flowObjectiveStore.putNextGroup(obj.nextObjective().id(), obj); | 872 | + log.info("group ADDED with key {}.. Done implementing next " |
873 | + + "objective: {}", | ||
874 | + appKryo.deserialize(key.key()), obj.nextObjective().id()); | ||
870 | pass(obj.nextObjective()); | 875 | pass(obj.nextObjective()); |
871 | pendingNextObjectives.invalidate(key); | 876 | pendingNextObjectives.invalidate(key); |
877 | + flowObjectiveStore.putNextGroup(obj.nextObjective().id(), obj); | ||
872 | } | 878 | } |
873 | } | 879 | } |
874 | } | 880 | } | ... | ... |
... | @@ -30,10 +30,14 @@ | ... | @@ -30,10 +30,14 @@ |
30 | <driver name="spring-open-cpqd" manufacturer="Stanford University, Ericsson Research and CPqD Research" hwVersion="OpenFlow 1.3 Reference Userspace Switch" swVersion=".*"> | 30 | <driver name="spring-open-cpqd" manufacturer="Stanford University, Ericsson Research and CPqD Research" hwVersion="OpenFlow 1.3 Reference Userspace Switch" swVersion=".*"> |
31 | <behaviour api="org.onosproject.net.behaviour.Pipeliner" | 31 | <behaviour api="org.onosproject.net.behaviour.Pipeliner" |
32 | impl="org.onosproject.driver.pipeline.SpringOpenTTP"/> | 32 | impl="org.onosproject.driver.pipeline.SpringOpenTTP"/> |
33 | + <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" | ||
34 | + impl="org.onosproject.driver.handshaker.DefaultSwitchHandShaker"/> | ||
33 | </driver> | 35 | </driver> |
34 | <driver name="spring-open" manufacturer="Dell " hwVersion="OpenFlow switch HW ver. 1.0" swVersion="OpenFlow switch SW ver. 1.0 and 1.3"> | 36 | <driver name="spring-open" manufacturer="Dell " hwVersion="OpenFlow switch HW ver. 1.0" swVersion="OpenFlow switch SW ver. 1.0 and 1.3"> |
35 | <behaviour api="org.onosproject.net.behaviour.Pipeliner" | 37 | <behaviour api="org.onosproject.net.behaviour.Pipeliner" |
36 | impl="org.onosproject.driver.pipeline.SpringOpenTTPDell"/> | 38 | impl="org.onosproject.driver.pipeline.SpringOpenTTPDell"/> |
39 | + <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" | ||
40 | + impl="org.onosproject.driver.handshaker.DefaultSwitchHandShaker"/> | ||
37 | </driver> | 41 | </driver> |
38 | <driver name="cpqd" manufacturer="Stanford University, Ericsson Research and CPqD Research" | 42 | <driver name="cpqd" manufacturer="Stanford University, Ericsson Research and CPqD Research" |
39 | hwVersion="OpenFlow 1.3 Reference Userspace Switch" swVersion=".*"> | 43 | hwVersion="OpenFlow 1.3 Reference Userspace Switch" swVersion=".*"> |
... | @@ -58,6 +62,8 @@ | ... | @@ -58,6 +62,8 @@ |
58 | <driver name="ofdpa" manufacturer="Broadcom Corp." hwVersion="OF-DPA 1.0" swVersion="OF-DPA 1.0"> | 62 | <driver name="ofdpa" manufacturer="Broadcom Corp." hwVersion="OF-DPA 1.0" swVersion="OF-DPA 1.0"> |
59 | <behaviour api="org.onosproject.net.behaviour.Pipeliner" | 63 | <behaviour api="org.onosproject.net.behaviour.Pipeliner" |
60 | impl="org.onosproject.driver.pipeline.OFDPA1Pipeline"/> | 64 | impl="org.onosproject.driver.pipeline.OFDPA1Pipeline"/> |
65 | + <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" | ||
66 | + impl="org.onosproject.driver.handshaker.DefaultSwitchHandShaker"/> | ||
61 | </driver> | 67 | </driver> |
62 | </drivers> | 68 | </drivers> |
63 | 69 | ... | ... |
... | @@ -417,9 +417,9 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -417,9 +417,9 @@ class OFChannelHandler extends IdleStateAwareChannelHandler { |
417 | h.channel.getRemoteAddress()); | 417 | h.channel.getRemoteAddress()); |
418 | return; | 418 | return; |
419 | } | 419 | } |
420 | - log.info("Received switch description reply from switch at {}", | ||
421 | - h.channel.getRemoteAddress()); | ||
422 | OFDescStatsReply drep = (OFDescStatsReply) m; | 420 | OFDescStatsReply drep = (OFDescStatsReply) m; |
421 | + log.info("Received switch description reply {} from switch at {}", | ||
422 | + drep, h.channel.getRemoteAddress()); | ||
423 | // Here is where we differentiate between different kinds of switches | 423 | // Here is where we differentiate between different kinds of switches |
424 | h.sw = h.controller.getOFSwitchInstance(h.thisdpid, drep, h.ofVersion); | 424 | h.sw = h.controller.getOFSwitchInstance(h.thisdpid, drep, h.ofVersion); |
425 | 425 | ... | ... |
-
Please register or login to post a comment