Moving LabelResourceManager to incubator

Breaking apart resource package into {device, link, label}
Refactored cluster serializers so they are visible

Change-Id: I71051bcd5e790ae6abeb154bf58286e584c32858
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
index b5e1655..bfdc536 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
@@ -26,7 +26,7 @@
 import org.onosproject.net.Port;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.resource.DeviceResourceStore;
+import org.onosproject.net.resource.device.DeviceResourceStore;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.ConsistentMap;
 import org.onosproject.store.service.Serializer;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java
index 454d04c..84f7bb2 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java
@@ -26,16 +26,16 @@
 import org.onosproject.net.LinkKey;
 import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.link.LinkService;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceAllocation;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceEvent;
-import org.onosproject.net.resource.LinkResourceStore;
-import org.onosproject.net.resource.LinkResourceStoreDelegate;
-import org.onosproject.net.resource.MplsLabel;
-import org.onosproject.net.resource.MplsLabelResourceAllocation;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceAllocation;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceEvent;
+import org.onosproject.net.resource.link.LinkResourceStore;
+import org.onosproject.net.resource.link.LinkResourceStoreDelegate;
+import org.onosproject.net.resource.link.MplsLabel;
+import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocationException;
 import org.onosproject.net.resource.ResourceType;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/DistributedLabelResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/DistributedLabelResourceStore.java
