tom

Merge remote-tracking branch 'origin/master'

Showing 56 changed files with 351 additions and 235 deletions
1 package org.onlab.onos.cli; 1 package org.onlab.onos.cli;
2 2
3 import com.google.common.collect.Lists; 3 import com.google.common.collect.Lists;
4 +
4 import org.apache.karaf.shell.commands.Command; 5 import org.apache.karaf.shell.commands.Command;
5 import org.onlab.onos.cluster.ClusterService; 6 import org.onlab.onos.cluster.ClusterService;
6 import org.onlab.onos.cluster.ControllerNode; 7 import org.onlab.onos.cluster.ControllerNode;
7 -import org.onlab.onos.cluster.MastershipService;
8 import org.onlab.onos.net.DeviceId; 8 import org.onlab.onos.net.DeviceId;
9 +import org.onlab.onos.net.device.DeviceMastershipService;
9 10
10 import java.util.Collections; 11 import java.util.Collections;
11 import java.util.List; 12 import java.util.List;
...@@ -22,7 +23,7 @@ public class MastersListCommand extends AbstractShellCommand { ...@@ -22,7 +23,7 @@ public class MastersListCommand extends AbstractShellCommand {
22 @Override 23 @Override
23 protected void execute() { 24 protected void execute() {
24 ClusterService service = get(ClusterService.class); 25 ClusterService service = get(ClusterService.class);
25 - MastershipService mastershipService = get(MastershipService.class); 26 + DeviceMastershipService mastershipService = get(DeviceMastershipService.class);
26 List<ControllerNode> nodes = newArrayList(service.getNodes()); 27 List<ControllerNode> nodes = newArrayList(service.getNodes());
27 Collections.sort(nodes, Comparators.NODE_COMPARATOR); 28 Collections.sort(nodes, Comparators.NODE_COMPARATOR);
28 ControllerNode self = service.getLocalNode(); 29 ControllerNode self = service.getLocalNode();
......
...@@ -3,9 +3,9 @@ package org.onlab.onos.cli.net; ...@@ -3,9 +3,9 @@ package org.onlab.onos.cli.net;
3 import org.apache.karaf.shell.commands.Argument; 3 import org.apache.karaf.shell.commands.Argument;
4 import org.apache.karaf.shell.commands.Command; 4 import org.apache.karaf.shell.commands.Command;
5 import org.onlab.onos.cli.AbstractShellCommand; 5 import org.onlab.onos.cli.AbstractShellCommand;
6 -import org.onlab.onos.cluster.MastershipAdminService;
7 import org.onlab.onos.cluster.NodeId; 6 import org.onlab.onos.cluster.NodeId;
8 import org.onlab.onos.net.MastershipRole; 7 import org.onlab.onos.net.MastershipRole;
8 +import org.onlab.onos.net.device.DeviceMastershipAdminService;
9 9
10 import static org.onlab.onos.net.DeviceId.deviceId; 10 import static org.onlab.onos.net.DeviceId.deviceId;
11 11
...@@ -30,7 +30,7 @@ public class DeviceRoleCommand extends AbstractShellCommand { ...@@ -30,7 +30,7 @@ public class DeviceRoleCommand extends AbstractShellCommand {
30 30
31 @Override 31 @Override
32 protected void execute() { 32 protected void execute() {
33 - MastershipAdminService service = get(MastershipAdminService.class); 33 + DeviceMastershipAdminService service = get(DeviceMastershipAdminService.class);
34 MastershipRole mastershipRole = MastershipRole.valueOf(role.toUpperCase()); 34 MastershipRole mastershipRole = MastershipRole.valueOf(role.toUpperCase());
35 service.setRole(new NodeId(node), deviceId(uri), mastershipRole); 35 service.setRole(new NodeId(node), deviceId(uri), mastershipRole);
36 } 36 }
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 +import org.onlab.onos.cluster.NodeId;
3 import org.onlab.onos.net.DeviceId; 4 import org.onlab.onos.net.DeviceId;
4 import org.onlab.onos.net.MastershipRole; 5 import org.onlab.onos.net.MastershipRole;
5 6
6 /** 7 /**
7 * Service for administering the inventory of device masterships. 8 * Service for administering the inventory of device masterships.
8 */ 9 */
9 -public interface MastershipAdminService { 10 +public interface DeviceMastershipAdminService {
10 11
11 /** 12 /**
12 * Applies the current mastership role for the specified device. 13 * Applies the current mastership role for the specified device.
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 +import org.onlab.onos.cluster.NodeId;
3 import org.onlab.onos.event.AbstractEvent; 4 import org.onlab.onos.event.AbstractEvent;
4 import org.onlab.onos.net.DeviceId; 5 import org.onlab.onos.net.DeviceId;
5 6
6 /** 7 /**
7 * Describes a device mastership event. 8 * Describes a device mastership event.
8 */ 9 */
9 -public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceId> { 10 +public class DeviceMastershipEvent extends AbstractEvent<DeviceMastershipEvent.Type, DeviceId> {
10 11
11 //do we worry about explicitly setting slaves/equals? probably not, 12 //do we worry about explicitly setting slaves/equals? probably not,
12 //to keep it simple 13 //to keep it simple
...@@ -30,7 +31,7 @@ public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceI ...@@ -30,7 +31,7 @@ public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceI
30 * @param device event device subject 31 * @param device event device subject
31 * @param master master ID subject 32 * @param master master ID subject
32 */ 33 */
33 - public MastershipEvent(Type type, DeviceId device, NodeId master) { 34 + public DeviceMastershipEvent(Type type, DeviceId device, NodeId master) {
34 super(type, device); 35 super(type, device);
35 this.master = master; 36 this.master = master;
36 } 37 }
...@@ -44,7 +45,7 @@ public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceI ...@@ -44,7 +45,7 @@ public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceI
44 * @param master master ID subject 45 * @param master master ID subject
45 * @param time occurrence time 46 * @param time occurrence time
46 */ 47 */
47 - public MastershipEvent(Type type, DeviceId device, NodeId master, long time) { 48 + public DeviceMastershipEvent(Type type, DeviceId device, NodeId master, long time) {
48 super(type, device, time); 49 super(type, device, time);
49 this.master = master; 50 this.master = master;
50 } 51 }
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 import org.onlab.onos.event.EventListener; 3 import org.onlab.onos.event.EventListener;
4 4
5 /** 5 /**
6 * Entity capable of receiving device mastership-related events. 6 * Entity capable of receiving device mastership-related events.
7 */ 7 */
8 -public interface MastershipListener extends EventListener<MastershipEvent> { 8 +public interface DeviceMastershipListener extends EventListener<DeviceMastershipEvent> {
9 } 9 }
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 import java.util.Set; 3 import java.util.Set;
4 4
5 +import org.onlab.onos.cluster.NodeId;
5 import org.onlab.onos.net.DeviceId; 6 import org.onlab.onos.net.DeviceId;
6 import org.onlab.onos.net.MastershipRole; 7 import org.onlab.onos.net.MastershipRole;
7 8
...@@ -11,7 +12,7 @@ import org.onlab.onos.net.MastershipRole; ...@@ -11,7 +12,7 @@ import org.onlab.onos.net.MastershipRole;
11 * determining mastership, but is not responsible for actually applying it 12 * determining mastership, but is not responsible for actually applying it
12 * to the devices; this falls on the device service. 13 * to the devices; this falls on the device service.
13 */ 14 */
14 -public interface MastershipService { 15 +public interface DeviceMastershipService {
15 16
16 /** 17 /**
17 * Returns the role of the local node for the specified device, without 18 * Returns the role of the local node for the specified device, without
...@@ -62,20 +63,20 @@ public interface MastershipService { ...@@ -62,20 +63,20 @@ public interface MastershipService {
62 * 63 *
63 * @return the MastershipTermService for this mastership manager 64 * @return the MastershipTermService for this mastership manager
64 */ 65 */
65 - MastershipTermService requestTermService(); 66 + DeviceMastershipTermService requestTermService();
66 67
67 /** 68 /**
68 * Adds the specified mastership change listener. 69 * Adds the specified mastership change listener.
69 * 70 *
70 * @param listener the mastership listener 71 * @param listener the mastership listener
71 */ 72 */
72 - void addListener(MastershipListener listener); 73 + void addListener(DeviceMastershipListener listener);
73 74
74 /** 75 /**
75 * Removes the specified mastership change listener. 76 * Removes the specified mastership change listener.
76 * 77 *
77 * @param listener the mastership listener 78 * @param listener the mastership listener
78 */ 79 */
79 - void removeListener(MastershipListener listener); 80 + void removeListener(DeviceMastershipListener listener);
80 81
81 } 82 }
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 import java.util.Set; 3 import java.util.Set;
4 4
5 +import org.onlab.onos.cluster.NodeId;
5 import org.onlab.onos.net.DeviceId; 6 import org.onlab.onos.net.DeviceId;
6 import org.onlab.onos.net.MastershipRole; 7 import org.onlab.onos.net.MastershipRole;
7 import org.onlab.onos.store.Store; 8 import org.onlab.onos.store.Store;
...@@ -10,7 +11,7 @@ import org.onlab.onos.store.Store; ...@@ -10,7 +11,7 @@ import org.onlab.onos.store.Store;
10 * Manages inventory of mastership roles for devices, across controller 11 * Manages inventory of mastership roles for devices, across controller
11 * instances; not intended for direct use. 12 * instances; not intended for direct use.
12 */ 13 */
13 -public interface MastershipStore extends Store<MastershipEvent, MastershipStoreDelegate> { 14 +public interface DeviceMastershipStore extends Store<DeviceMastershipEvent, DeviceMastershipStoreDelegate> {
14 15
15 // three things to map: NodeId, DeviceId, MastershipRole 16 // three things to map: NodeId, DeviceId, MastershipRole
16 17
...@@ -54,7 +55,7 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD ...@@ -54,7 +55,7 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD
54 * @param deviceId device identifier 55 * @param deviceId device identifier
55 * @return a mastership event 56 * @return a mastership event
56 */ 57 */
57 - MastershipEvent setMaster(NodeId nodeId, DeviceId deviceId); 58 + DeviceMastershipEvent setMaster(NodeId nodeId, DeviceId deviceId);
58 59
59 /** 60 /**
60 * Returns the current master and number of past mastership hand-offs 61 * Returns the current master and number of past mastership hand-offs
...@@ -63,7 +64,7 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD ...@@ -63,7 +64,7 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD
63 * @param deviceId the device identifier 64 * @param deviceId the device identifier
64 * @return the current master's ID and the term value for device, or null 65 * @return the current master's ID and the term value for device, or null
65 */ 66 */
66 - MastershipTerm getTermFor(DeviceId deviceId); 67 + DeviceMastershipTerm getTermFor(DeviceId deviceId);
67 68
68 /** 69 /**
69 * Sets a controller instance's mastership role to STANDBY for a device. 70 * Sets a controller instance's mastership role to STANDBY for a device.
...@@ -74,7 +75,7 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD ...@@ -74,7 +75,7 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD
74 * @param deviceId device to revoke mastership role for 75 * @param deviceId device to revoke mastership role for
75 * @return a mastership event 76 * @return a mastership event
76 */ 77 */
77 - MastershipEvent setStandby(NodeId nodeId, DeviceId deviceId); 78 + DeviceMastershipEvent setStandby(NodeId nodeId, DeviceId deviceId);
78 79
79 /** 80 /**
80 * Allows a controller instance to give up its current role for a device. 81 * Allows a controller instance to give up its current role for a device.
...@@ -85,6 +86,6 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD ...@@ -85,6 +86,6 @@ public interface MastershipStore extends Store<MastershipEvent, MastershipStoreD
85 * @param deviceId device to revoke mastership role for 86 * @param deviceId device to revoke mastership role for
86 * @return a mastership event 87 * @return a mastership event
87 */ 88 */
88 - MastershipEvent relinquishRole(NodeId nodeId, DeviceId deviceId); 89 + DeviceMastershipEvent relinquishRole(NodeId nodeId, DeviceId deviceId);
89 90
90 } 91 }
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 import org.onlab.onos.store.StoreDelegate; 3 import org.onlab.onos.store.StoreDelegate;
4 4
5 /** 5 /**
6 - * Mastership store delegate abstraction. 6 + * DeviceMastership store delegate abstraction.
7 */ 7 */
8 -public interface MastershipStoreDelegate extends StoreDelegate<MastershipEvent> { 8 +public interface DeviceMastershipStoreDelegate extends StoreDelegate<DeviceMastershipEvent> {
9 } 9 }
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 import java.util.Objects; 3 import java.util.Objects;
4 4
5 -public final class MastershipTerm { 5 +import org.onlab.onos.cluster.NodeId;
6 +
7 +public final class DeviceMastershipTerm {
6 8
7 private final NodeId master; 9 private final NodeId master;
8 private final int termNumber; 10 private final int termNumber;
9 11
10 - private MastershipTerm(NodeId master, int term) { 12 + private DeviceMastershipTerm(NodeId master, int term) {
11 this.master = master; 13 this.master = master;
12 this.termNumber = term; 14 this.termNumber = term;
13 } 15 }
14 16
15 - public static MastershipTerm of(NodeId master, int term) { 17 + public static DeviceMastershipTerm of(NodeId master, int term) {
16 - return new MastershipTerm(master, term); 18 + return new DeviceMastershipTerm(master, term);
17 } 19 }
18 20
19 public NodeId master() { 21 public NodeId master() {
...@@ -34,8 +36,8 @@ public final class MastershipTerm { ...@@ -34,8 +36,8 @@ public final class MastershipTerm {
34 if (this == other) { 36 if (this == other) {
35 return true; 37 return true;
36 } 38 }
37 - if (other instanceof MastershipTerm) { 39 + if (other instanceof DeviceMastershipTerm) {
38 - MastershipTerm that = (MastershipTerm) other; 40 + DeviceMastershipTerm that = (DeviceMastershipTerm) other;
39 if (!this.master.equals(that.master)) { 41 if (!this.master.equals(that.master)) {
40 return false; 42 return false;
41 } 43 }
......
1 -package org.onlab.onos.cluster; 1 +package org.onlab.onos.net.device;
2 2
3 import org.onlab.onos.net.DeviceId; 3 import org.onlab.onos.net.DeviceId;
4 4
...@@ -6,7 +6,7 @@ import org.onlab.onos.net.DeviceId; ...@@ -6,7 +6,7 @@ import org.onlab.onos.net.DeviceId;
6 /** 6 /**
7 * Service to obtain mastership term information. 7 * Service to obtain mastership term information.
8 */ 8 */
9 -public interface MastershipTermService { 9 +public interface DeviceMastershipTermService {
10 10
11 // TBD: manage/increment per device mastership change 11 // TBD: manage/increment per device mastership change
12 // or increment on any change 12 // or increment on any change
...@@ -16,5 +16,5 @@ public interface MastershipTermService { ...@@ -16,5 +16,5 @@ public interface MastershipTermService {
16 * @param deviceId the identifier of the device 16 * @param deviceId the identifier of the device
17 * @return current master's term. 17 * @return current master's term.
18 */ 18 */
19 - MastershipTerm getMastershipTerm(DeviceId deviceId); 19 + DeviceMastershipTerm getMastershipTerm(DeviceId deviceId);
20 } 20 }
......
...@@ -140,6 +140,16 @@ public final class DefaultTrafficSelector implements TrafficSelector { ...@@ -140,6 +140,16 @@ public final class DefaultTrafficSelector implements TrafficSelector {
140 } 140 }
141 141
142 @Override 142 @Override
143 + public Builder matchTcpSrc(Short tcpPort) {
144 + return add(Criteria.matchTcpSrc(tcpPort));
145 + }
146 +
147 + @Override
148 + public Builder matchTcpDst(Short tcpPort) {
149 + return add(Criteria.matchTcpDst(tcpPort));
150 + }
151 +
152 + @Override
143 public TrafficSelector build() { 153 public TrafficSelector build() {
144 return new DefaultTrafficSelector(ImmutableSet.copyOf(selector.values())); 154 return new DefaultTrafficSelector(ImmutableSet.copyOf(selector.values()));
145 } 155 }
......
...@@ -98,6 +98,20 @@ public interface TrafficSelector { ...@@ -98,6 +98,20 @@ public interface TrafficSelector {
98 public Builder matchIPDst(IpPrefix ip); 98 public Builder matchIPDst(IpPrefix ip);
99 99
100 /** 100 /**
101 + * Matches a TCP source port number.
102 + * @param tcpPort a TCP source port number
103 + * @return a selection builder
104 + */
105 + public Builder matchTcpSrc(Short tcpPort);
106 +
107 + /**
108 + * Matches a TCP destination port number.
109 + * @param tcpPort a TCP destination port number
110 + * @return a selection builder
111 + */
112 + public Builder matchTcpDst(Short tcpPort);
113 +
114 + /**
101 * Builds an immutable traffic selector. 115 * Builds an immutable traffic selector.
102 * 116 *
103 * @return traffic selector 117 * @return traffic selector
......
...@@ -113,6 +113,25 @@ public final class Criteria { ...@@ -113,6 +113,25 @@ public final class Criteria {
113 return new IPCriterion(ip, Type.IPV4_DST); 113 return new IPCriterion(ip, Type.IPV4_DST);
114 } 114 }
115 115
116 + /**
117 + * Creates a match on TCP source port field using the specified value.
118 + *
119 + * @param tcpPort
120 + * @return match criterion
121 + */
122 + public static Criterion matchTcpSrc(Short tcpPort) {
123 + return new TcpPortCriterion(tcpPort, Type.TCP_SRC);
124 + }
125 +
126 + /**
127 + * Creates a match on TCP destination port field using the specified value.
128 + *
129 + * @param tcpPort
130 + * @return match criterion
131 + */
132 + public static Criterion matchTcpDst(Short tcpPort) {
133 + return new TcpPortCriterion(tcpPort, Type.TCP_DST);
134 + }
116 135
117 /* 136 /*
118 * Implementations of criteria. 137 * Implementations of criteria.
...@@ -437,4 +456,49 @@ public final class Criteria { ...@@ -437,4 +456,49 @@ public final class Criteria {
437 } 456 }
438 457
439 458
459 + public static final class TcpPortCriterion implements Criterion {
460 +
461 + private final Short tcpPort;
462 + private final Type type;
463 +
464 + public TcpPortCriterion(Short tcpPort, Type type) {
465 + this.tcpPort = tcpPort;
466 + this.type = type;
467 + }
468 +
469 + @Override
470 + public Type type() {
471 + return this.type;
472 + }
473 +
474 + public Short tcpPort() {
475 + return this.tcpPort;
476 + }
477 +
478 + @Override
479 + public String toString() {
480 + return toStringHelper(type().toString())
481 + .add("tcpPort", tcpPort).toString();
482 + }
483 +
484 + @Override
485 + public int hashCode() {
486 + return Objects.hash(tcpPort, type);
487 + }
488 +
489 + @Override
490 + public boolean equals(Object obj) {
491 + if (this == obj) {
492 + return true;
493 + }
494 + if (obj instanceof TcpPortCriterion) {
495 + TcpPortCriterion that = (TcpPortCriterion) obj;
496 + return Objects.equals(tcpPort, that.tcpPort) &&
497 + Objects.equals(type, that.type);
498 +
499 +
500 + }
501 + return false;
502 + }
503 + }
440 } 504 }
......
...@@ -33,6 +33,8 @@ public interface IntentStore extends Store<IntentEvent, IntentStoreDelegate> { ...@@ -33,6 +33,8 @@ public interface IntentStore extends Store<IntentEvent, IntentStoreDelegate> {
33 33
34 /** 34 /**
35 * Returns the number of intents in the store. 35 * Returns the number of intents in the store.
36 + *
37 + * @return the number of intents in the store
36 */ 38 */
37 long getIntentCount(); 39 long getIntentCount();
38 40
...@@ -44,7 +46,7 @@ public interface IntentStore extends Store<IntentEvent, IntentStoreDelegate> { ...@@ -44,7 +46,7 @@ public interface IntentStore extends Store<IntentEvent, IntentStoreDelegate> {
44 Iterable<Intent> getIntents(); 46 Iterable<Intent> getIntents();
45 47
46 /** 48 /**
47 - * Returns the intent with the specified identifer. 49 + * Returns the intent with the specified identifier.
48 * 50 *
49 * @param intentId intent identification 51 * @param intentId intent identification
50 * @return intent or null if not found 52 * @return intent or null if not found
...@@ -94,7 +96,6 @@ public interface IntentStore extends Store<IntentEvent, IntentStoreDelegate> { ...@@ -94,7 +96,6 @@ public interface IntentStore extends Store<IntentEvent, IntentStoreDelegate> {
94 * specified original intent. 96 * specified original intent.
95 * 97 *
96 * @param intentId original intent identifier 98 * @param intentId original intent identifier
97 - * @return compiled state transition event
98 */ 99 */
99 void removeInstalledIntents(IntentId intentId); 100 void removeInstalledIntents(IntentId intentId);
100 101
......
...@@ -53,4 +53,4 @@ ...@@ -53,4 +53,4 @@
53 * while the system determines where to perform the compilation or while it 53 * while the system determines where to perform the compilation or while it
54 * performs global recomputation/optimization across all prior intents. 54 * performs global recomputation/optimization across all prior intents.
55 */ 55 */
56 -package org.onlab.onos.net.intent;
...\ No newline at end of file ...\ No newline at end of file
56 +package org.onlab.onos.net.intent;
......
1 package org.onlab.onos.store; 1 package org.onlab.onos.store;
2 2
3 +import java.util.List;
4 +
3 import org.onlab.onos.event.Event; 5 import org.onlab.onos.event.Event;
4 6
5 import static com.google.common.base.Preconditions.checkState; 7 import static com.google.common.base.Preconditions.checkState;
...@@ -41,4 +43,15 @@ public class AbstractStore<E extends Event, D extends StoreDelegate<E>> ...@@ -41,4 +43,15 @@ public class AbstractStore<E extends Event, D extends StoreDelegate<E>>
41 delegate.notify(event); 43 delegate.notify(event);
42 } 44 }
43 } 45 }
46 +
47 + /**
48 + * Notifies the delegate with the specified list of events.
49 + *
50 + * @param events list of events to delegate
51 + */
52 + protected void notifyDelegate(List<E> events) {
53 + for (E event: events) {
54 + notifyDelegate(event);
55 + }
56 + }
44 } 57 }
......
1 package org.onlab.onos.store; 1 package org.onlab.onos.store;
2 2
3 -import org.onlab.onos.cluster.MastershipTerm;
4 import org.onlab.onos.net.DeviceId; 3 import org.onlab.onos.net.DeviceId;
4 +import org.onlab.onos.net.device.DeviceMastershipTerm;
5 5
6 //TODO: Consider renaming to DeviceClockProviderService? 6 //TODO: Consider renaming to DeviceClockProviderService?
7 /** 7 /**
...@@ -16,5 +16,5 @@ public interface ClockProviderService { ...@@ -16,5 +16,5 @@ public interface ClockProviderService {
16 * @param deviceId device identifier. 16 * @param deviceId device identifier.
17 * @param term mastership term. 17 * @param term mastership term.
18 */ 18 */
19 - public void setMastershipTerm(DeviceId deviceId, MastershipTerm term); 19 + public void setMastershipTerm(DeviceId deviceId, DeviceMastershipTerm term);
20 } 20 }
......
1 -package org.onlab.onos.store.common.impl; 1 +package org.onlab.onos.store;
2 2
3 import static com.google.common.base.Preconditions.checkNotNull; 3 import static com.google.common.base.Preconditions.checkNotNull;
4 4
5 import java.util.Objects; 5 import java.util.Objects;
6 6
7 -import org.onlab.onos.store.Timestamp;
8 -
9 import com.google.common.base.MoreObjects; 7 import com.google.common.base.MoreObjects;
10 8
11 /** 9 /**
......
1 -package org.onlab.onos.store.device.impl; 1 +package org.onlab.onos.store;
2 2
3 import java.util.Objects; 3 import java.util.Objects;
4 4
5 -import org.onlab.onos.store.Timestamp;
6 -
7 /** 5 /**
8 * Wrapper class for a entity that is versioned 6 * Wrapper class for a entity that is versioned
9 * and can either be up or down. 7 * and can either be up or down.
......
...@@ -2,13 +2,16 @@ package org.onlab.onos.cluster; ...@@ -2,13 +2,16 @@ package org.onlab.onos.cluster;
2 2
3 import org.onlab.onos.net.DeviceId; 3 import org.onlab.onos.net.DeviceId;
4 import org.onlab.onos.net.MastershipRole; 4 import org.onlab.onos.net.MastershipRole;
5 +import org.onlab.onos.net.device.DeviceMastershipListener;
6 +import org.onlab.onos.net.device.DeviceMastershipService;
7 +import org.onlab.onos.net.device.DeviceMastershipTermService;
5 8
6 import java.util.Set; 9 import java.util.Set;
7 10
8 /** 11 /**
9 * Test adapter for mastership service. 12 * Test adapter for mastership service.
10 */ 13 */
11 -public class MastershipServiceAdapter implements MastershipService { 14 +public class MastershipServiceAdapter implements DeviceMastershipService {
12 @Override 15 @Override
13 public MastershipRole getLocalRole(DeviceId deviceId) { 16 public MastershipRole getLocalRole(DeviceId deviceId) {
14 return null; 17 return null;
...@@ -34,15 +37,15 @@ public class MastershipServiceAdapter implements MastershipService { ...@@ -34,15 +37,15 @@ public class MastershipServiceAdapter implements MastershipService {
34 } 37 }
35 38
36 @Override 39 @Override
37 - public void addListener(MastershipListener listener) { 40 + public void addListener(DeviceMastershipListener listener) {
38 } 41 }
39 42
40 @Override 43 @Override
41 - public void removeListener(MastershipListener listener) { 44 + public void removeListener(DeviceMastershipListener listener) {
42 } 45 }
43 46
44 @Override 47 @Override
45 - public MastershipTermService requestTermService() { 48 + public DeviceMastershipTermService requestTermService() {
46 return null; 49 return null;
47 } 50 }
48 } 51 }
......
...@@ -3,6 +3,7 @@ package org.onlab.onos.cluster; ...@@ -3,6 +3,7 @@ package org.onlab.onos.cluster;
3 import static org.junit.Assert.assertEquals; 3 import static org.junit.Assert.assertEquals;
4 4
5 import org.junit.Test; 5 import org.junit.Test;
6 +import org.onlab.onos.net.device.DeviceMastershipTerm;
6 7
7 import com.google.common.testing.EqualsTester; 8 import com.google.common.testing.EqualsTester;
8 9
...@@ -11,10 +12,10 @@ public class MastershipTermTest { ...@@ -11,10 +12,10 @@ public class MastershipTermTest {
11 private static final NodeId N1 = new NodeId("foo"); 12 private static final NodeId N1 = new NodeId("foo");
12 private static final NodeId N2 = new NodeId("bar"); 13 private static final NodeId N2 = new NodeId("bar");
13 14
14 - private static final MastershipTerm TERM1 = MastershipTerm.of(N1, 0); 15 + private static final DeviceMastershipTerm TERM1 = DeviceMastershipTerm.of(N1, 0);
15 - private static final MastershipTerm TERM2 = MastershipTerm.of(N2, 1); 16 + private static final DeviceMastershipTerm TERM2 = DeviceMastershipTerm.of(N2, 1);
16 - private static final MastershipTerm TERM3 = MastershipTerm.of(N2, 1); 17 + private static final DeviceMastershipTerm TERM3 = DeviceMastershipTerm.of(N2, 1);
17 - private static final MastershipTerm TERM4 = MastershipTerm.of(N1, 1); 18 + private static final DeviceMastershipTerm TERM4 = DeviceMastershipTerm.of(N1, 1);
18 19
19 @Test 20 @Test
20 public void basics() { 21 public void basics() {
...@@ -24,7 +25,7 @@ public class MastershipTermTest { ...@@ -24,7 +25,7 @@ public class MastershipTermTest {
24 25
25 @Test 26 @Test
26 public void testEquality() { 27 public void testEquality() {
27 - new EqualsTester().addEqualityGroup(MastershipTerm.of(N1, 0), TERM1) 28 + new EqualsTester().addEqualityGroup(DeviceMastershipTerm.of(N1, 0), TERM1)
28 .addEqualityGroup(TERM2, TERM3) 29 .addEqualityGroup(TERM2, TERM3)
29 .addEqualityGroup(TERM4); 30 .addEqualityGroup(TERM4);
30 } 31 }
......
...@@ -14,25 +14,25 @@ import org.apache.felix.scr.annotations.Service; ...@@ -14,25 +14,25 @@ import org.apache.felix.scr.annotations.Service;
14 import org.onlab.onos.cluster.ClusterEvent; 14 import org.onlab.onos.cluster.ClusterEvent;
15 import org.onlab.onos.cluster.ClusterEventListener; 15 import org.onlab.onos.cluster.ClusterEventListener;
16 import org.onlab.onos.cluster.ClusterService; 16 import org.onlab.onos.cluster.ClusterService;
17 -import org.onlab.onos.cluster.MastershipAdminService;
18 -import org.onlab.onos.cluster.MastershipEvent;
19 -import org.onlab.onos.cluster.MastershipListener;
20 -import org.onlab.onos.cluster.MastershipService;
21 -import org.onlab.onos.cluster.MastershipStore;
22 -import org.onlab.onos.cluster.MastershipStoreDelegate;
23 -import org.onlab.onos.cluster.MastershipTerm;
24 -import org.onlab.onos.cluster.MastershipTermService;
25 import org.onlab.onos.cluster.NodeId; 17 import org.onlab.onos.cluster.NodeId;
26 import org.onlab.onos.event.AbstractListenerRegistry; 18 import org.onlab.onos.event.AbstractListenerRegistry;
27 import org.onlab.onos.event.EventDeliveryService; 19 import org.onlab.onos.event.EventDeliveryService;
28 import org.onlab.onos.net.DeviceId; 20 import org.onlab.onos.net.DeviceId;
29 import org.onlab.onos.net.MastershipRole; 21 import org.onlab.onos.net.MastershipRole;
22 +import org.onlab.onos.net.device.DeviceMastershipAdminService;
23 +import org.onlab.onos.net.device.DeviceMastershipEvent;
24 +import org.onlab.onos.net.device.DeviceMastershipListener;
25 +import org.onlab.onos.net.device.DeviceMastershipService;
26 +import org.onlab.onos.net.device.DeviceMastershipStore;
27 +import org.onlab.onos.net.device.DeviceMastershipStoreDelegate;
28 +import org.onlab.onos.net.device.DeviceMastershipTerm;
29 +import org.onlab.onos.net.device.DeviceMastershipTermService;
30 import org.slf4j.Logger; 30 import org.slf4j.Logger;
31 31
32 @Component(immediate = true) 32 @Component(immediate = true)
33 @Service 33 @Service
34 public class MastershipManager 34 public class MastershipManager
35 -implements MastershipService, MastershipAdminService { 35 +implements DeviceMastershipService, DeviceMastershipAdminService {
36 36
37 private static final String NODE_ID_NULL = "Node ID cannot be null"; 37 private static final String NODE_ID_NULL = "Node ID cannot be null";
38 private static final String DEVICE_ID_NULL = "Device ID cannot be null"; 38 private static final String DEVICE_ID_NULL = "Device ID cannot be null";
...@@ -40,13 +40,13 @@ implements MastershipService, MastershipAdminService { ...@@ -40,13 +40,13 @@ implements MastershipService, MastershipAdminService {
40 40
41 private final Logger log = getLogger(getClass()); 41 private final Logger log = getLogger(getClass());
42 42
43 - protected final AbstractListenerRegistry<MastershipEvent, MastershipListener> 43 + protected final AbstractListenerRegistry<DeviceMastershipEvent, DeviceMastershipListener>
44 listenerRegistry = new AbstractListenerRegistry<>(); 44 listenerRegistry = new AbstractListenerRegistry<>();
45 45
46 - private final MastershipStoreDelegate delegate = new InternalDelegate(); 46 + private final DeviceMastershipStoreDelegate delegate = new InternalDelegate();
47 47
48 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 48 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
49 - protected MastershipStore store; 49 + protected DeviceMastershipStore store;
50 50
51 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 51 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
52 protected EventDeliveryService eventDispatcher; 52 protected EventDeliveryService eventDispatcher;
...@@ -58,7 +58,7 @@ implements MastershipService, MastershipAdminService { ...@@ -58,7 +58,7 @@ implements MastershipService, MastershipAdminService {
58 58
59 @Activate 59 @Activate
60 public void activate() { 60 public void activate() {
61 - eventDispatcher.addSink(MastershipEvent.class, listenerRegistry); 61 + eventDispatcher.addSink(DeviceMastershipEvent.class, listenerRegistry);
62 clusterService.addListener(clusterListener); 62 clusterService.addListener(clusterListener);
63 store.setDelegate(delegate); 63 store.setDelegate(delegate);
64 log.info("Started"); 64 log.info("Started");
...@@ -66,7 +66,7 @@ implements MastershipService, MastershipAdminService { ...@@ -66,7 +66,7 @@ implements MastershipService, MastershipAdminService {
66 66
67 @Deactivate 67 @Deactivate
68 public void deactivate() { 68 public void deactivate() {
69 - eventDispatcher.removeSink(MastershipEvent.class); 69 + eventDispatcher.removeSink(DeviceMastershipEvent.class);
70 clusterService.removeListener(clusterListener); 70 clusterService.removeListener(clusterListener);
71 store.unsetDelegate(delegate); 71 store.unsetDelegate(delegate);
72 log.info("Stopped"); 72 log.info("Stopped");
...@@ -78,7 +78,7 @@ implements MastershipService, MastershipAdminService { ...@@ -78,7 +78,7 @@ implements MastershipService, MastershipAdminService {
78 checkNotNull(deviceId, DEVICE_ID_NULL); 78 checkNotNull(deviceId, DEVICE_ID_NULL);
79 checkNotNull(role, ROLE_NULL); 79 checkNotNull(role, ROLE_NULL);
80 80
81 - MastershipEvent event = null; 81 + DeviceMastershipEvent event = null;
82 if (role.equals(MastershipRole.MASTER)) { 82 if (role.equals(MastershipRole.MASTER)) {
83 event = store.setMaster(nodeId, deviceId); 83 event = store.setMaster(nodeId, deviceId);
84 } else { 84 } else {
...@@ -98,7 +98,7 @@ implements MastershipService, MastershipAdminService { ...@@ -98,7 +98,7 @@ implements MastershipService, MastershipAdminService {
98 98
99 @Override 99 @Override
100 public void relinquishMastership(DeviceId deviceId) { 100 public void relinquishMastership(DeviceId deviceId) {
101 - MastershipEvent event = null; 101 + DeviceMastershipEvent event = null;
102 event = store.relinquishRole( 102 event = store.relinquishRole(
103 clusterService.getLocalNode().id(), deviceId); 103 clusterService.getLocalNode().id(), deviceId);
104 104
...@@ -127,18 +127,18 @@ implements MastershipService, MastershipAdminService { ...@@ -127,18 +127,18 @@ implements MastershipService, MastershipAdminService {
127 127
128 128
129 @Override 129 @Override
130 - public MastershipTermService requestTermService() { 130 + public DeviceMastershipTermService requestTermService() {
131 return new InternalMastershipTermService(); 131 return new InternalMastershipTermService();
132 } 132 }
133 133
134 @Override 134 @Override
135 - public void addListener(MastershipListener listener) { 135 + public void addListener(DeviceMastershipListener listener) {
136 checkNotNull(listener); 136 checkNotNull(listener);
137 listenerRegistry.addListener(listener); 137 listenerRegistry.addListener(listener);
138 } 138 }
139 139
140 @Override 140 @Override
141 - public void removeListener(MastershipListener listener) { 141 + public void removeListener(DeviceMastershipListener listener) {
142 checkNotNull(listener); 142 checkNotNull(listener);
143 listenerRegistry.removeListener(listener); 143 listenerRegistry.removeListener(listener);
144 } 144 }
...@@ -146,16 +146,16 @@ implements MastershipService, MastershipAdminService { ...@@ -146,16 +146,16 @@ implements MastershipService, MastershipAdminService {
146 // FIXME: provide wiring to allow events to be triggered by changes within the store 146 // FIXME: provide wiring to allow events to be triggered by changes within the store
147 147
148 // Posts the specified event to the local event dispatcher. 148 // Posts the specified event to the local event dispatcher.
149 - private void post(MastershipEvent event) { 149 + private void post(DeviceMastershipEvent event) {
150 if (event != null && eventDispatcher != null) { 150 if (event != null && eventDispatcher != null) {
151 eventDispatcher.post(event); 151 eventDispatcher.post(event);
152 } 152 }
153 } 153 }
154 154
155 - private class InternalMastershipTermService implements MastershipTermService { 155 + private class InternalMastershipTermService implements DeviceMastershipTermService {
156 156
157 @Override 157 @Override
158 - public MastershipTerm getMastershipTerm(DeviceId deviceId) { 158 + public DeviceMastershipTerm getMastershipTerm(DeviceId deviceId) {
159 return store.getTermFor(deviceId); 159 return store.getTermFor(deviceId);
160 } 160 }
161 161
...@@ -181,10 +181,10 @@ implements MastershipService, MastershipAdminService { ...@@ -181,10 +181,10 @@ implements MastershipService, MastershipAdminService {
181 181
182 } 182 }
183 183
184 - public class InternalDelegate implements MastershipStoreDelegate { 184 + public class InternalDelegate implements DeviceMastershipStoreDelegate {
185 185
186 @Override 186 @Override
187 - public void notify(MastershipEvent event) { 187 + public void notify(DeviceMastershipEvent event) {
188 log.info("dispatching mastership event {}", event); 188 log.info("dispatching mastership event {}", event);
189 eventDispatcher.post(event); 189 eventDispatcher.post(event);
190 } 190 }
......
...@@ -13,11 +13,6 @@ import org.apache.felix.scr.annotations.Reference; ...@@ -13,11 +13,6 @@ import org.apache.felix.scr.annotations.Reference;
13 import org.apache.felix.scr.annotations.ReferenceCardinality; 13 import org.apache.felix.scr.annotations.ReferenceCardinality;
14 import org.apache.felix.scr.annotations.Service; 14 import org.apache.felix.scr.annotations.Service;
15 import org.onlab.onos.cluster.ClusterService; 15 import org.onlab.onos.cluster.ClusterService;
16 -import org.onlab.onos.cluster.MastershipEvent;
17 -import org.onlab.onos.cluster.MastershipListener;
18 -import org.onlab.onos.cluster.MastershipService;
19 -import org.onlab.onos.cluster.MastershipTermService;
20 -import org.onlab.onos.cluster.MastershipTerm;
21 import org.onlab.onos.cluster.NodeId; 16 import org.onlab.onos.cluster.NodeId;
22 import org.onlab.onos.event.AbstractListenerRegistry; 17 import org.onlab.onos.event.AbstractListenerRegistry;
23 import org.onlab.onos.event.EventDeliveryService; 18 import org.onlab.onos.event.EventDeliveryService;
...@@ -36,6 +31,11 @@ import org.onlab.onos.net.device.DeviceProviderService; ...@@ -36,6 +31,11 @@ import org.onlab.onos.net.device.DeviceProviderService;
36 import org.onlab.onos.net.device.DeviceService; 31 import org.onlab.onos.net.device.DeviceService;
37 import org.onlab.onos.net.device.DeviceStore; 32 import org.onlab.onos.net.device.DeviceStore;
38 import org.onlab.onos.net.device.DeviceStoreDelegate; 33 import org.onlab.onos.net.device.DeviceStoreDelegate;
34 +import org.onlab.onos.net.device.DeviceMastershipEvent;
35 +import org.onlab.onos.net.device.DeviceMastershipListener;
36 +import org.onlab.onos.net.device.DeviceMastershipService;
37 +import org.onlab.onos.net.device.DeviceMastershipTerm;
38 +import org.onlab.onos.net.device.DeviceMastershipTermService;
39 import org.onlab.onos.net.device.PortDescription; 39 import org.onlab.onos.net.device.PortDescription;
40 import org.onlab.onos.net.provider.AbstractProviderRegistry; 40 import org.onlab.onos.net.provider.AbstractProviderRegistry;
41 import org.onlab.onos.net.provider.AbstractProviderService; 41 import org.onlab.onos.net.provider.AbstractProviderService;
...@@ -64,7 +64,7 @@ public class DeviceManager ...@@ -64,7 +64,7 @@ public class DeviceManager
64 64
65 private final DeviceStoreDelegate delegate = new InternalStoreDelegate(); 65 private final DeviceStoreDelegate delegate = new InternalStoreDelegate();
66 66
67 - private final MastershipListener mastershipListener = new InternalMastershipListener(); 67 + private final DeviceMastershipListener mastershipListener = new InternalMastershipListener();
68 68
69 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 69 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
70 protected DeviceStore store; 70 protected DeviceStore store;
...@@ -76,9 +76,9 @@ public class DeviceManager ...@@ -76,9 +76,9 @@ public class DeviceManager
76 protected ClusterService clusterService; 76 protected ClusterService clusterService;
77 77
78 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 78 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
79 - protected MastershipService mastershipService; 79 + protected DeviceMastershipService mastershipService;
80 80
81 - protected MastershipTermService termService; 81 + protected DeviceMastershipTermService termService;
82 82
83 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 83 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
84 protected ClockProviderService clockProviderService; 84 protected ClockProviderService clockProviderService;
...@@ -209,7 +209,7 @@ public class DeviceManager ...@@ -209,7 +209,7 @@ public class DeviceManager
209 return; 209 return;
210 } 210 }
211 211
212 - MastershipTerm term = mastershipService.requestTermService() 212 + DeviceMastershipTerm term = mastershipService.requestTermService()
213 .getMastershipTerm(deviceId); 213 .getMastershipTerm(deviceId);
214 if (!term.master().equals(clusterService.getLocalNode().id())) { 214 if (!term.master().equals(clusterService.getLocalNode().id())) {
215 // lost mastership after requestRole told this instance was MASTER. 215 // lost mastership after requestRole told this instance was MASTER.
...@@ -320,16 +320,16 @@ public class DeviceManager ...@@ -320,16 +320,16 @@ public class DeviceManager
320 } 320 }
321 321
322 // Intercepts mastership events 322 // Intercepts mastership events
323 - private class InternalMastershipListener implements MastershipListener { 323 + private class InternalMastershipListener implements DeviceMastershipListener {
324 324
325 @Override 325 @Override
326 - public void event(MastershipEvent event) { 326 + public void event(DeviceMastershipEvent event) {
327 final DeviceId did = event.subject(); 327 final DeviceId did = event.subject();
328 if (isAvailable(did)) { 328 if (isAvailable(did)) {
329 final NodeId myNodeId = clusterService.getLocalNode().id(); 329 final NodeId myNodeId = clusterService.getLocalNode().id();
330 330
331 if (myNodeId.equals(event.master())) { 331 if (myNodeId.equals(event.master())) {
332 - MastershipTerm term = termService.getMastershipTerm(did); 332 + DeviceMastershipTerm term = termService.getMastershipTerm(did);
333 333
334 if (term.master().equals(myNodeId)) { 334 if (term.master().equals(myNodeId)) {
335 // only set the new term if I am the master 335 // only set the new term if I am the master
......
...@@ -55,6 +55,7 @@ public class ProxyArpManager implements ProxyArpService { ...@@ -55,6 +55,7 @@ public class ProxyArpManager implements ProxyArpService {
55 private static final String REQUEST_NULL = "Arp request cannot be null."; 55 private static final String REQUEST_NULL = "Arp request cannot be null.";
56 private static final String REQUEST_NOT_ARP = "Ethernet frame does not contain ARP request."; 56 private static final String REQUEST_NOT_ARP = "Ethernet frame does not contain ARP request.";
57 private static final String NOT_ARP_REQUEST = "ARP is not a request."; 57 private static final String NOT_ARP_REQUEST = "ARP is not a request.";
58 + private static final String NOT_ARP_REPLY = "ARP is not a reply.";
58 59
59 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 60 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
60 protected HostService hostService; 61 protected HostService hostService;
...@@ -141,7 +142,7 @@ public class ProxyArpManager implements ProxyArpService { ...@@ -141,7 +142,7 @@ public class ProxyArpManager implements ProxyArpService {
141 checkArgument(eth.getEtherType() == Ethernet.TYPE_ARP, 142 checkArgument(eth.getEtherType() == Ethernet.TYPE_ARP,
142 REQUEST_NOT_ARP); 143 REQUEST_NOT_ARP);
143 ARP arp = (ARP) eth.getPayload(); 144 ARP arp = (ARP) eth.getPayload();
144 - checkArgument(arp.getOpCode() == ARP.OP_REPLY, NOT_ARP_REQUEST); 145 + checkArgument(arp.getOpCode() == ARP.OP_REPLY, NOT_ARP_REPLY);
145 146
146 Host h = hostService.getHost(HostId.hostId(eth.getDestinationMAC(), 147 Host h = hostService.getHost(HostId.hostId(eth.getDestinationMAC(),
147 VlanId.vlanId(eth.getVlanID()))); 148 VlanId.vlanId(eth.getVlanID())));
......
...@@ -10,11 +10,11 @@ import org.onlab.onos.cluster.ClusterService; ...@@ -10,11 +10,11 @@ import org.onlab.onos.cluster.ClusterService;
10 import org.onlab.onos.cluster.ControllerNode; 10 import org.onlab.onos.cluster.ControllerNode;
11 import org.onlab.onos.cluster.ControllerNode.State; 11 import org.onlab.onos.cluster.ControllerNode.State;
12 import org.onlab.onos.cluster.DefaultControllerNode; 12 import org.onlab.onos.cluster.DefaultControllerNode;
13 -import org.onlab.onos.cluster.MastershipService;
14 -import org.onlab.onos.cluster.MastershipTermService;
15 import org.onlab.onos.cluster.NodeId; 13 import org.onlab.onos.cluster.NodeId;
16 import org.onlab.onos.event.impl.TestEventDispatcher; 14 import org.onlab.onos.event.impl.TestEventDispatcher;
17 import org.onlab.onos.net.DeviceId; 15 import org.onlab.onos.net.DeviceId;
16 +import org.onlab.onos.net.device.DeviceMastershipService;
17 +import org.onlab.onos.net.device.DeviceMastershipTermService;
18 import org.onlab.onos.store.trivial.impl.SimpleMastershipStore; 18 import org.onlab.onos.store.trivial.impl.SimpleMastershipStore;
19 import org.onlab.packet.IpPrefix; 19 import org.onlab.packet.IpPrefix;
20 20
...@@ -34,7 +34,7 @@ public class MastershipManagerTest { ...@@ -34,7 +34,7 @@ public class MastershipManagerTest {
34 private static final DeviceId DEV_OTHER = DeviceId.deviceId("of:2"); 34 private static final DeviceId DEV_OTHER = DeviceId.deviceId("of:2");
35 35
36 private MastershipManager mgr; 36 private MastershipManager mgr;
37 - protected MastershipService service; 37 + protected DeviceMastershipService service;
38 38
39 @Before 39 @Before
40 public void setUp() { 40 public void setUp() {
...@@ -120,7 +120,7 @@ public class MastershipManagerTest { ...@@ -120,7 +120,7 @@ public class MastershipManagerTest {
120 120
121 @Test 121 @Test
122 public void termService() { 122 public void termService() {
123 - MastershipTermService ts = mgr.requestTermService(); 123 + DeviceMastershipTermService ts = mgr.requestTermService();
124 124
125 //term = 0 for both 125 //term = 0 for both
126 mgr.setRole(NID_LOCAL, DEV_MASTER, MASTER); 126 mgr.setRole(NID_LOCAL, DEV_MASTER, MASTER);
......
...@@ -11,8 +11,6 @@ import org.onlab.onos.cluster.ClusterService; ...@@ -11,8 +11,6 @@ import org.onlab.onos.cluster.ClusterService;
11 import org.onlab.onos.cluster.ControllerNode; 11 import org.onlab.onos.cluster.ControllerNode;
12 import org.onlab.onos.cluster.DefaultControllerNode; 12 import org.onlab.onos.cluster.DefaultControllerNode;
13 import org.onlab.onos.cluster.MastershipServiceAdapter; 13 import org.onlab.onos.cluster.MastershipServiceAdapter;
14 -import org.onlab.onos.cluster.MastershipTerm;
15 -import org.onlab.onos.cluster.MastershipTermService;
16 import org.onlab.onos.cluster.NodeId; 14 import org.onlab.onos.cluster.NodeId;
17 import org.onlab.onos.cluster.ControllerNode.State; 15 import org.onlab.onos.cluster.ControllerNode.State;
18 import org.onlab.onos.event.Event; 16 import org.onlab.onos.event.Event;
...@@ -32,6 +30,8 @@ import org.onlab.onos.net.device.DeviceProvider; ...@@ -32,6 +30,8 @@ import org.onlab.onos.net.device.DeviceProvider;
32 import org.onlab.onos.net.device.DeviceProviderRegistry; 30 import org.onlab.onos.net.device.DeviceProviderRegistry;
33 import org.onlab.onos.net.device.DeviceProviderService; 31 import org.onlab.onos.net.device.DeviceProviderService;
34 import org.onlab.onos.net.device.DeviceService; 32 import org.onlab.onos.net.device.DeviceService;
33 +import org.onlab.onos.net.device.DeviceMastershipTerm;
34 +import org.onlab.onos.net.device.DeviceMastershipTermService;
35 import org.onlab.onos.net.device.PortDescription; 35 import org.onlab.onos.net.device.PortDescription;
36 import org.onlab.onos.net.provider.AbstractProvider; 36 import org.onlab.onos.net.provider.AbstractProvider;
37 import org.onlab.onos.net.provider.ProviderId; 37 import org.onlab.onos.net.provider.ProviderId;
...@@ -290,12 +290,12 @@ public class DeviceManagerTest { ...@@ -290,12 +290,12 @@ public class DeviceManagerTest {
290 } 290 }
291 291
292 @Override 292 @Override
293 - public MastershipTermService requestTermService() { 293 + public DeviceMastershipTermService requestTermService() {
294 - return new MastershipTermService() { 294 + return new DeviceMastershipTermService() {
295 @Override 295 @Override
296 - public MastershipTerm getMastershipTerm(DeviceId deviceId) { 296 + public DeviceMastershipTerm getMastershipTerm(DeviceId deviceId) {
297 // FIXME: just returning something not null 297 // FIXME: just returning something not null
298 - return MastershipTerm.of(NID_LOCAL, 1); 298 + return DeviceMastershipTerm.of(NID_LOCAL, 1);
299 } 299 }
300 }; 300 };
301 } 301 }
...@@ -339,7 +339,7 @@ public class DeviceManagerTest { ...@@ -339,7 +339,7 @@ public class DeviceManagerTest {
339 ClockProviderService { 339 ClockProviderService {
340 340
341 @Override 341 @Override
342 - public void setMastershipTerm(DeviceId deviceId, MastershipTerm term) { 342 + public void setMastershipTerm(DeviceId deviceId, DeviceMastershipTerm term) {
343 // TODO Auto-generated method stub 343 // TODO Auto-generated method stub
344 } 344 }
345 } 345 }
......
...@@ -6,6 +6,7 @@ import java.io.IOException; ...@@ -6,6 +6,7 @@ import java.io.IOException;
6 import java.util.Set; 6 import java.util.Set;
7 import java.util.Timer; 7 import java.util.Timer;
8 import java.util.TimerTask; 8 import java.util.TimerTask;
9 +
9 import org.apache.felix.scr.annotations.Activate; 10 import org.apache.felix.scr.annotations.Activate;
10 import org.apache.felix.scr.annotations.Component; 11 import org.apache.felix.scr.annotations.Component;
11 import org.apache.felix.scr.annotations.Deactivate; 12 import org.apache.felix.scr.annotations.Deactivate;
...@@ -23,10 +24,8 @@ import org.onlab.onos.store.cluster.messaging.ClusterCommunicationService; ...@@ -23,10 +24,8 @@ import org.onlab.onos.store.cluster.messaging.ClusterCommunicationService;
23 import org.onlab.onos.store.cluster.messaging.ClusterMessage; 24 import org.onlab.onos.store.cluster.messaging.ClusterMessage;
24 import org.onlab.onos.store.cluster.messaging.ClusterMessageHandler; 25 import org.onlab.onos.store.cluster.messaging.ClusterMessageHandler;
25 import org.onlab.onos.store.cluster.messaging.MessageSubject; 26 import org.onlab.onos.store.cluster.messaging.MessageSubject;
26 -import org.onlab.onos.store.serializers.ClusterMessageSerializer;
27 import org.onlab.onos.store.serializers.KryoPoolUtil; 27 import org.onlab.onos.store.serializers.KryoPoolUtil;
28 import org.onlab.onos.store.serializers.KryoSerializer; 28 import org.onlab.onos.store.serializers.KryoSerializer;
29 -import org.onlab.onos.store.serializers.MessageSubjectSerializer;
30 import org.onlab.util.KryoPool; 29 import org.onlab.util.KryoPool;
31 import org.onlab.netty.Endpoint; 30 import org.onlab.netty.Endpoint;
32 import org.onlab.netty.Message; 31 import org.onlab.netty.Message;
......
1 -package org.onlab.onos.store.serializers; 1 +package org.onlab.onos.store.cluster.messaging.impl;
2 2
3 import org.onlab.onos.cluster.NodeId; 3 import org.onlab.onos.cluster.NodeId;
4 import org.onlab.onos.store.cluster.messaging.ClusterMessage; 4 import org.onlab.onos.store.cluster.messaging.ClusterMessage;
......
1 -package org.onlab.onos.store.serializers; 1 +package org.onlab.onos.store.cluster.messaging.impl;
2 2
3 import org.onlab.onos.store.cluster.messaging.MessageSubject; 3 import org.onlab.onos.store.cluster.messaging.MessageSubject;
4 4
......
...@@ -4,7 +4,7 @@ import java.util.Map; ...@@ -4,7 +4,7 @@ import java.util.Map;
4 import java.util.Set; 4 import java.util.Set;
5 5
6 import org.onlab.onos.cluster.NodeId; 6 import org.onlab.onos.cluster.NodeId;
7 -import org.onlab.onos.store.device.impl.VersionedValue; 7 +import org.onlab.onos.store.VersionedValue;
8 8
9 import com.google.common.collect.ImmutableMap; 9 import com.google.common.collect.ImmutableMap;
10 import com.google.common.collect.ImmutableSet; 10 import com.google.common.collect.ImmutableSet;
......
...@@ -13,7 +13,7 @@ import com.google.common.collect.ComparisonChain; ...@@ -13,7 +13,7 @@ import com.google.common.collect.ComparisonChain;
13 * Default implementation of Timestamp. 13 * Default implementation of Timestamp.
14 * TODO: Better documentation. 14 * TODO: Better documentation.
15 */ 15 */
16 -public final class MastershipBasedTimestamp implements Timestamp { 16 +public final class DeviceMastershipBasedTimestamp implements Timestamp {
17 17
18 private final int termNumber; 18 private final int termNumber;
19 private final int sequenceNumber; 19 private final int sequenceNumber;
...@@ -24,16 +24,16 @@ public final class MastershipBasedTimestamp implements Timestamp { ...@@ -24,16 +24,16 @@ public final class MastershipBasedTimestamp implements Timestamp {
24 * @param termNumber the mastership termNumber 24 * @param termNumber the mastership termNumber
25 * @param sequenceNumber the sequenceNumber number within the termNumber 25 * @param sequenceNumber the sequenceNumber number within the termNumber
26 */ 26 */
27 - public MastershipBasedTimestamp(int termNumber, int sequenceNumber) { 27 + public DeviceMastershipBasedTimestamp(int termNumber, int sequenceNumber) {
28 this.termNumber = termNumber; 28 this.termNumber = termNumber;
29 this.sequenceNumber = sequenceNumber; 29 this.sequenceNumber = sequenceNumber;
30 } 30 }
31 31
32 @Override 32 @Override
33 public int compareTo(Timestamp o) { 33 public int compareTo(Timestamp o) {
34 - checkArgument(o instanceof MastershipBasedTimestamp, 34 + checkArgument(o instanceof DeviceMastershipBasedTimestamp,
35 "Must be MastershipBasedTimestamp", o); 35 "Must be MastershipBasedTimestamp", o);
36 - MastershipBasedTimestamp that = (MastershipBasedTimestamp) o; 36 + DeviceMastershipBasedTimestamp that = (DeviceMastershipBasedTimestamp) o;
37 37
38 return ComparisonChain.start() 38 return ComparisonChain.start()
39 .compare(this.termNumber, that.termNumber) 39 .compare(this.termNumber, that.termNumber)
...@@ -51,10 +51,10 @@ public final class MastershipBasedTimestamp implements Timestamp { ...@@ -51,10 +51,10 @@ public final class MastershipBasedTimestamp implements Timestamp {
51 if (this == obj) { 51 if (this == obj) {
52 return true; 52 return true;
53 } 53 }
54 - if (!(obj instanceof MastershipBasedTimestamp)) { 54 + if (!(obj instanceof DeviceMastershipBasedTimestamp)) {
55 return false; 55 return false;
56 } 56 }
57 - MastershipBasedTimestamp that = (MastershipBasedTimestamp) obj; 57 + DeviceMastershipBasedTimestamp that = (DeviceMastershipBasedTimestamp) obj;
58 return Objects.equals(this.termNumber, that.termNumber) && 58 return Objects.equals(this.termNumber, that.termNumber) &&
59 Objects.equals(this.sequenceNumber, that.sequenceNumber); 59 Objects.equals(this.sequenceNumber, that.sequenceNumber);
60 } 60 }
...@@ -87,7 +87,7 @@ public final class MastershipBasedTimestamp implements Timestamp { ...@@ -87,7 +87,7 @@ public final class MastershipBasedTimestamp implements Timestamp {
87 87
88 // Default constructor for serialization 88 // Default constructor for serialization
89 @Deprecated 89 @Deprecated
90 - protected MastershipBasedTimestamp() { 90 + protected DeviceMastershipBasedTimestamp() {
91 this.termNumber = -1; 91 this.termNumber = -1;
92 this.sequenceNumber = -1; 92 this.sequenceNumber = -1;
93 } 93 }
......
1 -package org.onlab.onos.store.serializers; 1 +package org.onlab.onos.store.common.impl;
2 -
3 -import org.onlab.onos.store.common.impl.MastershipBasedTimestamp;
4 2
5 import com.esotericsoftware.kryo.Kryo; 3 import com.esotericsoftware.kryo.Kryo;
6 import com.esotericsoftware.kryo.Serializer; 4 import com.esotericsoftware.kryo.Serializer;
...@@ -9,12 +7,12 @@ import com.esotericsoftware.kryo.io.Output; ...@@ -9,12 +7,12 @@ import com.esotericsoftware.kryo.io.Output;
9 7
10 // To be used if Timestamp ever needs to cross bundle boundary. 8 // To be used if Timestamp ever needs to cross bundle boundary.
11 /** 9 /**
12 - * Kryo Serializer for {@link MastershipBasedTimestamp}. 10 + * Kryo Serializer for {@link DeviceMastershipBasedTimestamp}.
13 */ 11 */
14 -public class MastershipBasedTimestampSerializer extends Serializer<MastershipBasedTimestamp> { 12 +public class MastershipBasedTimestampSerializer extends Serializer<DeviceMastershipBasedTimestamp> {
15 13
16 /** 14 /**
17 - * Creates a serializer for {@link MastershipBasedTimestamp}. 15 + * Creates a serializer for {@link DeviceMastershipBasedTimestamp}.
18 */ 16 */
19 public MastershipBasedTimestampSerializer() { 17 public MastershipBasedTimestampSerializer() {
20 // non-null, immutable 18 // non-null, immutable
...@@ -22,15 +20,15 @@ public class MastershipBasedTimestampSerializer extends Serializer<MastershipBas ...@@ -22,15 +20,15 @@ public class MastershipBasedTimestampSerializer extends Serializer<MastershipBas
22 } 20 }
23 21
24 @Override 22 @Override
25 - public void write(Kryo kryo, Output output, MastershipBasedTimestamp object) { 23 + public void write(Kryo kryo, Output output, DeviceMastershipBasedTimestamp object) {
26 output.writeInt(object.termNumber()); 24 output.writeInt(object.termNumber());
27 output.writeInt(object.sequenceNumber()); 25 output.writeInt(object.sequenceNumber());
28 } 26 }
29 27
30 @Override 28 @Override
31 - public MastershipBasedTimestamp read(Kryo kryo, Input input, Class<MastershipBasedTimestamp> type) { 29 + public DeviceMastershipBasedTimestamp read(Kryo kryo, Input input, Class<DeviceMastershipBasedTimestamp> type) {
32 final int term = input.readInt(); 30 final int term = input.readInt();
33 final int sequence = input.readInt(); 31 final int sequence = input.readInt();
34 - return new MastershipBasedTimestamp(term, sequence); 32 + return new DeviceMastershipBasedTimestamp(term, sequence);
35 } 33 }
36 } 34 }
......
...@@ -8,6 +8,7 @@ import org.onlab.onos.cluster.NodeId; ...@@ -8,6 +8,7 @@ import org.onlab.onos.cluster.NodeId;
8 import org.onlab.onos.net.Device; 8 import org.onlab.onos.net.Device;
9 import org.onlab.onos.net.DeviceId; 9 import org.onlab.onos.net.DeviceId;
10 import org.onlab.onos.store.Timestamp; 10 import org.onlab.onos.store.Timestamp;
11 +import org.onlab.onos.store.VersionedValue;
11 import org.onlab.onos.store.common.impl.AntiEntropyAdvertisement; 12 import org.onlab.onos.store.common.impl.AntiEntropyAdvertisement;
12 13
13 // TODO DeviceID needs to be changed to something like (ProviderID, DeviceID) 14 // TODO DeviceID needs to be changed to something like (ProviderID, DeviceID)
......
...@@ -10,6 +10,7 @@ import org.onlab.onos.cluster.NodeId; ...@@ -10,6 +10,7 @@ import org.onlab.onos.cluster.NodeId;
10 import org.onlab.onos.net.Device; 10 import org.onlab.onos.net.Device;
11 import org.onlab.onos.net.DeviceId; 11 import org.onlab.onos.net.DeviceId;
12 import org.onlab.onos.store.Timestamp; 12 import org.onlab.onos.store.Timestamp;
13 +import org.onlab.onos.store.VersionedValue;
13 import org.onlab.onos.store.common.impl.AntiEntropyReply; 14 import org.onlab.onos.store.common.impl.AntiEntropyReply;
14 15
15 import com.google.common.collect.ImmutableMap; 16 import com.google.common.collect.ImmutableMap;
......
...@@ -10,12 +10,12 @@ import org.apache.felix.scr.annotations.Activate; ...@@ -10,12 +10,12 @@ import org.apache.felix.scr.annotations.Activate;
10 import org.apache.felix.scr.annotations.Component; 10 import org.apache.felix.scr.annotations.Component;
11 import org.apache.felix.scr.annotations.Deactivate; 11 import org.apache.felix.scr.annotations.Deactivate;
12 import org.apache.felix.scr.annotations.Service; 12 import org.apache.felix.scr.annotations.Service;
13 -import org.onlab.onos.cluster.MastershipTerm;
14 import org.onlab.onos.net.DeviceId; 13 import org.onlab.onos.net.DeviceId;
14 +import org.onlab.onos.net.device.DeviceMastershipTerm;
15 import org.onlab.onos.store.ClockProviderService; 15 import org.onlab.onos.store.ClockProviderService;
16 import org.onlab.onos.store.ClockService; 16 import org.onlab.onos.store.ClockService;
17 import org.onlab.onos.store.Timestamp; 17 import org.onlab.onos.store.Timestamp;
18 -import org.onlab.onos.store.common.impl.MastershipBasedTimestamp; 18 +import org.onlab.onos.store.common.impl.DeviceMastershipBasedTimestamp;
19 import org.slf4j.Logger; 19 import org.slf4j.Logger;
20 20
21 /** 21 /**
...@@ -29,7 +29,7 @@ public class DeviceClockManager implements ClockService, ClockProviderService { ...@@ -29,7 +29,7 @@ public class DeviceClockManager implements ClockService, ClockProviderService {
29 29
30 // TODO: Implement per device ticker that is reset to 0 at the beginning of a new term. 30 // TODO: Implement per device ticker that is reset to 0 at the beginning of a new term.
31 private final AtomicInteger ticker = new AtomicInteger(0); 31 private final AtomicInteger ticker = new AtomicInteger(0);
32 - private ConcurrentMap<DeviceId, MastershipTerm> deviceMastershipTerms = new ConcurrentHashMap<>(); 32 + private ConcurrentMap<DeviceId, DeviceMastershipTerm> deviceMastershipTerms = new ConcurrentHashMap<>();
33 33
34 @Activate 34 @Activate
35 public void activate() { 35 public void activate() {
...@@ -43,15 +43,15 @@ public class DeviceClockManager implements ClockService, ClockProviderService { ...@@ -43,15 +43,15 @@ public class DeviceClockManager implements ClockService, ClockProviderService {
43 43
44 @Override 44 @Override
45 public Timestamp getTimestamp(DeviceId deviceId) { 45 public Timestamp getTimestamp(DeviceId deviceId) {
46 - MastershipTerm term = deviceMastershipTerms.get(deviceId); 46 + DeviceMastershipTerm term = deviceMastershipTerms.get(deviceId);
47 if (term == null) { 47 if (term == null) {
48 throw new IllegalStateException("Requesting timestamp for a deviceId without mastership"); 48 throw new IllegalStateException("Requesting timestamp for a deviceId without mastership");
49 } 49 }
50 - return new MastershipBasedTimestamp(term.termNumber(), ticker.incrementAndGet()); 50 + return new DeviceMastershipBasedTimestamp(term.termNumber(), ticker.incrementAndGet());
51 } 51 }
52 52
53 @Override 53 @Override
54 - public void setMastershipTerm(DeviceId deviceId, MastershipTerm term) { 54 + public void setMastershipTerm(DeviceId deviceId, DeviceMastershipTerm term) {
55 deviceMastershipTerms.put(deviceId, term); 55 deviceMastershipTerms.put(deviceId, term);
56 } 56 }
57 } 57 }
......
...@@ -35,14 +35,14 @@ import org.onlab.onos.net.provider.ProviderId; ...@@ -35,14 +35,14 @@ import org.onlab.onos.net.provider.ProviderId;
35 import org.onlab.onos.store.AbstractStore; 35 import org.onlab.onos.store.AbstractStore;
36 import org.onlab.onos.store.ClockService; 36 import org.onlab.onos.store.ClockService;
37 import org.onlab.onos.store.Timestamp; 37 import org.onlab.onos.store.Timestamp;
38 +import org.onlab.onos.store.Timestamped;
38 import org.onlab.onos.store.cluster.messaging.ClusterCommunicationService; 39 import org.onlab.onos.store.cluster.messaging.ClusterCommunicationService;
39 import org.onlab.onos.store.cluster.messaging.ClusterMessage; 40 import org.onlab.onos.store.cluster.messaging.ClusterMessage;
40 import org.onlab.onos.store.cluster.messaging.ClusterMessageHandler; 41 import org.onlab.onos.store.cluster.messaging.ClusterMessageHandler;
41 -import org.onlab.onos.store.common.impl.MastershipBasedTimestamp; 42 +import org.onlab.onos.store.common.impl.DeviceMastershipBasedTimestamp;
42 -import org.onlab.onos.store.common.impl.Timestamped; 43 +import org.onlab.onos.store.common.impl.MastershipBasedTimestampSerializer;
43 import org.onlab.onos.store.serializers.KryoPoolUtil; 44 import org.onlab.onos.store.serializers.KryoPoolUtil;
44 import org.onlab.onos.store.serializers.KryoSerializer; 45 import org.onlab.onos.store.serializers.KryoSerializer;
45 -import org.onlab.onos.store.serializers.MastershipBasedTimestampSerializer;
46 import org.onlab.util.KryoPool; 46 import org.onlab.util.KryoPool;
47 import org.onlab.util.NewConcurrentHashMap; 47 import org.onlab.util.NewConcurrentHashMap;
48 import org.slf4j.Logger; 48 import org.slf4j.Logger;
...@@ -125,7 +125,7 @@ public class GossipDeviceStore ...@@ -125,7 +125,7 @@ public class GossipDeviceStore
125 .register(InternalPortStatusEvent.class, new InternalPortStatusEventSerializer()) 125 .register(InternalPortStatusEvent.class, new InternalPortStatusEventSerializer())
126 .register(Timestamp.class) 126 .register(Timestamp.class)
127 .register(Timestamped.class) 127 .register(Timestamped.class)
128 - .register(MastershipBasedTimestamp.class, new MastershipBasedTimestampSerializer()) 128 + .register(DeviceMastershipBasedTimestamp.class, new MastershipBasedTimestampSerializer())
129 .build() 129 .build()
130 .populate(1); 130 .populate(1);
131 } 131 }
...@@ -870,6 +870,12 @@ public class GossipDeviceStore ...@@ -870,6 +870,12 @@ public class GossipDeviceStore
870 clusterCommunicator.broadcast(message); 870 clusterCommunicator.broadcast(message);
871 } 871 }
872 872
873 + private void notifyDelegateIfNotNull(DeviceEvent event) {
874 + if (event != null) {
875 + notifyDelegate(event);
876 + }
877 + }
878 +
873 private class InternalDeviceEventListener implements ClusterMessageHandler { 879 private class InternalDeviceEventListener implements ClusterMessageHandler {
874 @Override 880 @Override
875 public void handle(ClusterMessage message) { 881 public void handle(ClusterMessage message) {
...@@ -881,7 +887,7 @@ public class GossipDeviceStore ...@@ -881,7 +887,7 @@ public class GossipDeviceStore
881 DeviceId deviceId = event.deviceId(); 887 DeviceId deviceId = event.deviceId();
882 Timestamped<DeviceDescription> deviceDescription = event.deviceDescription(); 888 Timestamped<DeviceDescription> deviceDescription = event.deviceDescription();
883 889
884 - createOrUpdateDeviceInternal(providerId, deviceId, deviceDescription); 890 + notifyDelegateIfNotNull(createOrUpdateDeviceInternal(providerId, deviceId, deviceDescription));
885 } 891 }
886 } 892 }
887 893
...@@ -895,7 +901,7 @@ public class GossipDeviceStore ...@@ -895,7 +901,7 @@ public class GossipDeviceStore
895 DeviceId deviceId = event.deviceId(); 901 DeviceId deviceId = event.deviceId();
896 Timestamp timestamp = event.timestamp(); 902 Timestamp timestamp = event.timestamp();
897 903
898 - markOfflineInternal(deviceId, timestamp); 904 + notifyDelegateIfNotNull(markOfflineInternal(deviceId, timestamp));
899 } 905 }
900 } 906 }
901 907
...@@ -909,7 +915,7 @@ public class GossipDeviceStore ...@@ -909,7 +915,7 @@ public class GossipDeviceStore
909 DeviceId deviceId = event.deviceId(); 915 DeviceId deviceId = event.deviceId();
910 Timestamp timestamp = event.timestamp(); 916 Timestamp timestamp = event.timestamp();
911 917
912 - removeDeviceInternal(deviceId, timestamp); 918 + notifyDelegateIfNotNull(removeDeviceInternal(deviceId, timestamp));
913 } 919 }
914 } 920 }
915 921
...@@ -924,7 +930,7 @@ public class GossipDeviceStore ...@@ -924,7 +930,7 @@ public class GossipDeviceStore
924 DeviceId deviceId = event.deviceId(); 930 DeviceId deviceId = event.deviceId();
925 Timestamped<List<PortDescription>> portDescriptions = event.portDescriptions(); 931 Timestamped<List<PortDescription>> portDescriptions = event.portDescriptions();
926 932
927 - updatePortsInternal(providerId, deviceId, portDescriptions); 933 + notifyDelegate(updatePortsInternal(providerId, deviceId, portDescriptions));
928 } 934 }
929 } 935 }
930 936
...@@ -939,7 +945,7 @@ public class GossipDeviceStore ...@@ -939,7 +945,7 @@ public class GossipDeviceStore
939 DeviceId deviceId = event.deviceId(); 945 DeviceId deviceId = event.deviceId();
940 Timestamped<PortDescription> portDescription = event.portDescription(); 946 Timestamped<PortDescription> portDescription = event.portDescription();
941 947
942 - updatePortStatusInternal(providerId, deviceId, portDescription); 948 + notifyDelegateIfNotNull(updatePortStatusInternal(providerId, deviceId, portDescription));
943 } 949 }
944 } 950 }
945 } 951 }
......
...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl; ...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl;
3 import org.onlab.onos.net.DeviceId; 3 import org.onlab.onos.net.DeviceId;
4 import org.onlab.onos.net.device.DeviceDescription; 4 import org.onlab.onos.net.device.DeviceDescription;
5 import org.onlab.onos.net.provider.ProviderId; 5 import org.onlab.onos.net.provider.ProviderId;
6 -import org.onlab.onos.store.common.impl.Timestamped; 6 +import org.onlab.onos.store.Timestamped;
7 7
8 /** 8 /**
9 * Information published by GossipDeviceStore to notify peers of a device 9 * Information published by GossipDeviceStore to notify peers of a device
......
...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl; ...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl;
3 import org.onlab.onos.net.DeviceId; 3 import org.onlab.onos.net.DeviceId;
4 import org.onlab.onos.net.device.DeviceDescription; 4 import org.onlab.onos.net.device.DeviceDescription;
5 import org.onlab.onos.net.provider.ProviderId; 5 import org.onlab.onos.net.provider.ProviderId;
6 -import org.onlab.onos.store.common.impl.Timestamped; 6 +import org.onlab.onos.store.Timestamped;
7 7
8 import com.esotericsoftware.kryo.Kryo; 8 import com.esotericsoftware.kryo.Kryo;
9 import com.esotericsoftware.kryo.Serializer; 9 import com.esotericsoftware.kryo.Serializer;
......
...@@ -5,7 +5,7 @@ import java.util.List; ...@@ -5,7 +5,7 @@ import java.util.List;
5 import org.onlab.onos.net.DeviceId; 5 import org.onlab.onos.net.DeviceId;
6 import org.onlab.onos.net.device.PortDescription; 6 import org.onlab.onos.net.device.PortDescription;
7 import org.onlab.onos.net.provider.ProviderId; 7 import org.onlab.onos.net.provider.ProviderId;
8 -import org.onlab.onos.store.common.impl.Timestamped; 8 +import org.onlab.onos.store.Timestamped;
9 9
10 /** 10 /**
11 * Information published by GossipDeviceStore to notify peers of a port 11 * Information published by GossipDeviceStore to notify peers of a port
......
...@@ -5,7 +5,7 @@ import java.util.List; ...@@ -5,7 +5,7 @@ import java.util.List;
5 import org.onlab.onos.net.DeviceId; 5 import org.onlab.onos.net.DeviceId;
6 import org.onlab.onos.net.device.PortDescription; 6 import org.onlab.onos.net.device.PortDescription;
7 import org.onlab.onos.net.provider.ProviderId; 7 import org.onlab.onos.net.provider.ProviderId;
8 -import org.onlab.onos.store.common.impl.Timestamped; 8 +import org.onlab.onos.store.Timestamped;
9 9
10 import com.esotericsoftware.kryo.Kryo; 10 import com.esotericsoftware.kryo.Kryo;
11 import com.esotericsoftware.kryo.Serializer; 11 import com.esotericsoftware.kryo.Serializer;
......
...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl; ...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl;
3 import org.onlab.onos.net.DeviceId; 3 import org.onlab.onos.net.DeviceId;
4 import org.onlab.onos.net.device.PortDescription; 4 import org.onlab.onos.net.device.PortDescription;
5 import org.onlab.onos.net.provider.ProviderId; 5 import org.onlab.onos.net.provider.ProviderId;
6 -import org.onlab.onos.store.common.impl.Timestamped; 6 +import org.onlab.onos.store.Timestamped;
7 7
8 /** 8 /**
9 * Information published by GossipDeviceStore to notify peers of a port 9 * Information published by GossipDeviceStore to notify peers of a port
......
...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl; ...@@ -3,7 +3,7 @@ package org.onlab.onos.store.device.impl;
3 import org.onlab.onos.net.DeviceId; 3 import org.onlab.onos.net.DeviceId;
4 import org.onlab.onos.net.device.PortDescription; 4 import org.onlab.onos.net.device.PortDescription;
5 import org.onlab.onos.net.provider.ProviderId; 5 import org.onlab.onos.net.provider.ProviderId;
6 -import org.onlab.onos.store.common.impl.Timestamped; 6 +import org.onlab.onos.store.Timestamped;
7 7
8 import com.esotericsoftware.kryo.Kryo; 8 import com.esotericsoftware.kryo.Kryo;
9 import com.esotericsoftware.kryo.Serializer; 9 import com.esotericsoftware.kryo.Serializer;
......
...@@ -31,7 +31,7 @@ import org.onlab.onos.net.provider.ProviderId; ...@@ -31,7 +31,7 @@ import org.onlab.onos.net.provider.ProviderId;
31 import org.onlab.onos.store.AbstractStore; 31 import org.onlab.onos.store.AbstractStore;
32 import org.onlab.onos.store.ClockService; 32 import org.onlab.onos.store.ClockService;
33 import org.onlab.onos.store.Timestamp; 33 import org.onlab.onos.store.Timestamp;
34 -import org.onlab.onos.store.device.impl.VersionedValue; 34 +import org.onlab.onos.store.VersionedValue;
35 import org.slf4j.Logger; 35 import org.slf4j.Logger;
36 36
37 import com.google.common.collect.HashMultimap; 37 import com.google.common.collect.HashMultimap;
......
...@@ -6,26 +6,25 @@ import java.nio.ByteBuffer; ...@@ -6,26 +6,25 @@ import java.nio.ByteBuffer;
6 6
7 import org.junit.Test; 7 import org.junit.Test;
8 import org.onlab.onos.store.Timestamp; 8 import org.onlab.onos.store.Timestamp;
9 -import org.onlab.onos.store.serializers.MastershipBasedTimestampSerializer;
10 import org.onlab.util.KryoPool; 9 import org.onlab.util.KryoPool;
11 10
12 import com.google.common.testing.EqualsTester; 11 import com.google.common.testing.EqualsTester;
13 12
14 /** 13 /**
15 - * Test of {@link MastershipBasedTimestamp}. 14 + * Test of {@link DeviceMastershipBasedTimestamp}.
16 */ 15 */
17 public class MastershipBasedTimestampTest { 16 public class MastershipBasedTimestampTest {
18 17
19 - private static final Timestamp TS_1_1 = new MastershipBasedTimestamp(1, 1); 18 + private static final Timestamp TS_1_1 = new DeviceMastershipBasedTimestamp(1, 1);
20 - private static final Timestamp TS_1_2 = new MastershipBasedTimestamp(1, 2); 19 + private static final Timestamp TS_1_2 = new DeviceMastershipBasedTimestamp(1, 2);
21 - private static final Timestamp TS_2_1 = new MastershipBasedTimestamp(2, 1); 20 + private static final Timestamp TS_2_1 = new DeviceMastershipBasedTimestamp(2, 1);
22 - private static final Timestamp TS_2_2 = new MastershipBasedTimestamp(2, 2); 21 + private static final Timestamp TS_2_2 = new DeviceMastershipBasedTimestamp(2, 2);
23 22
24 @Test 23 @Test
25 public final void testBasic() { 24 public final void testBasic() {
26 final int termNumber = 5; 25 final int termNumber = 5;
27 final int sequenceNumber = 6; 26 final int sequenceNumber = 6;
28 - MastershipBasedTimestamp ts = new MastershipBasedTimestamp(termNumber, 27 + DeviceMastershipBasedTimestamp ts = new DeviceMastershipBasedTimestamp(termNumber,
29 sequenceNumber); 28 sequenceNumber);
30 29
31 assertEquals(termNumber, ts.termNumber()); 30 assertEquals(termNumber, ts.termNumber());
...@@ -35,7 +34,7 @@ public class MastershipBasedTimestampTest { ...@@ -35,7 +34,7 @@ public class MastershipBasedTimestampTest {
35 @Test 34 @Test
36 public final void testCompareTo() { 35 public final void testCompareTo() {
37 assertTrue(TS_1_1.compareTo(TS_1_1) == 0); 36 assertTrue(TS_1_1.compareTo(TS_1_1) == 0);
38 - assertTrue(TS_1_1.compareTo(new MastershipBasedTimestamp(1, 1)) == 0); 37 + assertTrue(TS_1_1.compareTo(new DeviceMastershipBasedTimestamp(1, 1)) == 0);
39 38
40 assertTrue(TS_1_1.compareTo(TS_1_2) < 0); 39 assertTrue(TS_1_1.compareTo(TS_1_2) < 0);
41 assertTrue(TS_1_2.compareTo(TS_1_1) > 0); 40 assertTrue(TS_1_2.compareTo(TS_1_1) > 0);
...@@ -49,14 +48,14 @@ public class MastershipBasedTimestampTest { ...@@ -49,14 +48,14 @@ public class MastershipBasedTimestampTest {
49 @Test 48 @Test
50 public final void testEqualsObject() { 49 public final void testEqualsObject() {
51 new EqualsTester() 50 new EqualsTester()
52 - .addEqualityGroup(new MastershipBasedTimestamp(1, 1), 51 + .addEqualityGroup(new DeviceMastershipBasedTimestamp(1, 1),
53 - new MastershipBasedTimestamp(1, 1), TS_1_1) 52 + new DeviceMastershipBasedTimestamp(1, 1), TS_1_1)
54 - .addEqualityGroup(new MastershipBasedTimestamp(1, 2), 53 + .addEqualityGroup(new DeviceMastershipBasedTimestamp(1, 2),
55 - new MastershipBasedTimestamp(1, 2), TS_1_2) 54 + new DeviceMastershipBasedTimestamp(1, 2), TS_1_2)
56 - .addEqualityGroup(new MastershipBasedTimestamp(2, 1), 55 + .addEqualityGroup(new DeviceMastershipBasedTimestamp(2, 1),
57 - new MastershipBasedTimestamp(2, 1), TS_2_1) 56 + new DeviceMastershipBasedTimestamp(2, 1), TS_2_1)
58 - .addEqualityGroup(new MastershipBasedTimestamp(2, 2), 57 + .addEqualityGroup(new DeviceMastershipBasedTimestamp(2, 2),
59 - new MastershipBasedTimestamp(2, 2), TS_2_2) 58 + new DeviceMastershipBasedTimestamp(2, 2), TS_2_2)
60 .testEquals(); 59 .testEquals();
61 } 60 }
62 61
...@@ -64,7 +63,7 @@ public class MastershipBasedTimestampTest { ...@@ -64,7 +63,7 @@ public class MastershipBasedTimestampTest {
64 public final void testKryoSerializable() { 63 public final void testKryoSerializable() {
65 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024); 64 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
66 final KryoPool kryos = KryoPool.newBuilder() 65 final KryoPool kryos = KryoPool.newBuilder()
67 - .register(MastershipBasedTimestamp.class) 66 + .register(DeviceMastershipBasedTimestamp.class)
68 .build(); 67 .build();
69 68
70 kryos.serialize(TS_2_1, buffer); 69 kryos.serialize(TS_2_1, buffer);
...@@ -80,7 +79,7 @@ public class MastershipBasedTimestampTest { ...@@ -80,7 +79,7 @@ public class MastershipBasedTimestampTest {
80 public final void testKryoSerializableWithHandcraftedSerializer() { 79 public final void testKryoSerializableWithHandcraftedSerializer() {
81 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024); 80 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
82 final KryoPool kryos = KryoPool.newBuilder() 81 final KryoPool kryos = KryoPool.newBuilder()
83 - .register(MastershipBasedTimestamp.class, new MastershipBasedTimestampSerializer()) 82 + .register(DeviceMastershipBasedTimestamp.class, new MastershipBasedTimestampSerializer())
84 .build(); 83 .build();
85 84
86 kryos.serialize(TS_1_2, buffer); 85 kryos.serialize(TS_1_2, buffer);
......
...@@ -6,6 +6,7 @@ import java.nio.ByteBuffer; ...@@ -6,6 +6,7 @@ import java.nio.ByteBuffer;
6 6
7 import org.junit.Test; 7 import org.junit.Test;
8 import org.onlab.onos.store.Timestamp; 8 import org.onlab.onos.store.Timestamp;
9 +import org.onlab.onos.store.Timestamped;
9 import org.onlab.util.KryoPool; 10 import org.onlab.util.KryoPool;
10 11
11 import com.google.common.testing.EqualsTester; 12 import com.google.common.testing.EqualsTester;
...@@ -15,9 +16,9 @@ import com.google.common.testing.EqualsTester; ...@@ -15,9 +16,9 @@ import com.google.common.testing.EqualsTester;
15 */ 16 */
16 public class TimestampedTest { 17 public class TimestampedTest {
17 18
18 - private static final Timestamp TS_1_1 = new MastershipBasedTimestamp(1, 1); 19 + private static final Timestamp TS_1_1 = new DeviceMastershipBasedTimestamp(1, 1);
19 - private static final Timestamp TS_1_2 = new MastershipBasedTimestamp(1, 2); 20 + private static final Timestamp TS_1_2 = new DeviceMastershipBasedTimestamp(1, 2);
20 - private static final Timestamp TS_2_1 = new MastershipBasedTimestamp(2, 1); 21 + private static final Timestamp TS_2_1 = new DeviceMastershipBasedTimestamp(2, 1);
21 22
22 @Test 23 @Test
23 public final void testHashCode() { 24 public final void testHashCode() {
...@@ -79,7 +80,7 @@ public class TimestampedTest { ...@@ -79,7 +80,7 @@ public class TimestampedTest {
79 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024); 80 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
80 final KryoPool kryos = KryoPool.newBuilder() 81 final KryoPool kryos = KryoPool.newBuilder()
81 .register(Timestamped.class, 82 .register(Timestamped.class,
82 - MastershipBasedTimestamp.class) 83 + DeviceMastershipBasedTimestamp.class)
83 .build(); 84 .build();
84 85
85 Timestamped<String> original = new Timestamped<>("foobar", TS_1_1); 86 Timestamped<String> original = new Timestamped<>("foobar", TS_1_1);
......
...@@ -25,7 +25,6 @@ import org.onlab.onos.cluster.ClusterService; ...@@ -25,7 +25,6 @@ import org.onlab.onos.cluster.ClusterService;
25 import org.onlab.onos.cluster.ControllerNode; 25 import org.onlab.onos.cluster.ControllerNode;
26 import org.onlab.onos.cluster.ControllerNode.State; 26 import org.onlab.onos.cluster.ControllerNode.State;
27 import org.onlab.onos.cluster.DefaultControllerNode; 27 import org.onlab.onos.cluster.DefaultControllerNode;
28 -import org.onlab.onos.cluster.MastershipTerm;
29 import org.onlab.onos.cluster.NodeId; 28 import org.onlab.onos.cluster.NodeId;
30 import org.onlab.onos.net.Annotations; 29 import org.onlab.onos.net.Annotations;
31 import org.onlab.onos.net.DefaultAnnotations; 30 import org.onlab.onos.net.DefaultAnnotations;
...@@ -40,6 +39,7 @@ import org.onlab.onos.net.device.DeviceDescription; ...@@ -40,6 +39,7 @@ import org.onlab.onos.net.device.DeviceDescription;
40 import org.onlab.onos.net.device.DeviceEvent; 39 import org.onlab.onos.net.device.DeviceEvent;
41 import org.onlab.onos.net.device.DeviceStore; 40 import org.onlab.onos.net.device.DeviceStore;
42 import org.onlab.onos.net.device.DeviceStoreDelegate; 41 import org.onlab.onos.net.device.DeviceStoreDelegate;
42 +import org.onlab.onos.net.device.DeviceMastershipTerm;
43 import org.onlab.onos.net.device.PortDescription; 43 import org.onlab.onos.net.device.PortDescription;
44 import org.onlab.onos.net.provider.ProviderId; 44 import org.onlab.onos.net.provider.ProviderId;
45 import org.onlab.onos.store.ClockService; 45 import org.onlab.onos.store.ClockService;
...@@ -113,8 +113,8 @@ public class GossipDeviceStoreTest { ...@@ -113,8 +113,8 @@ public class GossipDeviceStoreTest {
113 deviceClockManager.activate(); 113 deviceClockManager.activate();
114 clockService = deviceClockManager; 114 clockService = deviceClockManager;
115 115
116 - deviceClockManager.setMastershipTerm(DID1, MastershipTerm.of(MYSELF, 1)); 116 + deviceClockManager.setMastershipTerm(DID1, DeviceMastershipTerm.of(MYSELF, 1));
117 - deviceClockManager.setMastershipTerm(DID2, MastershipTerm.of(MYSELF, 2)); 117 + deviceClockManager.setMastershipTerm(DID2, DeviceMastershipTerm.of(MYSELF, 2));
118 118
119 ClusterCommunicationService clusterCommunicator = new TestClusterCommunicationService(); 119 ClusterCommunicationService clusterCommunicator = new TestClusterCommunicationService();
120 ClusterService clusterService = new TestClusterService(); 120 ClusterService clusterService = new TestClusterService();
......
1 package org.onlab.onos.store.cluster.impl; 1 package org.onlab.onos.store.cluster.impl;
2 2
3 -import static org.onlab.onos.cluster.MastershipEvent.Type.MASTER_CHANGED; 3 +import static org.onlab.onos.net.device.DeviceMastershipEvent.Type.MASTER_CHANGED;
4 4
5 import java.util.Map; 5 import java.util.Map;
6 import java.util.Set; 6 import java.util.Set;
...@@ -12,13 +12,13 @@ import org.apache.felix.scr.annotations.Reference; ...@@ -12,13 +12,13 @@ import org.apache.felix.scr.annotations.Reference;
12 import org.apache.felix.scr.annotations.ReferenceCardinality; 12 import org.apache.felix.scr.annotations.ReferenceCardinality;
13 import org.apache.felix.scr.annotations.Service; 13 import org.apache.felix.scr.annotations.Service;
14 import org.onlab.onos.cluster.ClusterService; 14 import org.onlab.onos.cluster.ClusterService;
15 -import org.onlab.onos.cluster.MastershipEvent;
16 -import org.onlab.onos.cluster.MastershipStore;
17 -import org.onlab.onos.cluster.MastershipStoreDelegate;
18 -import org.onlab.onos.cluster.MastershipTerm;
19 import org.onlab.onos.cluster.NodeId; 15 import org.onlab.onos.cluster.NodeId;
20 import org.onlab.onos.net.DeviceId; 16 import org.onlab.onos.net.DeviceId;
21 import org.onlab.onos.net.MastershipRole; 17 import org.onlab.onos.net.MastershipRole;
18 +import org.onlab.onos.net.device.DeviceMastershipEvent;
19 +import org.onlab.onos.net.device.DeviceMastershipStore;
20 +import org.onlab.onos.net.device.DeviceMastershipStoreDelegate;
21 +import org.onlab.onos.net.device.DeviceMastershipTerm;
22 import org.onlab.onos.store.common.AbstractHazelcastStore; 22 import org.onlab.onos.store.common.AbstractHazelcastStore;
23 23
24 import com.google.common.collect.ImmutableSet; 24 import com.google.common.collect.ImmutableSet;
...@@ -33,8 +33,8 @@ import com.hazelcast.core.MultiMap; ...@@ -33,8 +33,8 @@ import com.hazelcast.core.MultiMap;
33 @Component(immediate = true) 33 @Component(immediate = true)
34 @Service 34 @Service
35 public class DistributedMastershipStore 35 public class DistributedMastershipStore
36 -extends AbstractHazelcastStore<MastershipEvent, MastershipStoreDelegate> 36 +extends AbstractHazelcastStore<DeviceMastershipEvent, DeviceMastershipStoreDelegate>
37 -implements MastershipStore { 37 +implements DeviceMastershipStore {
38 38
39 //arbitrary lock name 39 //arbitrary lock name
40 private static final String LOCK = "lock"; 40 private static final String LOCK = "lock";
...@@ -100,7 +100,7 @@ implements MastershipStore { ...@@ -100,7 +100,7 @@ implements MastershipStore {
100 } 100 }
101 101
102 @Override 102 @Override
103 - public MastershipEvent setMaster(NodeId nodeId, DeviceId deviceId) { 103 + public DeviceMastershipEvent setMaster(NodeId nodeId, DeviceId deviceId) {
104 byte [] did = serialize(deviceId); 104 byte [] did = serialize(deviceId);
105 byte [] nid = serialize(nodeId); 105 byte [] nid = serialize(nodeId);
106 106
...@@ -123,12 +123,12 @@ implements MastershipStore { ...@@ -123,12 +123,12 @@ implements MastershipStore {
123 masters.put(did, nid); 123 masters.put(did, nid);
124 evict(nid, did); 124 evict(nid, did);
125 updateTerm(did); 125 updateTerm(did);
126 - return new MastershipEvent(MASTER_CHANGED, deviceId, nodeId); 126 + return new DeviceMastershipEvent(MASTER_CHANGED, deviceId, nodeId);
127 case NONE: 127 case NONE:
128 masters.put(did, nid); 128 masters.put(did, nid);
129 evict(nid, did); 129 evict(nid, did);
130 updateTerm(did); 130 updateTerm(did);
131 - return new MastershipEvent(MASTER_CHANGED, deviceId, nodeId); 131 + return new DeviceMastershipEvent(MASTER_CHANGED, deviceId, nodeId);
132 default: 132 default:
133 log.warn("unknown Mastership Role {}", role); 133 log.warn("unknown Mastership Role {}", role);
134 return null; 134 return null;
...@@ -191,21 +191,21 @@ implements MastershipStore { ...@@ -191,21 +191,21 @@ implements MastershipStore {
191 } 191 }
192 192
193 @Override 193 @Override
194 - public MastershipTerm getTermFor(DeviceId deviceId) { 194 + public DeviceMastershipTerm getTermFor(DeviceId deviceId) {
195 byte[] did = serialize(deviceId); 195 byte[] did = serialize(deviceId);
196 if ((masters.get(did) == null) || 196 if ((masters.get(did) == null) ||
197 (terms.get(did) == null)) { 197 (terms.get(did) == null)) {
198 return null; 198 return null;
199 } 199 }
200 - return MastershipTerm.of( 200 + return DeviceMastershipTerm.of(
201 (NodeId) deserialize(masters.get(did)), terms.get(did)); 201 (NodeId) deserialize(masters.get(did)), terms.get(did));
202 } 202 }
203 203
204 @Override 204 @Override
205 - public MastershipEvent setStandby(NodeId nodeId, DeviceId deviceId) { 205 + public DeviceMastershipEvent setStandby(NodeId nodeId, DeviceId deviceId) {
206 byte [] did = serialize(deviceId); 206 byte [] did = serialize(deviceId);
207 byte [] nid = serialize(nodeId); 207 byte [] nid = serialize(nodeId);
208 - MastershipEvent event = null; 208 + DeviceMastershipEvent event = null;
209 209
210 ILock lock = theInstance.getLock(LOCK); 210 ILock lock = theInstance.getLock(LOCK);
211 lock.lock(); 211 lock.lock();
...@@ -231,10 +231,10 @@ implements MastershipStore { ...@@ -231,10 +231,10 @@ implements MastershipStore {
231 } 231 }
232 232
233 @Override 233 @Override
234 - public MastershipEvent relinquishRole(NodeId nodeId, DeviceId deviceId) { 234 + public DeviceMastershipEvent relinquishRole(NodeId nodeId, DeviceId deviceId) {
235 byte [] did = serialize(deviceId); 235 byte [] did = serialize(deviceId);
236 byte [] nid = serialize(nodeId); 236 byte [] nid = serialize(nodeId);
237 - MastershipEvent event = null; 237 + DeviceMastershipEvent event = null;
238 238
239 ILock lock = theInstance.getLock(LOCK); 239 ILock lock = theInstance.getLock(LOCK);
240 lock.lock(); 240 lock.lock();
...@@ -260,7 +260,7 @@ implements MastershipStore { ...@@ -260,7 +260,7 @@ implements MastershipStore {
260 } 260 }
261 261
262 //helper to fetch a new master candidate for a given device. 262 //helper to fetch a new master candidate for a given device.
263 - private MastershipEvent reelect(NodeId current, DeviceId deviceId) { 263 + private DeviceMastershipEvent reelect(NodeId current, DeviceId deviceId) {
264 byte [] did = serialize(deviceId); 264 byte [] did = serialize(deviceId);
265 byte [] nid = serialize(current); 265 byte [] nid = serialize(current);
266 266
...@@ -281,7 +281,7 @@ implements MastershipStore { ...@@ -281,7 +281,7 @@ implements MastershipStore {
281 evict(backup, did); 281 evict(backup, did);
282 Integer term = terms.get(did); 282 Integer term = terms.get(did);
283 terms.put(did, ++term); 283 terms.put(did, ++term);
284 - return new MastershipEvent( 284 + return new DeviceMastershipEvent(
285 MASTER_CHANGED, deviceId, (NodeId) deserialize(backup)); 285 MASTER_CHANGED, deviceId, (NodeId) deserialize(backup));
286 } 286 }
287 } 287 }
...@@ -320,7 +320,7 @@ implements MastershipStore { ...@@ -320,7 +320,7 @@ implements MastershipStore {
320 320
321 @Override 321 @Override
322 protected void onAdd(DeviceId deviceId, NodeId nodeId) { 322 protected void onAdd(DeviceId deviceId, NodeId nodeId) {
323 - notifyDelegate(new MastershipEvent(MASTER_CHANGED, deviceId, nodeId)); 323 + notifyDelegate(new DeviceMastershipEvent(MASTER_CHANGED, deviceId, nodeId));
324 } 324 }
325 325
326 @Override 326 @Override
......
...@@ -21,12 +21,12 @@ import org.onlab.onos.cluster.ClusterService; ...@@ -21,12 +21,12 @@ import org.onlab.onos.cluster.ClusterService;
21 import org.onlab.onos.cluster.ControllerNode; 21 import org.onlab.onos.cluster.ControllerNode;
22 import org.onlab.onos.cluster.ControllerNode.State; 22 import org.onlab.onos.cluster.ControllerNode.State;
23 import org.onlab.onos.cluster.DefaultControllerNode; 23 import org.onlab.onos.cluster.DefaultControllerNode;
24 -import org.onlab.onos.cluster.MastershipEvent;
25 -import org.onlab.onos.cluster.MastershipEvent.Type;
26 -import org.onlab.onos.cluster.MastershipStoreDelegate;
27 -import org.onlab.onos.cluster.MastershipTerm;
28 import org.onlab.onos.cluster.NodeId; 24 import org.onlab.onos.cluster.NodeId;
29 import org.onlab.onos.net.DeviceId; 25 import org.onlab.onos.net.DeviceId;
26 +import org.onlab.onos.net.device.DeviceMastershipEvent;
27 +import org.onlab.onos.net.device.DeviceMastershipStoreDelegate;
28 +import org.onlab.onos.net.device.DeviceMastershipTerm;
29 +import org.onlab.onos.net.device.DeviceMastershipEvent.Type;
30 import org.onlab.onos.store.common.StoreManager; 30 import org.onlab.onos.store.common.StoreManager;
31 import org.onlab.onos.store.common.StoreService; 31 import org.onlab.onos.store.common.StoreService;
32 import org.onlab.onos.store.common.TestStoreManager; 32 import org.onlab.onos.store.common.TestStoreManager;
...@@ -133,7 +133,7 @@ public class DistributedMastershipStoreTest { ...@@ -133,7 +133,7 @@ public class DistributedMastershipStoreTest {
133 assertEquals("wrong role for NONE:", MASTER, dms.requestRole(DID1)); 133 assertEquals("wrong role for NONE:", MASTER, dms.requestRole(DID1));
134 assertTrue("wrong state for store:", !dms.terms.isEmpty()); 134 assertTrue("wrong state for store:", !dms.terms.isEmpty());
135 assertEquals("wrong term", 135 assertEquals("wrong term",
136 - MastershipTerm.of(N1, 0), dms.getTermFor(DID1)); 136 + DeviceMastershipTerm.of(N1, 0), dms.getTermFor(DID1));
137 137
138 //CN2 now local. DID2 has N1 as MASTER so N2 is STANDBY 138 //CN2 now local. DID2 has N1 as MASTER so N2 is STANDBY
139 testStore.setCurrent(CN2); 139 testStore.setCurrent(CN2);
...@@ -143,7 +143,7 @@ public class DistributedMastershipStoreTest { ...@@ -143,7 +143,7 @@ public class DistributedMastershipStoreTest {
143 //change term and requestRole() again; should persist 143 //change term and requestRole() again; should persist
144 testStore.increment(DID2); 144 testStore.increment(DID2);
145 assertEquals("wrong role for STANDBY:", STANDBY, dms.requestRole(DID2)); 145 assertEquals("wrong role for STANDBY:", STANDBY, dms.requestRole(DID2));
146 - assertEquals("wrong term", MastershipTerm.of(N1, 1), dms.getTermFor(DID2)); 146 + assertEquals("wrong term", DeviceMastershipTerm.of(N1, 1), dms.getTermFor(DID2));
147 } 147 }
148 148
149 @Test 149 @Test
...@@ -155,15 +155,15 @@ public class DistributedMastershipStoreTest { ...@@ -155,15 +155,15 @@ public class DistributedMastershipStoreTest {
155 155
156 //switch over to N2 156 //switch over to N2
157 assertEquals("wrong event:", Type.MASTER_CHANGED, dms.setMaster(N2, DID1).type()); 157 assertEquals("wrong event:", Type.MASTER_CHANGED, dms.setMaster(N2, DID1).type());
158 - assertEquals("wrong term", MastershipTerm.of(N2, 1), dms.getTermFor(DID1)); 158 + assertEquals("wrong term", DeviceMastershipTerm.of(N2, 1), dms.getTermFor(DID1));
159 159
160 //orphan switch - should be rare case 160 //orphan switch - should be rare case
161 assertEquals("wrong event:", Type.MASTER_CHANGED, dms.setMaster(N2, DID2).type()); 161 assertEquals("wrong event:", Type.MASTER_CHANGED, dms.setMaster(N2, DID2).type());
162 - assertEquals("wrong term", MastershipTerm.of(N2, 0), dms.getTermFor(DID2)); 162 + assertEquals("wrong term", DeviceMastershipTerm.of(N2, 0), dms.getTermFor(DID2));
163 //disconnect and reconnect - sign of failing re-election or single-instance channel 163 //disconnect and reconnect - sign of failing re-election or single-instance channel
164 testStore.reset(true, false, false); 164 testStore.reset(true, false, false);
165 dms.setMaster(N2, DID2); 165 dms.setMaster(N2, DID2);
166 - assertEquals("wrong term", MastershipTerm.of(N2, 1), dms.getTermFor(DID2)); 166 + assertEquals("wrong term", DeviceMastershipTerm.of(N2, 1), dms.getTermFor(DID2));
167 } 167 }
168 168
169 @Test 169 @Test
...@@ -211,9 +211,9 @@ public class DistributedMastershipStoreTest { ...@@ -211,9 +211,9 @@ public class DistributedMastershipStoreTest {
211 //shamelessly copy other distributed store tests 211 //shamelessly copy other distributed store tests
212 final CountDownLatch addLatch = new CountDownLatch(1); 212 final CountDownLatch addLatch = new CountDownLatch(1);
213 213
214 - MastershipStoreDelegate checkAdd = new MastershipStoreDelegate() { 214 + DeviceMastershipStoreDelegate checkAdd = new DeviceMastershipStoreDelegate() {
215 @Override 215 @Override
216 - public void notify(MastershipEvent event) { 216 + public void notify(DeviceMastershipEvent event) {
217 assertEquals("wrong event:", Type.MASTER_CHANGED, event.type()); 217 assertEquals("wrong event:", Type.MASTER_CHANGED, event.type());
218 assertEquals("wrong subject", DID1, event.subject()); 218 assertEquals("wrong subject", DID1, event.subject());
219 assertEquals("wrong subject", N1, event.master()); 219 assertEquals("wrong subject", N1, event.master());
......
...@@ -2,8 +2,8 @@ package org.onlab.onos.store.device.impl; ...@@ -2,8 +2,8 @@ package org.onlab.onos.store.device.impl;
2 2
3 import org.apache.felix.scr.annotations.Component; 3 import org.apache.felix.scr.annotations.Component;
4 import org.apache.felix.scr.annotations.Service; 4 import org.apache.felix.scr.annotations.Service;
5 -import org.onlab.onos.cluster.MastershipTerm;
6 import org.onlab.onos.net.DeviceId; 5 import org.onlab.onos.net.DeviceId;
6 +import org.onlab.onos.net.device.DeviceMastershipTerm;
7 import org.onlab.onos.store.ClockProviderService; 7 import org.onlab.onos.store.ClockProviderService;
8 8
9 // FIXME: Code clone in onos-core-trivial, onos-core-hz-net 9 // FIXME: Code clone in onos-core-trivial, onos-core-hz-net
...@@ -15,6 +15,6 @@ import org.onlab.onos.store.ClockProviderService; ...@@ -15,6 +15,6 @@ import org.onlab.onos.store.ClockProviderService;
15 public class NoOpClockProviderService implements ClockProviderService { 15 public class NoOpClockProviderService implements ClockProviderService {
16 16
17 @Override 17 @Override
18 - public void setMastershipTerm(DeviceId deviceId, MastershipTerm term) { 18 + public void setMastershipTerm(DeviceId deviceId, DeviceMastershipTerm term) {
19 } 19 }
20 } 20 }
......
...@@ -7,7 +7,6 @@ import java.util.HashMap; ...@@ -7,7 +7,6 @@ import java.util.HashMap;
7 7
8 import org.onlab.onos.cluster.ControllerNode; 8 import org.onlab.onos.cluster.ControllerNode;
9 import org.onlab.onos.cluster.DefaultControllerNode; 9 import org.onlab.onos.cluster.DefaultControllerNode;
10 -import org.onlab.onos.cluster.MastershipTerm;
11 import org.onlab.onos.cluster.NodeId; 10 import org.onlab.onos.cluster.NodeId;
12 import org.onlab.onos.net.ConnectPoint; 11 import org.onlab.onos.net.ConnectPoint;
13 import org.onlab.onos.net.DefaultAnnotations; 12 import org.onlab.onos.net.DefaultAnnotations;
...@@ -24,6 +23,7 @@ import org.onlab.onos.net.Port; ...@@ -24,6 +23,7 @@ import org.onlab.onos.net.Port;
24 import org.onlab.onos.net.PortNumber; 23 import org.onlab.onos.net.PortNumber;
25 import org.onlab.onos.net.device.DefaultDeviceDescription; 24 import org.onlab.onos.net.device.DefaultDeviceDescription;
26 import org.onlab.onos.net.device.DefaultPortDescription; 25 import org.onlab.onos.net.device.DefaultPortDescription;
26 +import org.onlab.onos.net.device.DeviceMastershipTerm;
27 import org.onlab.onos.net.provider.ProviderId; 27 import org.onlab.onos.net.provider.ProviderId;
28 import org.onlab.packet.IpAddress; 28 import org.onlab.packet.IpAddress;
29 import org.onlab.packet.IpPrefix; 29 import org.onlab.packet.IpPrefix;
...@@ -74,7 +74,7 @@ public final class KryoPoolUtil { ...@@ -74,7 +74,7 @@ public final class KryoPoolUtil {
74 .register(LinkKey.class, new LinkKeySerializer()) 74 .register(LinkKey.class, new LinkKeySerializer())
75 .register(ConnectPoint.class, new ConnectPointSerializer()) 75 .register(ConnectPoint.class, new ConnectPointSerializer())
76 .register(DefaultLink.class, new DefaultLinkSerializer()) 76 .register(DefaultLink.class, new DefaultLinkSerializer())
77 - .register(MastershipTerm.class, new MastershipTermSerializer()) 77 + .register(DeviceMastershipTerm.class, new MastershipTermSerializer())
78 .register(MastershipRole.class, new MastershipRoleSerializer()) 78 .register(MastershipRole.class, new MastershipRoleSerializer())
79 79
80 .build(); 80 .build();
......
1 package org.onlab.onos.store.serializers; 1 package org.onlab.onos.store.serializers;
2 2
3 -import org.onlab.onos.cluster.MastershipTerm;
4 import org.onlab.onos.cluster.NodeId; 3 import org.onlab.onos.cluster.NodeId;
4 +import org.onlab.onos.net.device.DeviceMastershipTerm;
5 +
5 import com.esotericsoftware.kryo.Kryo; 6 import com.esotericsoftware.kryo.Kryo;
6 import com.esotericsoftware.kryo.Serializer; 7 import com.esotericsoftware.kryo.Serializer;
7 import com.esotericsoftware.kryo.io.Input; 8 import com.esotericsoftware.kryo.io.Input;
8 import com.esotericsoftware.kryo.io.Output; 9 import com.esotericsoftware.kryo.io.Output;
9 10
10 /** 11 /**
11 - * Kryo Serializer for {@link org.onlab.onos.cluster.MastershipTerm}. 12 + * Kryo Serializer for {@link org.onlab.onos.net.device.DeviceMastershipTerm}.
12 */ 13 */
13 -public class MastershipTermSerializer extends Serializer<MastershipTerm> { 14 +public class MastershipTermSerializer extends Serializer<DeviceMastershipTerm> {
14 15
15 /** 16 /**
16 - * Creates {@link MastershipTerm} serializer instance. 17 + * Creates {@link DeviceMastershipTerm} serializer instance.
17 */ 18 */
18 public MastershipTermSerializer() { 19 public MastershipTermSerializer() {
19 // non-null, immutable 20 // non-null, immutable
...@@ -21,14 +22,14 @@ public class MastershipTermSerializer extends Serializer<MastershipTerm> { ...@@ -21,14 +22,14 @@ public class MastershipTermSerializer extends Serializer<MastershipTerm> {
21 } 22 }
22 23
23 @Override 24 @Override
24 - public MastershipTerm read(Kryo kryo, Input input, Class<MastershipTerm> type) { 25 + public DeviceMastershipTerm read(Kryo kryo, Input input, Class<DeviceMastershipTerm> type) {
25 final NodeId node = new NodeId(input.readString()); 26 final NodeId node = new NodeId(input.readString());
26 final int term = input.readInt(); 27 final int term = input.readInt();
27 - return MastershipTerm.of(node, term); 28 + return DeviceMastershipTerm.of(node, term);
28 } 29 }
29 30
30 @Override 31 @Override
31 - public void write(Kryo kryo, Output output, MastershipTerm object) { 32 + public void write(Kryo kryo, Output output, DeviceMastershipTerm object) {
32 output.writeString(object.master().toString()); 33 output.writeString(object.master().toString());
33 output.writeInt(object.termNumber()); 34 output.writeInt(object.termNumber());
34 } 35 }
......
...@@ -10,7 +10,6 @@ import org.junit.After; ...@@ -10,7 +10,6 @@ import org.junit.After;
10 import org.junit.Before; 10 import org.junit.Before;
11 import org.junit.BeforeClass; 11 import org.junit.BeforeClass;
12 import org.junit.Test; 12 import org.junit.Test;
13 -import org.onlab.onos.cluster.MastershipTerm;
14 import org.onlab.onos.cluster.NodeId; 13 import org.onlab.onos.cluster.NodeId;
15 import org.onlab.onos.net.Annotations; 14 import org.onlab.onos.net.Annotations;
16 import org.onlab.onos.net.ConnectPoint; 15 import org.onlab.onos.net.ConnectPoint;
...@@ -25,6 +24,7 @@ import org.onlab.onos.net.LinkKey; ...@@ -25,6 +24,7 @@ import org.onlab.onos.net.LinkKey;
25 import org.onlab.onos.net.MastershipRole; 24 import org.onlab.onos.net.MastershipRole;
26 import org.onlab.onos.net.PortNumber; 25 import org.onlab.onos.net.PortNumber;
27 import org.onlab.onos.net.SparseAnnotations; 26 import org.onlab.onos.net.SparseAnnotations;
27 +import org.onlab.onos.net.device.DeviceMastershipTerm;
28 import org.onlab.onos.net.provider.ProviderId; 28 import org.onlab.onos.net.provider.ProviderId;
29 import org.onlab.packet.IpAddress; 29 import org.onlab.packet.IpAddress;
30 import org.onlab.packet.IpPrefix; 30 import org.onlab.packet.IpPrefix;
...@@ -114,7 +114,7 @@ public class KryoSerializerTest { ...@@ -114,7 +114,7 @@ public class KryoSerializerTest {
114 testSerialized(PID); 114 testSerialized(PID);
115 testSerialized(PIDA); 115 testSerialized(PIDA);
116 testSerialized(new NodeId("bar")); 116 testSerialized(new NodeId("bar"));
117 - testSerialized(MastershipTerm.of(new NodeId("foo"), 2)); 117 + testSerialized(DeviceMastershipTerm.of(new NodeId("foo"), 2));
118 for (MastershipRole role : MastershipRole.values()) { 118 for (MastershipRole role : MastershipRole.values()) {
119 testSerialized(role); 119 testSerialized(role);
120 } 120 }
......
...@@ -2,8 +2,8 @@ package org.onlab.onos.store.trivial.impl; ...@@ -2,8 +2,8 @@ package org.onlab.onos.store.trivial.impl;
2 2
3 import org.apache.felix.scr.annotations.Component; 3 import org.apache.felix.scr.annotations.Component;
4 import org.apache.felix.scr.annotations.Service; 4 import org.apache.felix.scr.annotations.Service;
5 -import org.onlab.onos.cluster.MastershipTerm;
6 import org.onlab.onos.net.DeviceId; 5 import org.onlab.onos.net.DeviceId;
6 +import org.onlab.onos.net.device.DeviceMastershipTerm;
7 import org.onlab.onos.store.ClockProviderService; 7 import org.onlab.onos.store.ClockProviderService;
8 8
9 //FIXME: Code clone in onos-core-trivial, onos-core-hz-net 9 //FIXME: Code clone in onos-core-trivial, onos-core-hz-net
...@@ -15,6 +15,6 @@ import org.onlab.onos.store.ClockProviderService; ...@@ -15,6 +15,6 @@ import org.onlab.onos.store.ClockProviderService;
15 public class NoOpClockProviderService implements ClockProviderService { 15 public class NoOpClockProviderService implements ClockProviderService {
16 16
17 @Override 17 @Override
18 - public void setMastershipTerm(DeviceId deviceId, MastershipTerm term) { 18 + public void setMastershipTerm(DeviceId deviceId, DeviceMastershipTerm term) {
19 } 19 }
20 } 20 }
......
...@@ -15,18 +15,18 @@ import org.apache.felix.scr.annotations.Deactivate; ...@@ -15,18 +15,18 @@ import org.apache.felix.scr.annotations.Deactivate;
15 import org.apache.felix.scr.annotations.Service; 15 import org.apache.felix.scr.annotations.Service;
16 import org.onlab.onos.cluster.ControllerNode; 16 import org.onlab.onos.cluster.ControllerNode;
17 import org.onlab.onos.cluster.DefaultControllerNode; 17 import org.onlab.onos.cluster.DefaultControllerNode;
18 -import org.onlab.onos.cluster.MastershipEvent;
19 -import org.onlab.onos.cluster.MastershipStore;
20 -import org.onlab.onos.cluster.MastershipStoreDelegate;
21 -import org.onlab.onos.cluster.MastershipTerm;
22 import org.onlab.onos.cluster.NodeId; 18 import org.onlab.onos.cluster.NodeId;
23 import org.onlab.onos.net.DeviceId; 19 import org.onlab.onos.net.DeviceId;
24 import org.onlab.onos.net.MastershipRole; 20 import org.onlab.onos.net.MastershipRole;
21 +import org.onlab.onos.net.device.DeviceMastershipEvent;
22 +import org.onlab.onos.net.device.DeviceMastershipStore;
23 +import org.onlab.onos.net.device.DeviceMastershipStoreDelegate;
24 +import org.onlab.onos.net.device.DeviceMastershipTerm;
25 import org.onlab.onos.store.AbstractStore; 25 import org.onlab.onos.store.AbstractStore;
26 import org.onlab.packet.IpPrefix; 26 import org.onlab.packet.IpPrefix;
27 import org.slf4j.Logger; 27 import org.slf4j.Logger;
28 28
29 -import static org.onlab.onos.cluster.MastershipEvent.Type.*; 29 +import static org.onlab.onos.net.device.DeviceMastershipEvent.Type.*;
30 30
31 /** 31 /**
32 * Manages inventory of controller mastership over devices using 32 * Manages inventory of controller mastership over devices using
...@@ -35,8 +35,8 @@ import static org.onlab.onos.cluster.MastershipEvent.Type.*; ...@@ -35,8 +35,8 @@ import static org.onlab.onos.cluster.MastershipEvent.Type.*;
35 @Component(immediate = true) 35 @Component(immediate = true)
36 @Service 36 @Service
37 public class SimpleMastershipStore 37 public class SimpleMastershipStore
38 - extends AbstractStore<MastershipEvent, MastershipStoreDelegate> 38 + extends AbstractStore<DeviceMastershipEvent, DeviceMastershipStoreDelegate>
39 - implements MastershipStore { 39 + implements DeviceMastershipStore {
40 40
41 private final Logger log = getLogger(getClass()); 41 private final Logger log = getLogger(getClass());
42 42
...@@ -63,7 +63,7 @@ public class SimpleMastershipStore ...@@ -63,7 +63,7 @@ public class SimpleMastershipStore
63 } 63 }
64 64
65 @Override 65 @Override
66 - public MastershipEvent setMaster(NodeId nodeId, DeviceId deviceId) { 66 + public DeviceMastershipEvent setMaster(NodeId nodeId, DeviceId deviceId) {
67 MastershipRole role = getRole(nodeId, deviceId); 67 MastershipRole role = getRole(nodeId, deviceId);
68 68
69 synchronized (this) { 69 synchronized (this) {
...@@ -86,7 +86,7 @@ public class SimpleMastershipStore ...@@ -86,7 +86,7 @@ public class SimpleMastershipStore
86 } 86 }
87 } 87 }
88 88
89 - return new MastershipEvent(MASTER_CHANGED, deviceId, nodeId); 89 + return new DeviceMastershipEvent(MASTER_CHANGED, deviceId, nodeId);
90 } 90 }
91 91
92 @Override 92 @Override
...@@ -164,17 +164,17 @@ public class SimpleMastershipStore ...@@ -164,17 +164,17 @@ public class SimpleMastershipStore
164 } 164 }
165 165
166 @Override 166 @Override
167 - public MastershipTerm getTermFor(DeviceId deviceId) { 167 + public DeviceMastershipTerm getTermFor(DeviceId deviceId) {
168 if ((masterMap.get(deviceId) == null) || 168 if ((masterMap.get(deviceId) == null) ||
169 (termMap.get(deviceId) == null)) { 169 (termMap.get(deviceId) == null)) {
170 return null; 170 return null;
171 } 171 }
172 - return MastershipTerm.of( 172 + return DeviceMastershipTerm.of(
173 masterMap.get(deviceId), termMap.get(deviceId).get()); 173 masterMap.get(deviceId), termMap.get(deviceId).get());
174 } 174 }
175 175
176 @Override 176 @Override
177 - public MastershipEvent setStandby(NodeId nodeId, DeviceId deviceId) { 177 + public DeviceMastershipEvent setStandby(NodeId nodeId, DeviceId deviceId) {
178 MastershipRole role = getRole(nodeId, deviceId); 178 MastershipRole role = getRole(nodeId, deviceId);
179 synchronized (this) { 179 synchronized (this) {
180 switch (role) { 180 switch (role) {
...@@ -185,7 +185,7 @@ public class SimpleMastershipStore ...@@ -185,7 +185,7 @@ public class SimpleMastershipStore
185 } else { 185 } else {
186 masterMap.put(deviceId, backup); 186 masterMap.put(deviceId, backup);
187 termMap.get(deviceId).incrementAndGet(); 187 termMap.get(deviceId).incrementAndGet();
188 - return new MastershipEvent(MASTER_CHANGED, deviceId, backup); 188 + return new DeviceMastershipEvent(MASTER_CHANGED, deviceId, backup);
189 } 189 }
190 case STANDBY: 190 case STANDBY:
191 case NONE: 191 case NONE:
...@@ -215,7 +215,7 @@ public class SimpleMastershipStore ...@@ -215,7 +215,7 @@ public class SimpleMastershipStore
215 } 215 }
216 216
217 @Override 217 @Override
218 - public MastershipEvent relinquishRole(NodeId nodeId, DeviceId deviceId) { 218 + public DeviceMastershipEvent relinquishRole(NodeId nodeId, DeviceId deviceId) {
219 return setStandby(nodeId, deviceId); 219 return setStandby(nodeId, deviceId);
220 } 220 }
221 221
......
...@@ -6,9 +6,9 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -6,9 +6,9 @@ import java.util.concurrent.atomic.AtomicInteger;
6 import org.junit.After; 6 import org.junit.After;
7 import org.junit.Before; 7 import org.junit.Before;
8 import org.junit.Test; 8 import org.junit.Test;
9 -import org.onlab.onos.cluster.MastershipTerm;
10 import org.onlab.onos.cluster.NodeId; 9 import org.onlab.onos.cluster.NodeId;
11 import org.onlab.onos.net.DeviceId; 10 import org.onlab.onos.net.DeviceId;
11 +import org.onlab.onos.net.device.DeviceMastershipTerm;
12 12
13 import com.google.common.collect.Sets; 13 import com.google.common.collect.Sets;
14 14
...@@ -16,7 +16,7 @@ import static org.junit.Assert.assertEquals; ...@@ -16,7 +16,7 @@ import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertNull; 16 import static org.junit.Assert.assertNull;
17 import static org.junit.Assert.assertTrue; 17 import static org.junit.Assert.assertTrue;
18 import static org.onlab.onos.net.MastershipRole.*; 18 import static org.onlab.onos.net.MastershipRole.*;
19 -import static org.onlab.onos.cluster.MastershipEvent.Type.*; 19 +import static org.onlab.onos.net.device.DeviceMastershipEvent.Type.*;
20 20
21 /** 21 /**
22 * Test for the simple MastershipStore implementation. 22 * Test for the simple MastershipStore implementation.
...@@ -98,12 +98,12 @@ public class SimpleMastershipStoreTest { ...@@ -98,12 +98,12 @@ public class SimpleMastershipStoreTest {
98 @Test 98 @Test
99 public void getTermFor() { 99 public void getTermFor() {
100 put(DID1, N1, true, true); 100 put(DID1, N1, true, true);
101 - assertEquals("wrong term", MastershipTerm.of(N1, 0), sms.getTermFor(DID1)); 101 + assertEquals("wrong term", DeviceMastershipTerm.of(N1, 0), sms.getTermFor(DID1));
102 102
103 //switch to N2 and back - 2 term switches 103 //switch to N2 and back - 2 term switches
104 sms.setMaster(N2, DID1); 104 sms.setMaster(N2, DID1);
105 sms.setMaster(N1, DID1); 105 sms.setMaster(N1, DID1);
106 - assertEquals("wrong term", MastershipTerm.of(N1, 2), sms.getTermFor(DID1)); 106 + assertEquals("wrong term", DeviceMastershipTerm.of(N1, 2), sms.getTermFor(DID1));
107 } 107 }
108 108
109 @Test 109 @Test
......