Added providerService for mastership
Change-Id: I1572161f70c696961a663cba17f197e23f96967e
Showing
3 changed files
with
23 additions
and
7 deletions
| 1 | package org.onlab.onos.cluster; | 1 | package org.onlab.onos.cluster; |
| 2 | 2 | ||
| 3 | +import org.onlab.onos.net.MastershipRole; | ||
| 3 | import org.onlab.onos.net.provider.Provider; | 4 | import org.onlab.onos.net.provider.Provider; |
| 4 | 5 | ||
| 6 | +/** | ||
| 7 | + * Abstraction of a mastership information provider. | ||
| 8 | + */ | ||
| 5 | public interface MastershipProvider extends Provider { | 9 | public interface MastershipProvider extends Provider { |
| 6 | - | 10 | + // do we get role info from the local OFcontroller impl? |
| 11 | + // needs to also read from distributed store and emit events? | ||
| 12 | + // roleChanged(DeviceId deviceId, MastershipRole newRole); | ||
| 7 | } | 13 | } | ... | ... |
| ... | @@ -13,6 +13,6 @@ public interface MastershipProviderService extends | ... | @@ -13,6 +13,6 @@ public interface MastershipProviderService extends |
| 13 | * @param deviceId the device ID | 13 | * @param deviceId the device ID |
| 14 | * @param role the new mastership role of this controller instance | 14 | * @param role the new mastership role of this controller instance |
| 15 | */ | 15 | */ |
| 16 | - void roleChanged(DeviceId deviceId, MastershipRole role); | 16 | + void roleChanged(NodeId nodeId, DeviceId deviceId, MastershipRole role); |
| 17 | 17 | ||
| 18 | } | 18 | } | ... | ... |
| ... | @@ -20,13 +20,15 @@ import org.onlab.onos.event.AbstractListenerRegistry; | ... | @@ -20,13 +20,15 @@ import org.onlab.onos.event.AbstractListenerRegistry; |
| 20 | import org.onlab.onos.event.EventDeliveryService; | 20 | import org.onlab.onos.event.EventDeliveryService; |
| 21 | import org.onlab.onos.net.DeviceId; | 21 | import org.onlab.onos.net.DeviceId; |
| 22 | import org.onlab.onos.net.MastershipRole; | 22 | import org.onlab.onos.net.MastershipRole; |
| 23 | +import org.onlab.onos.net.provider.AbstractProviderRegistry; | ||
| 23 | import org.onlab.onos.net.provider.AbstractProviderService; | 24 | import org.onlab.onos.net.provider.AbstractProviderService; |
| 24 | import org.slf4j.Logger; | 25 | import org.slf4j.Logger; |
| 25 | 26 | ||
| 26 | import static com.google.common.base.Preconditions.checkNotNull; | 27 | import static com.google.common.base.Preconditions.checkNotNull; |
| 27 | 28 | ||
| 28 | -public class MastershipManager implements MastershipService, | 29 | +public class MastershipManager |
| 29 | - MastershipAdminService { | 30 | + extends AbstractProviderRegistry<MastershipProvider, MastershipProviderService> |
| 31 | + implements MastershipService, MastershipAdminService { | ||
| 30 | 32 | ||
| 31 | private static final String NODE_ID_NULL = "Node ID cannot be null"; | 33 | private static final String NODE_ID_NULL = "Node ID cannot be null"; |
| 32 | private static final String DEVICE_ID_NULL = "Device ID cannot be null"; | 34 | private static final String DEVICE_ID_NULL = "Device ID cannot be null"; |
| ... | @@ -58,7 +60,6 @@ public class MastershipManager implements MastershipService, | ... | @@ -58,7 +60,6 @@ public class MastershipManager implements MastershipService, |
| 58 | log.info("Stopped"); | 60 | log.info("Stopped"); |
| 59 | } | 61 | } |
| 60 | 62 | ||
| 61 | - | ||
| 62 | @Override | 63 | @Override |
| 63 | public void setRole(NodeId nodeId, DeviceId deviceId, MastershipRole role) { | 64 | public void setRole(NodeId nodeId, DeviceId deviceId, MastershipRole role) { |
| 64 | checkNotNull(nodeId, NODE_ID_NULL); | 65 | checkNotNull(nodeId, NODE_ID_NULL); |
| ... | @@ -98,6 +99,12 @@ public class MastershipManager implements MastershipService, | ... | @@ -98,6 +99,12 @@ public class MastershipManager implements MastershipService, |
| 98 | listenerRegistry.removeListener(listener); | 99 | listenerRegistry.removeListener(listener); |
| 99 | } | 100 | } |
| 100 | 101 | ||
| 102 | + @Override | ||
| 103 | + protected MastershipProviderService createProviderService( | ||
| 104 | + MastershipProvider provider) { | ||
| 105 | + return new InternalMastershipProviderService(provider); | ||
| 106 | + } | ||
| 107 | + | ||
| 101 | private class InternalMastershipProviderService | 108 | private class InternalMastershipProviderService |
| 102 | extends AbstractProviderService<MastershipProvider> | 109 | extends AbstractProviderService<MastershipProvider> |
| 103 | implements MastershipProviderService { | 110 | implements MastershipProviderService { |
| ... | @@ -107,9 +114,11 @@ public class MastershipManager implements MastershipService, | ... | @@ -107,9 +114,11 @@ public class MastershipManager implements MastershipService, |
| 107 | } | 114 | } |
| 108 | 115 | ||
| 109 | @Override | 116 | @Override |
| 110 | - public void roleChanged(DeviceId deviceId, MastershipRole role) { | 117 | + public void roleChanged(NodeId nodeId, DeviceId deviceId, MastershipRole role) { |
| 111 | // TODO Auto-generated method stub | 118 | // TODO Auto-generated method stub |
| 112 | - | 119 | + MastershipEvent event = |
| 120 | + store.addOrUpdateDevice(nodeId, deviceId, role); | ||
| 121 | + post(event); | ||
| 113 | } | 122 | } |
| 114 | } | 123 | } |
| 115 | 124 | ||
| ... | @@ -119,4 +128,5 @@ public class MastershipManager implements MastershipService, | ... | @@ -119,4 +128,5 @@ public class MastershipManager implements MastershipService, |
| 119 | eventDispatcher.post(event); | 128 | eventDispatcher.post(event); |
| 120 | } | 129 | } |
| 121 | } | 130 | } |
| 131 | + | ||
| 122 | } | 132 | } | ... | ... |
-
Please register or login to post a comment