deleted file mode 100644
index ce122c0..0000000
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/DistributedLabelResourceStore.java
+++ /dev/null
@@ -1,578 +0,0 @@
-package org.onosproject.store.resource.impl;
-
-import static org.onlab.util.Tools.groupedThreads;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
-import org.onlab.util.KryoNamespace;
-import org.onosproject.cluster.ClusterService;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.resource.DefaultLabelResource;
-import org.onosproject.net.resource.LabelResource;
-import org.onosproject.net.resource.LabelResourceDelegate;
-import org.onosproject.net.resource.LabelResourceEvent;
-import org.onosproject.net.resource.LabelResourceEvent.Type;
-import org.onosproject.net.resource.LabelResourceId;
-import org.onosproject.net.resource.LabelResourcePool;
-import org.onosproject.net.resource.LabelResourceRequest;
-import org.onosproject.net.resource.LabelResourceStore;
-import org.onosproject.store.AbstractStore;
-import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
-import org.onosproject.store.cluster.messaging.ClusterMessage;
-import org.onosproject.store.cluster.messaging.ClusterMessageHandler;
-import org.onosproject.store.flow.ReplicaInfo;
-import org.onosproject.store.flow.ReplicaInfoService;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.KryoSerializer;
-import org.onosproject.store.serializers.impl.DistributedStoreSerializers;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.StorageService;
-import org.slf4j.Logger;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Multimap;
-
-/**
- * Manages label resources using copycat.
- */
-@Component(immediate = true, enabled = true)
-@Service
-public class DistributedLabelResourceStore
-        extends AbstractStore<LabelResourceEvent, LabelResourceDelegate>
-        implements LabelResourceStore {
-    private final Logger log = getLogger(getClass());
-
-    private static final String POOL_MAP_NAME = "labelresourcepool";
-
-    private static final String GLOBAL_RESOURCE_POOL_DEVICE_ID = "global_resource_pool_device_id";
-    // primary data:
-    // read/write needs to be locked
-    private final ReentrantReadWriteLock resourcePoolLock = new ReentrantReadWriteLock();
-
-    private ConsistentMap<DeviceId, LabelResourcePool> resourcePool = null;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected StorageService storageService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected ReplicaInfoService replicaInfoManager;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected ClusterCommunicationService clusterCommunicator;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected ClusterService clusterService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected DeviceService deviceService;
-
-    private ExecutorService messageHandlingExecutor;
-    private static final int MESSAGE_HANDLER_THREAD_POOL_SIZE = 8;
-    private static final long PEER_REQUEST_TIMEOUT_MS = 5000;
-
-    protected static final KryoSerializer SERIALIZER = new KryoSerializer() {
-        @Override
-        protected void setupKryoPool() {
-            serializerPool = KryoNamespace.newBuilder()
-                    .register(DistributedStoreSerializers.STORE_COMMON)
-                    .nextId(DistributedStoreSerializers.STORE_CUSTOM_BEGIN)
-                    .register(LabelResourceEvent.class)
-                    .register(LabelResourcePool.class).register(DeviceId.class)
-                    .register(LabelResourceRequest.class)
-                    .register(LabelResourceRequest.Type.class)
-                    .register(LabelResourceEvent.Type.class)
-                    .register(DefaultLabelResource.class)
-                    .register(LabelResourceId.class).build();
-        }
-    };
-
-    @Activate
-    public void activate() {
-
-        resourcePool = storageService
-                .<DeviceId, LabelResourcePool>consistentMapBuilder()
-                .withName(POOL_MAP_NAME).withSerializer(new Serializer() {
-                    KryoNamespace kryo = new KryoNamespace.Builder()
-                            .register(KryoNamespaces.API).build();
-
-                    @Override
-                    public <T> byte[] encode(T object) {
-                        return kryo.serialize(object);
-                    }
-
-                    @Override
-                    public <T> T decode(byte[] bytes) {
-                        return kryo.deserialize(bytes);
-                    }
-                }).withPartitionsDisabled().build();
-        messageHandlingExecutor = Executors
-                .newFixedThreadPool(MESSAGE_HANDLER_THREAD_POOL_SIZE,
-                                    groupedThreads("onos/store/flow",
-                                                   "message-handlers"));
-        clusterCommunicator
-                .addSubscriber(LabelResourceMessageSubjects.LABEL_POOL_CREATED,
-                               new ClusterMessageHandler() {
-
-                                   @Override
-                                   public void handle(ClusterMessage message) {
-                                       LabelResourcePool operation = SERIALIZER
-                                               .decode(message.payload());
-                                       log.trace("received get flow entry request for {}",
-                                                 operation);
-                                       boolean b = internalCreate(operation);
-                                           message.respond(SERIALIZER.encode(b));
-                                   }
-                               }, messageHandlingExecutor);
-        clusterCommunicator
-                .addSubscriber(LabelResourceMessageSubjects.LABEL_POOL_DESTROYED,
-                               new ClusterMessageHandler() {
-
-                                   @Override
-                                   public void handle(ClusterMessage message) {
-                                       DeviceId deviceId = SERIALIZER
-                                               .decode(message.payload());
-                                       log.trace("received get flow entry request for {}",
-                                                 deviceId);
-                                       boolean b = internalDestroy(deviceId);
-                                           message.respond(SERIALIZER.encode(b));
-                                   }
-                               }, messageHandlingExecutor);
-        clusterCommunicator
-                .addSubscriber(LabelResourceMessageSubjects.LABEL_POOL_APPLY,
-                               new ClusterMessageHandler() {
-
-                                   @Override
-                                   public void handle(ClusterMessage message) {
-                                       LabelResourceRequest request = SERIALIZER
-                                               .decode(message.payload());
-                                       log.trace("received get flow entry request for {}",
-                                                 request);
-                                       final Collection<LabelResource> resource = internalApply(request);
-                                           message.respond(SERIALIZER
-                                                   .encode(resource));
-                                   }
-                               }, messageHandlingExecutor);
-        clusterCommunicator
-                .addSubscriber(LabelResourceMessageSubjects.LABEL_POOL_RELEASE,
-                               new ClusterMessageHandler() {
-
-                                   @Override
-                                   public void handle(ClusterMessage message) {
-                                       LabelResourceRequest request = SERIALIZER
-                                               .decode(message.payload());
-                                       log.trace("received get flow entry request for {}",
-                                                 request);
-                                       final boolean isSuccess = internalRelease(request);
-                                           message.respond(SERIALIZER
-                                                   .encode(isSuccess));
-                                   }
-                               }, messageHandlingExecutor);
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        clusterCommunicator
-                .removeSubscriber(LabelResourceMessageSubjects.LABEL_POOL_CREATED);
-        clusterCommunicator
-                .removeSubscriber(LabelResourceMessageSubjects.LABEL_POOL_APPLY);
-        clusterCommunicator
-                .removeSubscriber(LabelResourceMessageSubjects.LABEL_POOL_DESTROYED);
-        clusterCommunicator
-                .removeSubscriber(LabelResourceMessageSubjects.LABEL_POOL_RELEASE);
-        messageHandlingExecutor.shutdown();
-        log.info("Stopped");
-    }
-
-    @Override
-    public boolean createDevicePool(DeviceId deviceId,
-                                    LabelResourceId beginLabel,
-                                    LabelResourceId endLabel) {
-        LabelResourcePool pool = new LabelResourcePool(deviceId.toString(),
-                                                       beginLabel.labelId(),
-                                                       endLabel.labelId());
-        return this.create(pool);
-    }
-
-    @Override
-    public boolean createGlobalPool(LabelResourceId beginLabel,
-                                    LabelResourceId endLabel) {
-        LabelResourcePool pool = new LabelResourcePool(
-                                                       GLOBAL_RESOURCE_POOL_DEVICE_ID,
-                                                       beginLabel.labelId(),
-                                                       endLabel.labelId());
-        return this.internalCreate(pool);
-    }
-
-    private boolean create(LabelResourcePool pool) {
-        Device device = (Device) deviceService.getDevice(pool.deviceId());
-        if (device == null) {
-            return false;
-        }
-
-        ReplicaInfo replicaInfo = replicaInfoManager.getReplicaInfoFor(pool
-                .deviceId());
-
-        if (!replicaInfo.master().isPresent()) {
-            log.warn("Failed to getFlowEntries: No master for {}", pool);
-            return false;
-        }
-
-        if (replicaInfo.master().get()
-                .equals(clusterService.getLocalNode().id())) {
-            return internalCreate(pool);
-        }
-
-        log.trace("Forwarding getFlowEntries to {}, which is the primary (master) for device {}",
-                  replicaInfo.master().orNull(), pool.deviceId());
-
-        return complete(clusterCommunicator
-                .sendAndReceive(pool,
-                                LabelResourceMessageSubjects.LABEL_POOL_CREATED,
-                                SERIALIZER::encode, SERIALIZER::decode,
-                                replicaInfo.master().get()));
-    }
-
-    private boolean internalCreate(LabelResourcePool pool) {
-        resourcePoolLock.writeLock().lock();
-        LabelResourcePool poolOld = resourcePool.get(pool.deviceId()).value();
-        if (poolOld == null) {
-            resourcePool.put(pool.deviceId(), pool);
-            resourcePoolLock.writeLock().unlock();
-            LabelResourceEvent event = new LabelResourceEvent(
-                                                              Type.POOL_CREATED,
-                                                              pool);
-            notifyDelegate(event);
-            return true;
-        }
-        resourcePoolLock.writeLock().unlock();
-        return false;
-    }
-
-    @Override
-    public boolean destroyDevicePool(DeviceId deviceId) {
-        Device device = (Device) deviceService.getDevice(deviceId);
-        if (device == null) {
-            return false;
-        }
-        ReplicaInfo replicaInfo = replicaInfoManager
-                .getReplicaInfoFor(deviceId);
-
-        if (!replicaInfo.master().isPresent()) {
-            log.warn("Failed to getFlowEntries: No master for {}", deviceId);
-            return false;
-        }
-
-        if (replicaInfo.master().get()
-                .equals(clusterService.getLocalNode().id())) {
-            return internalDestroy(deviceId);
-        }
-
-        log.trace("Forwarding getFlowEntries to {}, which is the primary (master) for device {}",
-                  replicaInfo.master().orNull(), deviceId);
-
-        return complete(clusterCommunicator
-                .sendAndReceive(deviceId,
-                                LabelResourceMessageSubjects.LABEL_POOL_DESTROYED,
-                                SERIALIZER::encode, SERIALIZER::decode,
-                                replicaInfo.master().get()));
-    }
-
-    private boolean internalDestroy(DeviceId deviceId) {
-        LabelResourcePool poolOld = resourcePool.get(deviceId).value();
-        if (poolOld != null) {
-            resourcePool.remove(deviceId);
-            LabelResourceEvent event = new LabelResourceEvent(
-                                                              Type.POOL_CREATED,
-                                                              poolOld);
-            notifyDelegate(event);
-        }
-        log.info("success to destroy the label resource pool of device id {}",
-                 deviceId);
-        return true;
-    }
-
-    @Override
-    public Collection<LabelResource> applyFromDevicePool(DeviceId deviceId,
-                                                         long applyNum) {
-        Device device = (Device) deviceService.getDevice(deviceId);
-        if (device == null) {
-            return Collections.emptyList();
-        }
-        LabelResourceRequest request = new LabelResourceRequest(
-                                                                deviceId,
-                                                                LabelResourceRequest.Type.APPLY,
-                                                                applyNum, null);
-        ReplicaInfo replicaInfo = replicaInfoManager
-                .getReplicaInfoFor(deviceId);
-
-        if (!replicaInfo.master().isPresent()) {
-            log.warn("Failed to getFlowEntries: No master for {}", deviceId);
-            return Collections.emptyList();
-        }
-
-        if (replicaInfo.master().get()
-                .equals(clusterService.getLocalNode().id())) {
-            return internalApply(request);
-        }
-
-        log.trace("Forwarding getFlowEntries to {}, which is the primary (master) for device {}",
-                  replicaInfo.master().orNull(), deviceId);
-
-        return complete(clusterCommunicator
-                .sendAndReceive(request,
-                                LabelResourceMessageSubjects.LABEL_POOL_APPLY,
-                                SERIALIZER::encode, SERIALIZER::decode,
-                                replicaInfo.master().get()));
-    }
-
-    private Collection<LabelResource> internalApply(LabelResourceRequest request) {
-        resourcePoolLock.writeLock().lock();
-        DeviceId deviceId = request.deviceId();
-        long applyNum = request.applyNum();
-        LabelResourcePool pool = resourcePool.get(deviceId).value();
-        Collection<LabelResource> result = new HashSet<LabelResource>();
-        long freeNum = this.getFreeNumOfDevicePool(deviceId);
-        if (applyNum > freeNum) {
-            log.info("the free number of the label resource pool of deviceId {} is not enough.");
-            resourcePoolLock.writeLock().unlock();
-            return Collections.emptyList();
-        }
-        Set<LabelResource> releaseLabels = new HashSet<LabelResource>(
-                                                                      pool.releaseLabelId());
-        long tmp = releaseLabels.size() > applyNum ? applyNum : releaseLabels
-                .size();
-        LabelResource resource = null;
-        for (int i = 0; i < tmp; i++) {
-            Iterator<LabelResource> it = releaseLabels.iterator();
-            if (it.hasNext()) {
-                resource = it.next();
-                releaseLabels.remove(resource);
-            }
-            result.add(resource);
-        }
-        for (long j = pool.currentUsedMaxLabelId().labelId(); j < pool
-                .currentUsedMaxLabelId().labelId() + applyNum - tmp; j++) {
-            resource = new DefaultLabelResource(deviceId,
-                                                LabelResourceId
-                                                        .labelResourceId(j));
-            result.add(resource);
-        }
-        long beginLabel = pool.beginLabel().labelId();
-        long endLabel = pool.endLabel().labelId();
-        long totalNum = pool.totalNum();
-        long current = pool.currentUsedMaxLabelId().labelId() + applyNum - tmp;
-        long usedNum = pool.usedNum() + applyNum;
-        ImmutableSet<LabelResource> freeLabel = ImmutableSet
-                .copyOf(releaseLabels);
-        LabelResourcePool newPool = new LabelResourcePool(deviceId.toString(),
-                                                          beginLabel, endLabel,
-                                                          totalNum, usedNum,
-                                                          current, freeLabel);
-        resourcePool.put(deviceId, newPool);
-        log.info("success to apply label resource");
-        resourcePoolLock.writeLock().unlock();
-        return result;
-    }
-
-    @Override
-    public boolean releaseToDevicePool(Multimap<DeviceId, LabelResource> release) {
-        Map<DeviceId, Collection<LabelResource>> maps = release.asMap();
-        Set<DeviceId> deviceIdSet = maps.keySet();
-        LabelResourceRequest request = null;
-        for (Iterator<DeviceId> it = deviceIdSet.iterator(); it.hasNext();) {
-            DeviceId deviceId = (DeviceId) it.next();
-            Device device = (Device) deviceService.getDevice(deviceId);
-            if (device == null) {
-                continue;
-            }
-            ImmutableSet<LabelResource> collection = ImmutableSet.copyOf(maps
-                    .get(deviceId));
-            request = new LabelResourceRequest(
-                                               deviceId,
-                                               LabelResourceRequest.Type.RELEASE,
-                                               0, collection);
-            ReplicaInfo replicaInfo = replicaInfoManager
-                    .getReplicaInfoFor(deviceId);
-
-            if (!replicaInfo.master().isPresent()) {
-                log.warn("Failed to getFlowEntries: No master for {}", deviceId);
-                return false;
-            }
-
-            if (replicaInfo.master().get()
-                    .equals(clusterService.getLocalNode().id())) {
-                return internalRelease(request);
-            }
-
-            log.trace("Forwarding getFlowEntries to {}, which is the primary (master) for device {}",
-                      replicaInfo.master().orNull(), deviceId);
-
-            return complete(clusterCommunicator
-                    .sendAndReceive(request,
-                                    LabelResourceMessageSubjects.LABEL_POOL_RELEASE,
-                                    SERIALIZER::encode, SERIALIZER::decode,
-                                    replicaInfo.master().get()));
-        }
-        return false;
-    }
-
-    private boolean internalRelease(LabelResourceRequest request) {
-        resourcePoolLock.writeLock().lock();
-        DeviceId deviceId = request.deviceId();
-        Collection<LabelResource> release = request.releaseCollection();
-        LabelResourcePool pool = resourcePool.get(deviceId).value();
-        if (pool == null) {
-            resourcePoolLock.writeLock().unlock();
-            log.info("the label resource pool of device id {} does not exist");
-            return false;
-        }
-        Set<LabelResource> storeSet = new HashSet<LabelResource>(
-                                                                 pool.releaseLabelId());
-        LabelResource labelResource = null;
-        long realReleasedNum = 0;
-        for (Iterator<LabelResource> it = release.iterator(); it.hasNext();) {
-            labelResource = it.next();
-            if (labelResource.labelResourceId().labelId() < pool.beginLabel()
-                    .labelId()
-                    || labelResource.labelResourceId().labelId() > pool
-                            .endLabel().labelId()) {
-                continue;
-            }
-            if (pool.currentUsedMaxLabelId().labelId() > labelResource
-                    .labelResourceId().labelId()
-                    || !storeSet.contains(labelResource)) {
-                storeSet.add(labelResource);
-                realReleasedNum++;
-            }
-        }
-        long beginNum = pool.beginLabel().labelId();
-        long endNum = pool.endLabel().labelId();
-        long totalNum = pool.totalNum();
-        long usedNum = pool.usedNum() - realReleasedNum;
-        long current = pool.currentUsedMaxLabelId().labelId();
-        ImmutableSet<LabelResource> s = ImmutableSet.copyOf(storeSet);
-        LabelResourcePool newPool = new LabelResourcePool(deviceId.toString(),
-                                                          beginNum, endNum,
-                                                          totalNum, usedNum,
-                                                          current, s);
-        resourcePool.put(deviceId, newPool);
-        log.info("success to release label resource");
-        resourcePoolLock.writeLock().unlock();
-        return true;
-    }
-
-    @Override
-    public boolean isDevicePoolFull(DeviceId deviceId) {
-        LabelResourcePool pool = resourcePool.get(deviceId).value();
-        if (pool == null) {
-            return true;
-        }
-        return pool.currentUsedMaxLabelId() == pool.endLabel()
-                && pool.releaseLabelId().size() == 0 ? true : false;
-    }
-
-    @Override
-    public long getFreeNumOfDevicePool(DeviceId deviceId) {
-        LabelResourcePool pool = resourcePool.get(deviceId).value();
-        if (pool == null) {
-            return 0;
-        }
-        return pool.endLabel().labelId()
-                - pool.currentUsedMaxLabelId().labelId()
-                + pool.releaseLabelId().size();
-    }
-
-    @Override
-    public LabelResourcePool getDeviceLabelResourcePool(DeviceId deviceId) {
-        return resourcePool.get(deviceId).value();
-    }
-
-    @Override
-    public boolean destroyGlobalPool() {
-        return this.internalDestroy(DeviceId
-                .deviceId(GLOBAL_RESOURCE_POOL_DEVICE_ID));
-    }
-
-    @Override
-    public Collection<LabelResource> applyFromGlobalPool(long applyNum) {
-        LabelResourceRequest request = new LabelResourceRequest(
-                                                                DeviceId.deviceId(GLOBAL_RESOURCE_POOL_DEVICE_ID),
-                                                                LabelResourceRequest.Type.APPLY,
-                                                                applyNum, null);
-        return this.internalApply(request);
-    }
-
-    @Override
-    public boolean releaseToGlobalPool(Set<LabelResourceId> release) {
-        Set<LabelResource> set = new HashSet<LabelResource>();
-        DefaultLabelResource resource = null;
-        for (LabelResourceId labelResource : release) {
-            resource = new DefaultLabelResource(
-                                                DeviceId.deviceId(GLOBAL_RESOURCE_POOL_DEVICE_ID),
-                                                labelResource);
-            set.add(resource);
-        }
-        LabelResourceRequest request = new LabelResourceRequest(
-                                                                DeviceId.deviceId(GLOBAL_RESOURCE_POOL_DEVICE_ID),
-                                                                LabelResourceRequest.Type.APPLY,
-                                                                0,
-                                                                ImmutableSet
-                                                                        .copyOf(set));
-        return this.internalRelease(request);
-    }
-
-    @Override
-    public boolean isGlobalPoolFull() {
-        return this.isDevicePoolFull(DeviceId
-                .deviceId(GLOBAL_RESOURCE_POOL_DEVICE_ID));
-    }
-
-    @Override
-    public long getFreeNumOfGlobalPool() {
-        return this.getFreeNumOfDevicePool(DeviceId
-                .deviceId(GLOBAL_RESOURCE_POOL_DEVICE_ID));
-    }
-
-    @Override
-    public LabelResourcePool getGlobalLabelResourcePool() {
-        return this.getDeviceLabelResourcePool(DeviceId
-                .deviceId(GLOBAL_RESOURCE_POOL_DEVICE_ID));
-    }
-
-    private <T> T complete(Future<T> future) {
-        try {
-            return future.get(PEER_REQUEST_TIMEOUT_MS,
-                                                TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-            log.error("Interrupted while waiting for operation to complete.", e);
-            return null;
-        } catch (TimeoutException | ExecutionException e) {
-            log.error("Failed remote operation", e);
-            return null;
-        }
-    }
-}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/LabelResourceMessageSubjects.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/LabelResourceMessageSubjects.java
deleted file mode 100644
index 68bce92..0000000
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/LabelResourceMessageSubjects.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.onosproject.store.resource.impl;
-
-import org.onosproject.store.cluster.messaging.MessageSubject;
-
-public final class LabelResourceMessageSubjects {
-
-    private LabelResourceMessageSubjects() {
-    }
-    public static final MessageSubject LABEL_POOL_CREATED
-                        = new MessageSubject("label-resource-pool-created");
-    public static final MessageSubject LABEL_POOL_DESTROYED
-                        = new MessageSubject("label-resource-pool-destroyed");
-    public static final MessageSubject LABEL_POOL_APPLY
-                        = new MessageSubject("label-resource-pool-apply");
-    public static final MessageSubject LABEL_POOL_RELEASE
-                        = new MessageSubject("label-resource-pool-release");
-}