Removed the incubator graveyard.

Change-Id: Ib1417f7f782bfb7bcd47df555971ac5f73ae7f9b
diff --git a/graveyard/README.md b/graveyard/README.md
deleted file mode 100644
index 599b340..0000000
--- a/graveyard/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Old Incubator Graveyard
-
-This area contains defunct code. All other code has been moved out from the incubator to the core or to the apps area as separate extensions.
-This area will be entirely removed in a not-so-distant future.
diff --git a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContext.java b/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContext.java
deleted file mode 100644
index ede8c8a..0000000
--- a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContext.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.incubator.rpc;
-
-import com.google.common.annotations.Beta;
-
-// Implementation is expected to be a handler for RPC channel
-// and shim-layer to convert Java Service interface calls to/from RPC call
-/**
- * Context for Remote service.
- */
-@Beta
-public interface RemoteServiceContext {
-
-    // we may need a method to check connection state?
-
-    /**
-     * Returns implementation of the specified service class.
-     *
-     * @param serviceClass service class
-     * @param <T>          type of service
-     * @return implementation class
-     * @throws UnsupportedOperationException if this context does not support it.
-     */
-    <T> T get(Class<T> serviceClass);
-}
diff --git a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContextProvider.java b/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContextProvider.java
deleted file mode 100644
index 294ae9c..0000000
--- a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContextProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc;
-
-import java.net.URI;
-
-import org.onosproject.net.provider.Provider;
-
-import com.google.common.annotations.Beta;
-
-//Factory to create RemoteServiceContext
-/**
- * Abstraction of a remote service implementation provider.
- */
-@Beta
-public interface RemoteServiceContextProvider extends Provider {
-
-    /**
-     * Returns {@link RemoteServiceContext} for given URI.
-     *
-     * @param uri  URI for remote end point.
-     * @return {@link RemoteServiceContext}
-     */
-    RemoteServiceContext get(URI uri);
-}
diff --git a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContextProviderService.java b/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContextProviderService.java
deleted file mode 100644
index 05d9795..0000000
--- a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceContextProviderService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc;
-
-import org.onosproject.net.provider.ProviderService;
-
-import com.google.common.annotations.Beta;
-
-// Not completely sure if we will make use of this at the moment
-// added to follow existing  {@link ProviderRegistry} pattern
-@Beta
-public interface RemoteServiceContextProviderService
-        extends ProviderService<RemoteServiceContextProvider> {
-
-}
diff --git a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceDirectory.java b/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceDirectory.java
deleted file mode 100644
index a40a837..0000000
--- a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceDirectory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc;
-
-import java.net.URI;
-
-import com.google.common.annotations.Beta;
-
-// This is actually the RPC Service, where consumers get
-// RemoteSericeContext (~= RPC Session) for given URI
-// expected to be implemented by some Manager class on Lower-side ONOS
-/**
- * Service for retrieving RPC session handler ({@link RemoteServiceContext}).
- */
-@Beta
-public interface RemoteServiceDirectory {
-
-    /**
-     * Returns remote service context.
-     *
-     * @param uri URI representing remote end point. e.g., (grpc://hostname:port)
-     * @return remote service context
-     * @throws UnsupportedOperationException if URI scheme was not supported.
-     */
-    RemoteServiceContext get(URI uri);
-
-}
diff --git a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceProviderRegistry.java b/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceProviderRegistry.java
deleted file mode 100644
index f7e3df0..0000000
--- a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/RemoteServiceProviderRegistry.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc;
-
-import org.onosproject.net.provider.ProviderRegistry;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Abstraction of a remote service provider registry.
- */
-@Beta
-public interface RemoteServiceProviderRegistry
-    extends ProviderRegistry<RemoteServiceContextProvider,
-                             RemoteServiceContextProviderService> {
-
-}
diff --git a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/package-info.java b/graveyard/api/src/main/java/org/onosproject/incubator/rpc/package-info.java
deleted file mode 100644
index 1ce7de4..0000000
--- a/graveyard/api/src/main/java/org/onosproject/incubator/rpc/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Incubating inter-cluster RPC APIs.
- */
-package org.onosproject.incubator.rpc;
diff --git a/graveyard/protobuf-dead/api/src/main/java/org/onosproject/protobuf/api/GrpcServiceRegistry.java b/graveyard/protobuf-dead/api/src/main/java/org/onosproject/protobuf/api/GrpcServiceRegistry.java
deleted file mode 100644
index 5e7e4bc..0000000
--- a/graveyard/protobuf-dead/api/src/main/java/org/onosproject/protobuf/api/GrpcServiceRegistry.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.protobuf.api;
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-
-/**
- * A service that allows for de/registration of gRPC services, and determining
- * whether a service is present.
- */
-@Beta
-public interface GrpcServiceRegistry {
-    /**
-     * Register a gRPC service with this registry.
-     * @param service the service to be registered
-     * @return true if the service was added and server successfully started,
-     * false otherwise
-     */
-    boolean register(BindableService service);
-
-    /**
-     * Unregister a gRPC service with this registry.
-     * @param service the service to be unregistered
-     * @return true if the service was removed and the server successfully
-     * started, false otherwise
-     */
-    boolean unregister(BindableService service);
-
-    /**
-     * Checks if an instance of the  provided serviceClass is currently
-     * registered with this registry.
-     * @param serviceClass the class being queries
-     * @return true if an instance of this specified class has been registered,
-     * false otherwise
-     */
-    boolean containsService(Class<BindableService> serviceClass);
-}
diff --git a/graveyard/protobuf-dead/api/src/main/java/org/onosproject/protobuf/api/package-info.java b/graveyard/protobuf-dead/api/src/main/java/org/onosproject/protobuf/api/package-info.java
deleted file mode 100644
index 0541b49..0000000
--- a/graveyard/protobuf-dead/api/src/main/java/org/onosproject/protobuf/api/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Abstractions for interacting with the gRPC subsystem.
- */
-package org.onosproject.protobuf.api;
diff --git a/graveyard/protobuf-dead/registry/src/main/java/org/onosproject/protobuf/registry/GrpcServiceRegistryImpl.java b/graveyard/protobuf-dead/registry/src/main/java/org/onosproject/protobuf/registry/GrpcServiceRegistryImpl.java
deleted file mode 100644
index 9935cdb..0000000
--- a/graveyard/protobuf-dead/registry/src/main/java/org/onosproject/protobuf/registry/GrpcServiceRegistryImpl.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.protobuf.registry;
-
-import com.google.common.collect.Maps;
-import io.grpc.BindableService;
-import io.grpc.Server;
-import io.grpc.ServerBuilder;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Modified;
-import org.osgi.service.component.annotations.Property;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Dictionary;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import static org.onlab.util.Tools.get;
-
-/**
- * A basic implementation of {@link GrpcServiceRegistry} designed for use with
- * built in gRPC services.
- *
- * NOTE: this is an early implementation in which the addition of any new
- * service forces a restart of the server, this is sufficient for testing but
- * inappropriate for deployment.
- */
-@Component(service = GrpcServiceRegistry.class)
-public class GrpcServiceRegistryImpl implements GrpcServiceRegistry {
-
-    private static final int DEFAULT_SERVER_PORT = 64000;
-    private static final int DEFAULT_SHUTDOWN_TIME = 1;
-    private static final AtomicBoolean SERVICES_MODIFIED_SINCE_START = new AtomicBoolean(false);
-
-    private static final String PORT_PROPERTY_NAME = "listeningPort";
-
-    private final Map<Class<? extends BindableService>, BindableService> registeredServices =
-            Maps.newHashMap();
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private Server server;
-
-    /* It is currently the responsibility of the administrator to notify
-    clients of nonstandard port usage as there is no mechanism available to
-    discover the port hosting gRPC services.
-     */
-    /** The port number which ONOS will use to host gRPC services. */
-    private int listeningPort = DEFAULT_SERVER_PORT;
-
-    @Activate
-    public void activate() {
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        attemptGracefulShutdownThenForce(DEFAULT_SHUTDOWN_TIME);
-        log.info("Stopped");
-    }
-
-    @Modified
-    public void modified(ComponentContext context) {
-        if (context != null) {
-            setProperties(context);
-        }
-        log.info("Connection was restarted to allow service to be added, " +
-                         "this is a temporary workaround");
-        restartServer(listeningPort);
-    }
-
-    @Override
-    public boolean register(BindableService service) {
-        synchronized (registeredServices) {
-            if (!registeredServices.containsKey(service.getClass())) {
-                registeredServices.put(service.getClass(), service);
-            } else {
-                log.warn("The specified class \"{}\" was not added becuase an " +
-                                 "instance of the class is already registered.",
-                         service.getClass().toString());
-                return false;
-            }
-        }
-        return restartServer(listeningPort);
-    }
-
-    @Override
-    public boolean unregister(BindableService service) {
-        synchronized (registeredServices) {
-            if (registeredServices.containsKey(service.getClass())) {
-                registeredServices.remove(service.getClass());
-            } else {
-                log.warn("The specified class \"{}\" was not removed because it " +
-                                 "was not present.", service.getClass().toString());
-                return false;
-            }
-        }
-        return restartServer(listeningPort);
-    }
-
-    @Override
-    public boolean containsService(Class<BindableService> serviceClass) {
-        return registeredServices.containsKey(serviceClass);
-    }
-
-    private void setProperties(ComponentContext context) {
-        Dictionary<String, Object> properties = context.getProperties();
-        String listeningPort = get(properties, PORT_PROPERTY_NAME);
-        this.listeningPort = listeningPort == null ? DEFAULT_SERVER_PORT :
-                Integer.parseInt(listeningPort.trim());
-    }
-
-    /**
-     * Attempts a graceful shutdown allowing {@code timeLimitSeconds} to elapse
-     * before forcing a shutdown.
-     *
-     * @param timeLimitSeconds time before a shutdown is forced in seconds
-     * @return true if the server is terminated, false otherwise
-     */
-    private boolean attemptGracefulShutdownThenForce(int timeLimitSeconds) {
-        if (!server.isShutdown()) {
-            server.shutdown();
-        }
-        try {
-            /*This is not conditional in case the server is shutdown but
-            handling requests submitted before shutdown was called.*/
-            server.awaitTermination(timeLimitSeconds, TimeUnit.SECONDS);
-        } catch (InterruptedException e) {
-            log.error("Awaiting server termination failed with error {}",
-                      e.getMessage());
-            Thread.currentThread().interrupt();
-        }
-        if (!server.isTerminated()) {
-            server.shutdownNow();
-            try {
-                server.awaitTermination(10, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                log.error("Server failed to terminate as expected with error" +
-                                  " {}", e.getMessage());
-                Thread.currentThread().interrupt();
-            }
-        }
-        return server.isTerminated();
-    }
-
-    private boolean restartServer(int port) {
-        if (!attemptGracefulShutdownThenForce(DEFAULT_SHUTDOWN_TIME)) {
-            log.error("Shutdown failed, the previous server may still be" +
-                              " active.");
-        }
-        return createServerAndStart(port);
-    }
-
-    /**
-     * Creates a server with the set of registered services on the specified
-     * port.
-     *
-     * @param port the port on which this server will listen
-     * @return true if the server was started successfully, false otherwise
-     */
-    private boolean createServerAndStart(int port) {
-
-        ServerBuilder serverBuilder =
-                ServerBuilder.forPort(port);
-        synchronized (registeredServices) {
-            registeredServices.values().forEach(
-                    service -> serverBuilder.addService(service));
-        }
-        server = serverBuilder.build();
-        try {
-            server.start();
-        } catch (IllegalStateException e) {
-            log.error("The server could not be started because an existing " +
-                              "server is already running: {}", e.getMessage());
-            return false;
-        } catch (IOException e) {
-            log.error("The server could not be started due to a failure to " +
-                              "bind: {} ", e.getMessage());
-            return false;
-        }
-        return true;
-    }
-}
diff --git a/graveyard/protobuf-dead/registry/src/main/java/org/onosproject/protobuf/registry/package-info.java b/graveyard/protobuf-dead/registry/src/main/java/org/onosproject/protobuf/registry/package-info.java
deleted file mode 100644
index 818c4e8..0000000
--- a/graveyard/protobuf-dead/registry/src/main/java/org/onosproject/protobuf/registry/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Services for interacting remotely with the gRPC subsystem.
- */
-package org.onosproject.protobuf.registry;
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java
deleted file mode 100644
index f60a36e..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.app.ApplicationService;
-import org.onosproject.app.ApplicationState;
-import org.onosproject.core.Application;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.grpc.nb.app.ApplicationServiceGrpc.ApplicationServiceImplBase;
-import org.onosproject.grpc.nb.app.ApplicationServiceNb;
-import org.onosproject.grpc.nb.app.ApplicationServiceNb.getApplicationReply;
-import org.onosproject.grpc.nb.app.ApplicationServiceNb.getApplicationsReply;
-import org.onosproject.grpc.nb.app.ApplicationServiceNb.getIdReply;
-import org.onosproject.grpc.nb.app.ApplicationServiceNb.getPermissionsReply;
-import org.onosproject.grpc.nb.app.ApplicationServiceNb.getStateReply;
-import org.onosproject.incubator.protobuf.models.core.ApplicationEnumsProtoTranslator;
-import org.onosproject.incubator.protobuf.models.core.ApplicationIdProtoTranslator;
-import org.onosproject.incubator.protobuf.models.core.ApplicationProtoTranslator;
-import org.onosproject.incubator.protobuf.models.security.PermissionProtoTranslator;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * A server that provides access to the methods exposed by {@link ApplicationService}.
- */
-
-@Beta
-@Component(immediate = true)
-public class GrpcNbApplicationService {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected ApplicationService applicationService;
-
-    private ApplicationServiceNbServerInternal instance = null;
-
-
-    @Activate
-    public void activate() {
-        registry.register(getInnerInstance());
-        log.info("Started.");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        registry.unregister(getInnerInstance());
-        log.info("Stopped");
-    }
-
-    /**
-     * Register Application Service, Used for unit testing purposes.
-     *
-     * @return An instance of binding Application service
-     */
-    public InProcessServer<BindableService> registerInProcessServer() {
-        InProcessServer<BindableService> inprocessServer =
-                new InProcessServer(GrpcNbApplicationService.ApplicationServiceNbServerInternal.class);
-        inprocessServer.addServiceToBind(getInnerInstance());
-
-        return inprocessServer;
-    }
-
-    private class ApplicationServiceNbServerInternal extends ApplicationServiceImplBase {
-
-        public ApplicationServiceNbServerInternal() {
-            super();
-        }
-
-        @Override
-        public void getApplications(ApplicationServiceNb.getApplicationsRequest request,
-                                    StreamObserver<getApplicationsReply> responseObserver) {
-            getApplicationsReply.Builder replyBuilder = getApplicationsReply.newBuilder();
-
-            applicationService.getApplications().forEach(a ->
-                    replyBuilder.addApplication(ApplicationProtoTranslator.translate(a)));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getId(ApplicationServiceNb.getIdRequest request,
-                          StreamObserver<getIdReply> responseObserver) {
-            ApplicationId appId = applicationService.getId(request.getName());
-
-            responseObserver.onNext(getIdReply.newBuilder()
-                    .setApplicationId(ApplicationIdProtoTranslator.translate(appId)).build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getApplication(ApplicationServiceNb.getApplicationRequest request,
-                                   StreamObserver<getApplicationReply> responseObserver) {
-
-            Application application = applicationService.getApplication(
-                    ApplicationIdProtoTranslator.translate(request.getApplicationId()));
-
-            responseObserver.onNext(getApplicationReply.newBuilder()
-                    .setApplication(ApplicationProtoTranslator
-                            .translate(application)).build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getState(ApplicationServiceNb.getStateRequest request,
-                             StreamObserver<getStateReply> responseObserver) {
-            ApplicationState state = applicationService.getState(
-                    ApplicationIdProtoTranslator.translate(request.getApplicationId()));
-
-            responseObserver.onNext(getStateReply
-                    .newBuilder().setState(ApplicationEnumsProtoTranslator
-                            .translate(state)).build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getPermissions(ApplicationServiceNb.getPermissionsRequest request,
-                                   StreamObserver<getPermissionsReply> responseObserver) {
-            getPermissionsReply.Builder replyBuilder = getPermissionsReply.newBuilder();
-
-            applicationService.getPermissions(ApplicationIdProtoTranslator
-                    .translate(request.getApplicationId()))
-                    .forEach(p -> replyBuilder.addPermission(
-                            PermissionProtoTranslator.translate(p)));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-    }
-
-    private ApplicationServiceNbServerInternal getInnerInstance() {
-        if (instance == null) {
-            instance = new ApplicationServiceNbServerInternal();
-        }
-        return instance;
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbComponentConfigService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbComponentConfigService.java
deleted file mode 100644
index d9cad10..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbComponentConfigService.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.cfg.ComponentConfigService;
-import org.onosproject.incubator.protobuf.models.cfg.ConfigPropertyProtoTranslator;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.slf4j.Logger;
-
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceGrpc.ComponentConfigServiceImplBase;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.getComponentNamesRequest;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.getComponentNamesReply;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.registerPropertiesRequest;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.registerPropertiesReply;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.unregisterPropertiesRequest;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.unregisterPropertiesReply;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.getPropertiesRequest;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.getPropertiesReply;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.setPropertyRequest;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.setPropertyReply;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.preSetPropertyRequest;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.preSetPropertyReply;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.unsetPropertyRequest;
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.unsetPropertyReply;
-import static org.slf4j.LoggerFactory.getLogger;
-
-
-/**
- * A server that provides access to the methods exposed by {@link ComponentConfigService}.
- */
-@Beta
-@Component(immediate = true)
-public class GrpcNbComponentConfigService {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected ComponentConfigService componentConfigService;
-
-    private ComponentConfigServiceNbServerInternal instance = null;
-
-    @Activate
-    public void activate() {
-
-        registry.register(getInnerInstance());
-        log.info("Started.");
-    }
-
-    @Deactivate
-    public void deactivate() {
-
-        registry.unregister(getInnerInstance());
-        log.info("Stopped");
-    }
-
-    /**
-     * Register ComponentConfig Service, Used for unit testing purposes.
-     *
-     * @return An instance of binding ComponentConfig service
-     */
-    public InProcessServer<BindableService> registerInProcessServer() {
-        InProcessServer<BindableService> inprocessServer =
-                new InProcessServer(ComponentConfigServiceNbServerInternal.class);
-        inprocessServer.addServiceToBind(getInnerInstance());
-
-        return inprocessServer;
-    }
-
-    private final class ComponentConfigServiceNbServerInternal extends ComponentConfigServiceImplBase {
-
-        private ComponentConfigServiceNbServerInternal() {
-            super();
-        }
-
-        @Override
-        public void getComponentNames(getComponentNamesRequest request,
-                                      StreamObserver<getComponentNamesReply> responseObserver) {
-
-            getComponentNamesReply.Builder replyBuilder = getComponentNamesReply.newBuilder();
-
-            componentConfigService.getComponentNames().forEach(n -> replyBuilder.addNames(n));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void registerProperties(registerPropertiesRequest request,
-                                       StreamObserver<registerPropertiesReply> responseObserver) {
-
-            try {
-                componentConfigService.registerProperties(Class.forName(request.getComponentClass()));
-                responseObserver.onNext(registerPropertiesReply.getDefaultInstance());
-                responseObserver.onCompleted();
-            } catch (ClassNotFoundException e) {
-                responseObserver.onError(e);
-            }
-        }
-
-        @Override
-        public void unregisterProperties(unregisterPropertiesRequest request,
-                                         StreamObserver<unregisterPropertiesReply> responseObserver) {
-
-            try {
-                componentConfigService.unregisterProperties(Class.forName(request.getComponentClass()),
-                                                            request.getClear());
-                responseObserver.onNext(unregisterPropertiesReply.getDefaultInstance());
-                responseObserver.onCompleted();
-            } catch (ClassNotFoundException e) {
-                responseObserver.onError(e);
-            }
-        }
-
-        @Override
-        public void getProperties(getPropertiesRequest request, StreamObserver<getPropertiesReply> responseObserver) {
-
-            getPropertiesReply.Builder replyBuilder = getPropertiesReply.newBuilder();
-
-            componentConfigService.getProperties(request.getComponentName())
-                    .forEach(n -> replyBuilder.addConfigProperties(ConfigPropertyProtoTranslator.translate(n)));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void setProperty(setPropertyRequest request, StreamObserver<setPropertyReply> responseObserver) {
-
-            componentConfigService.setProperty(request.getComponentName(), request.getName(), request.getValue());
-            responseObserver.onNext(setPropertyReply.getDefaultInstance());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void preSetProperty(preSetPropertyRequest request,
-                                   StreamObserver<preSetPropertyReply> responseObserver) {
-
-            componentConfigService.preSetProperty(request.getComponentName(), request.getName(), request.getValue());
-            responseObserver.onNext(preSetPropertyReply.getDefaultInstance());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void unsetProperty(unsetPropertyRequest request, StreamObserver<unsetPropertyReply> responseObserver) {
-
-            componentConfigService.unsetProperty(request.getComponentName(), request.getName());
-            responseObserver.onNext(unsetPropertyReply.getDefaultInstance());
-            responseObserver.onCompleted();
-        }
-    }
-
-    private ComponentConfigServiceNbServerInternal getInnerInstance() {
-        if (instance == null) {
-            instance = new ComponentConfigServiceNbServerInternal();
-        }
-        return instance;
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
deleted file mode 100644
index 5d6ea4c..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.grpc.net.device.models.PortEnumsProto;
-import org.onosproject.grpc.net.device.models.PortStatisticsProtoOuterClass.PortStatisticsProto;
-import org.onosproject.grpc.nb.net.device.DeviceServiceGrpc.DeviceServiceImplBase;
-import org.onosproject.grpc.net.models.MastershipRoleProtoOuterClass;
-import org.onosproject.grpc.net.models.PortProtoOuterClass.PortProto;
-import org.onosproject.grpc.net.device.models.DeviceEnumsProto;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.incubator.protobuf.models.net.device.DeviceProtoTranslator;
-import org.slf4j.Logger;
-
-import static org.onosproject.grpc.nb.net.device.DeviceServiceNb.*;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * A server that provides access to the methods exposed by {@link DeviceService}.
- * TODO this requires major refactoring, translation should be delegated to calls to
- * TODO{@link DeviceProtoTranslator}.
- */
-@Beta
-@Component(immediate = true)
-public class GrpcNbDeviceService {
-
-    private final Logger log = getLogger(getClass());
-
-    private DeviceServiceNbServerInternal instance = null;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceService deviceService;
-
-    @Activate
-    public void activate() {
-        registry.register(getInnerInstance());
-        log.info("Started.");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        registry.unregister(getInnerInstance());
-        log.info("Stopped");
-    }
-
-    /**
-     * Register Device Service, Used for unit testing purposes.
-     *
-     * @return An instance of binding Device service
-     */
-    public InProcessServer<BindableService> registerInProcessServer() {
-        InProcessServer<BindableService> inprocessServer =
-                new InProcessServer(GrpcNbDeviceService.DeviceServiceNbServerInternal.class);
-        inprocessServer.addServiceToBind(getInnerInstance());
-
-        return inprocessServer;
-    }
-
-    private final class DeviceServiceNbServerInternal extends DeviceServiceImplBase {
-
-        private DeviceServiceNbServerInternal() {
-            super();
-        }
-
-        @Override
-        public void getDeviceCount(
-                getDeviceCountRequest request,
-                StreamObserver<getDeviceCountReply> responseObserver) {
-            responseObserver
-                    .onNext(getDeviceCountReply
-                            .newBuilder()
-                            .setDeviceCount(
-                                    deviceService.getDeviceCount())
-                            .build());
-            responseObserver.onCompleted();
-        }
-
-        //FIXME NOTE: this will be switched to a streaming version.
-        @Override
-        public void getDevices(getDevicesRequest request,
-                               StreamObserver<getDevicesReply> responseObserver) {
-            getDevicesReply.Builder replyBuilder = getDevicesReply.newBuilder();
-            deviceService.getDevices().forEach(d -> {
-                replyBuilder.addDevice(
-                        org.onosproject.grpc.net.models.DeviceProtoOuterClass.DeviceProto
-                                .newBuilder()
-                                .setDeviceId(d.id().toString())
-                                .setType(
-                                        DeviceEnumsProto.DeviceTypeProto
-                                                .valueOf(d.type().toString()))
-                                .setManufacturer(d.manufacturer())
-                                .setHwVersion(d.hwVersion())
-                                .setSwVersion(d.swVersion())
-                                .setSerialNumber(d.serialNumber())
-                                .setChassisId(d.chassisId().toString())
-                                .build());
-            });
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        //FIXME NOTE: this will be switched to a streaming version.
-        @Override
-        public void getAvailableDevices(getAvailableDevicesRequest request,
-                                        StreamObserver
-                                                <getAvailableDevicesReply> responseObserver) {
-            getAvailableDevicesReply.Builder replyBuilder = getAvailableDevicesReply.newBuilder();
-            deviceService.getAvailableDevices().forEach(d -> {
-                replyBuilder.addDevice(
-                        org.onosproject.grpc.net.models.DeviceProtoOuterClass.DeviceProto
-                                .newBuilder()
-                                .setDeviceId(d.id().toString())
-                                .setType(DeviceEnumsProto.DeviceTypeProto.valueOf(
-                                        d.type().toString()))
-                                .setManufacturer(d.manufacturer())
-                                .setHwVersion(d.hwVersion())
-                                .setSwVersion(d.swVersion())
-                                .setSerialNumber(d.serialNumber())
-                                .setChassisId(d.chassisId().toString())
-                                .build());
-            });
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getDevice(getDeviceRequest request,
-                              io.grpc.stub.StreamObserver<getDeviceReply> responseObserver) {
-            org.onosproject.net.Device device = deviceService.getDevice(
-                    DeviceId.deviceId(request.getDeviceId()));
-            responseObserver.onNext(
-                    getDeviceReply.newBuilder().setDevice(
-                            org.onosproject.grpc.net.models.DeviceProtoOuterClass.DeviceProto
-                                    .newBuilder()
-                                    .setDeviceId(device.id().toString())
-                                    .setType(
-                                            //TODO check for better approach to mapping between enum varieties
-                                            DeviceEnumsProto.DeviceTypeProto.valueOf(device.type().toString()))
-                                    .setManufacturer(device.manufacturer())
-                                    .setHwVersion(device.hwVersion())
-                                    .setSwVersion(device.swVersion())
-                                    .setSerialNumber(device.serialNumber())
-                                    .setChassisId(device.chassisId().toString())
-                                    .build()).build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getRole(getRoleRequest request,
-                            StreamObserver<getRoleReply> responseObserver) {
-            DeviceId deviceId = DeviceId.deviceId(request.getDeviceId());
-            MastershipRole role = deviceService.getRole(deviceId);
-            MastershipRoleProtoOuterClass.MastershipRoleProto mastershipRole =
-                    MastershipRoleProtoOuterClass.MastershipRoleProto.valueOf(role.toString());
-            responseObserver.onNext(getRoleReply.newBuilder()
-                    .setRole(mastershipRole).build());
-            responseObserver.onCompleted();
-        }
-
-        //FIXME NOTE: this may be switched to a streaming version.
-        @Override
-        public void getPorts(getPortsRequest request, StreamObserver<getPortsReply> responseObserver) {
-            getPortsReply.Builder replyBuilder = getPortsReply.newBuilder();
-            deviceService.getPorts(
-                    DeviceId.deviceId(request.getDeviceId()))
-                    .forEach(port -> {
-                        PortProto.Builder portBuilder = PortProto
-                                .newBuilder()
-                                .setPortNumber(port.number().toString())
-                                .setIsEnabled(port.isEnabled())
-                                .setType(PortEnumsProto.PortTypeProto.valueOf(port.type().toString()))
-                                .setPortSpeed(port.portSpeed());
-                        port.annotations().keys().forEach(key -> portBuilder
-                                .putAnnotations(key, port.annotations().value(key)));
-
-                        replyBuilder.addPort(portBuilder.build());
-                    });
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        //FIXME NOTE: this may be switched to a streaming version.
-        @Override
-        public void getPortStatistics(getPortStatisticsRequest request,
-                                      StreamObserver<getPortStatisticsReply> responseObserver) {
-            getPortStatisticsReply.Builder replyBuilder = getPortStatisticsReply.newBuilder();
-            deviceService.getPortStatistics(DeviceId.deviceId(request.getDeviceId()))
-                    .forEach(statistic -> {
-                        replyBuilder.addPortStatistics(
-                                PortStatisticsProto
-                                        .newBuilder()
-                                        .setPort(statistic.port())
-                                        .setPacketsReceived(statistic.packetsReceived())
-                                        .setPacketsSent(statistic.packetsSent())
-                                        .setBytesReceived(statistic.bytesReceived())
-                                        .setBytesSent(statistic.bytesSent())
-                                        .setPacketsRxDropped(statistic.packetsRxDropped())
-                                        .setPacketsTxDropped(statistic.packetsTxDropped())
-                                        .setPacketsRxErrors(statistic.packetsRxErrors())
-                                        .setPacketsTxErrors(statistic.packetsTxErrors())
-                                        .setDurationSec(statistic.durationSec())
-                                        .setDurationNano(statistic.durationNano())
-                                        .setIsZero(statistic.isZero())
-                                        .build());
-                    });
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        //FIXME NOTE: this may be switched to a streaming version.
-        @Override
-        public void getPortDeltaStatistics(getPortDeltaStatisticsRequest request,
-                                           StreamObserver<getPortDeltaStatisticsReply> responseObserver) {
-            getPortDeltaStatisticsReply.Builder replyBuilder = getPortDeltaStatisticsReply.newBuilder();
-            deviceService.getPortDeltaStatistics(DeviceId.deviceId(request.getDeviceId()))
-                    .forEach(statistic -> {
-                        replyBuilder.addPortStatistics(
-                                PortStatisticsProto
-                                        .newBuilder()
-                                        .setPort(statistic.port())
-                                        .setPacketsReceived(statistic.packetsReceived())
-                                        .setPacketsSent(statistic.packetsSent())
-                                        .setBytesReceived(statistic.bytesReceived())
-                                        .setBytesSent(statistic.bytesSent())
-                                        .setPacketsRxDropped(statistic.packetsRxDropped())
-                                        .setPacketsTxDropped(statistic.packetsTxDropped())
-                                        .setPacketsRxErrors(statistic.packetsRxErrors())
-                                        .setPacketsTxErrors(statistic.packetsTxErrors())
-                                        .setDurationSec(statistic.durationSec())
-                                        .setDurationNano(statistic.durationNano())
-                                        .setIsZero(statistic.isZero())
-                                        .build());
-                    });
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getStatisticsForPort(getStatisticsForPortRequest request,
-                                         StreamObserver<getStatisticsForPortReply> responseObserver) {
-            org.onosproject.net.device.PortStatistics statistics = deviceService
-                    .getStatisticsForPort(DeviceId.deviceId(request.getDeviceId()),
-                            PortNumber.portNumber(request.getPortNumber()));
-            responseObserver.onNext(
-                    getStatisticsForPortReply
-                            .newBuilder()
-                            .setPortStatistics(
-                                    PortStatisticsProto
-                                            .newBuilder()
-                                            .setPort(statistics.port())
-                                            .setPacketsReceived(statistics.packetsReceived())
-                                            .setPacketsSent(statistics.packetsSent())
-                                            .setBytesReceived(statistics.bytesReceived())
-                                            .setBytesSent(statistics.bytesSent())
-                                            .setPacketsRxDropped(statistics.packetsRxDropped())
-                                            .setPacketsTxDropped(statistics.packetsTxDropped())
-                                            .setPacketsRxErrors(statistics.packetsRxErrors())
-                                            .setPacketsTxErrors(statistics.packetsTxErrors())
-                                            .setDurationSec(statistics.durationSec())
-                                            .setDurationNano(statistics.durationNano())
-                                            .setIsZero(statistics.isZero())
-                                            .build()).build());
-            responseObserver.onCompleted();
-
-        }
-
-        @Override
-        public void getDeltaStatisticsForPort(getDeltaStatisticsForPortRequest request,
-                                              StreamObserver<getDeltaStatisticsForPortReply> responseObserver) {
-            org.onosproject.net.device.PortStatistics statistics = deviceService
-                    .getDeltaStatisticsForPort(DeviceId.deviceId(request.getDeviceId()),
-                            PortNumber.portNumber(request.getPortNumber()));
-            responseObserver.onNext(
-                    getDeltaStatisticsForPortReply
-                            .newBuilder()
-                            .setPortStatistics(
-                                    PortStatisticsProto
-                                            .newBuilder()
-                                            .setPort(statistics.port())
-                                            .setPacketsReceived(statistics.packetsReceived())
-                                            .setPacketsSent(statistics.packetsSent())
-                                            .setBytesReceived(statistics.bytesReceived())
-                                            .setBytesSent(statistics.bytesSent())
-                                            .setPacketsRxDropped(statistics.packetsRxDropped())
-                                            .setPacketsTxDropped(statistics.packetsTxDropped())
-                                            .setPacketsRxErrors(statistics.packetsRxErrors())
-                                            .setPacketsTxErrors(statistics.packetsTxErrors())
-                                            .setDurationSec(statistics.durationSec())
-                                            .setDurationNano(statistics.durationNano())
-                                            .setIsZero(statistics.isZero())
-                                            .build()).build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getPort(getPortRequest request,
-                            StreamObserver<getPortReply> responseObserver) {
-            //FIXME getting deviceId here is dangerous because it is not guaranteed to be populated as port of a OneOf
-            org.onosproject.net.Port port = deviceService.getPort(
-                    new ConnectPoint(DeviceId.deviceId(
-                            request.getConnectPoint().getDeviceId()),
-                            PortNumber.portNumber(
-                                    request.getConnectPoint()
-                                            .getPortNumber())));
-            PortProto.Builder portBuilder =
-                    PortProto.newBuilder()
-                            .setPortNumber(port.number().toString())
-                            .setIsEnabled(port.isEnabled())
-                            .setType(
-                                    PortEnumsProto.PortTypeProto
-                                            .valueOf(port.type().toString()))
-                            .setPortSpeed(port.portSpeed());
-
-            port.annotations().keys().forEach(key -> portBuilder
-                    .putAnnotations(key, port.annotations().value(key)));
-
-            responseObserver.onNext(getPortReply
-                    .newBuilder()
-                    .setPort(portBuilder.build())
-                    .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void isAvailable(isAvailableRequest request,
-                                StreamObserver<isAvailableReply> responseObserver) {
-            responseObserver.onNext(
-                    isAvailableReply
-                            .newBuilder()
-                            .setIsAvailable(
-                                    deviceService.isAvailable(
-                                            DeviceId.deviceId(
-                                                    request.getDeviceId())))
-                            .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void localStatus(localStatusRequest request,
-                                StreamObserver<localStatusReply> responseObserver) {
-            responseObserver.onNext(
-                    localStatusReply
-                            .newBuilder()
-                            .setStatus(
-                                    deviceService.localStatus(
-                                            DeviceId.deviceId(request.getDeviceId())))
-                            .build());
-            responseObserver.onCompleted();
-        }
-    }
-
-    private DeviceServiceNbServerInternal getInnerInstance() {
-        if (instance == null) {
-            instance = new DeviceServiceNbServerInternal();
-        }
-        return instance;
-    }
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbHostService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbHostService.java
deleted file mode 100644
index 3fee375..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbHostService.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.VlanId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.HostId;
-import org.onosproject.net.Host;
-import org.onosproject.net.host.HostService;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.slf4j.Logger;
-import org.onosproject.grpc.nb.net.host.HostServiceGrpc.HostServiceImplBase;
-import org.onosproject.incubator.protobuf.models.net.ConnectPointProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.HostProtoTranslator;
-
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostCountRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostCountReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsByVlanRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsByVlanReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsByMacRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsByMacReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsByIpRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getHostsByIpReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getConnectedHostsRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.getConnectedHostsReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.startMonitoringIpRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.startMonitoringIpReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.stopMonitoringIpRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.stopMonitoringIpReply;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.requestMacRequest;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.requestMacReply;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * A server that provides access to the methods exposed by {@link HostService}.
- */
-@Beta
-@Component(immediate = true)
-public class GrpcNbHostService {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected HostService hostService;
-
-    private HostServiceNBServerInternal instance = null;
-
-    @Activate
-    public void activate() {
-
-        registry.register(getInnerInstance());
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-
-        registry.unregister(getInnerInstance());
-        log.info("Stoped");
-    }
-
-    /**
-     * Register Host Service, Used for unit testing purposes.
-     *
-     * @return An instance of binding Host service
-     */
-    public InProcessServer<BindableService> registerInProcessServer() {
-        InProcessServer<BindableService> inprocessServer =
-                new InProcessServer(HostServiceNBServerInternal.class);
-        inprocessServer.addServiceToBind(getInnerInstance());
-
-        return inprocessServer;
-    }
-
-    /**
-     * Host Service NorthBound implementation.
-     */
-    private final class HostServiceNBServerInternal extends HostServiceImplBase {
-
-        private HostServiceNBServerInternal() {
-            super();
-        }
-
-        @Override
-        public void getHostCount(getHostCountRequest request,
-                                 StreamObserver<getHostCountReply> responseObserver) {
-
-            responseObserver.onNext(getHostCountReply.newBuilder()
-                                            .setHostCount(hostService.getHostCount())
-                                            .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getHosts(getHostsRequest request,
-                             StreamObserver<getHostsReply> responseObserver) {
-
-            getHostsReply.Builder replyBuilder = getHostsReply.newBuilder();
-
-            hostService.getHosts().forEach(d -> replyBuilder.addHost(HostProtoTranslator.translate(d)));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getHost(getHostRequest request,
-                            StreamObserver<getHostReply> responseObserver) {
-
-            Host host = hostService.getHost(HostId.hostId(request.getHostId().toString()));
-
-            responseObserver.onNext(getHostReply.newBuilder().setHost(HostProtoTranslator.translate(host)).build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getHostsByVlan(getHostsByVlanRequest request,
-                                   StreamObserver<getHostsByVlanReply> responseObserver) {
-
-            getHostsByVlanReply.Builder replyBuilder = getHostsByVlanReply.newBuilder();
-
-            hostService.getHostsByVlan(VlanId.vlanId(request.getVlanId())).forEach(
-                    d -> replyBuilder.addHost(HostProtoTranslator.translate(d)));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getHostsByMac(getHostsByMacRequest request,
-                                  StreamObserver<getHostsByMacReply> responseObserver) {
-
-            getHostsByMacReply.Builder replyBuilder = getHostsByMacReply.newBuilder();
-
-            hostService.getHostsByMac(MacAddress.valueOf(request.getMac())).forEach(
-                    d -> replyBuilder.addHost(HostProtoTranslator.translate(d)));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getHostsByIp(getHostsByIpRequest request,
-                                 StreamObserver<getHostsByIpReply> responseObserver) {
-
-            getHostsByIpReply.Builder replyBuilder = getHostsByIpReply.newBuilder();
-
-            hostService.getHostsByIp(IpAddress.valueOf(request.getIpAddress())).forEach(
-                    d -> replyBuilder.addHost(HostProtoTranslator.translate(d)));
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getConnectedHosts(getConnectedHostsRequest request,
-                                      StreamObserver<getConnectedHostsReply> responseObserver) {
-
-            getConnectedHostsReply.Builder replyBuilder = getConnectedHostsReply.newBuilder();
-
-            if (getConnectedHostsRequest.ConnectedHostCase.DEVICEID == request.getConnectedHostCase()) {
-                hostService.getConnectedHosts(DeviceId.deviceId(request.getDeviceId()))
-                        .forEach(d -> replyBuilder.addHost(HostProtoTranslator.translate(d)));
-            } else if (getConnectedHostsRequest.ConnectedHostCase.CONNECT_POINT == request.getConnectedHostCase()) {
-                hostService.getConnectedHosts(ConnectPointProtoTranslator.translate(request.getConnectPoint()).get())
-                        .forEach(d -> replyBuilder.addHost(HostProtoTranslator.translate(d)));
-            } else {
-                log.warn("Both DeviceId and ConnectPoint are not set.");
-            }
-
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void startMonitoringIp(startMonitoringIpRequest request,
-                                      StreamObserver<startMonitoringIpReply> responseObserver) {
-
-            hostService.startMonitoringIp(IpAddress.valueOf(request.getIpAddress()));
-            responseObserver.onNext(startMonitoringIpReply.getDefaultInstance());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void stopMonitoringIp(stopMonitoringIpRequest request,
-                                     StreamObserver<stopMonitoringIpReply> responseObserver) {
-
-            hostService.stopMonitoringIp(IpAddress.valueOf(request.getIpAddress()));
-            responseObserver.onNext(stopMonitoringIpReply.getDefaultInstance());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void requestMac(requestMacRequest request,
-                               StreamObserver<requestMacReply> responseObserver) {
-
-            hostService.requestMac(IpAddress.valueOf(request.getIpAddress()));
-            responseObserver.onNext(requestMacReply.getDefaultInstance());
-            responseObserver.onCompleted();
-        }
-    }
-
-    private HostServiceNBServerInternal getInnerInstance() {
-        if (instance == null) {
-            instance = new HostServiceNBServerInternal();
-        }
-        return instance;
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbLinkService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbLinkService.java
deleted file mode 100644
index fbf956d..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbLinkService.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.grpc.nb.net.link.LinkServiceGrpc.LinkServiceImplBase;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getActiveLinksReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getActiveLinksRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getDeviceEgressLinksReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getDeviceEgressLinksRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getDeviceIngressLinksReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getDeviceIngressLinksRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getDeviceLinksReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getDeviceLinksRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getEgressLinksReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getEgressLinksRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getIngressLinksReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getIngressLinksRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getLinkCountReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getLinkCountRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getLinkReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getLinkRequest;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getLinksReply;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb.getLinksRequest;
-import org.onosproject.incubator.protobuf.models.net.ConnectPointProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.LinkProtoTranslator;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A server that provides access to the methods exposed by {@link org.onosproject.net.link.LinkService}.
- */
-@Beta
-@Component(immediate = true)
-public class GrpcNbLinkService {
-
-    private static final Logger log = LoggerFactory.getLogger(GrpcNbLinkService.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkService linkService;
-
-    private LinkServiceNbServerInternal innerClassInstance;
-
-    @Activate
-    public void activate() {
-
-        registry.register(getInnerInstance());
-        log.info("Started.");
-    }
-
-    @Deactivate
-    public void deactivate() {
-
-        registry.unregister(getInnerInstance());
-        log.info("Stopped.");
-    }
-
-    /**
-     * Register Link Service, used for unit testing purposes.
-     *
-     * @return An instance of binding Link service
-     */
-    public InProcessServer<BindableService> registerInProcessServer() {
-        InProcessServer<BindableService> inprocessServer =
-                new InProcessServer(LinkServiceNb.class);
-        inprocessServer.addServiceToBind(getInnerInstance());
-
-        return inprocessServer;
-    }
-
-    private class LinkServiceNbServerInternal extends LinkServiceImplBase {
-
-        public LinkServiceNbServerInternal() {
-            super();
-        }
-
-        @Override
-        public void getLinkCount(getLinkCountRequest request,
-                                 StreamObserver<getLinkCountReply> responseObserver) {
-            responseObserver
-                    .onNext(getLinkCountReply
-                                    .newBuilder()
-                                    .setLinkCount(linkService.getLinkCount())
-                                    .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getLink(getLinkRequest request,
-                            StreamObserver<getLinkReply> responseObserver) {
-            ConnectPoint src = ConnectPointProtoTranslator.translate(request.getSrc()).get();
-            ConnectPoint dst = ConnectPointProtoTranslator.translate(request.getDst()).get();
-
-            org.onosproject.net.Link link = linkService.getLink(src, dst);
-            getLinkReply reply = getLinkReply.newBuilder()
-                    .setLink(LinkProtoTranslator.translate(link)).build();
-
-            responseObserver.onNext(reply);
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getActiveLinks(getActiveLinksRequest request,
-                                   StreamObserver<getActiveLinksReply> responseObserver) {
-            getActiveLinksReply.Builder builder = getActiveLinksReply.newBuilder();
-            linkService.getActiveLinks().forEach(l -> {
-                builder.addLink(LinkProtoTranslator.translate(l));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getDeviceLinks(getDeviceLinksRequest request,
-                                   StreamObserver<getDeviceLinksReply> responseObserver) {
-            DeviceId deviceId = DeviceId.deviceId(request.getDeviceId());
-            getDeviceLinksReply.Builder builder = getDeviceLinksReply.newBuilder();
-            linkService.getDeviceLinks(deviceId).forEach(l -> {
-                builder.addLink(LinkProtoTranslator.translate(l));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getDeviceEgressLinks(getDeviceEgressLinksRequest request,
-                                         StreamObserver<getDeviceEgressLinksReply> responseObserver) {
-            DeviceId deviceId = DeviceId.deviceId(request.getDeviceId());
-            getDeviceEgressLinksReply.Builder builder = getDeviceEgressLinksReply.newBuilder();
-            linkService.getDeviceEgressLinks(deviceId).forEach(l -> {
-                builder.addLink(LinkProtoTranslator.translate(l));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getDeviceIngressLinks(getDeviceIngressLinksRequest request,
-                                          StreamObserver<getDeviceIngressLinksReply> responseObserver) {
-            DeviceId deviceId = DeviceId.deviceId(request.getDeviceId());
-            getDeviceIngressLinksReply.Builder builder = getDeviceIngressLinksReply.newBuilder();
-            linkService.getDeviceIngressLinks(deviceId).forEach(l -> {
-                builder.addLink(LinkProtoTranslator.translate(l));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getEgressLinks(getEgressLinksRequest request,
-                                   StreamObserver<getEgressLinksReply> responseObserver) {
-            ConnectPoint connectPoint = ConnectPointProtoTranslator.translate(request.getConnectPoint()).get();
-            getEgressLinksReply.Builder builder = getEgressLinksReply.newBuilder();
-            linkService.getEgressLinks(connectPoint).forEach(l -> {
-                builder.addLink(LinkProtoTranslator.translate(l));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getIngressLinks(getIngressLinksRequest request,
-                                    StreamObserver<getIngressLinksReply> responseObserver) {
-            ConnectPoint connectPoint = ConnectPointProtoTranslator.translate(request.getConnectPoint()).get();
-
-            getIngressLinksReply.Builder builder = getIngressLinksReply.newBuilder();
-            linkService.getIngressLinks(connectPoint).forEach(l -> {
-                builder.addLink(LinkProtoTranslator.translate(l));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getLinks(getLinksRequest request,
-                             StreamObserver<getLinksReply> responseObserver) {
-            ConnectPoint connectPoint = ConnectPointProtoTranslator.translate(request.getConnectPoint()).get();
-
-            getLinksReply.Builder builder = getLinksReply.newBuilder();
-            linkService.getLinks(connectPoint).forEach(l -> {
-                builder.addLink(LinkProtoTranslator.translate(l));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-    }
-
-    private LinkServiceNbServerInternal getInnerInstance() {
-        if (innerClassInstance == null) {
-            innerClassInstance = new LinkServiceNbServerInternal();
-        }
-        return innerClassInstance;
-    }
-}
-
-
-
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMastershipService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMastershipService.java
deleted file mode 100644
index 8d2a48f..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMastershipService.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.protobuf.services.nb;
-
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.cluster.RoleInfo;
-import org.onosproject.grpc.nb.mastership.MastershipServiceGrpc;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getLocalRoleReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getLocalRoleRequest;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.isLocalMasterReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.isLocalMasterRequest;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.relinquishMastershipSyncReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.relinquishMastershipSyncRequest;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.requestRoleForSyncReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.requestRoleForSyncRequest;
-import org.onosproject.incubator.protobuf.models.cluster.NodeIdProtoTranslator;
-import org.onosproject.incubator.protobuf.models.cluster.RoleInfoProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.MastershipRoleProtoTranslator;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * A server that provides access to the methods exposed by {@link MastershipService}.
- */
-
-@Beta
-@Component(immediate = true)
-public class GrpcNbMastershipService {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MastershipService mastershipService;
-
-    private MastershipServiceNbServerInternal instance = null;
-
-    @Activate
-    public void activate() {
-        registry.register(getInnerInstance());
-        log.info("Started.");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        registry.unregister(getInnerInstance());
-        log.info("Stopped");
-    }
-
-    /**
-     * Register Mastership Service, used for unit testing purposes.
-     *
-     * @return an instance of binding Mastership service
-     */
-    public InProcessServer<BindableService> registerInProcessServer() {
-        InProcessServer<BindableService> inprocessServer =
-                new InProcessServer(GrpcNbMastershipService.MastershipServiceNbServerInternal.class);
-        inprocessServer.addServiceToBind(getInnerInstance());
-
-        return inprocessServer;
-    }
-
-    private class MastershipServiceNbServerInternal extends MastershipServiceGrpc.MastershipServiceImplBase {
-
-        @Override
-        public void getLocalRole(getLocalRoleRequest request,
-                                 StreamObserver<getLocalRoleReply> responseObserver) {
-            MastershipRole mr = mastershipService.getLocalRole(DeviceId.deviceId(request.getDeviceId()));
-
-            responseObserver.onNext(getLocalRoleReply.newBuilder()
-                    .setMastershipRole(MastershipRoleProtoTranslator.translate(mr))
-                    .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void isLocalMaster(isLocalMasterRequest request,
-                                  StreamObserver<isLocalMasterReply> responseObserver) {
-            boolean isLocalMaster = mastershipService.isLocalMaster(DeviceId.deviceId(request.getDeviceId()));
-
-            responseObserver.onNext(isLocalMasterReply.newBuilder()
-                    .setIsLocalMaster(isLocalMaster)
-                    .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void requestRoleForSync(requestRoleForSyncRequest request,
-                                       StreamObserver<requestRoleForSyncReply> responseObserver) {
-            MastershipRole mr = mastershipService.requestRoleForSync(DeviceId.deviceId(request.getDeviceId()));
-
-            responseObserver.onNext(requestRoleForSyncReply.newBuilder()
-                    .setMastershipRole(MastershipRoleProtoTranslator.translate(mr))
-                    .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void relinquishMastershipSync(relinquishMastershipSyncRequest request,
-                                             StreamObserver<relinquishMastershipSyncReply> responseObserver) {
-            relinquishMastershipSyncReply.Builder replyBuilder = relinquishMastershipSyncReply.newBuilder();
-            mastershipService.relinquishMastershipSync(DeviceId.deviceId(request.getDeviceId()));
-
-            responseObserver.onNext(replyBuilder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getMasterFor(MastershipServiceNb.getMasterForRequest request,
-                                 StreamObserver<MastershipServiceNb.getMasterForReply> responseObserver) {
-            NodeId nodeId = mastershipService.getMasterFor(DeviceId.deviceId(request.getDeviceId()));
-
-            responseObserver.onNext(MastershipServiceNb.getMasterForReply.newBuilder()
-                    .setNodeId(NodeIdProtoTranslator.translate(nodeId))
-                    .build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getNodesFor(MastershipServiceNb.getNodesForRequest request,
-                                StreamObserver<MastershipServiceNb.getNodesForReply> responseObserver) {
-            RoleInfo roleInfo = mastershipService.getNodesFor(DeviceId.deviceId(request.getDeviceId()));
-
-            responseObserver.onNext(MastershipServiceNb.getNodesForReply.newBuilder()
-                    .setRoleInfo(RoleInfoProtoTranslator.translate(roleInfo))
-                    .build());
-            responseObserver.onCompleted();
-        }
-    }
-
-    private MastershipServiceNbServerInternal getInnerInstance() {
-        if (instance == null) {
-            instance = new MastershipServiceNbServerInternal();
-        }
-        return instance;
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterService.java
deleted file mode 100644
index 6aed88f..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterService.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.incubator.protobuf.models.net.meter.MeterRequestProtoTranslator;
-import org.onosproject.net.meter.MeterService;
-import org.onosproject.incubator.protobuf.models.net.meter.MeterProtoTranslator;
-
-import org.onosproject.grpc.nb.net.meter.MeterServiceGrpc.MeterServiceImplBase;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.submitRequest;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.submitReply;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.withdrawRequest;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.withdrawReply;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.getMeterRequest;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.getMeterReply;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.getAllMetersRequest;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.getAllMetersReply;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.getMetersRequest;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.getMetersReply;
-
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Deactivate;
-import com.google.common.annotations.Beta;
-import org.osgi.service.component.annotations.Component;
-
-import org.onosproject.net.meter.Meter;
-import org.onosproject.net.meter.MeterId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-
-/**
- * A server that provides access to the methods exposed by {@link MeterService}.
- * TODO this requires major refactoring, translation should be delegated to calls to
- * TODO{@link MeterProtoTranslator}.
- */
-@Beta
-@Component(immediate = true)
-public class GrpcNbMeterService extends MeterServiceImplBase {
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MeterService meterService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry grpcServiceRegistry;
-
-    @Activate
-    public void activate() {
-        grpcServiceRegistry.register(this);
-    }
-
-    @Deactivate
-    public void deactivate() {
-        grpcServiceRegistry.unregister(this);
-    }
-
-    @Override
-    public void submit(submitRequest request,
-                       StreamObserver<submitReply> responseObserver) {
-        submitReply.Builder replyBuilder = submitReply.newBuilder();
-        Meter meter = meterService.submit(MeterRequestProtoTranslator.translate(request.getMeter()));
-        responseObserver.onNext(replyBuilder.setSubmitMeter(MeterProtoTranslator.translate(meter)).build());
-        responseObserver.onCompleted();
-    }
-
-    @Override
-    public void withdraw(withdrawRequest request,
-                         StreamObserver<withdrawReply> responseObserver) {
-        withdrawReply.Builder replyBuilder = withdrawReply.newBuilder();
-        meterService.withdraw(MeterRequestProtoTranslator.translate(request.getMeter()),
-                MeterId.meterId(request.getMeterId()));
-        responseObserver.onNext(replyBuilder.build());
-        responseObserver.onCompleted();
-    }
-
-    @Override
-    public void getMeter(getMeterRequest request,
-                         StreamObserver<getMeterReply> responseObserver) {
-        getMeterReply.Builder replyBuilder = getMeterReply.newBuilder();
-        Meter meter = meterService.getMeter(DeviceId.deviceId(request.getDeviceId()),
-                MeterId.meterId(request.getMeterId()));
-        responseObserver.onNext(replyBuilder.setMeter(MeterProtoTranslator.translate(meter)).build());
-        responseObserver.onCompleted();
-    }
-
-    @Override
-    public void getAllMeters(getAllMetersRequest request,
-                             StreamObserver<getAllMetersReply> responseObserver) {
-        getAllMetersReply.Builder replyBuilder = getAllMetersReply.newBuilder();
-        meterService.getAllMeters().forEach(d -> {
-            replyBuilder.addMeters(MeterProtoTranslator.translate(d));
-        });
-        responseObserver.onNext(replyBuilder.build());
-        responseObserver.onCompleted();
-    }
-
-    @Override
-    public void getMeters(getMetersRequest request,
-                          StreamObserver<getMetersReply> responseObserver) {
-        getMetersReply.Builder replyBuilder = getMetersReply.newBuilder();
-        meterService.getMeters(DeviceId.deviceId(request.getDeviceId())).forEach(d -> {
-            replyBuilder.addMeters(MeterProtoTranslator.translate(d));
-        });
-        responseObserver.onNext(replyBuilder.build());
-        responseObserver.onCompleted();
-    }
-
-}
-
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java
deleted file mode 100644
index f98d880..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.annotations.Beta;
-import io.grpc.BindableService;
-import io.grpc.stub.StreamObserver;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.grpc.nb.net.region.RegionServiceGrpc.RegionServiceImplBase;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionDevicesReply;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionDevicesRequest;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceReply;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceRequest;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionHostsReply;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionHostsRequest;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionReply;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionRequest;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsReply;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsRequest;
-import org.onosproject.incubator.protobuf.models.net.RegionProtoTranslator;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.region.Region;
-import org.onosproject.net.region.RegionId;
-import org.onosproject.net.region.RegionService;
-import org.onosproject.protobuf.api.GrpcServiceRegistry;
-import org.slf4j.Logger;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * A server that provides access to the methods exposed by {@link RegionService}.
- */
-@Beta
-@Component(immediate = true)
-public class GrpcNbRegionService {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected GrpcServiceRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RegionService regionService;
-
-    private RegionServiceNbServerInternal innerClassInstance = null;
-
-    @Activate
-    public void activate() {
-
-        registry.register(getInnerClassInstance());
-        log.info("Started.");
-    }
-
-    @Deactivate
-    public void deactivate() {
-
-        registry.unregister(getInnerClassInstance());
-        log.info("Stopped.");
-    }
-
-    /**
-     * Register Region Service, used for unit testing purposes.
-     *
-     * @return An instance of binding Region service
-     */
-    public InProcessServer<BindableService> registerInProcessServer() {
-        InProcessServer<BindableService> inprocessServer =
-                new InProcessServer(GrpcNbRegionService.RegionServiceNbServerInternal.class);
-        inprocessServer.addServiceToBind(getInnerClassInstance());
-
-        return inprocessServer;
-    }
-
-    private final class RegionServiceNbServerInternal extends RegionServiceImplBase {
-        /**
-         * Service for interacting with inventory of network control regions.
-         */
-        @Override
-        public void getRegions(getRegionsRequest request,
-                               StreamObserver<getRegionsReply> responseObserver) {
-            getRegionsReply.Builder builder = getRegionsReply.newBuilder();
-            regionService.getRegions().forEach(r -> {
-                builder.addRegion(RegionProtoTranslator.translate(r));
-            });
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getRegion(getRegionRequest request,
-                              StreamObserver<getRegionReply> responseObserver) {
-            RegionId regionId = RegionId.regionId(request.getRegionId());
-            Region region = regionService.getRegion(regionId);
-
-            getRegionReply reply = getRegionReply.newBuilder()
-                    .setRegion(RegionProtoTranslator.translate(region)).build();
-
-            responseObserver.onNext(reply);
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getRegionForDevice(getRegionForDeviceRequest request,
-                                       StreamObserver<getRegionForDeviceReply> responseObserver) {
-            DeviceId deviceId = DeviceId.deviceId(request.getDeviceId());
-            Region region = regionService.getRegionForDevice(deviceId);
-
-            getRegionForDeviceReply reply = getRegionForDeviceReply.newBuilder()
-                    .setRegion(RegionProtoTranslator.translate(region)).build();
-
-            responseObserver.onNext(reply);
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getRegionDevices(getRegionDevicesRequest request,
-                                     StreamObserver<getRegionDevicesReply> responseObserver) {
-            RegionId regionId = RegionId.regionId(request.getRegionId());
-            getRegionDevicesReply.Builder builder = getRegionDevicesReply.newBuilder();
-
-            regionService.getRegionDevices(regionId).forEach(d -> {
-                builder.addDeviceId(d.toString());
-            });
-
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-
-        @Override
-        public void getRegionHosts(getRegionHostsRequest request,
-                                   StreamObserver<getRegionHostsReply> responseObserver) {
-            RegionId regionId = RegionId.regionId(request.getRegionId());
-            getRegionHostsReply.Builder builder = getRegionHostsReply.newBuilder();
-
-            regionService.getRegionHosts(regionId).forEach(h -> {
-                builder.addHostId(h.toString());
-            });
-
-            responseObserver.onNext(builder.build());
-            responseObserver.onCompleted();
-        }
-    }
-
-    private RegionServiceNbServerInternal getInnerClassInstance() {
-        if (innerClassInstance == null) {
-            innerClassInstance = new RegionServiceNbServerInternal();
-        }
-        return innerClassInstance;
-    }
-}
-
-
-
-
-
-
-
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/InProcessServer.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/InProcessServer.java
deleted file mode 100644
index f7ccdcb..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/InProcessServer.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.collect.Sets;
-import io.grpc.Server;
-import io.grpc.inprocess.InProcessServerBuilder;
-import io.grpc.internal.AbstractServerImplBuilder;
-
-import java.io.IOException;
-import java.util.Set;
-/**
- * InProcessServer that manages startup/shutdown of a service within the same process
- * as the client is running. Used for unit testing purposes.
- */
-public class InProcessServer<T extends io.grpc.BindableService> {
-    private Server server;
-
-    Set<T> services = Sets.newHashSet();
-
-    private Class<T> clazz;
-
-    public InProcessServer(Class<T> clazz) {
-        this.clazz = clazz;
-    }
-
-    public void addServiceToBind(T service) {
-        if (service != null) {
-            services.add(service);
-        }
-    }
-
-    public void start() throws IOException, InstantiationException, IllegalAccessException {
-
-        AbstractServerImplBuilder builder = InProcessServerBuilder.forName("test").directExecutor();
-        services.forEach(service -> builder.addService(service));
-        server = builder.build().start();
-        Runtime.getRuntime().addShutdownHook(new Thread() {
-            @Override
-            public void run() {
-                // Use stderr here since the logger may have been reset by its JVM shutdown hook.
-                System.err.println("*** shutting down gRPC server since JVM is shutting down");
-                InProcessServer.this.stop();
-                System.err.println("*** server shut down");
-            }
-        });
-    }
-
-    public void stop() {
-        if (server != null) {
-            server.shutdown();
-        }
-    }
-
-    /**
-     * Await termination on the main thread since the grpc library uses daemon threads.
-     * @throws InterruptedException if there is an issue
-     */
-    public void blockUntilShutdown() throws InterruptedException {
-        if (server != null) {
-            server.awaitTermination();
-        }
-    }
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/package-info.java b/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/package-info.java
deleted file mode 100644
index 51cb983..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * gRPC server implementations for northbound services.
- */
-package org.onosproject.incubator.protobuf.services.nb;
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/app/ApplicationServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/app/ApplicationServiceNb.proto
deleted file mode 100644
index a6132a3..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/app/ApplicationServiceNb.proto
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.app";
-
-package nb.app;
-
-import "core/ApplicationProto.proto";
-import "core/ApplicationIdProto.proto";
-import "app/ApplicationEnumsProto.proto";
-import "security/PermissionProto.proto";
-
-message getApplicationsRequest {
-}
-
-message getApplicationsReply {
-    repeated .core.ApplicationProto application = 1;
-}
-
-message getIdRequest {
-    string name = 1;
-}
-
-message getIdReply {
-    .core.ApplicationIdProto application_id = 1;
-}
-
-message getApplicationRequest {
-    .core.ApplicationIdProto application_id = 1;
-}
-
-message getApplicationReply {
-    .core.ApplicationProto application = 1;
-}
-
-message getStateRequest {
-    .core.ApplicationIdProto application_id = 1;
-}
-
-message getStateReply {
-    .app.ApplicationStateProto state = 1;
-}
-
-message getPermissionsRequest {
-    .core.ApplicationIdProto application_id = 1;
-}
-
-message getPermissionsReply {
-    repeated .security.PermissionProto permission = 1;
-}
-
-service ApplicationService {
-    rpc getApplications(getApplicationsRequest) returns (getApplicationsReply) {}
-    rpc getId(getIdRequest) returns (getIdReply) {}
-    rpc getApplication(getApplicationRequest) returns (getApplicationReply) {}
-    rpc getState(getStateRequest) returns (getStateReply) {}
-    rpc getPermissions(getPermissionsRequest) returns (getPermissionsReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/cfg/ComponentConfigServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/cfg/ComponentConfigServiceNb.proto
deleted file mode 100644
index 5c17997..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/cfg/ComponentConfigServiceNb.proto
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.cfg";
-
-package nb.cfg;
-
-import "cfg/ConfigPropertyProto.proto";
-
-message getComponentNamesRequest {
-}
-
-message getComponentNamesReply {
-    repeated string names = 1;
-}
-
-message registerPropertiesRequest {
-    string component_class = 1;
-}
-
-message registerPropertiesReply {
-}
-
-message unregisterPropertiesRequest {
-    string component_class = 1;
-    bool clear = 2;
-}
-
-message unregisterPropertiesReply {
-}
-
-message getPropertiesRequest {
-    string component_name = 1;
-}
-
-message getPropertiesReply {
-    repeated .cfg.ConfigPropertyProto config_properties = 1;
-}
-
-message setPropertyRequest {
-    string component_name = 1;
-    string name = 2;
-    string value = 3;
-}
-
-message setPropertyReply {
-}
-
-message preSetPropertyRequest {
-    string component_name = 1;
-    string name = 2;
-    string value = 3;
-}
-
-message preSetPropertyReply {
-}
-
-message unsetPropertyRequest {
-    string component_name = 1;
-    string name = 2;
-}
-
-message unsetPropertyReply {
-}
-
-service ComponentConfigService {
-    rpc getComponentNames(getComponentNamesRequest) returns (getComponentNamesReply) {}
-    rpc registerProperties(registerPropertiesRequest) returns (registerPropertiesReply) {}
-    rpc unregisterProperties(unregisterPropertiesRequest) returns (unregisterPropertiesReply) {}
-    rpc getProperties(getPropertiesRequest) returns (getPropertiesReply) {}
-    rpc setProperty(setPropertyRequest) returns (setPropertyReply) {}
-    rpc preSetProperty(preSetPropertyRequest) returns (preSetPropertyReply) {}
-    rpc unsetProperty(unsetPropertyRequest) returns (unsetPropertyReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/mastership/MastershipServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/mastership/MastershipServiceNb.proto
deleted file mode 100644
index 4944d84..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/mastership/MastershipServiceNb.proto
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.mastership";
-
-package nb.mastership;
-
-import "net/MastershipRoleProto.proto";
-import "cluster/RoleInfoProto.proto";
-import "cluster/NodeIdProto.proto";
-
-message getLocalRoleRequest {
-    string device_id = 1;
-}
-
-message getLocalRoleReply {
-    .net.MastershipRoleProto mastership_role = 1;
-}
-
-message isLocalMasterRequest {
-    string device_id = 1;
-}
-
-message isLocalMasterReply {
-    bool is_local_master = 1;
-}
-
-message requestRoleForSyncRequest {
-    string device_id = 1;
-}
-
-message requestRoleForSyncReply {
-    .net.MastershipRoleProto mastership_role = 1;
-}
-
-message relinquishMastershipSyncRequest {
-    string device_id = 1;
-}
-
-message relinquishMastershipSyncReply {
-}
-
-message getMasterForRequest {
-    string device_id = 1;
-}
-
-message getMasterForReply {
-    .cluster.NodeIdProto node_id = 1;
-}
-
-message getNodesForRequest {
-    string device_id = 1;
-}
-
-message getNodesForReply {
-    .cluster.RoleInfoProto role_info = 1;
-}
-
-service MastershipService {
-    rpc getLocalRole(getLocalRoleRequest) returns (getLocalRoleReply) {}
-    rpc isLocalMaster(isLocalMasterRequest) returns (isLocalMasterReply) {}
-    rpc requestRoleForSync(requestRoleForSyncRequest) returns (requestRoleForSyncReply) {}
-    rpc relinquishMastershipSync(relinquishMastershipSyncRequest) returns (relinquishMastershipSyncReply) {}
-    rpc getMasterFor(getMasterForRequest) returns (getMasterForReply) {}
-    rpc getNodesFor(getNodesForRequest) returns (getNodesForReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/net/device/DeviceServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/net/device/DeviceServiceNb.proto
deleted file mode 100644
index da27de9..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/net/device/DeviceServiceNb.proto
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.net.device";
-
-package nb.net.device;
-
-import "net/DeviceProto.proto";
-import "net/device/DeviceEnumsProto.proto";
-import "net/MastershipRoleProto.proto";
-import "net/device/PortStatisticsProto.proto";
-import "net/PortProto.proto";
-import "net/ConnectPointProto.proto";
-
-message getDeviceCountRequest {
-}
-
-message getDeviceCountReply {
-    int32 device_count = 1;
-}
-
-message getDevicesRequest {
-}
-
-message getDevicesReply {
-    repeated .net.DeviceProto device = 1;
-}
-
-message getAvailableDevicesReply {
-    repeated .net.DeviceProto device = 1;
-}
-
-message getAvailableDevicesRequest {
-    .net.device.DeviceTypeProto type = 1;
-}
-
-message getDeviceRequest {
-    string device_id = 1;
-}
-
-message getDeviceReply {
-    .net.DeviceProto device = 1;
-}
-
-message getRoleRequest {
-    string device_id = 1;
-}
-
-message getRoleReply {
-    .net.MastershipRoleProto role = 1;
-}
-
-message getPortsRequest {
-    string device_id = 1;
-}
-
-message getPortsReply {
-    repeated .net.PortProto port = 1;
-}
-
-message getPortStatisticsRequest {
-    string device_id = 1;
-}
-
-message getPortStatisticsReply {
-    repeated .net.device.PortStatisticsProto port_statistics = 1;
-}
-
-message getPortDeltaStatisticsRequest {
-    string device_id = 1;
-}
-
-message getPortDeltaStatisticsReply {
-    repeated .net.device.PortStatisticsProto port_statistics = 1;
-}
-
-message getStatisticsForPortRequest {
-    string device_id = 1;
-    uint64 port_number = 2;
-}
-
-message getStatisticsForPortReply {
-    .net.device.PortStatisticsProto port_statistics = 1;
-}
-
-message getDeltaStatisticsForPortRequest {
-    string device_id = 1;
-    uint64 port_number = 2;
-}
-
-message getDeltaStatisticsForPortReply {
-    .net.device.PortStatisticsProto port_statistics = 1;
-}
-
-message getPortRequest {
-    .net.ConnectPointProto connect_point = 1;
-}
-
-message getPortReply {
-    .net.PortProto port = 1;
-}
-
-message isAvailableRequest {
-    string device_id = 1;
-}
-
-message isAvailableReply {
-    bool is_available = 1;
-}
-
-message localStatusRequest {
-    string device_id = 1;
-}
-
-message localStatusReply {
-    string status = 1;
-}
-
-service DeviceService {
-    rpc getDeviceCount(getDeviceCountRequest) returns (getDeviceCountReply) {}
-    rpc getDevices(getDevicesRequest) returns (getDevicesReply) {}
-    rpc getAvailableDevices(getAvailableDevicesRequest) returns (getAvailableDevicesReply) {}
-    rpc getDevice(getDeviceRequest) returns (getDeviceReply) {}
-    rpc getRole(getRoleRequest) returns (getRoleReply) {}
-    rpc getPorts(getPortsRequest) returns (getPortsReply) {}
-    rpc getPortStatistics(getPortStatisticsRequest) returns (getPortStatisticsReply) {}
-    rpc getPortDeltaStatistics(getPortDeltaStatisticsRequest)
-    returns (getPortDeltaStatisticsReply) {}
-    rpc getStatisticsForPort(getStatisticsForPortRequest)
-    returns (getStatisticsForPortReply) {}
-    rpc getDeltaStatisticsForPort(getDeltaStatisticsForPortRequest)
-    returns (getDeltaStatisticsForPortReply) {}
-    rpc getPort(getPortRequest) returns (getPortReply) {}
-    rpc isAvailable(isAvailableRequest) returns (isAvailableReply) {}
-    rpc localStatus(localStatusRequest) returns (localStatusReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/net/host/HostServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/net/host/HostServiceNb.proto
deleted file mode 100644
index 56f2577..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/net/host/HostServiceNb.proto
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.net.host";
-
-package nb.net.host;
-
-import "net/HostProto.proto";
-import "net/HostIdProto.proto";
-import "net/ConnectPointProto.proto";
-
-message getHostCountRequest {
-}
-
-message getHostCountReply {
-    int32 host_count = 1;
-}
-
-message getHostsRequest {
-}
-
-message getHostsReply {
-    repeated .net.HostProto host = 1;
-}
-
-message getHostRequest {
-    .net.HostIdProto host_id = 1;
-}
-
-message getHostReply {
-    .net.HostProto host = 1;
-}
-
-message getHostsByVlanRequest {
-    string vlan_id = 1;
-}
-
-message getHostsByVlanReply {
-    repeated .net.HostProto host = 1;
-}
-
-message getHostsByMacRequest {
-    string mac = 1;
-}
-
-message getHostsByMacReply {
-    repeated .net.HostProto host = 1;
-}
-
-message getHostsByIpRequest {
-    string ip_address = 1;
-}
-
-message getHostsByIpReply {
-    repeated .net.HostProto host = 1;
-}
-
-message getConnectedHostsRequest {
-    oneof connected_host {
-        .net.ConnectPointProto connect_point = 1;
-        string deviceId = 2;
-    }
-}
-
-message getConnectedHostsReply {
-    repeated .net.HostProto host = 1;
-}
-
-message startMonitoringIpRequest {
-    string ip_address = 1;
-}
-
-message startMonitoringIpReply {
-}
-
-message stopMonitoringIpRequest {
-    string ip_address = 1;
-}
-
-message stopMonitoringIpReply {
-}
-
-message requestMacRequest {
-    string ip_address = 1;
-}
-
-message requestMacReply {
-}
-
-// Host Interface exported by the server.
-service HostService {
-    // GRPC Obtains the host count.
-    rpc getHostCount(getHostCountRequest) returns (getHostCountReply) {}
-
-    // GRPC Obtains the hosts.
-    rpc getHosts(getHostsRequest) returns (getHostsReply) {}
-
-    // GRPC Obtains the host at a given HostId.
-    rpc getHost(getHostRequest) returns (getHostReply) {}
-
-    // GRPC Obtains the hosts at a given VlanId.
-    rpc getHostsByVlan(getHostsByVlanRequest) returns (getHostsByVlanReply) {}
-
-    // GRPC Obtains the hosts at a given MacAddress.
-    rpc getHostsByMac(getHostsByMacRequest) returns (getHostsByMacReply) {}
-
-    // GRPC Obtains the hosts at a given IpAddress.
-    rpc getHostsByIp(getHostsByIpRequest) returns (getHostsByIpReply) {}
-
-    // GRPC Obtains the hosts at a given connectPoint or DeviceId.
-    rpc getConnectedHosts(getConnectedHostsRequest) returns (getConnectedHostsReply) {}
-
-    // GRPC Requests the host service to monitor hosts with the given IP address.
-    rpc startMonitoringIp(startMonitoringIpRequest) returns (startMonitoringIpReply) {}
-
-    // GRPC Stops the host service from monitoring an IP address.
-    rpc stopMonitoringIp(stopMonitoringIpRequest) returns (stopMonitoringIpReply) {}
-
-    // GRPC Requests the host service to resolve the MAC address for the given IP address.
-    rpc requestMac(requestMacRequest) returns (requestMacReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/net/link/LinkServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/net/link/LinkServiceNb.proto
deleted file mode 100644
index 30ad08e..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/net/link/LinkServiceNb.proto
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.net.link";
-
-package nb.net.link;
-
-import "net/LinkProto.proto";
-import "net/ConnectPointProto.proto";
-
-message getLinkCountRequest {
-}
-
-message getLinkCountReply {
-    int32 link_count = 1;
-}
-
-message getActiveLinksRequest {
-}
-
-message getActiveLinksReply {
-    repeated .net.LinkProto link = 1;
-}
-
-message getDeviceLinksRequest {
-    string device_id = 1;
-}
-
-message getDeviceLinksReply {
-    repeated .net.LinkProto link = 1;
-}
-
-message getDeviceEgressLinksRequest {
-    string device_id = 1;
-}
-
-message getDeviceEgressLinksReply {
-    repeated .net.LinkProto link = 1;
-}
-
-message getDeviceIngressLinksRequest {
-    string device_id = 1;
-}
-
-message getDeviceIngressLinksReply {
-    repeated .net.LinkProto link = 1;
-}
-
-message getLinksRequest {
-    .net.ConnectPointProto connect_point = 1;
-}
-
-message getLinksReply {
-    repeated .net.LinkProto link = 1;
-}
-
-message getEgressLinksRequest {
-    .net.ConnectPointProto connect_point = 1;
-}
-
-message getEgressLinksReply {
-    repeated .net.LinkProto link = 1;
-}
-
-message getIngressLinksRequest {
-    .net.ConnectPointProto connect_point = 1;
-}
-
-message getIngressLinksReply {
-    repeated .net.LinkProto link = 1;
-}
-
-message getLinkRequest {
-    .net.ConnectPointProto src = 1;
-    .net.ConnectPointProto dst = 2;
-}
-
-message getLinkReply {
-    .net.LinkProto link = 1;
-}
-
-service LinkService {
-    rpc getLinkCount(getLinkCountRequest) returns(getLinkCountReply) {}
-    rpc getLinks(getLinksRequest) returns(getLinksReply) {}
-    rpc getActiveLinks(getActiveLinksRequest) returns(getActiveLinksReply) {}
-    rpc getDeviceLinks(getDeviceLinksRequest) returns(getDeviceLinksReply) {}
-    rpc getDeviceEgressLinks(getDeviceEgressLinksRequest) returns(getDeviceEgressLinksReply) {}
-    rpc getDeviceIngressLinks(getDeviceIngressLinksRequest) returns(getDeviceIngressLinksReply) {}
-    rpc getEgressLinks(getEgressLinksRequest) returns(getEgressLinksReply) {}
-    rpc getIngressLinks(getIngressLinksRequest) returns(getIngressLinksReply) {}
-    rpc getLink(getLinkRequest) returns(getLinkReply) {}
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/net/meter/MeterServiceNbProto.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/net/meter/MeterServiceNbProto.proto
deleted file mode 100644
index 377f0bf..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/net/meter/MeterServiceNbProto.proto
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto3";
-option java_package = "org.onosproject.grpc.nb.net.meter";
-
-package nb.net.meter;
-
-import "net/meter/MeterProto.proto";
-import "net/meter/MeterRequestProto.proto";
-
-message submitRequest {
-    .net.meter.MeterRequestProto meter = 1;
-}
-
-message submitReply {
-    .net.meter.MeterProto submit_meter = 1;
-}
-
-message withdrawRequest {
-    .net.meter.MeterRequestProto meter = 1;
-    uint64 meter_id = 2;
-}
-
-message withdrawReply {
-}
-
-message getMeterRequest {
-    string device_id = 1;
-    uint64 meter_id = 2;
-}
-
-message getMeterReply {
-    .net.meter.MeterProto meter = 1;
-}
-
-message getAllMetersRequest {
-}
-
-message getAllMetersReply {
-    repeated .net.meter.MeterProto meters = 1;
-}
-
-message getMetersRequest {
-    string device_id = 1;
-}
-
-message getMetersReply {
-    repeated .net.meter.MeterProto meters = 1;
-}
-
-service MeterService {
-     rpc submit(submitRequest) returns (submitReply) {}
-     rpc withdraw(withdrawRequest) returns (withdrawReply) {}
-     rpc getMeter(getMeterRequest) returns (getMeterReply) {}
-     rpc getAllMeters(getAllMetersRequest) returns (getAllMetersReply) {}
-     rpc getMeters(getMetersRequest) returns (getMetersReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/net/packet/PacketServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/net/packet/PacketServiceNb.proto
deleted file mode 100644
index a7d2d02..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/net/packet/PacketServiceNb.proto
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.net.packet";
-
-package nb.net.packet;
-
-import "net/packet/PacketRequestProto.proto";
-import "net/packet/PacketProcessorProto.proto";
-import "net/packet/PacketProcessorEntryProto.proto";
-import "net/packet/OutboundPacketProto.proto";
-import "core/ApplicationIdProto.proto";
-import "net/flow/TrafficSelectorProto.proto";
-
-message addProcessorRequest {
-    .net.packet.PacketProcessorProto packet_processor = 1;
-    int32 priority = 2;
-}
-
-message addProcessorReply {
-}
-
-message removeProcessorRequest {
-    .net.packet.PacketProcessorProto packet_processor = 1;
-}
-
-message removeProcessorReply {
-}
-
-message getProcessorsRequest {
-}
-
-message getProcessorsReply {
-    repeated .net.packet.PacketProcessorEntryProto packetProcessor_entry = 1;
-}
-
-message requestPacketsRequest {
-    .net.flow.TrafficSelectorProto traffic_selector = 1;
-    int32 priority = 2;
-    .core.ApplicationIdProto application_id = 3;
-}
-
-message requestPacketsReply {
-}
-
-message cancelPacketsRequest {
-    .net.flow.TrafficSelectorProto traffic_selector = 1;
-    int32 priority = 2;
-    .core.ApplicationIdProto application_id = 3;
-}
-
-message cancelPacketsReply {
-}
-
-message getRequestsRequest {
-}
-
-message getRequestsReply {
-    repeated .net.packet.PacketRequestProto packet_request = 1;
-}
-
-message emitRequest {
-    .net.packet.OutboundPacketProto outbound_packet = 1;
-}
-
-message emitReply {
-}
-
-service DeviceService {
-    rpc addProcessor(addProcessorRequest) returns (addProcessorReply) {}
-    rpc removeProcessor(removeProcessorRequest) returns (removeProcessorReply) {}
-    rpc getProcessors(getProcessorsRequest) returns (getProcessorsReply) {}
-    rpc requestPackets(requestPacketsRequest) returns (requestPacketsReply) {}
-    rpc cancelPackets(cancelPacketsRequest) returns (cancelPacketsReply) {}
-    rpc getRequests(getRequestsRequest) returns (getRequestsReply) {}
-    rpc emit(emitRequest) returns (emitReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/main/proto/net/region/RegionServiceNb.proto b/graveyard/protobuf-dead/services/nb/src/main/proto/net/region/RegionServiceNb.proto
deleted file mode 100644
index feabc50..0000000
--- a/graveyard/protobuf-dead/services/nb/src/main/proto/net/region/RegionServiceNb.proto
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax="proto3";
-option java_package = "org.onosproject.grpc.nb.net.region";
-
-package nb.net.region;
-
-import "net/RegionProto.proto";
-
-message getRegionsRequest {
-}
-
-message getRegionsReply {
-    repeated .net.RegionProto region = 1;
-}
-
-message getRegionRequest {
-    string regionId = 1;
-}
-
-message getRegionReply {
-    .net.RegionProto region = 1;
-}
-
-message getRegionForDeviceRequest {
-    string deviceId = 1;
-}
-
-message getRegionForDeviceReply {
-    .net.RegionProto region = 1;
-}
-
-message getRegionDevicesRequest {
-    string regionId = 1;
-}
-
-message getRegionDevicesReply {
-    repeated string deviceId = 1;
-}
-
-message getRegionHostsRequest {
-    string regionId = 1;
-}
-
-message getRegionHostsReply {
-    repeated string hostId = 1;
-}
-
-service RegionService {
-    rpc getRegions(getRegionsRequest) returns (getRegionsReply) {}
-    rpc getRegion(getRegionRequest) returns (getRegionReply) {}
-    rpc getRegionForDevice(getRegionForDeviceRequest) returns (getRegionForDeviceReply) {}
-    rpc getRegionDevices(getRegionDevicesRequest) returns (getRegionDevicesReply) {}
-    rpc getRegionHosts(getRegionHostsRequest) returns (getRegionHostsReply) {}
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationServiceTest.java b/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationServiceTest.java
deleted file mode 100644
index f04618f..0000000
--- a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationServiceTest.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import io.grpc.BindableService;
-import io.grpc.ManagedChannel;
-import io.grpc.inprocess.InProcessChannelBuilder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.app.ApplicationListener;
-import org.onosproject.app.ApplicationService;
-import org.onosproject.app.ApplicationState;
-import org.onosproject.core.Application;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.ApplicationRole;
-import org.onosproject.core.DefaultApplication;
-import org.onosproject.core.DefaultApplicationId;
-import org.onosproject.core.Version;
-import org.onosproject.grpc.app.models.ApplicationEnumsProto;
-import org.onosproject.grpc.core.models.ApplicationIdProtoOuterClass;
-import org.onosproject.grpc.core.models.ApplicationProtoOuterClass;
-import org.onosproject.grpc.nb.app.ApplicationServiceGrpc;
-import org.onosproject.incubator.protobuf.models.core.ApplicationEnumsProtoTranslator;
-import org.onosproject.incubator.protobuf.models.core.ApplicationIdProtoTranslator;
-import org.onosproject.incubator.protobuf.models.core.ApplicationProtoTranslator;
-import org.onosproject.security.Permission;
-
-import java.io.IOException;
-import java.util.Optional;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.onosproject.grpc.nb.app.ApplicationServiceNb.*;
-
-/**
- * Unit tests for applications gRPC NB services.
- */
-public class GrpcNbApplicationServiceTest {
-
-    private static InProcessServer<BindableService> inprocessServer;
-    private static ApplicationServiceGrpc.ApplicationServiceBlockingStub blockingStub;
-    private static ManagedChannel channel;
-
-    private final ApplicationService appService = new MockApplicationService();
-
-    private ApplicationId id1 = new DefaultApplicationId(1, "app1");
-    private ApplicationId id2 = new DefaultApplicationId(2, "app2");
-    private ApplicationId id3 = new DefaultApplicationId(3, "app3");
-    private ApplicationId id4 = new DefaultApplicationId(4, "app4");
-
-    private static final Version VER = Version.version(1, 2, "a", "b");
-
-    private DefaultApplication.Builder baseBuilder = DefaultApplication.builder()
-            .withVersion(VER)
-            .withIcon(new byte[0])
-            .withRole(ApplicationRole.ADMIN)
-            .withPermissions(ImmutableSet.of())
-            .withFeaturesRepo(Optional.empty())
-            .withFeatures(ImmutableList.of("My Feature"))
-            .withRequiredApps(ImmutableList.of());
-
-    private Application app1 =
-            DefaultApplication.builder(baseBuilder)
-                    .withAppId(id1)
-                    .withTitle("title1")
-                    .withDescription("desc1")
-                    .withOrigin("origin1")
-                    .withCategory("category1")
-                    .withUrl("url1")
-                    .withReadme("readme1")
-                    .build();
-    private Application app2 =
-            DefaultApplication.builder(baseBuilder)
-                    .withAppId(id2)
-                    .withTitle("title2")
-                    .withDescription("desc2")
-                    .withOrigin("origin2")
-                    .withCategory("category2")
-                    .withUrl("url2")
-                    .withReadme("readme2")
-                    .build();
-    private Application app3 =
-            DefaultApplication.builder(baseBuilder)
-                    .withAppId(id3)
-                    .withTitle("title3")
-                    .withDescription("desc3")
-                    .withOrigin("origin3")
-                    .withCategory("category3")
-                    .withUrl("url3")
-                    .withReadme("readme3")
-                    .build();
-    private Application app4 =
-            DefaultApplication.builder(baseBuilder)
-                    .withAppId(id4)
-                    .withTitle("title4")
-                    .withDescription("desc4")
-                    .withOrigin("origin4")
-                    .withCategory("category4")
-                    .withUrl("url4")
-                    .withReadme("readme4")
-                    .build();
-
-    private Set apps = ImmutableSet.of(app1, app2, app3, app4);
-
-    /**
-     * Initializes the test environment.
-     */
-    @Before
-    public void setUp() throws IllegalAccessException, IOException, InstantiationException {
-
-        GrpcNbApplicationService grpcAppService = new GrpcNbApplicationService();
-        grpcAppService.applicationService = appService;
-        inprocessServer = grpcAppService.registerInProcessServer();
-        inprocessServer.start();
-
-        channel = InProcessChannelBuilder.forName("test").directExecutor()
-                .usePlaintext(true).build();
-
-        blockingStub = ApplicationServiceGrpc.newBlockingStub(channel);
-    }
-
-    /**
-     * Finalizes the test setup.
-     */
-    @After
-    public void tearDown() {
-        channel.shutdownNow();
-        inprocessServer.stop();
-    }
-
-    /**
-     * Tests the invocation result of getApplications method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testGetApplications() throws InterruptedException {
-        getApplicationsRequest request = getApplicationsRequest.getDefaultInstance();
-        getApplicationsReply reply;
-
-        reply = blockingStub.getApplications(request);
-        assertEquals(4, reply.getApplicationCount());
-    }
-
-    /**
-     * Tests the invocation result of getId method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testGetId() throws InterruptedException {
-        getIdRequest request = getIdRequest.newBuilder()
-                .setName("one")
-                .build();
-
-        getIdReply reply = blockingStub.getId(request);
-        ApplicationIdProtoOuterClass.ApplicationIdProto appIdProto = reply.getApplicationId();
-        assertEquals(id1, ApplicationIdProtoTranslator.translate(appIdProto));
-    }
-
-    /**
-     * Tests the invocation result of getApplication method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testGetApplication() throws InterruptedException {
-        getApplicationRequest request = getApplicationRequest.newBuilder()
-                .setApplicationId(ApplicationIdProtoTranslator.translate(id1))
-                .build();
-
-        getApplicationReply reply = blockingStub.getApplication(request);
-        ApplicationProtoOuterClass.ApplicationProto appProto = reply.getApplication();
-        assertEquals(app1, ApplicationProtoTranslator.translate(appProto));
-    }
-
-    /**
-     * Tests the invocation result of getState method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testGetState() throws InterruptedException {
-        getStateRequest request = getStateRequest.newBuilder()
-                .setApplicationId(ApplicationIdProtoTranslator.translate(id1))
-                .build();
-
-        getStateReply reply = blockingStub.getState(request);
-        ApplicationEnumsProto.ApplicationStateProto stateProto = reply.getState();
-        assertEquals(Optional.of(ApplicationState.INSTALLED),
-                ApplicationEnumsProtoTranslator.translate(stateProto));
-    }
-
-    /**
-     * Mock class for application service.
-     */
-    private class MockApplicationService implements ApplicationService {
-
-        MockApplicationService() {}
-
-        @Override
-        public Set<Application> getApplications() {
-            return apps;
-        }
-
-        @Override
-        public ApplicationId getId(String name) {
-
-            if ("one".equals(name)) {
-                return id1;
-            }
-
-            if ("two".equals(name)) {
-                return id2;
-            }
-
-            if ("three".equals(name)) {
-                return id3;
-            }
-
-            if ("four".equals(name)) {
-                return id4;
-            }
-
-            return null;
-        }
-
-        @Override
-        public Application getApplication(ApplicationId appId) {
-
-            if (id1.equals(appId)) {
-                return app1;
-            }
-
-            if (id2.equals(appId)) {
-                return app2;
-            }
-
-            if (id3.equals(appId)) {
-                return app3;
-            }
-
-            if (id4.equals(appId)) {
-                return app4;
-            }
-
-            return null;
-        }
-
-        @Override
-        public ApplicationState getState(ApplicationId appId) {
-            return ApplicationState.INSTALLED;
-        }
-
-        @Override
-        public Set<Permission> getPermissions(ApplicationId appId) {
-            return null;
-        }
-
-        @Override
-        public void registerDeactivateHook(ApplicationId appId, Runnable hook) {
-
-        }
-
-        @Override
-        public void addListener(ApplicationListener listener) {
-
-        }
-
-        @Override
-        public void removeListener(ApplicationListener listener) {
-
-        }
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbComponentConfigServiceTest.java b/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbComponentConfigServiceTest.java
deleted file mode 100644
index 2b6021c..0000000
--- a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbComponentConfigServiceTest.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
-import io.grpc.BindableService;
-import io.grpc.ManagedChannel;
-import io.grpc.inprocess.InProcessChannelBuilder;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onosproject.cfg.ComponentConfigService;
-import org.onosproject.cfg.ConfigProperty;
-import org.onosproject.grpc.cfg.models.ConfigPropertyProtoOuterClass;
-import org.onosproject.grpc.nb.cfg.ComponentConfigServiceGrpc;
-import org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb;
-import org.onosproject.grpc.nb.cfg.ComponentConfigServiceGrpc.ComponentConfigServiceBlockingStub;
-import org.onosproject.incubator.protobuf.models.cfg.ConfigPropertyProtoTranslator;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import static org.onosproject.grpc.nb.cfg.ComponentConfigServiceNb.*;
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.cfg.ConfigProperty.Type.STRING;
-
-/**
- * Unit tests of gRPC northbound component config service.
- */
-public class GrpcNbComponentConfigServiceTest {
-
-    private static InProcessServer<BindableService> inprocessServer;
-    private static ComponentConfigServiceBlockingStub blockingStub;
-    private static ManagedChannel channel;
-
-    private static Set<String> componentNames = new HashSet<>();
-    private static final Map<String, ConfigProperty> PROPERTY_MAP = Maps.newConcurrentMap();
-    private static final Map<String, ConfigProperty> PROPERTY_MAP1 = Maps.newConcurrentMap();
-    private static final Map<String, String> STRING_MAP = Maps.newConcurrentMap();
-    private static final Map<String, String> STRING_MAP1 = Maps.newConcurrentMap();
-    private static final Map<String, String> STRING_MAP2 = Maps.newConcurrentMap();
-    private static final ComponentConfigService MOCK_COMPONENTCONFIG = new MockComponentConfigService();
-    private static final String COMPONENTCONFIGNAME = "org.onosprject.test";
-    private static final String COMPONENTCONFIGNAME1 = "org.onosprject.test1";
-    private static final String COMPONENTCONFIGNAME2 = "org.onosprject.test2";
-    private static final String PROPERTY_TEST_KEY = COMPONENTCONFIGNAME + "#" + "test";
-    private static final ConfigProperty C1 = ConfigProperty.defineProperty("foo", STRING, "dingo", "FOO");
-    private static final ConfigProperty C2 = ConfigProperty.defineProperty("bar", STRING, "bat", "BAR");
-
-    public GrpcNbComponentConfigServiceTest() {}
-
-    private static void populateComponentNames() {
-
-        componentNames.add(COMPONENTCONFIGNAME);
-        componentNames.add(COMPONENTCONFIGNAME1);
-        componentNames.add(COMPONENTCONFIGNAME2);
-        PROPERTY_MAP1.put(COMPONENTCONFIGNAME, C1);
-        STRING_MAP2.put(PROPERTY_TEST_KEY, "true");
-    }
-
-    /**
-     * Tests gRPC getComponentNames interface.
-     */
-    @Test
-    public void testGetComponentNames() throws InterruptedException {
-        getComponentNamesRequest request = ComponentConfigServiceNb.getComponentNamesRequest.getDefaultInstance();
-        getComponentNamesReply reply;
-
-        try {
-            reply = blockingStub.getComponentNames(request);
-            assertTrue(componentNames.size() == reply.getNamesCount());
-
-            Set expectedNames = Collections.emptySet();
-            expectedNames.addAll(componentNames);
-            assertTrue(reply.equals(expectedNames));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Tests gRPC registerProperties interface.
-     */
-    @Test
-    public void testRegisterProperties() throws InterruptedException {
-        registerPropertiesRequest request = ComponentConfigServiceNb.registerPropertiesRequest
-                .newBuilder().setComponentClass(COMPONENTCONFIGNAME).build();
-
-        try {
-            blockingStub.registerProperties(request);
-            assertTrue(PROPERTY_MAP.get(COMPONENTCONFIGNAME).equals(C1));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Tests gRPC unregisterProperties interface.
-     */
-    @Test
-    public void testUnregisterProperties() throws InterruptedException {
-        unregisterPropertiesRequest request = ComponentConfigServiceNb.unregisterPropertiesRequest
-                .newBuilder().setComponentClass(COMPONENTCONFIGNAME).build();
-
-        try {
-            blockingStub.unregisterProperties(request);
-            assertTrue(PROPERTY_MAP1.get(COMPONENTCONFIGNAME) == null);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Tests gRPC getProperty interface.
-     */
-    @Test
-    public void tesGetProperties() throws InterruptedException {
-        getPropertiesRequest request = ComponentConfigServiceNb.getPropertiesRequest.newBuilder()
-                .setComponentName(COMPONENTCONFIGNAME).build();
-        getPropertiesReply reply;
-
-        try {
-            reply = blockingStub.getProperties(request);
-
-            Set<ConfigProperty> configProperties = new HashSet<>();
-            for (ConfigPropertyProtoOuterClass.ConfigPropertyProto cfg : reply.getConfigPropertiesList()) {
-                configProperties.add(ConfigPropertyProtoTranslator.translate(cfg));
-            }
-
-            assertTrue(configProperties.equals(ImmutableSet.of(C1, C2)));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Tests gRPC setProperty interface.
-     */
-    @Test
-    public void testSetProperty() throws InterruptedException {
-        setPropertyRequest request = ComponentConfigServiceNb.setPropertyRequest.newBuilder()
-                .setComponentName(COMPONENTCONFIGNAME)
-                .setName("test")
-                .setValue("true")
-                .build();
-
-        try {
-            blockingStub.setProperty(request);
-            assertTrue(STRING_MAP.get(PROPERTY_TEST_KEY).equals("true"));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Tests gRPC preSetProperty interface.
-     */
-    @Test
-    public void testPreSetProperty() throws InterruptedException {
-        preSetPropertyRequest request = ComponentConfigServiceNb.preSetPropertyRequest.newBuilder()
-                .setComponentName(COMPONENTCONFIGNAME)
-                .setName("test")
-                .setValue("true")
-                .build();
-
-        try {
-            blockingStub.preSetProperty(request);
-            assertTrue(STRING_MAP1.get(PROPERTY_TEST_KEY).equals("true"));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Tests gRPC unsetProperty interface.
-     */
-    @Test
-    public void testUnsetProperty() throws InterruptedException {
-        unsetPropertyRequest request = ComponentConfigServiceNb.unsetPropertyRequest.newBuilder()
-                .setComponentName(COMPONENTCONFIGNAME)
-                .setName("test")
-                .build();
-
-        try {
-            blockingStub.unsetProperty(request);
-            assertTrue(STRING_MAP2.get(PROPERTY_TEST_KEY) == null);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Initialization before start testing gRPC northbound component config service.
-     */
-    @BeforeClass
-    public static void beforeClass() throws InstantiationException, IllegalAccessException, IOException {
-        GrpcNbComponentConfigService componentConfigService = new GrpcNbComponentConfigService();
-        componentConfigService.componentConfigService = MOCK_COMPONENTCONFIG;
-        inprocessServer = componentConfigService.registerInProcessServer();
-        inprocessServer.start();
-
-        channel = InProcessChannelBuilder.forName("test").directExecutor()
-                // Channels are secure by default (via SSL/TLS). For the example we disable TLS to avoid
-                // needing certificates.
-                .usePlaintext(true).build();
-        blockingStub = ComponentConfigServiceGrpc.newBlockingStub(channel);
-        populateComponentNames();
-    }
-
-    /**
-     * Finalization after test gRPC northbound component config service.
-     */
-    @AfterClass
-    public static void afterClass() {
-
-        channel.shutdownNow();
-        inprocessServer.stop();
-    }
-
-    private static class MockComponentConfigService implements ComponentConfigService {
-
-        MockComponentConfigService() {
-        }
-
-        @Override
-        public Set<String> getComponentNames() {
-            return componentNames;
-        }
-
-        @Override
-        public void registerProperties(Class<?> componentClass) {
-            PROPERTY_MAP.put(componentClass.getName(), C1);
-        }
-
-        @Override
-        public void unregisterProperties(Class<?> componentClass, boolean clear) {
-            PROPERTY_MAP1.remove(componentClass.getName());
-        }
-
-        @Override
-        public Set<ConfigProperty> getProperties(String componentName) {
-            return ImmutableSet.of(C1, C2);
-        }
-
-        @Override
-        public void setProperty(String componentName, String name, String value) {
-            STRING_MAP.put(componentName + "#" + name, value);
-        }
-
-        @Override
-        public void preSetProperty(String componentName, String name, String value) {
-            STRING_MAP1.put(componentName + "#" + name, value);
-        }
-
-        @Override
-        public void unsetProperty(String componentName, String name) {
-            STRING_MAP2.remove(componentName + "#" + name);
-        }
-
-        @Override
-        public ConfigProperty getProperty(String componentName, String attribute) {
-            return null;
-        }
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbHostServiceTest.java b/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbHostServiceTest.java
deleted file mode 100644
index 62e5cfa..0000000
--- a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbHostServiceTest.java
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.collect.ImmutableSet;
-import io.grpc.BindableService;
-import io.grpc.inprocess.InProcessChannelBuilder;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import io.grpc.ManagedChannel;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.VlanId;
-import org.onosproject.grpc.net.models.HostProtoOuterClass;
-import org.onosproject.incubator.protobuf.models.net.HostProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.HostIdProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.ConnectPointProtoTranslator;
-import org.onosproject.grpc.nb.net.host.HostServiceGrpc.HostServiceBlockingStub;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultHost;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.net.HostLocation;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.host.HostListener;
-import org.onosproject.net.host.HostService;
-
-import org.onosproject.grpc.nb.net.host.HostServiceGrpc;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.grpc.nb.net.host.HostServiceNb.*;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Unit tests of gRPC northbound host service.
- */
-public class GrpcNbHostServiceTest {
-    private final Logger log = getLogger(getClass());
-
-    private static InProcessServer<BindableService> inprocessServer;
-    private static HostServiceBlockingStub blockingStub;
-    private static ManagedChannel channel;
-    private static final HostService MOCK_HOST = new MockHostService();
-    private static List<Host> allHosts = new ArrayList<>();
-    private static Host h1;
-    private static HostId id1;
-    private static IpAddress ip1;
-    private static MacAddress mac1;
-    private static DeviceId deviceId;
-    private static ConnectPoint c1;
-    private static boolean started = false;
-    private static boolean stopped = false;
-    private static boolean requestMac = false;
-
-    public GrpcNbHostServiceTest() {}
-
-    private static void populateHosts() {
-        ip1 = IpAddress.valueOf("10.1.1.1");
-        IpAddress ip2 = IpAddress.valueOf("10.1.1.2");
-        IpAddress ip3 = IpAddress.valueOf("10.1.1.3");
-        mac1 = MacAddress.valueOf("67:11:23:45:87:11");
-        MacAddress mac2 = MacAddress.valueOf("67:11:23:45:87:12");
-        MacAddress mac3 = MacAddress.valueOf("67:11:23:45:87:13");
-        id1 = HostId.hostId(mac1);
-        HostId id2 = HostId.hostId(mac2);
-        HostId id3 = HostId.hostId(mac3);
-        deviceId = DeviceId.deviceId("test");
-
-        c1 = new ConnectPoint(deviceId, PortNumber.portNumber(101));
-        HostLocation hostLocation1 = new HostLocation(deviceId, PortNumber.portNumber(101), 0);
-        HostLocation hostLocation2 = new HostLocation(deviceId, PortNumber.portNumber(102), 0);
-        HostLocation hostLocation3 = new HostLocation(deviceId, PortNumber.portNumber(103), 0);
-
-        h1 = new DefaultHost(ProviderId.NONE, id1, mac1, VlanId.NONE,
-                             hostLocation1, ImmutableSet.of(ip1));
-        allHosts.add(h1);
-        allHosts.add(new DefaultHost(ProviderId.NONE, id2, mac2, VlanId.NONE,
-                                     hostLocation2, ImmutableSet.of(ip2)));
-        allHosts.add(new DefaultHost(ProviderId.NONE, id3, mac3, VlanId.NONE,
-                                     hostLocation3, ImmutableSet.of(ip3)));
-    }
-
-    /**
-     * Tests gRPC getComponentNames interface.
-     */
-    @Test
-    public void testGetHostCount() throws InterruptedException {
-        getHostCountRequest request = getHostCountRequest.getDefaultInstance();
-        getHostCountReply reply;
-
-        try {
-            reply = blockingStub.getHostCount(request);
-            assertTrue(allHosts.size() == reply.getHostCount());
-        } catch (Exception e) {
-            log.error("Get host count error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC getComponentNames interface.
-     */
-    @Test
-    public void testGetHosts() throws InterruptedException {
-        getHostsRequest request = getHostsRequest.getDefaultInstance();
-        getHostsReply reply;
-
-        try {
-            reply = blockingStub.getHosts(request);
-            Set<Host> actualHosts = new HashSet<>();
-            for (HostProtoOuterClass.HostProto host : reply.getHostList()) {
-                actualHosts.add(HostProtoTranslator.translate(host));
-            }
-
-            Set<Host> expectedHosts = new HashSet<>();
-            for (Host h : allHosts) {
-                expectedHosts.add(h);
-            }
-            assertTrue(actualHosts.equals(expectedHosts));
-        } catch (Exception e) {
-            log.error("Get all hosts error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC getHost interface.
-     */
-    @Test
-    public void testGetHost() throws InterruptedException {
-        getHostRequest request = getHostRequest.newBuilder().setHostId(HostIdProtoTranslator.translate(id1)).build();
-        getHostReply reply;
-
-        try {
-            reply = blockingStub.getHost(request);
-            assertTrue(HostProtoTranslator.translate(reply.getHost()).equals(h1));
-        } catch (Exception e) {
-            log.error("Get host with hostId error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC getHostsByVlan interface.
-     */
-    @Test
-    public void testGetHostsByVlan() throws InterruptedException {
-        getHostsByVlanRequest request = getHostsByVlanRequest.newBuilder().setVlanId(VlanId.NONE.toString()).build();
-        getHostsByVlanReply reply;
-
-        try {
-            reply = blockingStub.getHostsByVlan(request);
-
-            Set<Host> actualHosts = new HashSet<>();
-            for (HostProtoOuterClass.HostProto host : reply.getHostList()) {
-                actualHosts.add(HostProtoTranslator.translate(host));
-            }
-
-            Set<Host> expectedHosts = new HashSet<>();
-            for (Host h : allHosts) {
-                expectedHosts.add(h);
-            }
-            assertTrue(actualHosts.equals(expectedHosts));
-        } catch (Exception e) {
-            log.error("Get hosts that belong to the specified VLAN error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC getHostsByMac interface.
-     */
-    @Test
-    public void testGetHostsByMac() throws InterruptedException {
-        getHostsByMacRequest request = getHostsByMacRequest.newBuilder().setMac(mac1.toString()).build();
-        getHostsByMacReply reply;
-
-        try {
-            reply = blockingStub.getHostsByMac(request);
-
-            Set<Host> actualHosts = new HashSet<>();
-            for (HostProtoOuterClass.HostProto host : reply.getHostList()) {
-                actualHosts.add(HostProtoTranslator.translate(host));
-            }
-            Set<Host> expectedHosts = new HashSet<>();
-            expectedHosts.add(allHosts.get(0));
-            assertTrue(actualHosts.equals(expectedHosts));
-        } catch (Exception e) {
-            log.error("Get hosts that have the specified MAC address error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC getHostsByIp interface.
-     */
-    @Test
-    public void testGetHostsByIp() throws InterruptedException {
-        getHostsByIpRequest request = getHostsByIpRequest.newBuilder().setIpAddress(ip1.toString()).build();
-        getHostsByIpReply reply;
-
-        try {
-            reply = blockingStub.getHostsByIp(request);
-
-            Set<Host> actualHosts = new HashSet<>();
-            for (HostProtoOuterClass.HostProto host : reply.getHostList()) {
-                actualHosts.add(HostProtoTranslator.translate(host));
-            }
-
-            Set<Host> expectedHosts = new HashSet<>();
-            expectedHosts.add(allHosts.get(0));
-            assertTrue(actualHosts.equals(expectedHosts));
-        } catch (Exception e) {
-            log.error("Get hosts that have the specified IP address error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC getConnectedHosts interface.
-     */
-    @Test
-    public void testGetConnectedHosts() throws InterruptedException {
-        getConnectedHostsRequest request = getConnectedHostsRequest.newBuilder()
-                .setConnectPoint(ConnectPointProtoTranslator.translate(c1))
-                .build();
-        getConnectedHostsReply reply;
-
-        try {
-            reply = blockingStub.getConnectedHosts(request);
-
-            Set<Host> actualHosts = new HashSet<>();
-            for (HostProtoOuterClass.HostProto host : reply.getHostList()) {
-                actualHosts.add(HostProtoTranslator.translate(host));
-            }
-
-            Set<Host> expectedHosts = new HashSet<>();
-            expectedHosts.add(allHosts.get(0));
-            assertTrue(actualHosts.equals(expectedHosts));
-        } catch (Exception e) {
-            log.error("Get connected hosts with connect point error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC getConnectedHostsByDeviceId interface.
-     */
-    @Test
-    public void testGetConnectedHostsByDeviceId() throws InterruptedException {
-        getConnectedHostsRequest request = getConnectedHostsRequest.newBuilder()
-                .setDeviceId(deviceId.toString())
-                .build();
-        getConnectedHostsReply reply;
-
-        try {
-            reply = blockingStub.getConnectedHosts(request);
-
-            Set<Host> actualHosts = new HashSet<>();
-            for (HostProtoOuterClass.HostProto host : reply.getHostList()) {
-                actualHosts.add(HostProtoTranslator.translate(host));
-            }
-
-            Set<Host> expectedHosts = new HashSet<>();
-            for (Host h : allHosts) {
-                expectedHosts.add(h);
-            }
-            assertTrue(actualHosts.equals(expectedHosts));
-        } catch (Exception e) {
-            log.error("Get connected hosts with deviceId error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC startMonitoringIp interface.
-     */
-    @Test
-    public void testStartMonitoringIp() throws InterruptedException {
-        startMonitoringIpRequest request = startMonitoringIpRequest.newBuilder().setIpAddress(ip1.toString()).build();
-
-        try {
-            blockingStub.startMonitoringIp(request);
-            assertTrue(started);
-        } catch (Exception e) {
-            log.error("Start monitoring hosts with the given IP address error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC stopMonitoringIp interface.
-     */
-    @Test
-    public void testStopMonitoringIp() throws InterruptedException {
-        stopMonitoringIpRequest request = stopMonitoringIpRequest.newBuilder().setIpAddress(ip1.toString()).build();
-
-        try {
-            blockingStub.stopMonitoringIp(request);
-            assertTrue(stopped);
-        } catch (Exception e) {
-            log.error("Stop monitoring hosts with the given IP address error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Tests gRPC requestMac interface.
-     */
-    @Test
-    public void testRequestMac() throws InterruptedException {
-        requestMacRequest request = requestMacRequest.newBuilder().setIpAddress(ip1.toString()).build();
-
-        try {
-            blockingStub.requestMac(request);
-            assertTrue(requestMac);
-        } catch (Exception e) {
-            log.error("Resolve the MAC address for the given IP address error! Exception={}", e.toString());
-        }
-    }
-
-    /**
-     * Initialization before start testing gRPC northbound host service.
-     */
-    @BeforeClass
-    public static void beforeClass() throws InstantiationException, IllegalAccessException, IOException {
-        GrpcNbHostService hostService = new GrpcNbHostService();
-        hostService.hostService = MOCK_HOST;
-        inprocessServer = hostService.registerInProcessServer();
-
-        inprocessServer.start();
-        channel = InProcessChannelBuilder.forName("test").directExecutor()
-                // Channels are secure by default (via SSL/TLS). For the example we disable TLS to avoid
-                // needing certificates.
-                .usePlaintext(true).build();
-        blockingStub = HostServiceGrpc.newBlockingStub(channel);
-        populateHosts();
-    }
-
-    /**
-     * Finalization after test gRPC northbound host service.
-     */
-    @AfterClass
-    public static void afterClass() {
-
-        channel.shutdownNow();
-        inprocessServer.stop();
-    }
-
-    private static class MockHostService implements HostService {
-
-        MockHostService() {
-        }
-
-        @Override
-        public int getHostCount() {
-            return allHosts.size();
-        }
-
-        @Override
-        public Iterable<Host> getHosts() {
-            return allHosts;
-        }
-
-        @Override
-        public Host getHost(HostId hostId) {
-            return allHosts.stream().filter(h -> h.id().equals(hostId)).findFirst().get();
-        }
-
-        @Override
-        public Set<Host> getHostsByVlan(VlanId vlanId) {
-            return allHosts.stream().filter(h -> h.vlan().equals(vlanId)).collect(Collectors.toSet());
-        }
-
-        @Override
-        public Set<Host> getHostsByMac(MacAddress mac) {
-            return allHosts.stream().filter(h -> h.mac().equals(mac)).collect(Collectors.toSet());
-        }
-
-        @Override
-        public Set<Host> getHostsByIp(IpAddress ip) {
-            return allHosts.stream().filter(h -> h.ipAddresses().contains(ip)).collect(Collectors.toSet());
-        }
-
-        @Override
-        public Set<Host> getConnectedHosts(ConnectPoint connectPoint) {
-            return allHosts.stream().filter(h -> h.location().deviceId().equals(connectPoint.deviceId())
-                    && h.location().port().equals(connectPoint.port()))
-                    .collect(Collectors.toSet());
-        }
-
-        @Override
-        public Set<Host> getConnectedHosts(DeviceId deviceId) {
-            return allHosts.stream().filter(h -> h.location().deviceId().equals(deviceId)).collect(Collectors.toSet());
-        }
-
-        @Override
-        public void startMonitoringIp(IpAddress ip) {
-            started = true;
-        }
-
-        @Override
-        public void stopMonitoringIp(IpAddress ip) {
-            stopped = true;
-        }
-
-        @Override
-        public void requestMac(IpAddress ip) {
-            requestMac = true;
-        }
-
-        @Override
-        public void addListener(HostListener listener) {
-        }
-
-        @Override
-        public void removeListener(HostListener listener) {
-        }
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbLinkServiceTest.java b/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbLinkServiceTest.java
deleted file mode 100644
index d45b985..0000000
--- a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbLinkServiceTest.java
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import io.grpc.BindableService;
-import io.grpc.ManagedChannel;
-import io.grpc.inprocess.InProcessChannelBuilder;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onosproject.grpc.nb.net.link.LinkServiceGrpc;
-import org.onosproject.grpc.nb.net.link.LinkServiceGrpc.LinkServiceBlockingStub;
-import org.onosproject.grpc.nb.net.link.LinkServiceNb;
-import org.onosproject.grpc.net.models.LinkProtoOuterClass;
-import org.onosproject.incubator.protobuf.models.net.ConnectPointProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.LinkProtoTranslator;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.provider.ProviderId;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.PortNumber.portNumber;
-
-public class GrpcNbLinkServiceTest {
-    private static InProcessServer<BindableService> inprocessServer;
-    private static ManagedChannel channel;
-    private static LinkServiceBlockingStub blockingStub;
-
-    private static final String D1 = "d1";
-    private static final String D2 = "d2";
-    private static final String D3 = "d3";
-    private static final String D4 = "d4";
-    private static final String D5 = "d5";
-    private static final String D6 = "d6";
-    private static final String D7 = "d7";
-    private static final String D8 = "d8";
-    private static final String D9 = "d9";
-
-    private static final String[][] LINK_CONNECT_DATA = {
-            {D1, "12", D2, "21"},
-            {D2, "23", D3, "32"},
-            {D4, "41", D1, "14"},
-            {D5, "51", D1, "15"},
-            {D6, "61", D1, "16"},
-            {D7, "73", D3, "37"},
-            {D8, "83", D3, "38"},
-            {D9, "93", D3, "39"},
-    };
-
-    private static final DeviceId DEVID_1 = deviceId(D1);
-    private static final PortNumber PORT_14 = portNumber("14");
-
-    private static final DeviceId DEVID_4 = deviceId(D4);
-    private static final PortNumber PORT_41 = portNumber("41");
-
-    private static final DeviceId DEVID_3 = deviceId(D3);
-    private static final PortNumber PORT_32 = portNumber("32");
-
-    private static final ConnectPoint DEVID_1_14 = new ConnectPoint(DEVID_1, PORT_14);
-    private static final ConnectPoint DEVID_4_41 = new ConnectPoint(DEVID_4, PORT_41);
-
-    private static final ProviderId PID = new ProviderId("Test", "Test");
-
-    private static List<Link> allLinks = new ArrayList<Link>();
-
-    private static final LinkService MOCK_LINK = new MockLinkService();
-
-    /**
-     * Creates a list of links.
-     *
-     */
-    private static void populateLinks() {
-        for (String[] linkPair : LINK_CONNECT_DATA) {
-            allLinks.addAll(makeLinkPair(linkPair));
-        }
-    }
-
-    /**
-     * Synthesizes a pair of unidirectional links between two devices. The
-     * string array should be of the form:
-     * <pre>
-     *     { "device-A-id", "device-A-port", "device-B-id", "device-B-port" }
-     * </pre>
-     *
-     * @param linkPairData device ids and ports
-     * @return pair of synthesized links
-     */
-    private static List<Link> makeLinkPair(String[] linkPairData) {
-        DeviceId devA = deviceId(linkPairData[0]);
-        PortNumber portA = portNumber(linkPairData[1]);
-
-        DeviceId devB = deviceId(linkPairData[2]);
-        PortNumber portB = portNumber(linkPairData[3]);
-
-        Link linkA = DefaultLink.builder()
-                .providerId(PID)
-                .type(Link.Type.DIRECT)
-                .src(new ConnectPoint(devA, portA))
-                .dst(new ConnectPoint(devB, portB))
-                .build();
-
-        Link linkB = DefaultLink.builder()
-                .providerId(PID)
-                .type(Link.Type.DIRECT)
-                .src(new ConnectPoint(devB, portB))
-                .dst(new ConnectPoint(devA, portA))
-                .build();
-
-        return ImmutableList.of(linkA, linkB);
-    }
-
-    public GrpcNbLinkServiceTest() {
-    }
-
-    @Test
-    public void testGetLinkCount() throws InterruptedException {
-        LinkServiceNb.getLinkCountRequest request = LinkServiceNb.getLinkCountRequest.getDefaultInstance();
-        LinkServiceNb.getLinkCountReply response;
-
-        try {
-            response = blockingStub.getLinkCount(request);
-            int linkCount = response.getLinkCount();
-            assertTrue(allLinks.size() == linkCount);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetLink() throws InterruptedException {
-        LinkServiceNb.getLinkRequest request = LinkServiceNb.getLinkRequest.newBuilder()
-                .setSrc(ConnectPointProtoTranslator.translate(DEVID_1_14))
-                .setDst(ConnectPointProtoTranslator.translate(DEVID_4_41))
-                .build();
-        LinkServiceNb.getLinkReply response;
-
-        try {
-            response = blockingStub.getLink(request);
-            LinkProtoOuterClass.LinkProto link = response.getLink();
-            assertTrue(LinkProtoTranslator.translate(allLinks.get(5)).equals(link));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetLinks() throws InterruptedException {
-        LinkServiceNb.getLinksRequest request = LinkServiceNb.getLinksRequest.newBuilder()
-                .setConnectPoint(ConnectPointProtoTranslator.translate(DEVID_1_14))
-                .build();
-        LinkServiceNb.getLinksReply response;
-
-        try {
-            response = blockingStub.getLinks(request);
-
-            Set<Link> actualLinks = new HashSet<Link>();
-            for (LinkProtoOuterClass.LinkProto link : response.getLinkList()) {
-                actualLinks.add(LinkProtoTranslator.translate(link));
-            }
-            Set<Link> expectedLinks = new HashSet<Link>();
-            expectedLinks.add(allLinks.get(4));
-            expectedLinks.add(allLinks.get(5));
-
-            assertTrue(expectedLinks.equals(actualLinks));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetActiveLinks() throws InterruptedException {
-        LinkServiceNb.getActiveLinksRequest request = LinkServiceNb.getActiveLinksRequest.getDefaultInstance();
-        LinkServiceNb.getActiveLinksReply response;
-
-        try {
-            response = blockingStub.getActiveLinks(request);
-
-            Set<Link> actualLinks = new HashSet<Link>();
-            for (LinkProtoOuterClass.LinkProto link : response.getLinkList()) {
-                actualLinks.add(LinkProtoTranslator.translate(link));
-            }
-
-            Set<Link> expectedLinks = new HashSet<Link>(allLinks);
-            assertTrue((expectedLinks).equals(actualLinks));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetDeviceLinks() throws InterruptedException {
-        LinkServiceNb.getDeviceLinksRequest request = LinkServiceNb.getDeviceLinksRequest.newBuilder()
-                .setDeviceId(D1)
-                .build();
-        LinkServiceNb.getDeviceLinksReply response;
-
-        try {
-            response = blockingStub.getDeviceLinks(request);
-
-            Set<Link> actualLinks = new HashSet<Link>();
-            for (LinkProtoOuterClass.LinkProto link : response.getLinkList()) {
-                actualLinks.add(LinkProtoTranslator.translate(link));
-            }
-
-            Set<Link> expectedLinks = new HashSet<Link>();
-            expectedLinks.add(allLinks.get(4));
-            expectedLinks.add(allLinks.get(5));
-            expectedLinks.add(allLinks.get(6));
-            expectedLinks.add(allLinks.get(7));
-            expectedLinks.add(allLinks.get(8));
-            expectedLinks.add(allLinks.get(9));
-            expectedLinks.add(allLinks.get(0));
-            expectedLinks.add(allLinks.get(1));
-
-            assertTrue((expectedLinks).equals(actualLinks));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetDeviceEgressLinks() throws InterruptedException {
-        LinkServiceNb.getDeviceEgressLinksRequest request = LinkServiceNb.getDeviceEgressLinksRequest.newBuilder()
-                .setDeviceId(D1)
-                .build();
-        LinkServiceNb.getDeviceEgressLinksReply response;
-
-        try {
-            response = blockingStub.getDeviceEgressLinks(request);
-
-            Set<Link> actualLinks = new HashSet<Link>();
-            for (LinkProtoOuterClass.LinkProto link : response.getLinkList()) {
-                actualLinks.add(LinkProtoTranslator.translate(link));
-            }
-            Set<Link> expectedLinks = new HashSet<Link>();
-            expectedLinks.add(allLinks.get(0));
-            expectedLinks.add(allLinks.get(5));
-            expectedLinks.add(allLinks.get(7));
-            expectedLinks.add(allLinks.get(9));
-
-            assertTrue((expectedLinks).equals(actualLinks));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetDeviceIngressLinks() throws InterruptedException {
-        LinkServiceNb.getDeviceIngressLinksRequest request = LinkServiceNb.getDeviceIngressLinksRequest.newBuilder()
-                .setDeviceId(D1)
-                .build();
-        LinkServiceNb.getDeviceIngressLinksReply response;
-
-        try {
-            response = blockingStub.getDeviceIngressLinks(request);
-
-            Set<Link> actualLinks = new HashSet<Link>();
-            for (LinkProtoOuterClass.LinkProto link : response.getLinkList()) {
-                actualLinks.add(LinkProtoTranslator.translate(link));
-            }
-
-            Set<Link> expectedLinks = new HashSet<Link>();
-            expectedLinks.add(allLinks.get(1));
-            expectedLinks.add(allLinks.get(4));
-            expectedLinks.add(allLinks.get(6));
-            expectedLinks.add(allLinks.get(8));
-
-            assertTrue((expectedLinks).equals(actualLinks));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetEgressLinks() throws InterruptedException {
-        LinkServiceNb.getEgressLinksRequest request = LinkServiceNb.getEgressLinksRequest.newBuilder()
-                .setConnectPoint(ConnectPointProtoTranslator.translate(DEVID_1_14))
-                .build();
-        LinkServiceNb.getEgressLinksReply response;
-
-        try {
-            response = blockingStub.getEgressLinks(request);
-
-            Set<Link> actualLinks = new HashSet<Link>();
-            for (LinkProtoOuterClass.LinkProto link : response.getLinkList()) {
-                actualLinks.add(LinkProtoTranslator.translate(link));
-            }
-            Set<Link> expectedLinks = new HashSet<Link>();
-            expectedLinks.add(allLinks.get(5));
-
-            assertTrue((expectedLinks).equals(actualLinks));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetIngressLinks() throws InterruptedException {
-        LinkServiceNb.getIngressLinksRequest request = LinkServiceNb.getIngressLinksRequest.newBuilder()
-                .setConnectPoint(ConnectPointProtoTranslator.translate(DEVID_1_14))
-                .build();
-        LinkServiceNb.getIngressLinksReply response;
-
-        try {
-            response = blockingStub.getIngressLinks(request);
-
-            Set<Link> actualLinks = new HashSet<Link>();
-            for (LinkProtoOuterClass.LinkProto link : response.getLinkList()) {
-                actualLinks.add(LinkProtoTranslator.translate(link));
-            }
-            Set<Link> expectedLinks = new HashSet<Link>();
-            expectedLinks.add(allLinks.get(4));
-
-            assertTrue((expectedLinks).equals(actualLinks));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-
-    @BeforeClass
-    public static void beforeClass() throws InstantiationException, IllegalAccessException, IOException {
-        GrpcNbLinkService linkService = new GrpcNbLinkService();
-        linkService.linkService = MOCK_LINK;
-        inprocessServer = linkService.registerInProcessServer();
-        inprocessServer.start();
-
-        channel = InProcessChannelBuilder.forName("test").directExecutor()
-                // Channels are secure by default (via SSL/TLS). For the example we disable TLS to avoid
-                // needing certificates.
-                .usePlaintext(true).build();
-        blockingStub = LinkServiceGrpc.newBlockingStub(channel);
-
-        populateLinks();
-    }
-
-    @AfterClass
-    public static void afterClass() {
-        channel.shutdownNow();
-
-        inprocessServer.stop();
-    }
-
-    private static class MockLinkService implements LinkService {
-        MockLinkService() {
-        }
-
-        @Override
-        public int getLinkCount() {
-            return allLinks.size();
-        }
-
-        @Override
-        public Iterable<Link> getLinks() {
-            return ImmutableSet.copyOf(allLinks);
-        }
-
-        @Override
-        public Iterable<Link> getActiveLinks() {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> input.state() == Link.State.ACTIVE);
-        }
-
-        @Override
-        public Set<Link> getDeviceLinks(DeviceId deviceId) {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> (input.src().deviceId().equals(deviceId)) ||
-                            (input.dst().deviceId().equals(deviceId))).toSet();
-        }
-
-        @Override
-        public Set<Link> getDeviceEgressLinks(DeviceId deviceId) {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> (input.src().deviceId().equals(deviceId))).toSet();
-        }
-
-        @Override
-        public Set<Link> getDeviceIngressLinks(DeviceId deviceId) {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> (input.dst().deviceId().equals(deviceId))).toSet();
-        }
-
-        @Override
-        public Set<Link> getLinks(ConnectPoint connectPoint) {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> (input.src().equals(connectPoint)) || (input.dst().equals(connectPoint))).toSet();
-        }
-
-        @Override
-        public Set<Link> getEgressLinks(ConnectPoint connectPoint) {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> (input.src().equals(connectPoint))).toSet();
-        }
-
-        @Override
-        public Set<Link> getIngressLinks(ConnectPoint connectPoint) {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> (input.dst().equals(connectPoint))).toSet();
-        }
-
-        @Override
-        public Link getLink(ConnectPoint src, ConnectPoint dst) {
-            return FluentIterable.from(getLinks())
-                    .filter(input -> (input.src().equals(src)) && (input.dst().equals(dst)))
-                    .first().get();
-        }
-
-        @Override
-        public void addListener(org.onosproject.net.link.LinkListener listener) {
-        }
-
-        @Override
-        public void removeListener(org.onosproject.net.link.LinkListener listener) {
-        }
-    }
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMastershipServiceTest.java b/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMastershipServiceTest.java
deleted file mode 100644
index 88c65a2..0000000
--- a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMastershipServiceTest.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Maps;
-import io.grpc.BindableService;
-import io.grpc.ManagedChannel;
-import io.grpc.inprocess.InProcessChannelBuilder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.cluster.RoleInfo;
-import org.onosproject.grpc.nb.mastership.MastershipServiceGrpc;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getLocalRoleReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getLocalRoleRequest;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getMasterForReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getMasterForRequest;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getNodesForReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.getNodesForRequest;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.requestRoleForSyncReply;
-import org.onosproject.grpc.nb.mastership.MastershipServiceNb.requestRoleForSyncRequest;
-import org.onosproject.incubator.protobuf.models.cluster.NodeIdProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.MastershipRoleProtoTranslator;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.mastership.MastershipServiceAdapter;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.MastershipRole;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.Optional;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Unit tests for mastership gRPC NB service.
- */
-public class GrpcNbMastershipServiceTest {
-
-    private static InProcessServer<BindableService> inprocessServer;
-    private static MastershipServiceGrpc.MastershipServiceBlockingStub blockingStub;
-    private static ManagedChannel channel;
-
-    private final MastershipService mastershipService = new MockMastershipService();
-
-    private Map<DeviceId, MastershipRole> mastershipMap = Maps.newHashMap();
-    private Map<DeviceId, NodeId> nodeIdMap = Maps.newHashMap();
-    private Map<DeviceId, RoleInfo> roleInfoMap = Maps.newHashMap();
-
-    private static final String DEVICE_ID_1 = "1";
-    private static final String DEVICE_ID_2 = "2";
-    private static final String DEVICE_ID_3 = "3";
-
-    private DeviceId did1 = DeviceId.deviceId(DEVICE_ID_1);
-    private DeviceId did2 = DeviceId.deviceId(DEVICE_ID_2);
-    private DeviceId did3 = DeviceId.deviceId(DEVICE_ID_3);
-
-    private NodeId nid1 = NodeId.nodeId("1");
-    private NodeId nid2 = NodeId.nodeId("2");
-    private NodeId nid3 = NodeId.nodeId("3");
-
-    /**
-     * Initializes the test environment.
-     */
-    @Before
-    public void setUp() throws IllegalAccessException, IOException, InstantiationException {
-        GrpcNbMastershipService grpcMastershipService = new GrpcNbMastershipService();
-        grpcMastershipService.mastershipService = mastershipService;
-        inprocessServer = grpcMastershipService.registerInProcessServer();
-        inprocessServer.start();
-
-        channel = InProcessChannelBuilder.forName("test").directExecutor()
-                .usePlaintext(true).build();
-
-        blockingStub = MastershipServiceGrpc.newBlockingStub(channel);
-
-        initMastershipMap();
-        initNodeIdMap();
-        initRoleInfoMap();
-    }
-
-    /**
-     * Finalizes the test setup.
-     */
-    @After
-    public void tearDown() {
-        channel.shutdownNow();
-        inprocessServer.stop();
-    }
-
-    private void initMastershipMap() {
-        mastershipMap.put(did1, MastershipRole.MASTER);
-        mastershipMap.put(did2, MastershipRole.STANDBY);
-        mastershipMap.put(did3, MastershipRole.NONE);
-    }
-
-    private void initNodeIdMap() {
-        nodeIdMap.put(did1, nid1);
-        nodeIdMap.put(did2, nid2);
-        nodeIdMap.put(did3, nid3);
-    }
-
-    private void initRoleInfoMap() {
-        RoleInfo roleInfo1 = new RoleInfo(nid1, ImmutableList.of(nid2, nid3));
-        RoleInfo roleInfo2 = new RoleInfo(nid2, ImmutableList.of(nid1, nid3));
-        RoleInfo roleInfo3 = new RoleInfo(nid3, ImmutableList.of(nid2, nid3));
-        roleInfoMap.put(did1, roleInfo1);
-        roleInfoMap.put(did2, roleInfo2);
-        roleInfoMap.put(did3, roleInfo3);
-    }
-
-    /**
-     * Tests the invocation result of getLocalRole method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testGetLocalRole() throws InterruptedException {
-        getLocalRoleRequest request = getLocalRoleRequest.newBuilder()
-                .setDeviceId(DEVICE_ID_1)
-                .build();
-        getLocalRoleReply reply;
-
-        reply = blockingStub.getLocalRole(request);
-        assertEquals(Optional.of(MastershipRole.MASTER),
-                MastershipRoleProtoTranslator.translate(reply.getMastershipRole()));
-    }
-
-    /**
-     * Tests the invocation result of requestRoleForSync method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testRequestRoleForSync() throws InterruptedException {
-        requestRoleForSyncRequest request = requestRoleForSyncRequest.newBuilder()
-                .setDeviceId(DEVICE_ID_2)
-                .build();
-        requestRoleForSyncReply reply;
-
-        reply = blockingStub.requestRoleForSync(request);
-        assertEquals(Optional.of(MastershipRole.STANDBY),
-                MastershipRoleProtoTranslator.translate(reply.getMastershipRole()));
-    }
-
-    /**
-     * Tests the invocation result of getMasterFor method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testGetMasterFor() {
-        getMasterForRequest request = getMasterForRequest.newBuilder()
-                .setDeviceId(DEVICE_ID_1)
-                .build();
-        getMasterForReply reply;
-
-        reply = blockingStub.getMasterFor(request);
-        assertEquals(nid1, NodeIdProtoTranslator.translate(reply.getNodeId()));
-    }
-
-    /**
-     * Tests the invocation result of getNodesFor method.
-     *
-     * @throws InterruptedException
-     */
-    @Test
-    public void testGetNodesFor() {
-        getNodesForRequest request = getNodesForRequest.newBuilder()
-                .setDeviceId(DEVICE_ID_3)
-                .build();
-        getNodesForReply reply;
-
-        reply = blockingStub.getNodesFor(request);
-        assertEquals(nid3, NodeIdProtoTranslator.translate(reply.getRoleInfo().getMaster()));
-    }
-
-    private class MockMastershipService extends MastershipServiceAdapter {
-
-        @Override
-        public MastershipRole getLocalRole(DeviceId deviceId) {
-            return mastershipMap.get(deviceId);
-        }
-
-        @Override
-        public MastershipRole requestRoleForSync(DeviceId deviceId) {
-            return mastershipMap.get(deviceId);
-        }
-
-        @Override
-        public NodeId getMasterFor(DeviceId deviceId) {
-            return nodeIdMap.get(deviceId);
-        }
-
-        @Override
-        public RoleInfo getNodesFor(DeviceId deviceId) {
-            return roleInfoMap.get(deviceId);
-        }
-    }
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterServiceTest.java b/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterServiceTest.java
deleted file mode 100644
index c9e7180..0000000
--- a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterServiceTest.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import io.grpc.BindableService;
-import io.grpc.ManagedChannel;
-import io.grpc.inprocess.InProcessChannelBuilder;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.DefaultApplicationId;
-import org.onosproject.grpc.core.models.ApplicationIdProtoOuterClass;
-import org.onosproject.grpc.nb.net.meter.MeterServiceGrpc;
-import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto;
-import org.onosproject.grpc.net.meter.models.BandProtoOuterClass;
-import org.onosproject.grpc.net.meter.models.MeterEnumsProto;
-import org.onosproject.grpc.net.meter.models.MeterProtoOuterClass;
-import org.onosproject.grpc.net.meter.models.MeterRequestProtoOuterClass;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.meter.Band;
-import org.onosproject.net.meter.DefaultBand;
-import org.onosproject.net.meter.Meter;
-import org.onosproject.net.meter.MeterCellId;
-import org.onosproject.net.meter.MeterId;
-import org.onosproject.net.meter.MeterListener;
-import org.onosproject.net.meter.MeterRequest;
-import org.onosproject.net.meter.MeterService;
-import org.onosproject.net.meter.MeterState;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertTrue;
-
-
-public class GrpcNbMeterServiceTest {
-
-    private static InProcessServer<BindableService> inProcessServer;
-    private static ManagedChannel channel;
-    private static MeterServiceGrpc.MeterServiceBlockingStub blockingStub;
-
-    private static final MeterService MOCK_METER = new MockMeterService();
-
-    private static final DeviceId DEVICE_ID_1 = DeviceId.deviceId("d1");
-    private static final DeviceId DEVICE_ID_2 = DeviceId.deviceId("d2");
-    private static final DeviceId DEVICE_ID_3 = DeviceId.deviceId("d3");
-
-    private static final long METER_ID_1 = 1L;
-    private static final long METER_ID_2 = 2L;
-    private static final long METER_ID_3 = 3L;
-    private static final long METER_ID_4 = 4L;
-
-    private static final Meter METER_1 = new MockMeter(DEVICE_ID_1, 1, METER_ID_1, 1);
-    private static final Meter METER_2 = new MockMeter(DEVICE_ID_2, 1, METER_ID_2, 2);
-    private static final Meter METER_3 = new MockMeter(DEVICE_ID_3, 1, METER_ID_3, 3);
-    private static final Meter METER_4 = new MockMeter(DEVICE_ID_3, 1, METER_ID_4, 4);
-
-    private static Set<Meter> allMeters = new HashSet<>();
-
-    /**
-     * Create inProcessServer and bind grpcNbMeterService.
-     *
-     * @throws IllegalAccessException
-     * @throws IOException
-     * @throws InstantiationException
-     */
-    @BeforeClass
-    public static void setup() throws IllegalAccessException, IOException, InstantiationException {
-
-        GrpcNbMeterService grpcNbMeterService = new GrpcNbMeterService();
-        grpcNbMeterService.meterService = MOCK_METER;
-        inProcessServer = new InProcessServer(GrpcNbMeterService.class);
-        inProcessServer.addServiceToBind(grpcNbMeterService);
-
-        inProcessServer.start();
-        channel = InProcessChannelBuilder.forName("test").directExecutor()
-                // Channels are secure by default (via SSL/TLS). For the example we disable TLS to avoid
-                // needing certificates.
-                .usePlaintext(true).build();
-        blockingStub = MeterServiceGrpc.newBlockingStub(channel);
-
-        allMeters.add(METER_2);
-        allMeters.add(METER_3);
-        allMeters.add(METER_4);
-    }
-
-    @AfterClass
-    public static void down() {
-        channel.shutdown();
-
-        inProcessServer.stop();
-    }
-
-    @Test
-    public void testSubmit() {
-        MeterServiceNbProto.submitRequest request = MeterServiceNbProto.submitRequest.newBuilder()
-                .setMeter(MeterRequestProtoOuterClass.MeterRequestProto.newBuilder()
-                        .setDeviceId(DEVICE_ID_1.toString())
-                        .setApplicationId(ApplicationIdProtoOuterClass.ApplicationIdProto.newBuilder()
-                                .setId(METER_1.appId().id())
-                                .build())
-                        .setUnit(MeterEnumsProto.MeterUnitProto.KB_PER_SEC)
-                        .setIsBurst(false)
-                        .addBands(BandProtoOuterClass.BandProto.getDefaultInstance())
-                        .setType(MeterEnumsProto.MeterRequestTypeProto.ADD)
-                        .build())
-                .build();
-        MeterServiceNbProto.submitReply reply;
-
-        int size = allMeters.size();
-        reply = blockingStub.submit(request);
-        MeterProtoOuterClass.MeterProto meter = reply.getSubmitMeter();
-        assertTrue(allMeters.size() == (size + 1)
-                && meter.getDeviceId().equals(METER_1.deviceId().toString())
-                && meter.getApplicationId().getId() == METER_1.appId().id());
-
-    }
-
-    @Test
-    public void testWithdraw() {
-        MeterServiceNbProto.withdrawRequest request = MeterServiceNbProto.withdrawRequest.newBuilder()
-                .setMeter(MeterRequestProtoOuterClass.MeterRequestProto.newBuilder()
-                        .setDeviceId(DEVICE_ID_2.toString())
-                        .setApplicationId(ApplicationIdProtoOuterClass.ApplicationIdProto.newBuilder()
-                                .setId(1)
-                                .build())
-                        .setUnit(MeterEnumsProto.MeterUnitProto.KB_PER_SEC)
-                        .setIsBurst(false)
-                        .addBands(BandProtoOuterClass.BandProto.getDefaultInstance())
-                        .setType(MeterEnumsProto.MeterRequestTypeProto.REMOVE)
-                        .build())
-                .setMeterId(METER_ID_2)
-                .build();
-        MeterServiceNbProto.withdrawReply reply;
-
-        int size = allMeters.size();
-        reply = blockingStub.withdraw(request);
-        assertTrue(allMeters.size() == (size - 1));
-    }
-
-    @Test
-    public void testGetMeter() {
-        MeterServiceNbProto.getMeterRequest request = MeterServiceNbProto.getMeterRequest.newBuilder()
-                .setDeviceId(DEVICE_ID_3.toString())
-                .setMeterId(METER_ID_3)
-                .build();
-        MeterServiceNbProto.getMeterReply reply;
-
-        reply = blockingStub.getMeter(request);
-        MeterProtoOuterClass.MeterProto meter = reply.getMeter();
-        assertTrue(meter.getApplicationId().getId() == METER_3.appId().id()
-                && meter.getDeviceId().equals(DEVICE_ID_3.toString()));
-    }
-
-    @Test
-    public void testGetAllMeters() {
-        MeterServiceNbProto.getAllMetersRequest request = MeterServiceNbProto.getAllMetersRequest.getDefaultInstance();
-        MeterServiceNbProto.getAllMetersReply reply;
-
-        reply = blockingStub.getAllMeters(request);
-        assertTrue(reply.getMetersCount() == allMeters.size());
-
-    }
-
-    @Test
-    public void testGetMeters() {
-        MeterServiceNbProto.getMetersRequest request = MeterServiceNbProto.getMetersRequest.newBuilder()
-                .setDeviceId(DEVICE_ID_3.toString())
-                .build();
-        MeterServiceNbProto.getMetersReply reply;
-
-        reply = blockingStub.getMeters(request);
-        assertTrue(reply.getMetersCount() == 2);
-    }
-
-
-    /**
-     * A mock class of meter.
-     */
-    private static class MockMeter implements Meter {
-
-        final DeviceId deviceId;
-        final ApplicationId appId;
-        final MeterId meterId;
-        final long baseValue;
-        final List<Band> bandList;
-
-        public MockMeter(DeviceId deviceId, int appId, long meterId, int id) {
-            this.deviceId = deviceId;
-            this.appId = new DefaultApplicationId(appId, String.valueOf(appId));
-            this.baseValue = id * 200L;
-            this.meterId = MeterId.meterId(meterId);
-
-            Band band = DefaultBand.builder()
-                    .ofType(Band.Type.REMARK)
-                    .withRate(10)
-                    .dropPrecedence((short) 20)
-                    .burstSize(30).build();
-
-            this.bandList = new ArrayList<>();
-            this.bandList.add(band);
-        }
-
-        @Override
-        public DeviceId deviceId() {
-            return this.deviceId;
-        }
-
-        @Override
-        public MeterId id() {
-            return this.meterId;
-        }
-
-        @Override
-        public MeterCellId meterCellId() {
-            return this.id();
-        }
-
-        @Override
-        public ApplicationId appId() {
-            return this.appId;
-        }
-
-        @Override
-        public Unit unit() {
-            return Unit.KB_PER_SEC;
-        }
-
-        @Override
-        public boolean isBurst() {
-            return false;
-        }
-
-        @Override
-        public Collection<Band> bands() {
-            return this.bandList;
-        }
-
-        @Override
-        public MeterState state() {
-            return MeterState.ADDED;
-        }
-
-        @Override
-        public long life() {
-            return baseValue + 11;
-        }
-
-        @Override
-        public long referenceCount() {
-            return baseValue + 22;
-        }
-
-        @Override
-        public long packetsSeen() {
-            return baseValue + 33;
-        }
-
-        @Override
-        public long bytesSeen() {
-            return baseValue + 44;
-        }
-    }
-
-    /**
-     * A mock class of MeterService.
-     */
-    public static class MockMeterService implements MeterService {
-        @Override
-        public void addListener(MeterListener listener) {
-        }
-
-        @Override
-        public void removeListener(MeterListener listener) {
-        }
-
-        @Override
-        public Meter submit(MeterRequest meter) {
-            Meter m = new MockMeter(meter.deviceId(), meter.appId().id(), METER_ID_1, 1);
-            allMeters.add(m);
-            return m;
-        }
-
-        @Override
-        public void withdraw(MeterRequest meter, MeterId meterId) {
-            Meter toRemove = null;
-            for (Meter m: allMeters) {
-                if (meter.appId().id() == m.appId().id() && meter.deviceId().equals(m.deviceId())
-                        && m.id().equals(meterId)) {
-                    toRemove = m;
-                    break;
-                }
-            }
-            if (null != toRemove) {
-                allMeters.remove(toRemove);
-            }
-        }
-
-        @Override
-        public Meter getMeter(DeviceId deviceId, MeterId id) {
-            for (Meter m: allMeters) {
-                if (deviceId.equals(m.deviceId()) && m.id().equals(id)) {
-                    return m;
-                }
-            }
-            return null;
-        }
-
-        @Override
-        public Collection<Meter> getAllMeters() {
-            return allMeters;
-        }
-
-        @Override
-        public Collection<Meter> getMeters(DeviceId deviceId) {
-            List<Meter> meters = new ArrayList<>();
-            for (Meter m: allMeters) {
-                if (deviceId.equals(m.deviceId())) {
-                    meters.add(m);
-                }
-            }
-            return meters;
-        }
-
-        @Override
-        public MeterId allocateMeterId(DeviceId deviceId) {
-            return null;
-        }
-
-        @Override
-        public void freeMeterId(DeviceId deviceId, MeterId meterId) {
-
-        }
-    }
-
-}
diff --git a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionServiceTest.java b/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionServiceTest.java
deleted file mode 100644
index 7e03dce..0000000
--- a/graveyard/protobuf-dead/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionServiceTest.java
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
-* Copyright 2017-present Open Networking Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.onosproject.incubator.protobuf.services.nb;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import io.grpc.BindableService;
-import io.grpc.ManagedChannel;
-import io.grpc.inprocess.InProcessChannelBuilder;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.grpc.nb.net.region.RegionServiceGrpc;
-import org.onosproject.grpc.nb.net.region.RegionServiceGrpc.RegionServiceBlockingStub;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb;
-import org.onosproject.grpc.net.models.RegionProtoOuterClass;
-import org.onosproject.incubator.protobuf.models.net.RegionProtoTranslator;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.HostId;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.region.DefaultRegion;
-import org.onosproject.net.region.Region;
-import org.onosproject.net.region.RegionId;
-import org.onosproject.net.region.RegionListener;
-import org.onosproject.net.region.RegionService;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.cluster.NodeId.nodeId;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.HostId.hostId;
-
-public class GrpcNbRegionServiceTest {
-
-    private static InProcessServer<BindableService> inprocessServer;
-    private static RegionServiceBlockingStub blockingStub;
-    private static ManagedChannel channel;
-
-    private static final String C1 = "C1";
-    private static final String C2 = "C2";
-    private static final String C3 = "C3";
-
-    private static final NodeId CNID_1 = nodeId(C1);
-    private static final NodeId CNID_2 = nodeId(C2);
-    private static final NodeId CNID_3 = nodeId(C3);
-
-    private static final String R1 = "R1";
-    private static final String R2 = "R2";
-    private static final String R3 = "R3";
-
-    private static final Set<NodeId> SET_C1 = ImmutableSet.of(CNID_1);
-    private static final Set<NodeId> SET_C2 = ImmutableSet.of(CNID_2);
-    private static final Set<NodeId> SET_C3 = ImmutableSet.of(CNID_3);
-
-    private static final Region REGION_1 =
-            region(R1, Region.Type.METRO, ImmutableList.of(SET_C1, SET_C2));
-    private static final Region REGION_2 =
-            region(R2, Region.Type.CAMPUS, ImmutableList.of(SET_C2, SET_C1));
-    private static final Region REGION_3 =
-            region(R3, Region.Type.CAMPUS, ImmutableList.of(SET_C3, SET_C1));
-
-    private static final Set<Region> REGION_SET =
-            ImmutableSet.of(REGION_1, REGION_2, REGION_3);
-
-    private static final String D1 = "d1";
-    private static final String D2 = "d2";
-    private static final String D3 = "d3";
-    private static final String D4 = "d4";
-    private static final String D5 = "d5";
-    private static final String D6 = "d6";
-    private static final String D7 = "d7";
-    private static final String D8 = "d8";
-    private static final String D9 = "d9";
-
-    private static final String MFR = "Mfr";
-    private static final String HW = "h/w";
-    private static final String SW = "s/w";
-    private static final String SERIAL = "ser123";
-
-    private static final DeviceId DEVID_1 = deviceId(D1);
-    private static final DeviceId DEVID_2 = deviceId(D2);
-    private static final DeviceId DEVID_3 = deviceId(D3);
-    private static final DeviceId DEVID_4 = deviceId(D4);
-    private static final DeviceId DEVID_5 = deviceId(D5);
-    private static final DeviceId DEVID_6 = deviceId(D6);
-    private static final DeviceId DEVID_7 = deviceId(D7);
-    private static final DeviceId DEVID_8 = deviceId(D8);
-    private static final DeviceId DEVID_9 = deviceId(D9);
-
-    private static final Set<DeviceId> DEVS_TRUNK =
-            ImmutableSet.of(DEVID_1, DEVID_2, DEVID_3);
-
-    private static final Set<DeviceId> DEVS_LEFT =
-            ImmutableSet.of(DEVID_4, DEVID_5, DEVID_6);
-
-    private static final Set<DeviceId> DEVS_RIGHT =
-            ImmutableSet.of(DEVID_7, DEVID_8, DEVID_9);
-
-    private static final String[][] HOST_DATA = {
-            {"AA:00:00:00:00:1A/None", R1},
-            {"AA:00:00:00:00:1B/None", R1},
-            {"AA:00:00:00:00:2A/None", R1},
-            {"AA:00:00:00:00:2B/None", R1},
-            {"AA:00:00:00:00:3A/None", R1},
-            {"AA:00:00:00:00:3B/None", R1},
-            {"AA:00:00:00:00:4A/None", R2},
-            {"AA:00:00:00:00:4B/None", R2},
-            {"AA:00:00:00:00:5A/None", R2},
-            {"AA:00:00:00:00:5B/None", R2},
-            {"AA:00:00:00:00:6A/None", R2},
-            {"AA:00:00:00:00:6B/None", R2},
-            {"AA:00:00:00:00:7A/None", R3},
-            {"AA:00:00:00:00:7B/None", R3},
-            {"AA:00:00:00:00:8A/None", R3},
-            {"AA:00:00:00:00:8B/None", R3},
-            {"AA:00:00:00:00:9A/None", R3},
-            {"AA:00:00:00:00:9B/None", R3},
-    };
-
-    private static final Map<HostId, RegionId> HOSTS = new HashMap<>();
-    private static final RegionService MOCK_REGION = new MockRegionService();
-
-    /**
-     * Returns device with given ID.
-     *
-     * @param id device ID
-     * @return device instance
-     */
-    protected static Device device(String id) {
-        return new DefaultDevice(ProviderId.NONE, deviceId(id),
-                                 Device.Type.SWITCH, MFR, HW, SW, SERIAL, null);
-    }
-
-    /**
-     * Returns a region instance with specified parameters.
-     *
-     * @param id      region id
-     * @param type    region type
-     * @param masters ordered list of master sets
-     * @return region instance
-     */
-    private static Region region(String id, Region.Type type,
-                                   List<Set<NodeId>> masters) {
-        return new DefaultRegion(RegionId.regionId(id), "Region-" + id,
-                                 type, DefaultAnnotations.EMPTY, masters);
-    }
-
-    /**
-     * Creates a map of hostIds corresponding to their regionIds.
-     *
-     */
-    private static void populateHosts() {
-        for (String[] row : HOST_DATA) {
-            HOSTS.put(hostId(row[0]), RegionId.regionId(row[1]));
-        }
-    }
-
-    public GrpcNbRegionServiceTest() {
-    }
-
-    @Test
-    public void testGetRegion() throws InterruptedException {
-
-        RegionServiceNb.getRegionRequest request = RegionServiceNb.getRegionRequest.newBuilder()
-                                                                                   .setRegionId(R1).build();
-        RegionServiceNb.getRegionReply response;
-
-        try {
-            response = blockingStub.getRegion(request);
-            Region actualRegion = RegionProtoTranslator.translate(response.getRegion());
-            assertTrue(REGION_1.equals(actualRegion));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetRegions() throws InterruptedException {
-
-        RegionServiceNb.getRegionsRequest request = RegionServiceNb.getRegionsRequest.newBuilder()
-                .build();
-        RegionServiceNb.getRegionsReply response;
-
-        try {
-            response = blockingStub.getRegions(request);
-            Set<Region> actualRegions = new HashSet<Region>();
-            for (RegionProtoOuterClass.RegionProto region : response.getRegionList()) {
-                actualRegions.add(RegionProtoTranslator.translate(region));
-            }
-            assertTrue(REGION_SET.equals(actualRegions));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetRegionForDevice() throws InterruptedException {
-
-        RegionServiceNb.getRegionForDeviceRequest request = RegionServiceNb.getRegionForDeviceRequest.newBuilder()
-                .setDeviceId(D1).build();
-        RegionServiceNb.getRegionForDeviceReply response;
-
-        try {
-            response = blockingStub.getRegionForDevice(request);
-            Region actualRegion = RegionProtoTranslator.translate(response.getRegion());
-            assertTrue(REGION_1.equals(actualRegion));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetRegionDevices() throws InterruptedException {
-
-        RegionServiceNb.getRegionDevicesRequest request = RegionServiceNb.getRegionDevicesRequest.newBuilder()
-                .setRegionId(R1).build();
-        RegionServiceNb.getRegionDevicesReply response;
-
-        try {
-            response = blockingStub.getRegionDevices(request);
-            Set<DeviceId> actualDevices = new HashSet<DeviceId>();
-            for (String deviceId : response.getDeviceIdList()) {
-                actualDevices.add(DeviceId.deviceId(deviceId));
-            }
-            assertTrue(DEVS_TRUNK.equals(actualDevices));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    public void testGetRegionHosts() throws InterruptedException {
-        RegionServiceNb.getRegionHostsRequest request = RegionServiceNb.getRegionHostsRequest.newBuilder()
-                .setRegionId(R1).build();
-        RegionServiceNb.getRegionHostsReply response;
-
-        Set<HostId> expectedHosts = new HashSet<HostId>();
-
-        expectedHosts.add(HostId.hostId(HOST_DATA[0][0]));
-        expectedHosts.add(HostId.hostId(HOST_DATA[1][0]));
-        expectedHosts.add(HostId.hostId(HOST_DATA[2][0]));
-        expectedHosts.add(HostId.hostId(HOST_DATA[3][0]));
-        expectedHosts.add(HostId.hostId(HOST_DATA[4][0]));
-        expectedHosts.add(HostId.hostId(HOST_DATA[5][0]));
-
-        Set<HostId> actualHosts = new HashSet<HostId>();
-
-        try {
-            response = blockingStub.getRegionHosts(request);
-            for (String hostId : response.getHostIdList()) {
-                actualHosts.add(HostId.hostId(hostId));
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        assertTrue(expectedHosts.equals(actualHosts));
-    }
-
-    @BeforeClass
-    public static void beforeClass() throws InstantiationException, IllegalAccessException, IOException {
-        GrpcNbRegionService regionService = new GrpcNbRegionService();
-        regionService.regionService = MOCK_REGION;
-        inprocessServer = regionService.registerInProcessServer();
-        inprocessServer.start();
-
-        channel = InProcessChannelBuilder.forName("test").directExecutor()
-                // Channels are secure by default (via SSL/TLS). For the example we disable TLS to avoid
-                // needing certificates.
-                .usePlaintext(true).build();
-        blockingStub = RegionServiceGrpc.newBlockingStub(channel);
-        populateHosts();
-    }
-
-    @AfterClass
-    public static void afterClass() {
-        channel.shutdownNow();
-
-        inprocessServer.stop();
-    }
-
-    private static class MockRegionService implements RegionService {
-
-        private final Map<RegionId, Region> lookup = new HashMap<>();
-
-        MockRegionService() {
-            lookup.put(REGION_1.id(), REGION_1);
-            lookup.put(REGION_2.id(), REGION_2);
-            lookup.put(REGION_3.id(), REGION_3);
-        }
-
-        @Override
-        public Set<Region> getRegions() {
-            return REGION_SET;
-        }
-
-        @Override
-        public Region getRegion(RegionId regionId) {
-            return lookup.get(regionId);
-        }
-
-        @Override
-        public Region getRegionForDevice(DeviceId deviceId) {
-            if (DEVS_TRUNK.contains(deviceId)) {
-                return REGION_1;
-            }
-            if (DEVS_LEFT.contains(deviceId)) {
-                return REGION_2;
-            }
-            if (DEVS_RIGHT.contains(deviceId)) {
-                return REGION_3;
-            }
-            return null;
-        }
-
-        @Override
-        public Set<DeviceId> getRegionDevices(RegionId regionId) {
-            if (REGION_1.id().equals(regionId)) {
-                return DEVS_TRUNK;
-            }
-            if (REGION_2.id().equals(regionId)) {
-                return DEVS_LEFT;
-            }
-            if (REGION_3.id().equals(regionId)) {
-                return DEVS_RIGHT;
-            }
-            return Collections.emptySet();
-        }
-
-        @Override
-        public Set<HostId> getRegionHosts(RegionId regionId) {
-            Set<HostId> hosts = new HashSet<HostId>();
-            for (HostId hostId : HOSTS.keySet()) {
-                if (HOSTS.get(hostId).equals(regionId)) {
-                    hosts.add(hostId);
-                }
-            }
-            return hosts;
-        }
-
-        @Override
-        public void addListener(RegionListener listener) {
-
-        }
-
-        @Override
-        public void removeListener(RegionListener listener) {
-
-        }
-    }
-}
\ No newline at end of file
diff --git a/graveyard/protobuf-dead/src/main/java/org/onosproject/incubator/protobuf/net/package-info.java b/graveyard/protobuf-dead/src/main/java/org/onosproject/incubator/protobuf/net/package-info.java
deleted file mode 100644
index f193ee8..0000000
--- a/graveyard/protobuf-dead/src/main/java/org/onosproject/incubator/protobuf/net/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * A package contains gRPC service registry implementations.
- */
-package org.onosproject.incubator.protobuf.net;
\ No newline at end of file
diff --git a/graveyard/protobuf-nb/src/main/proto/MulticastRouteService.proto b/graveyard/protobuf-nb/src/main/proto/MulticastRouteService.proto
deleted file mode 100644
index f74048a..0000000
--- a/graveyard/protobuf-nb/src/main/proto/MulticastRouteService.proto
+++ /dev/null
@@ -1,51 +0,0 @@
-syntax = "proto3";
-option java_package = "org.onosproject.grpc.net.mcast";
-
-package Multicast;
-
-// TODO move model objects to common protobuf package
-
-message ConnectPoint {
-  string deviceId = 1;
-  uint64 portNumber = 2;
-}
-
-enum MulticastRouteType {
-  PIM = 0;
-  IGMP = 1;
-  STATIC = 2;
-}
-
-enum MulticastOperationResult {
-  SUCCESS = 0;
-  FAIL = 1;
-}
-
-enum MulticastOperation {
-  ADD_ROUTE = 0;
-  ADD_SOURCE = 1;
-  ADD_SINK = 2;
-  REMOVE_ROUTE = 3;
-  REMOVE_SOURCE = 4;
-  REMOVE_SINK = 5;
-}
-
-message MulticastRoute {
-  fixed32 source = 1; // TODO assumes ipv4
-  fixed32 group = 2;
-  MulticastRouteType type = 3;
-}
-
-message MulticastReply {
-  MulticastOperationResult result = 1;
-}
-
-message MulticastRequest {
-  MulticastOperation operation = 1;
-  MulticastRoute route = 2;
-  ConnectPoint connectPoint = 3;
-}
-
-service MulticastRouteService {
-  rpc operation(stream MulticastRequest) returns (stream MulticastReply) {}
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderRegistryClientProxy.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderRegistryClientProxy.java
deleted file mode 100644
index 59b780f..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderRegistryClientProxy.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import java.util.Map;
-
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.provider.AbstractProviderRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Maps;
-
-import io.grpc.Channel;
-import io.grpc.ManagedChannel;
-
-// gRPC Client side
-/**
- * Proxy object to handle DeviceProviderRegistry calls.
- *
- * RPC wise, this will start/stop bidirectional streaming service sessions.
- */
-final class DeviceProviderRegistryClientProxy
-        extends AbstractProviderRegistry<DeviceProvider, DeviceProviderService>
-        implements DeviceProviderRegistry {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private final Channel channel;
-
-    private final Map<DeviceProvider, DeviceProviderServiceClientProxy> pServices;
-
-    DeviceProviderRegistryClientProxy(ManagedChannel channel) {
-        this.channel = channel;
-        pServices = Maps.newIdentityHashMap();
-    }
-
-    @Override
-    protected synchronized DeviceProviderService createProviderService(DeviceProvider provider) {
-
-        // Create session
-        DeviceProviderServiceClientProxy pService = new DeviceProviderServiceClientProxy(provider, channel);
-        log.debug("Created DeviceProviderServiceClientProxy {}", pService);
-
-        DeviceProviderServiceClientProxy old = pServices.put(provider, pService);
-        if (old != null) {
-            // sanity check, can go away
-            log.warn("Duplicate registration detected for {}", provider.id());
-        }
-        return pService;
-    }
-
-    @Override
-    public synchronized void unregister(DeviceProvider provider) {
-        DeviceProviderServiceClientProxy pService = pServices.remove(provider);
-        log.debug("Unregistering DeviceProviderServiceClientProxy {}", pService);
-        super.unregister(provider);
-        if (pService != null) {
-            pService.shutdown();
-        }
-    }
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderServiceClientProxy.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderServiceClientProxy.java
deleted file mode 100644
index 5438c67..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderServiceClientProxy.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.stream.Collectors.toList;
-import static org.onosproject.net.DeviceId.deviceId;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.onosproject.grpc.net.device.DeviceProviderRegistryRpcGrpc;
-import org.onosproject.grpc.net.device.DeviceProviderRegistryRpcGrpc.DeviceProviderRegistryRpcStub;
-import org.onosproject.grpc.net.device.DeviceService.DeviceProviderMsg;
-import org.onosproject.grpc.net.device.DeviceService.DeviceProviderServiceMsg;
-import org.onosproject.grpc.net.device.DeviceService.IsReachableRequest;
-import org.onosproject.grpc.net.device.DeviceService.RoleChanged;
-import org.onosproject.grpc.net.device.DeviceService.TriggerProbe;
-import org.onosproject.grpc.net.device.models.PortDescriptionProtoOuterClass.PortDescriptionProto;
-import org.onosproject.grpc.net.device.models.PortStatisticsProtoOuterClass.PortStatisticsProto;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.device.PortStatistics;
-import org.onosproject.net.provider.AbstractProviderService;
-import org.onosproject.incubator.protobuf.models.net.device.DeviceProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.device.PortProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.MastershipRoleProtoTranslator;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-import io.grpc.Channel;
-import io.grpc.stub.StreamObserver;
-
-// gRPC Client side
-// gRPC wise, this object represents bidirectional streaming service session
-// and deals with outgoing message stream
-/**
- * DeviceProviderService instance associated with given DeviceProvider.
- */
-final class DeviceProviderServiceClientProxy
-        extends AbstractProviderService<DeviceProvider>
-        implements DeviceProviderService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private final StreamObserver<DeviceProviderServiceMsg> devProvService;
-    private final AtomicBoolean hasShutdown = new AtomicBoolean(false);
-
-    private final Channel channel;
-
-    private Throwable error;
-
-    DeviceProviderServiceClientProxy(DeviceProvider provider, Channel channel) {
-        super(provider);
-        this.channel = channel;
-
-        DeviceProviderRegistryRpcStub stub = DeviceProviderRegistryRpcGrpc.newStub(channel);
-        log.debug("Calling RPC register({}) against {}", provider.id(), channel.authority());
-        devProvService = stub.register(new DeviceProviderClientProxy(provider));
-
-        // send initialize message
-        DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-        builder.setRegisterProvider(builder.getRegisterProviderBuilder()
-                                    .setProviderScheme(provider.id().scheme())
-                                    .build());
-        devProvService.onNext(builder.build());
-    }
-
-    @Override
-    public void deviceConnected(DeviceId deviceId,
-                                DeviceDescription deviceDescription) {
-        checkValidity();
-
-        DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-        builder.setDeviceConnected(builder.getDeviceConnectedBuilder()
-                                      .setDeviceId(deviceId.toString())
-                                      .setDeviceDescription(DeviceProtoTranslator.translate(deviceDescription))
-                                      .build());
-
-        devProvService.onNext(builder.build());
-    }
-
-    @Override
-    public void deviceDisconnected(DeviceId deviceId) {
-        checkValidity();
-
-        DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-        builder.setDeviceDisconnected(builder.getDeviceDisconnectedBuilder()
-                                      .setDeviceId(deviceId.toString())
-                                      .build());
-
-        devProvService.onNext(builder.build());
-    }
-
-    @Override
-    public void updatePorts(DeviceId deviceId,
-                            List<PortDescription> portDescriptions) {
-        checkValidity();
-
-        DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-        List<PortDescriptionProto> portDescs =
-                portDescriptions.stream()
-                    .map(PortProtoTranslator::translate)
-                    .collect(toList());
-
-        builder.setUpdatePorts(builder.getUpdatePortsBuilder()
-                               .setDeviceId(deviceId.toString())
-                               .addAllPortDescriptions(portDescs)
-                               .build());
-
-        devProvService.onNext(builder.build());
-    }
-
-    @Override
-    public void deletePort(DeviceId deviceId, PortDescription portDescription) {
-
-    }
-
-    @Override
-    public void portStatusChanged(DeviceId deviceId,
-                                  PortDescription portDescription) {
-        checkValidity();
-
-        DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-        builder.setPortStatusChanged(builder.getPortStatusChangedBuilder()
-                                      .setDeviceId(deviceId.toString())
-                                      .setPortDescription(PortProtoTranslator.translate(portDescription))
-                                      .build());
-
-        devProvService.onNext(builder.build());
-    }
-
-    @Override
-    public void receivedRoleReply(DeviceId deviceId, MastershipRole requested,
-                                  MastershipRole response) {
-        checkValidity();
-
-        DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-        builder.setReceivedRoleReply(builder.getReceivedRoleReplyBuilder()
-                                      .setDeviceId(deviceId.toString())
-                                      .setRequested(MastershipRoleProtoTranslator.translate(requested))
-                                      .setResponse(MastershipRoleProtoTranslator.translate(response))
-                                      .build());
-
-        devProvService.onNext(builder.build());
-    }
-
-    @Override
-    public void updatePortStatistics(DeviceId deviceId,
-                                     Collection<PortStatistics> portStatistics) {
-        checkValidity();
-
-        DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-        List<PortStatisticsProto> portStats =
-                portStatistics.stream()
-                    .map(PortProtoTranslator::translate)
-                    .collect(toList());
-        builder.setUpdatePortStatistics(builder.getUpdatePortStatisticsBuilder()
-                                      .setDeviceId(deviceId.toString())
-                                      .addAllPortStatistics(portStats)
-                                      .build());
-
-        devProvService.onNext(builder.build());
-    }
-
-    /**
-     * Shutdown this session.
-     */
-    public void shutdown() {
-        if (hasShutdown.compareAndSet(false, true)) {
-            log.info("Shutting down session over {}", channel.authority());
-            // initiate clean shutdown from client
-            devProvService.onCompleted();
-            invalidate();
-        }
-    }
-
-    /**
-     * Abnormally terminate this session.
-     * @param t error details
-     */
-    public void shutdown(Throwable t) {
-        if (hasShutdown.compareAndSet(false, true)) {
-            log.error("Shutting down session over {}", channel.authority());
-            // initiate abnormal termination from client
-            devProvService.onError(t);
-            invalidate(t);
-        }
-    }
-
-    /**
-     * Invalidates the ProviderService indicating Failure.
-     * @param t {@link Throwable} describing last failure
-     */
-    private void invalidate(Throwable t) {
-        this.error = t;
-        invalidate();
-    }
-
-    @Override
-    public void checkValidity() {
-        if (error != null) {
-            throw new IllegalStateException("DeviceProviderService no longer valid",
-                                            error);
-        }
-        super.checkValidity();
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-            .add("channel", channel.authority())
-            .add("hasShutdown", hasShutdown.get())
-            .toString();
-    }
-
-    // gRPC wise, this object handles incoming message stream
-    /**
-     * Translates DeviceProvider instructions received from RPC to Java calls.
-     */
-    private final class DeviceProviderClientProxy
-            implements StreamObserver<DeviceProviderMsg> {
-
-        private final DeviceProvider provider;
-
-        DeviceProviderClientProxy(DeviceProvider provider) {
-            this.provider = checkNotNull(provider);
-        }
-
-        @Override
-        public void onNext(DeviceProviderMsg msg) {
-            try {
-                log.trace("DeviceProviderClientProxy received: {}", msg);
-                onMethod(msg);
-            } catch (Exception e) {
-                log.error("Exception caught handling {} at DeviceProviderClientProxy", msg, e);
-                // initiate shutdown from client
-                shutdown(e);
-            }
-        }
-
-        /**
-         * Translates received RPC message to {@link DeviceProvider} method calls.
-         * @param msg DeviceProvider message
-         */
-        private void onMethod(DeviceProviderMsg msg) {
-            switch (msg.getMethodCase()) {
-            case TRIGGER_PROBE:
-                TriggerProbe triggerProbe = msg.getTriggerProbe();
-                provider.triggerProbe(deviceId(triggerProbe.getDeviceId()));
-                break;
-            case ROLE_CHANGED:
-                RoleChanged roleChanged = msg.getRoleChanged();
-                provider.roleChanged(deviceId(roleChanged.getDeviceId()),
-                        (MastershipRole) MastershipRoleProtoTranslator.translate(roleChanged.getNewRole()).get());
-                break;
-            case IS_REACHABLE_REQUEST:
-                IsReachableRequest isReachableRequest = msg.getIsReachableRequest();
-                // check if reachable
-                boolean reachable = provider.isReachable(deviceId(isReachableRequest.getDeviceId()));
-
-                int xid = isReachableRequest.getXid();
-                // send response back DeviceProviderService channel
-                DeviceProviderServiceMsg.Builder builder = DeviceProviderServiceMsg.newBuilder();
-                builder.setIsReachableResponse(builder.getIsReachableResponseBuilder()
-                                               .setXid(xid)
-                                               .setIsReachable(reachable)
-                                               .build());
-                devProvService.onNext(builder.build());
-                break;
-
-            case METHOD_NOT_SET:
-            default:
-                log.warn("Unexpected method, ignoring", msg);
-                break;
-            }
-        }
-
-        @Override
-        public void onCompleted() {
-            log.info("DeviceProviderClientProxy completed");
-            // session terminated from remote
-            invalidate();
-        }
-
-        @Override
-        public void onError(Throwable t) {
-            log.error("DeviceProviderClientProxy#onError", t);
-            // session terminated from remote
-            invalidate(t);
-        }
-
-        @Override
-        public String toString() {
-            return MoreObjects.toStringHelper(this)
-                    .add("channel", channel.authority())
-                    .toString();
-        }
-    }
-}
-
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceContext.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceContext.java
deleted file mode 100644
index 44674e3..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceContext.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.onosproject.incubator.rpc.RemoteServiceContext;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.MoreObjects;
-
-import io.grpc.ManagedChannel;
-
-// gRPC Client side
-// Probably there should be plug-in mechanism in the future.
-/**
- * RemoteServiceContext based on gRPC.
- *
- * <p>
- * Currently it supports {@link DeviceProviderRegistry}.
- */
-public class GrpcRemoteServiceContext implements RemoteServiceContext {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private final Map<Class<? extends Object>, Object> services = new ConcurrentHashMap<>();
-
-    private final ManagedChannel channel;
-
-    public GrpcRemoteServiceContext(ManagedChannel channel) {
-        this.channel = checkNotNull(channel);
-        services.put(DeviceProviderRegistry.class, new DeviceProviderRegistryClientProxy(channel));
-        services.put(LinkProviderRegistry.class, new LinkProviderRegistryClientProxy(channel));
-    }
-
-
-    @Override
-    public <T> T get(Class<T> serviceClass) {
-        @SuppressWarnings("unchecked")
-        T service = (T) services.get(serviceClass);
-        if (service != null) {
-            return service;
-        }
-        log.error("{} not supported", serviceClass);
-        throw new NoSuchElementException(serviceClass.getTypeName() + " not supported");
-    }
-
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("services", services.keySet())
-                .add("channel", channel.authority())
-                .toString();
-    }
-
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceProvider.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceProvider.java
deleted file mode 100644
index e3f0892..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceProvider.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.incubator.rpc.RemoteServiceContext;
-import org.onosproject.incubator.rpc.RemoteServiceContextProvider;
-import org.onosproject.incubator.rpc.RemoteServiceContextProviderService;
-import org.onosproject.incubator.rpc.RemoteServiceProviderRegistry;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import io.grpc.ManagedChannel;
-import io.grpc.internal.DnsNameResolverProvider;
-import io.grpc.netty.NegotiationType;
-import io.grpc.netty.NettyChannelBuilder;
-
-
-// gRPC Client side
-/**
- * RemoteServiceContextProvider based on gRPC.
- */
-@Component(immediate = true)
-public class GrpcRemoteServiceProvider implements RemoteServiceContextProvider {
-
-    public static final String GRPC_SCHEME = "grpc";
-
-    public static final String RPC_PROVIDER_NAME = "org.onosproject.rpc.provider.grpc";
-
-    private static final ProviderId PID = new ProviderId(GRPC_SCHEME, RPC_PROVIDER_NAME);
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RemoteServiceProviderRegistry rpcRegistry;
-
-    private final Map<URI, ManagedChannel> channels = new ConcurrentHashMap<>();
-
-    private RemoteServiceContextProviderService providerService;
-
-    @Activate
-    protected void activate() {
-        providerService = rpcRegistry.register(this);
-
-        // Uncomment to test if gRPC can be loaded in karaf
-        //getChannel(URI.create("grpc://localhost:11984"));
-
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        rpcRegistry.unregister(this);
-
-        // shutdown all channels
-        channels.values().forEach(ManagedChannel::shutdown);
-        // Should we wait for shutdown? How?
-        channels.clear();
-        log.info("Stopped");
-    }
-
-    @Override
-    public ProviderId id() {
-        return PID;
-    }
-
-    @Override
-    public RemoteServiceContext get(URI uri) {
-        // Create gRPC client
-        return new GrpcRemoteServiceContext(getChannel(uri));
-    }
-
-    private ManagedChannel getChannel(URI uri) {
-        checkArgument(Objects.equals(GRPC_SCHEME, uri.getScheme()),
-                      "Invalid URI scheme: %s", uri.getScheme());
-
-        return channels.compute(uri, (u, ch) -> {
-            if (ch != null && !ch.isShutdown()) {
-                return ch;
-            } else {
-                return createChannel(u);
-            }
-        });
-    }
-
-    private ManagedChannel createChannel(URI uri) {
-        log.debug("Creating channel for {}", uri);
-        int port = GrpcRemoteServiceServer.DEFAULT_LISTEN_PORT;
-        if (uri.getPort() != -1) {
-            port = uri.getPort();
-        }
-        return NettyChannelBuilder.forAddress(uri.getHost(), port)
-                .negotiationType(NegotiationType.PLAINTEXT)
-                // TODO Not ideal fix, gRPC discovers name resolvers
-                // in the class path, but OSGi was preventing it.
-                // Manually specifying the default dns resolver for now.
-                .nameResolverFactory(new DnsNameResolverProvider())
-                .build();
-    }
-
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceServer.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceServer.java
deleted file mode 100644
index 2bf2081..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceServer.java
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.concurrent.Executors.newScheduledThreadPool;
-import static java.util.stream.Collectors.toList;
-import org.onosproject.incubator.protobuf.models.net.device.DeviceProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.device.PortProtoTranslator;
-import org.onosproject.incubator.protobuf.models.net.MastershipRoleProtoTranslator;
-import static org.onosproject.net.DeviceId.deviceId;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Modified;
-import org.osgi.service.component.annotations.Property;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.util.Tools;
-import org.onosproject.grpc.net.device.DeviceProviderRegistryRpcGrpc.DeviceProviderRegistryRpcImplBase;
-import org.onosproject.grpc.net.device.DeviceService.DeviceConnected;
-import org.onosproject.grpc.net.device.DeviceService.DeviceDisconnected;
-import org.onosproject.grpc.net.device.DeviceService.DeviceProviderMsg;
-import org.onosproject.grpc.net.device.DeviceService.DeviceProviderServiceMsg;
-import org.onosproject.grpc.net.device.DeviceService.IsReachableResponse;
-import org.onosproject.grpc.net.device.DeviceService.PortStatusChanged;
-import org.onosproject.grpc.net.device.DeviceService.ReceivedRoleReply;
-import org.onosproject.grpc.net.device.DeviceService.RegisterProvider;
-import org.onosproject.grpc.net.device.DeviceService.UpdatePortStatistics;
-import org.onosproject.grpc.net.device.DeviceService.UpdatePorts;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.provider.ProviderId;
-import org.osgi.service.component.ComponentContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-import io.grpc.Server;
-import io.grpc.netty.NettyServerBuilder;
-import io.grpc.stub.StreamObserver;
-
-// gRPC Server on Metro-side
-// Translates request received on RPC channel, and calls corresponding Service on
-// Metro-ONOS cluster.
-
-// Currently supports DeviceProviderRegistry, LinkProviderService
-/**
- * Server side implementation of gRPC based RemoteService.
- */
-@Component(immediate = true)
-public class GrpcRemoteServiceServer {
-
-    static final String RPC_PROVIDER_NAME = "org.onosproject.rpc.provider.grpc";
-
-    // TODO pick a number
-    public static final int DEFAULT_LISTEN_PORT = 11984;
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected DeviceProviderRegistry deviceProviderRegistry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected LinkProviderRegistry linkProviderRegistry;
-
-    /** Port to listen on */
-    protected int listenPort = DEFAULT_LISTEN_PORT;
-
-    private Server server;
-    private final Set<DeviceProviderServerProxy> registeredProviders = Sets.newConcurrentHashSet();
-
-    // scheme -> ...
-    // updates must be guarded by synchronizing `this`
-    private final Map<String, LinkProviderService> linkProviderServices = Maps.newConcurrentMap();
-    private final Map<String, LinkProvider> linkProviders = Maps.newConcurrentMap();
-
-    private ScheduledExecutorService executor;
-
-    @Activate
-    protected void activate(ComponentContext context) throws IOException {
-        executor = newScheduledThreadPool(1, Tools.groupedThreads("grpc", "%d", log));
-        modified(context);
-
-        log.debug("Server starting on {}", listenPort);
-        try {
-            server  = NettyServerBuilder.forPort(listenPort)
-                    .addService(new DeviceProviderRegistryServerProxy())
-                    .addService(new LinkProviderServiceServerProxy(this))
-                    .build().start();
-        } catch (IOException e) {
-            log.error("Failed to start gRPC server", e);
-            throw e;
-        }
-
-        log.info("Started on {}", listenPort);
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        executor.shutdown();
-        try {
-            executor.awaitTermination(5, TimeUnit.SECONDS);
-        } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-        }
-
-        registeredProviders.forEach(deviceProviderRegistry::unregister);
-
-        server.shutdown();
-        // Should we wait for shutdown?
-
-        unregisterLinkProviders();
-
-        log.info("Stopped");
-    }
-
-    @Modified
-    public void modified(ComponentContext context) {
-        // TODO support dynamic reconfiguration and restarting server?
-    }
-
-    /**
-     * Registers {@link StubLinkProvider} for given ProviderId scheme.
-     *
-     * DO NOT DIRECTLY CALL THIS METHOD.
-     * Only expected to be called from {@link #getLinkProviderServiceFor(String)}.
-     *
-     * @param scheme ProviderId scheme.
-     * @return {@link LinkProviderService} registered.
-     */
-    private synchronized LinkProviderService registerStubLinkProvider(String scheme) {
-        StubLinkProvider provider = new StubLinkProvider(scheme);
-        linkProviders.put(scheme, provider);
-        return linkProviderRegistry.register(provider);
-    }
-
-    /**
-     * Unregisters all registered LinkProviders.
-     */
-    private synchronized void unregisterLinkProviders() {
-        // TODO remove all links registered by these providers
-        linkProviders.values().forEach(linkProviderRegistry::unregister);
-        linkProviders.clear();
-        linkProviderServices.clear();
-    }
-
-    /**
-     * Gets or creates {@link LinkProviderService} registered for given ProviderId scheme.
-     *
-     * @param scheme ProviderId scheme.
-     * @return {@link LinkProviderService}
-     */
-    protected LinkProviderService getLinkProviderServiceFor(String scheme) {
-        return linkProviderServices.computeIfAbsent(scheme, this::registerStubLinkProvider);
-    }
-
-    protected ScheduledExecutorService getSharedExecutor() {
-        return executor;
-    }
-
-    // RPC Server-side code
-    // RPC session Factory
-    /**
-     * Relays DeviceProviderRegistry calls from RPC client.
-     */
-    class DeviceProviderRegistryServerProxy extends DeviceProviderRegistryRpcImplBase {
-
-        @Override
-        public StreamObserver<DeviceProviderServiceMsg> register(StreamObserver<DeviceProviderMsg> toDeviceProvider) {
-            log.trace("DeviceProviderRegistryServerProxy#register called!");
-
-            DeviceProviderServerProxy provider = new DeviceProviderServerProxy(toDeviceProvider);
-
-            return new DeviceProviderServiceServerProxy(provider, toDeviceProvider);
-        }
-    }
-
-    // Lower -> Upper Controller message
-    // RPC Server-side code
-    // RPC session handler
-    private final class DeviceProviderServiceServerProxy
-            implements StreamObserver<DeviceProviderServiceMsg> {
-
-        // intentionally shadowing
-        private final Logger log = LoggerFactory.getLogger(getClass());
-
-        private final DeviceProviderServerProxy pairedProvider;
-        private final StreamObserver<DeviceProviderMsg> toDeviceProvider;
-
-        private final Cache<Integer, CompletableFuture<Boolean>> outstandingIsReachable;
-
-        // wrapped providerService
-        private DeviceProviderService deviceProviderService;
-
-
-        DeviceProviderServiceServerProxy(DeviceProviderServerProxy provider,
-                                         StreamObserver<DeviceProviderMsg> toDeviceProvider) {
-            this.pairedProvider = provider;
-            this.toDeviceProvider = toDeviceProvider;
-            outstandingIsReachable = CacheBuilder.newBuilder()
-                        .expireAfterWrite(1, TimeUnit.MINUTES)
-                        .build();
-
-            // pair RPC session in other direction
-            provider.pair(this);
-        }
-
-        @Override
-        public void onNext(DeviceProviderServiceMsg msg) {
-            try {
-                log.trace("DeviceProviderServiceServerProxy received: {}", msg);
-                onMethod(msg);
-            } catch (Exception e) {
-                log.error("Exception thrown handling {}", msg, e);
-                onError(e);
-                throw e;
-            }
-        }
-
-        /**
-         * Translates received RPC message to {@link DeviceProviderService} method calls.
-         * @param msg DeviceProviderService message
-         */
-        private void onMethod(DeviceProviderServiceMsg msg) {
-            switch (msg.getMethodCase()) {
-            case REGISTER_PROVIDER:
-                RegisterProvider registerProvider = msg.getRegisterProvider();
-                // TODO Do we care about provider name?
-                pairedProvider.setProviderId(new ProviderId(registerProvider.getProviderScheme(), RPC_PROVIDER_NAME));
-                registeredProviders.add(pairedProvider);
-                log.info("registering DeviceProvider {} via gRPC", pairedProvider.id());
-                deviceProviderService = deviceProviderRegistry.register(pairedProvider);
-                break;
-
-            case DEVICE_CONNECTED:
-                DeviceConnected deviceConnected = msg.getDeviceConnected();
-                deviceProviderService.deviceConnected(deviceId(deviceConnected.getDeviceId()),
-                        DeviceProtoTranslator.translate(deviceConnected.getDeviceDescription()));
-                break;
-            case DEVICE_DISCONNECTED:
-                DeviceDisconnected deviceDisconnected = msg.getDeviceDisconnected();
-                deviceProviderService.deviceDisconnected(deviceId(deviceDisconnected.getDeviceId()));
-                break;
-            case UPDATE_PORTS:
-                UpdatePorts updatePorts = msg.getUpdatePorts();
-                deviceProviderService.updatePorts(deviceId(updatePorts.getDeviceId()),
-                                                  updatePorts.getPortDescriptionsList()
-                                                      .stream()
-                                                          .map(PortProtoTranslator::translate)
-                                                          .collect(toList()));
-                break;
-            case PORT_STATUS_CHANGED:
-                PortStatusChanged portStatusChanged = msg.getPortStatusChanged();
-                deviceProviderService.portStatusChanged(deviceId(portStatusChanged.getDeviceId()),
-                        PortProtoTranslator.translate(portStatusChanged.getPortDescription()));
-                break;
-            case RECEIVED_ROLE_REPLY:
-                ReceivedRoleReply receivedRoleReply = msg.getReceivedRoleReply();
-                deviceProviderService.receivedRoleReply(deviceId(receivedRoleReply.getDeviceId()),
-                        (MastershipRole) MastershipRoleProtoTranslator
-                                .translate(receivedRoleReply.getRequested()).get(),
-                        (MastershipRole) MastershipRoleProtoTranslator
-                                .translate(receivedRoleReply.getResponse()).get());
-                break;
-            case UPDATE_PORT_STATISTICS:
-                UpdatePortStatistics updatePortStatistics = msg.getUpdatePortStatistics();
-                deviceProviderService.updatePortStatistics(deviceId(updatePortStatistics.getDeviceId()),
-                                                           updatePortStatistics.getPortStatisticsList()
-                                                             .stream()
-                                                                .map(PortProtoTranslator::translate)
-                                                                .collect(toList()));
-                break;
-
-            // return value of DeviceProvider#isReachable
-            case IS_REACHABLE_RESPONSE:
-                IsReachableResponse isReachableResponse = msg.getIsReachableResponse();
-                int xid = isReachableResponse.getXid();
-                boolean isReachable = isReachableResponse.getIsReachable();
-                CompletableFuture<Boolean> result = outstandingIsReachable.asMap().remove(xid);
-                if (result != null) {
-                    result.complete(isReachable);
-                }
-                break;
-
-            case METHOD_NOT_SET:
-            default:
-                log.warn("Unexpected message received {}", msg);
-                break;
-            }
-        }
-
-        @Override
-        public void onCompleted() {
-            log.info("DeviceProviderServiceServerProxy completed");
-            deviceProviderRegistry.unregister(pairedProvider);
-            registeredProviders.remove(pairedProvider);
-            toDeviceProvider.onCompleted();
-        }
-
-        @Override
-        public void onError(Throwable e) {
-            log.error("DeviceProviderServiceServerProxy#onError", e);
-            if (pairedProvider != null) {
-                // TODO call deviceDisconnected against all devices
-                // registered for this provider scheme
-                log.info("unregistering DeviceProvider {} via gRPC", pairedProvider.id());
-                deviceProviderRegistry.unregister(pairedProvider);
-                registeredProviders.remove(pairedProvider);
-            }
-            // TODO What is the proper clean up for bi-di stream on error?
-            // sample suggests no-op
-            toDeviceProvider.onError(e);
-        }
-
-
-        /**
-         * Registers Future for {@link DeviceProvider#isReachable(DeviceId)} return value.
-         * @param xid   IsReachable call ID.
-         * @param reply Future to
-         */
-        void register(int xid, CompletableFuture<Boolean> reply) {
-            outstandingIsReachable.put(xid, reply);
-        }
-
-    }
-
-    // Upper -> Lower Controller message
-    /**
-     * Relay DeviceProvider calls to RPC client.
-     */
-    private final class DeviceProviderServerProxy
-            implements DeviceProvider {
-
-        private final Logger log = LoggerFactory.getLogger(getClass());
-
-        // xid for isReachable calls
-        private final AtomicInteger xidPool = new AtomicInteger();
-        private final StreamObserver<DeviceProviderMsg> toDeviceProvider;
-
-        private DeviceProviderServiceServerProxy deviceProviderServiceProxy = null;
-        private ProviderId providerId;
-
-        DeviceProviderServerProxy(StreamObserver<DeviceProviderMsg> toDeviceProvider) {
-            this.toDeviceProvider = toDeviceProvider;
-        }
-
-        void setProviderId(ProviderId pid) {
-            this.providerId = pid;
-        }
-
-        /**
-         * Registers RPC stream in other direction.
-         *
-         * @param deviceProviderServiceProxy {@link DeviceProviderServiceServerProxy}
-         */
-        void pair(DeviceProviderServiceServerProxy deviceProviderServiceProxy) {
-            this.deviceProviderServiceProxy  = deviceProviderServiceProxy;
-        }
-
-        @Override
-        public void triggerProbe(DeviceId deviceId) {
-            try {
-                onTriggerProbe(deviceId);
-            } catch (Exception e) {
-                log.error("Exception caught handling triggerProbe({})",
-                          deviceId, e);
-                toDeviceProvider.onError(e);
-            }
-        }
-
-        private void onTriggerProbe(DeviceId deviceId) {
-            log.trace("triggerProbe({})", deviceId);
-            DeviceProviderMsg.Builder msgBuilder = DeviceProviderMsg.newBuilder();
-            msgBuilder.setTriggerProbe(msgBuilder.getTriggerProbeBuilder()
-                                       .setDeviceId(deviceId.toString())
-                                       .build());
-            DeviceProviderMsg triggerProbeMsg = msgBuilder.build();
-            toDeviceProvider.onNext(triggerProbeMsg);
-        }
-
-        @Override
-        public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
-            try {
-                onRoleChanged(deviceId, newRole);
-            } catch (Exception e) {
-                log.error("Exception caught handling onRoleChanged({}, {})",
-                          deviceId, newRole, e);
-                toDeviceProvider.onError(e);
-            }
-        }
-
-        private void onRoleChanged(DeviceId deviceId, MastershipRole newRole) {
-            log.trace("roleChanged({}, {})", deviceId, newRole);
-            DeviceProviderMsg.Builder msgBuilder = DeviceProviderMsg.newBuilder();
-            msgBuilder.setRoleChanged(msgBuilder.getRoleChangedBuilder()
-                                          .setDeviceId(deviceId.toString())
-                                          .setNewRole(MastershipRoleProtoTranslator.translate(newRole))
-                                          .build());
-            toDeviceProvider.onNext(msgBuilder.build());
-        }
-
-        @Override
-        public boolean isReachable(DeviceId deviceId) {
-            try {
-                return onIsReachable(deviceId);
-            } catch (Exception e) {
-                log.error("Exception caught handling onIsReachable({})",
-                          deviceId, e);
-                toDeviceProvider.onError(e);
-                return false;
-            }
-        }
-
-        private boolean onIsReachable(DeviceId deviceId) {
-
-            log.trace("isReachable({})", deviceId);
-            CompletableFuture<Boolean> result = new CompletableFuture<>();
-            final int xid = xidPool.incrementAndGet();
-
-            DeviceProviderMsg.Builder msgBuilder = DeviceProviderMsg.newBuilder();
-            msgBuilder.setIsReachableRequest(msgBuilder.getIsReachableRequestBuilder()
-                                                 .setXid(xid)
-                                                 .setDeviceId(deviceId.toString())
-                                                 .build());
-
-            // Associate xid and register above future some where
-            // in DeviceProviderService channel to receive reply
-            if (deviceProviderServiceProxy != null) {
-                deviceProviderServiceProxy.register(xid, result);
-            }
-
-            // send message down RPC
-            toDeviceProvider.onNext(msgBuilder.build());
-
-            // wait for reply
-            try {
-                return result.get(10, TimeUnit.SECONDS);
-            } catch (InterruptedException e) {
-                log.debug("isReachable({}) was Interrupted", deviceId, e);
-                Thread.currentThread().interrupt();
-            } catch (TimeoutException e) {
-                log.warn("isReachable({}) Timed out", deviceId, e);
-            } catch (ExecutionException e) {
-                log.error("isReachable({}) Execution failed", deviceId, e);
-                // close session
-                toDeviceProvider.onError(e);
-            }
-            return false;
-        }
-
-        @Override
-        public ProviderId id() {
-            return checkNotNull(providerId, "not initialized yet");
-        }
-
-        @Override
-        public void changePortState(DeviceId deviceId, PortNumber portNumber,
-                                    boolean enable) {
-            // TODO Implement if required
-            log.error("changePortState not supported yet");
-            toDeviceProvider.onError(new UnsupportedOperationException("not implemented yet"));
-        }
-
-    }
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderRegistryClientProxy.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderRegistryClientProxy.java
deleted file mode 100644
index 0dc5678..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderRegistryClientProxy.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.provider.AbstractProviderRegistry;
-
-import com.google.common.annotations.Beta;
-
-import io.grpc.Channel;
-
-/**
- * Proxy object to handle LinkProviderRegistry calls.
- */
-@Beta
-public class LinkProviderRegistryClientProxy
-    extends AbstractProviderRegistry<LinkProvider, LinkProviderService>
-    implements LinkProviderRegistry {
-
-    private final Channel channel;
-
-    public LinkProviderRegistryClientProxy(Channel channel) {
-        this.channel = checkNotNull(channel);
-    }
-
-    @Override
-    protected LinkProviderService createProviderService(LinkProvider provider) {
-        return new LinkProviderServiceClientProxy(provider, channel);
-    }
-
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceClientProxy.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceClientProxy.java
deleted file mode 100644
index d80fb8d..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceClientProxy.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import com.google.common.annotations.Beta;
-import com.google.common.util.concurrent.ListenableFuture;
-import io.grpc.Channel;
-import org.onosproject.grpc.net.link.LinkProviderServiceRpcGrpc;
-import org.onosproject.grpc.net.link.LinkProviderServiceRpcGrpc.LinkProviderServiceRpcFutureStub;
-import org.onosproject.grpc.net.link.LinkService.LinkDetectedMsg;
-import org.onosproject.grpc.net.link.LinkService.LinkVanishedMsg;
-import org.onosproject.grpc.net.link.LinkService.Void;
-import org.onosproject.grpc.net.link.models.LinkEnumsProto.LinkTypeProto;
-import org.onosproject.grpc.net.models.ConnectPointProtoOuterClass.ConnectPointProto;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link.Type;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.provider.AbstractProviderService;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import static org.onosproject.incubator.protobuf.models.net.LinkProtoTranslator.asMap;
-
-/**
- * Proxy object to handle LinkProviderService calls.
- *
- * RPC wise, this will initiate a RPC call on each method invocation.
- */
-@Beta
-class LinkProviderServiceClientProxy
-    extends AbstractProviderService<LinkProvider>
-    implements LinkProviderService {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private final Channel channel;
-
-    /**
-     * Constructs {@link LinkProviderServiceClientProxy}.
-     *
-     * @param provider {@link LinkProvider}. Only ProviderId scheme is used.
-     * @param channel channel to use to call RPC
-     */
-    protected LinkProviderServiceClientProxy(LinkProvider provider, Channel channel) {
-        super(provider);
-        this.channel = channel;
-    }
-
-    @Override
-    public void linkDetected(LinkDescription linkDescription) {
-        checkValidity();
-
-        LinkProviderServiceRpcFutureStub newStub = LinkProviderServiceRpcGrpc.newFutureStub(channel);
-        ListenableFuture<Void> future = newStub.linkDetected(detectMsg(provider().id(), linkDescription));
-
-        try {
-            // There's no need to wait, but just checking server
-            future.get(500, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            log.error("linkDetected({}) failed", linkDescription, e);
-            invalidate();
-            Thread.currentThread().interrupt();
-        } catch (ExecutionException | TimeoutException e) {
-            log.error("linkDetected({}) failed", linkDescription, e);
-            invalidate();
-        }
-    }
-
-    @Override
-    public void linkVanished(LinkDescription linkDescription) {
-        checkValidity();
-
-        LinkProviderServiceRpcFutureStub newStub = LinkProviderServiceRpcGrpc.newFutureStub(channel);
-        ListenableFuture<Void> future = newStub.linkVanished(vanishMsg(provider().id(), linkDescription));
-
-        try {
-            // There's no need to wait, but just checking server
-            future.get(500, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            log.error("linkVanished({}) failed", linkDescription, e);
-            invalidate();
-            Thread.currentThread().interrupt();
-        } catch (ExecutionException | TimeoutException e) {
-            log.error("linkVanished({}) failed", linkDescription, e);
-            invalidate();
-        }
-    }
-
-    @Override
-    public void linksVanished(ConnectPoint connectPoint) {
-        checkValidity();
-
-        LinkProviderServiceRpcFutureStub newStub = LinkProviderServiceRpcGrpc.newFutureStub(channel);
-        ListenableFuture<Void> future = newStub.linkVanished(vanishMsg(provider().id(), connectPoint));
-
-        try {
-            // There's no need to wait, but just checking server
-            future.get(500, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            log.error("linksVanished({}) failed", connectPoint, e);
-            invalidate();
-            Thread.currentThread().interrupt();
-        } catch (ExecutionException | TimeoutException e) {
-            log.error("linksVanished({}) failed", connectPoint, e);
-            invalidate();
-        }
-    }
-
-    @Override
-    public void linksVanished(DeviceId deviceId) {
-        checkValidity();
-
-        LinkProviderServiceRpcFutureStub newStub = LinkProviderServiceRpcGrpc.newFutureStub(channel);
-        ListenableFuture<Void> future = newStub.linkVanished(vanishMsg(provider().id(), deviceId));
-
-        try {
-            // There's no need to wait, but just checking server
-            future.get(500, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            log.error("linksVanished({}) failed", deviceId, e);
-            invalidate();
-            Thread.currentThread().interrupt();
-        } catch (ExecutionException | TimeoutException e) {
-            log.error("linksVanished({}) failed", deviceId, e);
-            invalidate();
-        }
-    }
-
-    /**
-     * Builds {@link LinkDetectedMsg}.
-     *
-     * @param id ProviderId
-     * @param linkDescription {@link LinkDescription}
-     * @return {@link LinkDetectedMsg}
-     */
-    private LinkDetectedMsg detectMsg(ProviderId id,
-                                      LinkDescription linkDescription) {
-        LinkDetectedMsg.Builder builder = LinkDetectedMsg.newBuilder();
-        builder.setProviderId(id.scheme())
-               .setLinkDescription(builder.getLinkDescriptionBuilder()
-                                    .setSrc(translate(linkDescription.src()))
-                                    .setDst(translate(linkDescription.dst()))
-                                    .setType(translate(linkDescription.type()))
-                                    .putAllAnnotations(asMap(linkDescription.annotations()))
-                                    .build()
-                                    );
-        return builder.build();
-    }
-
-    /**
-     * Builds {@link LinkVanishedMsg}.
-     *
-     * @param id ProviderId
-     * @param linkDescription {@link LinkDescription}
-     * @return {@link LinkVanishedMsg}
-     */
-    private LinkVanishedMsg vanishMsg(ProviderId id,
-                                      LinkDescription linkDescription) {
-
-        LinkVanishedMsg.Builder builder = LinkVanishedMsg.newBuilder();
-        builder.setProviderId(id.scheme())
-            .setLinkDescription(builder.getLinkDescriptionBuilder()
-                             .setSrc(translate(linkDescription.src()))
-                             .setDst(translate(linkDescription.dst()))
-                             .setType(translate(linkDescription.type()))
-                             .putAllAnnotations(asMap(linkDescription.annotations()))
-                             .build()
-                             );
-        return builder.build();
-    }
-
-    /**
-     * Builds {@link LinkVanishedMsg}.
-     *
-     * @param id ProviderId
-     * @param connectPoint {@link ConnectPoint}
-     * @return {@link LinkVanishedMsg}
-     */
-    private LinkVanishedMsg vanishMsg(ProviderId id,
-                                      ConnectPoint connectPoint) {
-
-        LinkVanishedMsg.Builder builder = LinkVanishedMsg.newBuilder();
-        builder.setProviderId(id.scheme())
-            .setConnectPoint(translate(connectPoint));
-        return builder.build();
-    }
-
-    /**
-     * Builds {@link LinkVanishedMsg}.
-     *
-     * @param id ProviderId
-     * @param deviceId {@link DeviceId}
-     * @return {@link LinkVanishedMsg}
-     */
-    private LinkVanishedMsg vanishMsg(ProviderId id, DeviceId deviceId) {
-
-        LinkVanishedMsg.Builder builder = LinkVanishedMsg.newBuilder();
-        builder.setProviderId(id.scheme())
-            .setDeviceId(deviceId.toString());
-        return builder.build();
-    }
-
-    /**
-     * Translates ONOS object to gRPC message.
-     *
-     * @param type {@link org.onosproject.net.Link.Type Link.Type}
-     * @return gRPC LinkTypeProto
-     */
-    private LinkTypeProto translate(Type type) {
-        switch (type) {
-        case DIRECT:
-            return LinkTypeProto.DIRECT;
-        case EDGE:
-            return LinkTypeProto.EDGE;
-        case INDIRECT:
-            return LinkTypeProto.INDIRECT;
-        case OPTICAL:
-            return LinkTypeProto.OPTICAL;
-        case TUNNEL:
-            return LinkTypeProto.TUNNEL;
-        case VIRTUAL:
-            return LinkTypeProto.VIRTUAL;
-
-        default:
-            return LinkTypeProto.DIRECT;
-
-        }
-    }
-
-    /**
-     * Translates ONOS object to gRPC message.
-     *
-     * @param cp {@link ConnectPoint}
-     * @return gRPC ConnectPointProto
-     */
-    private ConnectPointProto translate(ConnectPoint cp) {
-        return ConnectPointProto.newBuilder()
-                .setDeviceId(cp.deviceId().toString())
-                .setPortNumber(cp.port().toString())
-                .build();
-    }
-
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceServerProxy.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceServerProxy.java
deleted file mode 100644
index 55c93fb..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceServerProxy.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import com.google.common.annotations.Beta;
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.RemovalNotification;
-import io.grpc.stub.StreamObserver;
-import org.apache.commons.lang3.tuple.Pair;
-import org.onosproject.grpc.net.link.LinkProviderServiceRpcGrpc.LinkProviderServiceRpcImplBase;
-import org.onosproject.grpc.net.link.LinkService.LinkDetectedMsg;
-import org.onosproject.grpc.net.link.LinkService.LinkVanishedMsg;
-import org.onosproject.grpc.net.link.LinkService.Void;
-import org.onosproject.grpc.net.link.models.LinkDescriptionProtoOuterClass.LinkDescriptionProto;
-import org.onosproject.grpc.net.link.models.LinkEnumsProto.LinkTypeProto;
-import org.onosproject.grpc.net.models.ConnectPointProtoOuterClass.ConnectPointProto;
-import org.onosproject.grpc.net.models.ConnectPointProtoOuterClass.ConnectPointProto.ElementIdCase;
-import org.onosproject.incubator.protobuf.models.net.LinkProtoTranslator;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link.Type;
-import org.onosproject.net.LinkKey;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.SparseAnnotations;
-import org.onosproject.net.link.DefaultLinkDescription;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProviderService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.cache.RemovalListeners.asynchronous;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.LinkKey.linkKey;
-
-// Only single instance will be created and bound to gRPC LinkProviderService
-/**
- * Server-side implementation of gRPC version of LinkProviderService.
- */
-@Beta
-final class LinkProviderServiceServerProxy
-        extends LinkProviderServiceRpcImplBase {
-
-    /**
-     * Silence time in seconds, until link gets treated as vanished.
-     */
-    private static final int EVICT_LIMIT = 3 * 3;
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private final GrpcRemoteServiceServer server;
-
-    // TODO implement aging mechanism to automatically remove
-    // stale links reported by dead client, etc.
-    /**
-     * Evicting Cache to track last seen time.
-     */
-    private final Cache<Pair<String, LinkKey>, LinkDescription> lastSeen;
-
-    LinkProviderServiceServerProxy(GrpcRemoteServiceServer server) {
-        this.server = checkNotNull(server);
-        ScheduledExecutorService executor = server.getSharedExecutor();
-        lastSeen = CacheBuilder.newBuilder()
-                .expireAfterWrite(EVICT_LIMIT, TimeUnit.SECONDS)
-                .removalListener(asynchronous(this::onRemove, executor))
-                .build();
-
-        executor.scheduleWithFixedDelay(lastSeen::cleanUp,
-                                        EVICT_LIMIT, EVICT_LIMIT, TimeUnit.SECONDS);
-    }
-
-    private void onRemove(RemovalNotification<Pair<String, LinkKey>, LinkDescription> n) {
-        if (n.wasEvicted()) {
-            getLinkProviderServiceFor(n.getKey().getLeft())
-                .linkVanished(n.getValue());
-        }
-    }
-
-    /**
-     * Gets or creates {@link LinkProviderService} registered for given ProviderId scheme.
-     *
-     * @param scheme ProviderId scheme.
-     * @return {@link LinkProviderService}
-     */
-    private LinkProviderService getLinkProviderServiceFor(String scheme) {
-        return server.getLinkProviderServiceFor(scheme);
-    }
-
-    @Override
-    public void linkDetected(LinkDetectedMsg request,
-                             StreamObserver<Void> responseObserver) {
-
-        try {
-            onLinkDetected(request, responseObserver);
-            // If onNext call was not mandatory, it can be removed.
-            responseObserver.onNext(Void.getDefaultInstance());
-            responseObserver.onCompleted();
-        } catch (Exception e) {
-            log.error("Exception caught", e);
-            responseObserver.onError(e);
-        }
-    }
-
-    private void onLinkDetected(LinkDetectedMsg request,
-                                StreamObserver<Void> responseObserver) {
-        String scheme = request.getProviderId();
-
-        LinkProviderService linkProviderService = getLinkProviderServiceFor(scheme);
-
-        LinkDescription linkDescription = translate(request.getLinkDescription());
-        linkProviderService.linkDetected(linkDescription);
-        lastSeen.put(Pair.of(scheme, linkKey(linkDescription)), linkDescription);
-    }
-
-    @Override
-    public void linkVanished(LinkVanishedMsg request,
-                             StreamObserver<Void> responseObserver) {
-        try {
-            onLinksVanished(request, responseObserver);
-            // If onNext call was not mandatory, it can be removed.
-            responseObserver.onNext(Void.getDefaultInstance());
-            responseObserver.onCompleted();
-        } catch (Exception e) {
-            log.error("Exception caught", e);
-            responseObserver.onError(e);
-        }
-    }
-
-    private void onLinksVanished(LinkVanishedMsg request,
-                                 StreamObserver<Void> responseObserver) {
-        String scheme = request.getProviderId();
-        switch (request.getSubjectCase()) {
-        case CONNECT_POINT:
-            ConnectPoint cp = translate(request.getConnectPoint());
-            getLinkProviderServiceFor(scheme).linksVanished(cp);
-            break;
-        case DEVICE_ID:
-            DeviceId did = deviceId(request.getDeviceId());
-            getLinkProviderServiceFor(scheme).linksVanished(did);
-            break;
-        case LINK_DESCRIPTION:
-            LinkDescription desc = translate(request.getLinkDescription());
-            getLinkProviderServiceFor(scheme).linkVanished(desc);
-            lastSeen.invalidate(Pair.of(scheme, linkKey(desc)));
-            break;
-        case SUBJECT_NOT_SET:
-        default:
-            // do nothing
-            break;
-        }
-    }
-
-    /**
-     * Translates gRPC message to corresponding ONOS object.
-     *
-     * @param connectPoint gRPC message.
-     * @return {@link ConnectPoint}
-     */
-    private ConnectPoint translate(ConnectPointProto connectPoint) {
-        checkArgument(connectPoint.getElementIdCase() == ElementIdCase.DEVICE_ID,
-                      "Only DeviceId supported.");
-        return new ConnectPoint(deviceId(connectPoint.getDeviceId()),
-                                PortNumber.fromString(connectPoint.getPortNumber()));
-    }
-
-    /**
-     * Translates gRPC message to corresponding ONOS object.
-     *
-     * @param linkDescription gRPC message
-     * @return {@link LinkDescription}
-     */
-    private LinkDescription translate(LinkDescriptionProto linkDescription) {
-        ConnectPoint src = translate(linkDescription.getSrc());
-        ConnectPoint dst = translate(linkDescription.getDst());
-        Type type = translate(linkDescription.getType());
-        SparseAnnotations annotations = LinkProtoTranslator.asAnnotations(linkDescription.getAnnotations());
-        return new DefaultLinkDescription(src, dst, type, annotations);
-    }
-
-    /**
-     * Translates gRPC message to corresponding ONOS object.
-     *
-     * @param type gRPC message enum
-     * @return {@link Type Link.Type}
-     */
-    private Type translate(LinkTypeProto type) {
-        switch (type) {
-        case DIRECT:
-            return Type.DIRECT;
-        case EDGE:
-            return Type.EDGE;
-        case INDIRECT:
-            return Type.INDIRECT;
-        case OPTICAL:
-            return Type.INDIRECT;
-        case TUNNEL:
-            return Type.TUNNEL;
-        case VIRTUAL:
-            return Type.VIRTUAL;
-
-        case UNRECOGNIZED:
-        default:
-            return Type.DIRECT;
-        }
-    }
-
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/StubLinkProvider.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/StubLinkProvider.java
deleted file mode 100644
index bf8145b..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/StubLinkProvider.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
-
-/**
- * Stub LinkProvider to be registered on Server-side.
- */
-@Beta
-final class StubLinkProvider extends AbstractProvider implements LinkProvider {
-    protected StubLinkProvider(String scheme) {
-        super(new ProviderId(scheme, GrpcRemoteServiceServer.RPC_PROVIDER_NAME));
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-                .add("id", id())
-                .toString();
-    }
-}
diff --git a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/package-info.java b/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/package-info.java
deleted file mode 100644
index e837950..0000000
--- a/graveyard/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * gRPC based RemoteServiceProvider implementation.
- */
-package org.onosproject.incubator.rpc.grpc;
diff --git a/graveyard/rpc-grpc/src/main/proto/DeviceService.proto b/graveyard/rpc-grpc/src/main/proto/DeviceService.proto
deleted file mode 100644
index 023af13..0000000
--- a/graveyard/rpc-grpc/src/main/proto/DeviceService.proto
+++ /dev/null
@@ -1,101 +0,0 @@
-syntax = "proto3";
-option java_package = "org.onosproject.grpc.net.device";
-
-import "net/device/DeviceDescriptionProto.proto";
-import "net/device/PortDescriptionProto.proto";
-import "net/device/PortStatisticsProto.proto";
-import "net/MastershipRoleProto.proto";
-
-package Device;
-
-message DeviceConnected {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-  net.device.DeviceDescriptionProto device_description = 2;
-}
-
-message DeviceDisconnected {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-}
-
-message UpdatePorts {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-  repeated net.device.PortDescriptionProto port_descriptions= 2;
-}
-
-message PortStatusChanged {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-  net.device.PortDescriptionProto port_description= 2;
-}
-
-message ReceivedRoleReply {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-  net.MastershipRoleProto requested = 2;
-  net.MastershipRoleProto response = 3;
-}
-
-message UpdatePortStatistics {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-  repeated net.device.PortStatisticsProto port_statistics = 2;
-}
-
-message RegisterProvider {
-  // DeviceProvider's ProviderId scheme
-  string provider_scheme = 1;
-}
-
-message DeviceProviderServiceMsg {
-  oneof method {
-    DeviceConnected device_connected= 1;
-    DeviceDisconnected device_disconnected = 2;
-    UpdatePorts update_ports= 3;
-    PortStatusChanged port_status_changed = 4;
-    ReceivedRoleReply received_role_reply = 5;
-    UpdatePortStatistics update_port_statistics = 6;
-
-    // This message is for return value of DeviceProvider#isReachable
-    IsReachableResponse is_reachable_response = 7;
-
-    // This MUST be the 1st message over the stream
-    RegisterProvider register_provider = 8;
-  }
-}
-
-message TriggerProbe {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-}
-
-message RoleChanged {
-  // DeviceID as String DeviceId#toString
-  string device_id = 1;
-  net.MastershipRoleProto new_role = 2;
-}
-
-message IsReachableRequest {
-  int32 xid = 1;
-  // DeviceID as String DeviceId#toString
-  string device_id = 2;
-}
-
-message IsReachableResponse {
-  int32 xid = 1;
-  bool is_reachable = 2;
-}
-
-message DeviceProviderMsg {
-  oneof method {
-    TriggerProbe trigger_probe = 1;
-    RoleChanged role_changed = 2;
-    IsReachableRequest is_reachable_request= 3;
-  }
-}
-
-service DeviceProviderRegistryRpc {
-  rpc Register(stream DeviceProviderServiceMsg) returns (stream DeviceProviderMsg);
-}
diff --git a/graveyard/rpc-grpc/src/main/proto/LinkService.proto b/graveyard/rpc-grpc/src/main/proto/LinkService.proto
deleted file mode 100644
index e211e11..0000000
--- a/graveyard/rpc-grpc/src/main/proto/LinkService.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-syntax = "proto3";
-option java_package = "org.onosproject.grpc.net.link";
-
-import "net/link/LinkDescriptionProto.proto";
-import "net/ConnectPointProto.proto";
-
-package Link;
-
-// Message to represent no return value
-message Void {}
-
-message LinkDetectedMsg {
-  // ProviderId scheme only
-  string provider_id = 1;
-  net.link.LinkDescriptionProto link_description = 2;
-}
-
-message LinkVanishedMsg {
-  // ProviderId scheme only
-  string provider_id = 1;
-  oneof subject {
-    net.link.LinkDescriptionProto link_description = 2;
-    net.ConnectPointProto connect_point = 3;
-    string device_id = 4;
-  }
-}
-
-service LinkProviderServiceRpc {
-  rpc LinkDetected(LinkDetectedMsg) returns (Void);
-  rpc LinkVanished(LinkVanishedMsg) returns (Void);
-}
diff --git a/graveyard/rpc-grpc/src/test/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceTest.java b/graveyard/rpc-grpc/src/test/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceTest.java
deleted file mode 100644
index 8990b6e..0000000
--- a/graveyard/rpc-grpc/src/test/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceTest.java
+++ /dev/null
@@ -1,578 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.grpc;
-
-import static org.junit.Assert.*;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.PortNumber.portNumber;
-
-import java.net.URI;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.junit.TestTools;
-import org.onlab.packet.ChassisId;
-import org.onosproject.incubator.rpc.RemoteServiceContext;
-import org.onosproject.incubator.rpc.RemoteServiceContextProvider;
-import org.onosproject.incubator.rpc.RemoteServiceContextProviderService;
-import org.onosproject.incubator.rpc.RemoteServiceProviderRegistry;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.Device.Type;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.SparseAnnotations;
-import org.onosproject.net.device.DefaultDeviceDescription;
-import org.onosproject.net.device.DefaultPortDescription;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.PortDescription;
-import org.onosproject.net.device.PortStatistics;
-import org.onosproject.net.link.DefaultLinkDescription;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.provider.AbstractProviderRegistry;
-import org.onosproject.net.provider.AbstractProviderService;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * Set of tests of the gRPC RemoteService components.
- */
-public class GrpcRemoteServiceTest {
-
-    private static final DeviceId DEVICE_ID = deviceId("dev:000001");
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private static final ProviderId PID = new ProviderId("test", "com.example.test");
-
-    private static final URI DURI = URI.create("dev:000001");
-
-    private static final String MFR = "mfr";
-
-    private static final String HW = "hw";
-
-    private static final String SW = "sw";
-
-    private static final String SN = "serial";
-
-    private static final ChassisId CHASSIS = new ChassisId(42);
-
-    private static final SparseAnnotations ANON = DefaultAnnotations.builder()
-                                                    .set("foo", "var")
-                                                    .build();
-
-    private static final PortNumber PORT = PortNumber.portNumber(99);
-
-    private static final DeviceDescription DDESC
-        = new DefaultDeviceDescription(DURI, Type.SWITCH, MFR, HW, SW, SN,
-                                       CHASSIS, ANON);
-
-    private GrpcRemoteServiceServer server;
-    private GrpcRemoteServiceProvider client;
-
-    private DeviceProvider svSideDeviceProvider;
-
-    private MTestDeviceProviderService svDeviceProviderService;
-
-    private ServerSideLinkProviderService svLinkProviderService;
-
-
-    private CountDownLatch serverReady;
-
-    private URI uri;
-
-    @Before
-    public void setUp() throws Exception {
-        serverReady = new CountDownLatch(1);
-        server = new GrpcRemoteServiceServer();
-        server.deviceProviderRegistry = new MTestDeviceProviderRegistry();
-        server.linkProviderRegistry = new ServerSideLinkProviderRegistry();
-        server.listenPort = TestTools.findAvailablePort(11984);
-        uri = URI.create("grpc://localhost:" + server.listenPort);
-        // todo: pass proper ComponentContext
-        server.activate(null);
-
-        client = new GrpcRemoteServiceProvider();
-        client.rpcRegistry = new NoOpRemoteServiceProviderRegistry();
-        client.activate();
-    }
-
-    @After
-    public void tearDown() {
-        client.deactivate();
-        server.deactivate();
-        svLinkProviderService = null;
-    }
-
-    private static void assertEqualsButNotSame(Object expected, Object actual) {
-        assertEquals(expected, actual);
-        assertNotSame("Cannot be same instance if it properly went through gRPC",
-                      expected, actual);
-    }
-
-    @Test
-    public void deviceServiceBasics() throws InterruptedException {
-        RemoteServiceContext remoteServiceContext = client.get(uri);
-        assertNotNull(remoteServiceContext);
-
-        DeviceProviderRegistry deviceProviderRegistry = remoteServiceContext.get(DeviceProviderRegistry.class);
-        assertNotNull(deviceProviderRegistry);
-
-        CTestDeviceProvider clDeviceProvider = new CTestDeviceProvider();
-        DeviceProviderService clDeviceProviderService = deviceProviderRegistry.register(clDeviceProvider);
-
-        assertTrue(serverReady.await(10, TimeUnit.SECONDS));
-
-        // client to server communication
-        clDeviceProviderService.deviceConnected(DEVICE_ID, DDESC);
-        assertTrue(svDeviceProviderService.deviceConnected.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(DEVICE_ID, svDeviceProviderService.deviceConnectedDid);
-        assertEqualsButNotSame(DDESC, svDeviceProviderService.deviceConnectedDesc);
-
-        PortDescription portDescription = DefaultPortDescription.builder().withPortNumber(PORT)
-                .isEnabled(true).annotations(ANON).build();
-        List<PortDescription> portDescriptions = ImmutableList.of(portDescription);
-        clDeviceProviderService.updatePorts(DEVICE_ID, portDescriptions);
-        assertTrue(svDeviceProviderService.updatePorts.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(DEVICE_ID, svDeviceProviderService.updatePortsDid);
-        assertEqualsButNotSame(portDescriptions, svDeviceProviderService.updatePortsDescs);
-
-        MastershipRole cRole = MastershipRole.MASTER;
-        MastershipRole dRole = MastershipRole.STANDBY;
-        clDeviceProviderService.receivedRoleReply(DEVICE_ID, cRole, dRole);
-        assertTrue(svDeviceProviderService.receivedRoleReply.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(DEVICE_ID, svDeviceProviderService.receivedRoleReplyDid);
-        assertEquals(cRole, svDeviceProviderService.receivedRoleReplyRequested);
-        assertEquals(dRole, svDeviceProviderService.receivedRoleReplyResponse);
-
-        clDeviceProviderService.portStatusChanged(DEVICE_ID, portDescription);
-        assertTrue(svDeviceProviderService.portStatusChanged.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(DEVICE_ID, svDeviceProviderService.portStatusChangedDid);
-        assertEqualsButNotSame(portDescription, svDeviceProviderService.portStatusChangedDesc);
-
-        Collection<PortStatistics> portStatistics = Collections.emptyList();
-        clDeviceProviderService.updatePortStatistics(DEVICE_ID, portStatistics);
-        assertTrue(svDeviceProviderService.updatePortStatistics.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(DEVICE_ID, svDeviceProviderService.updatePortStatisticsDid);
-        assertEqualsButNotSame(portStatistics, svDeviceProviderService.updatePortStatisticsStats);
-
-        clDeviceProviderService.deviceDisconnected(DEVICE_ID);
-        assertTrue(svDeviceProviderService.deviceDisconnected.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(DEVICE_ID, svDeviceProviderService.deviceDisconnectedDid);
-
-
-
-        // server to client communication
-        svSideDeviceProvider.triggerProbe(DEVICE_ID);
-        assertTrue(clDeviceProvider.triggerProbe.await(10, TimeUnit.SECONDS));
-        assertEquals(DEVICE_ID, clDeviceProvider.triggerProbeDid);
-        assertNotSame("Cannot be same instance if it properly went through gRPC",
-                      DEVICE_ID, clDeviceProvider.triggerProbeDid);
-
-        svSideDeviceProvider.roleChanged(DEVICE_ID, MastershipRole.STANDBY);
-        assertTrue(clDeviceProvider.roleChanged.await(10, TimeUnit.SECONDS));
-        assertEquals(DEVICE_ID, clDeviceProvider.roleChangedDid);
-        assertNotSame("Cannot be same instance if it properly went through gRPC",
-                      DEVICE_ID, clDeviceProvider.roleChangedDid);
-        assertEquals(MastershipRole.STANDBY, clDeviceProvider.roleChangedNewRole);
-
-        clDeviceProvider.isReachableReply = false;
-        assertEquals(clDeviceProvider.isReachableReply,
-                     svSideDeviceProvider.isReachable(DEVICE_ID));
-        assertTrue(clDeviceProvider.isReachable.await(10, TimeUnit.SECONDS));
-        assertEquals(DEVICE_ID, clDeviceProvider.isReachableDid);
-        assertNotSame("Cannot be same instance if it properly went through gRPC",
-                      DEVICE_ID, clDeviceProvider.isReachableDid);
-    }
-
-    @Test
-    public void linkVanishedDevice() throws InterruptedException {
-        RemoteServiceContext remoteServiceContext = client.get(uri);
-        assertNotNull(remoteServiceContext);
-
-        LinkProviderRegistry providerRegistry = remoteServiceContext.get(LinkProviderRegistry.class);
-        assertNotNull(providerRegistry);
-
-        final String schemeTest = "test";
-        LinkProviderService client = providerRegistry.register(new StubLinkProvider(schemeTest));
-        assertNotNull(client);
-
-        client.linksVanished(DEVICE_ID);
-
-        assertEquals(schemeTest, svLinkProviderService.provider().id().scheme());
-        assertTrue(svLinkProviderService.calls.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(DEVICE_ID, svLinkProviderService.arg);
-    }
-
-    @Test
-    public void linkVanishedPort() throws InterruptedException {
-        RemoteServiceContext remoteServiceContext = client.get(uri);
-        assertNotNull(remoteServiceContext);
-
-        LinkProviderRegistry providerRegistry = remoteServiceContext.get(LinkProviderRegistry.class);
-        assertNotNull(providerRegistry);
-
-        final String schemeTest = "test";
-        LinkProviderService client = providerRegistry.register(new StubLinkProvider(schemeTest));
-        assertNotNull(client);
-
-
-        final ConnectPoint cp = new ConnectPoint(DEVICE_ID, PORT);
-        client.linksVanished(cp);
-        assertEquals(schemeTest, svLinkProviderService.provider().id().scheme());
-        assertTrue(svLinkProviderService.calls.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(cp, svLinkProviderService.arg);
-    }
-
-    @Test
-    public void linkVanishedDescription() throws InterruptedException {
-        RemoteServiceContext remoteServiceContext = client.get(uri);
-        assertNotNull(remoteServiceContext);
-
-        LinkProviderRegistry providerRegistry = remoteServiceContext.get(LinkProviderRegistry.class);
-        assertNotNull(providerRegistry);
-
-        final String schemeTest = "test";
-        LinkProviderService client = providerRegistry.register(new StubLinkProvider(schemeTest));
-        assertNotNull(client);
-
-        ConnectPoint src = new ConnectPoint(deviceId("dev:1"), portNumber(10));
-        ConnectPoint dst = new ConnectPoint(deviceId("dev:2"), portNumber(20));
-        LinkDescription linkDescription = new DefaultLinkDescription(src, dst, Link.Type.DIRECT, ANON);
-        client.linkVanished(linkDescription);
-        assertEquals(schemeTest, svLinkProviderService.provider().id().scheme());
-        assertTrue(svLinkProviderService.calls.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(linkDescription, svLinkProviderService.arg);
-    }
-
-    @Test
-    public void linkDetected() throws InterruptedException {
-        RemoteServiceContext remoteServiceContext = client.get(uri);
-        assertNotNull(remoteServiceContext);
-
-        LinkProviderRegistry providerRegistry = remoteServiceContext.get(LinkProviderRegistry.class);
-        assertNotNull(providerRegistry);
-
-        final String schemeTest = "test";
-        LinkProviderService client = providerRegistry.register(new StubLinkProvider(schemeTest));
-        assertNotNull(client);
-
-        ConnectPoint src = new ConnectPoint(deviceId("dev:1"), portNumber(10));
-        ConnectPoint dst = new ConnectPoint(deviceId("dev:2"), portNumber(20));
-        LinkDescription linkDescription = new DefaultLinkDescription(src, dst, Link.Type.DIRECT, ANON);
-        client.linkDetected(linkDescription);
-        assertEquals(schemeTest, svLinkProviderService.provider().id().scheme());
-        assertTrue(svLinkProviderService.calls.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(linkDescription, svLinkProviderService.arg);
-    }
-
-    @Test
-    public void linkServiceBasics() throws InterruptedException {
-        RemoteServiceContext remoteServiceContext = client.get(uri);
-        assertNotNull(remoteServiceContext);
-
-        LinkProviderRegistry providerRegistry = remoteServiceContext.get(LinkProviderRegistry.class);
-        assertNotNull(providerRegistry);
-
-        final String schemeTest = "test";
-        LinkProviderService client = providerRegistry.register(new StubLinkProvider(schemeTest));
-        assertNotNull(client);
-
-        ConnectPoint src = new ConnectPoint(deviceId("dev:1"), portNumber(10));
-        ConnectPoint dst = new ConnectPoint(deviceId("dev:2"), portNumber(20));
-        LinkDescription linkDescription = new DefaultLinkDescription(src, dst, Link.Type.DIRECT, ANON);
-
-        client.linkDetected(linkDescription);
-        assertEquals(schemeTest, svLinkProviderService.provider().id().scheme());
-        assertTrue(svLinkProviderService.calls.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(linkDescription, svLinkProviderService.arg);
-
-        svLinkProviderService.reset();
-
-        client.linkVanished(linkDescription);
-        assertEquals(schemeTest, svLinkProviderService.provider().id().scheme());
-        assertTrue(svLinkProviderService.calls.await(10, TimeUnit.SECONDS));
-        assertEqualsButNotSame(linkDescription, svLinkProviderService.arg);
-    }
-
-    /**
-     * Device Provider on CO side.
-     */
-    public class CTestDeviceProvider implements DeviceProvider {
-
-        final CountDownLatch triggerProbe = new CountDownLatch(1);
-        DeviceId triggerProbeDid;
-
-        final CountDownLatch roleChanged = new CountDownLatch(1);
-        DeviceId roleChangedDid;
-        MastershipRole roleChangedNewRole;
-
-        final CountDownLatch isReachable = new CountDownLatch(1);
-        DeviceId isReachableDid;
-        boolean isReachableReply = false;
-
-        final CountDownLatch portStateChanged = new CountDownLatch(1);
-        DeviceId portStateChangedDid;
-        PortNumber portStateChangedPort;
-
-        @Override
-        public ProviderId id() {
-            return PID;
-        }
-
-        @Override
-        public void triggerProbe(DeviceId deviceId) {
-            log.info("triggerProbe({}) on Client called", deviceId);
-            triggerProbeDid = deviceId;
-            triggerProbe.countDown();
-        }
-
-        @Override
-        public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
-            log.info("roleChanged({},{}) on Client called", deviceId, newRole);
-            roleChangedDid = deviceId;
-            roleChangedNewRole = newRole;
-            roleChanged.countDown();
-        }
-
-        @Override
-        public boolean isReachable(DeviceId deviceId) {
-            log.info("isReachable({}) on Client called", deviceId);
-            isReachableDid = deviceId;
-            isReachable.countDown();
-            return isReachableReply;
-        }
-
-        @Override
-        public void changePortState(DeviceId deviceId, PortNumber portNumber,
-                                    boolean enable) {
-            log.info("portState change to {} on ({},{}) on Client called", enable,
-                     deviceId, portNumber);
-            portStateChangedDid = deviceId;
-            portStateChangedPort = portNumber;
-            portStateChanged.countDown();
-
-        }
-
-    }
-
-    class NoOpRemoteServiceProviderRegistry
-        implements RemoteServiceProviderRegistry {
-
-        @Override
-        public RemoteServiceContextProviderService register(RemoteServiceContextProvider provider) {
-            return new RemoteServiceContextProviderService() {
-
-                @Override
-                public RemoteServiceContextProvider provider() {
-                    return provider;
-                }
-            };
-        }
-
-        @Override
-        public void unregister(RemoteServiceContextProvider provider) {
-        }
-
-        @Override
-        public Set<ProviderId> getProviders() {
-            return Collections.emptySet();
-        }
-    }
-
-    /**
-     * DeviceProvider on Metro side.
-     */
-    public class MTestDeviceProviderRegistry
-        extends AbstractProviderRegistry<DeviceProvider, DeviceProviderService>
-        implements DeviceProviderRegistry {
-
-        @Override
-        protected DeviceProviderService createProviderService(DeviceProvider provider) {
-            log.info("createProviderService({})", provider);
-            svSideDeviceProvider = provider;
-            svDeviceProviderService = new MTestDeviceProviderService(provider);
-            serverReady.countDown();
-            return svDeviceProviderService;
-        }
-
-    }
-
-    private final class MTestDeviceProviderService
-            extends AbstractProviderService<DeviceProvider>
-            implements DeviceProviderService {
-
-        public MTestDeviceProviderService(DeviceProvider provider) {
-            super(provider);
-        }
-
-
-        final CountDownLatch deviceConnected = new CountDownLatch(1);
-        DeviceId deviceConnectedDid;
-        DeviceDescription deviceConnectedDesc;
-
-        @Override
-        public void deviceConnected(DeviceId deviceId,
-                                    DeviceDescription deviceDescription) {
-            log.info("deviceConnected({}, {}) on Server called", deviceId, deviceDescription);
-            deviceConnectedDid = deviceId;
-            deviceConnectedDesc = deviceDescription;
-            deviceConnected.countDown();
-        }
-
-        final CountDownLatch updatePorts = new CountDownLatch(1);
-        DeviceId updatePortsDid;
-        List<PortDescription> updatePortsDescs;
-
-        @Override
-        public void updatePorts(DeviceId deviceId,
-                                List<PortDescription> portDescriptions) {
-            log.info("updatePorts({}, {}) on Server called", deviceId, portDescriptions);
-            updatePortsDid = deviceId;
-            updatePortsDescs = portDescriptions;
-            updatePorts.countDown();
-        }
-
-        final CountDownLatch receivedRoleReply = new CountDownLatch(1);
-        DeviceId receivedRoleReplyDid;
-        MastershipRole receivedRoleReplyRequested;
-        MastershipRole receivedRoleReplyResponse;
-
-        @Override
-        public void receivedRoleReply(DeviceId deviceId, MastershipRole requested,
-                                      MastershipRole response) {
-            log.info("receivedRoleReply({}, {}, {}) on Server called", deviceId, requested, response);
-            receivedRoleReplyDid = deviceId;
-            receivedRoleReplyRequested = requested;
-            receivedRoleReplyResponse = response;
-            receivedRoleReply.countDown();
-        }
-
-        final CountDownLatch portStatusChanged = new CountDownLatch(1);
-        DeviceId portStatusChangedDid;
-        PortDescription portStatusChangedDesc;
-
-
-        @Override
-        public void portStatusChanged(DeviceId deviceId,
-                                      PortDescription portDescription) {
-            log.info("portStatusChanged({}, {}) on Server called", deviceId, portDescription);
-            portStatusChangedDid = deviceId;
-            portStatusChangedDesc = portDescription;
-            portStatusChanged.countDown();
-        }
-
-        final CountDownLatch updatePortStatistics = new CountDownLatch(1);
-        DeviceId updatePortStatisticsDid;
-        Collection<PortStatistics> updatePortStatisticsStats;
-
-
-        @Override
-        public void updatePortStatistics(DeviceId deviceId,
-                                         Collection<PortStatistics> portStatistics) {
-            log.info("updatePortStatistics({}, {}) on Server called", deviceId, portStatistics);
-            updatePortStatisticsDid = deviceId;
-            updatePortStatisticsStats = portStatistics;
-            updatePortStatistics.countDown();
-        }
-
-        final CountDownLatch deviceDisconnected = new CountDownLatch(1);
-        DeviceId deviceDisconnectedDid;
-
-        @Override
-        public void deviceDisconnected(DeviceId deviceId) {
-            log.info("deviceDisconnected({}) on Server called", deviceId);
-            deviceDisconnectedDid = deviceId;
-            deviceDisconnected.countDown();
-        }
-    }
-
-    public class ServerSideLinkProviderRegistry
-            extends AbstractProviderRegistry<LinkProvider, LinkProviderService>
-            implements LinkProviderRegistry {
-
-        @Override
-        protected LinkProviderService createProviderService(LinkProvider provider) {
-            svLinkProviderService = new ServerSideLinkProviderService(provider);
-            return svLinkProviderService;
-        }
-
-    }
-
-    public class ServerSideLinkProviderService
-            extends AbstractProviderService<LinkProvider>
-            implements LinkProviderService {
-
-        CountDownLatch calls = new CountDownLatch(1);
-        Object arg = null;
-
-        public void reset() {
-            calls = new CountDownLatch(1);
-            arg = null;
-        }
-
-        public ServerSideLinkProviderService(LinkProvider provider) {
-            super(provider);
-        }
-
-        @Override
-        public void linksVanished(DeviceId deviceId) {
-            log.info("linksVanished({})", deviceId);
-            arg = deviceId;
-            calls.countDown();
-        }
-
-        @Override
-        public void linksVanished(ConnectPoint connectPoint) {
-            log.info("linksVanished({})", connectPoint);
-            arg = connectPoint;
-            calls.countDown();
-        }
-
-        @Override
-        public void linkVanished(LinkDescription linkDescription) {
-            log.info("linksVanished({})", linkDescription);
-            arg = linkDescription;
-            calls.countDown();
-        }
-
-        @Override
-        public void linkDetected(LinkDescription linkDescription) {
-            log.info("linkDetected({})", linkDescription);
-            arg = linkDescription;
-            calls.countDown();
-        }
-    }
-
-}
diff --git a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/impl/GrpcServer.java b/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/impl/GrpcServer.java
deleted file mode 100644
index 4ea8e50..0000000
--- a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/impl/GrpcServer.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.incubator.rpc.nb.impl;
-
-import io.grpc.Server;
-import io.grpc.netty.NettyServerBuilder;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onosproject.incubator.rpc.nb.mcast.MulticastRouteGrpcService;
-import org.onosproject.net.mcast.MulticastRouteService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-/**
- * gRPC server for northbound APIs.
- */
-@Component(immediate = true)
-public class GrpcServer {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected MulticastRouteService multicastRouteService;
-
-    // TODO make configurable
-    private int port = 50051;
-
-    private Server server;
-
-    @Activate
-    public void activate() {
-        start();
-        log.info("Started");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        stop();
-        log.info("Stopped");
-    }
-
-    private void start() {
-        try {
-            server = NettyServerBuilder.forPort(port)
-                    .addService(new MulticastRouteGrpcService(multicastRouteService))
-                    .build()
-                    .start();
-            log.info("gRPC server started listening on " + port);
-        } catch (IOException e) {
-            log.error("Failed to start gRPC server", e);
-        }
-    }
-
-    private void stop() {
-        if (server != null) {
-            server.shutdown();
-        }
-    }
-}
diff --git a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/impl/package-info.java b/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/impl/package-info.java
deleted file mode 100644
index ca2f905..0000000
--- a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Northbound gPRC implementation.
- */
-package org.onosproject.incubator.rpc.nb.impl;
diff --git a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/mcast/MulticastRouteGrpcService.java b/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/mcast/MulticastRouteGrpcService.java
deleted file mode 100644
index f3f6e8c..0000000
--- a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/mcast/MulticastRouteGrpcService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.incubator.rpc.nb.mcast;
-
-import io.grpc.stub.StreamObserver;
-import org.onlab.packet.IpAddress;
-import org.onosproject.grpc.net.mcast.MulticastRouteServiceGrpc;
-import org.onosproject.grpc.net.mcast.MulticastRouteServiceOuterClass;
-import org.onosproject.net.mcast.McastRoute;
-import org.onosproject.net.mcast.MulticastRouteService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Implementation of multicast gRPC service.
- */
-@Beta
-public class MulticastRouteGrpcService
-    extends MulticastRouteServiceGrpc.MulticastRouteServiceImplBase {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private final MulticastRouteService multicastRouteService;
-
-    public MulticastRouteGrpcService(MulticastRouteService service) {
-        this.multicastRouteService = service;
-    }
-
-    @Override
-    public StreamObserver<MulticastRouteServiceOuterClass.MulticastRequest>
-            operation(StreamObserver<MulticastRouteServiceOuterClass.MulticastReply> responseObserver) {
-
-        return new MulticastServiceServerProxy(responseObserver);
-    }
-
-    private final class MulticastServiceServerProxy
-            implements StreamObserver<MulticastRouteServiceOuterClass.MulticastRequest> {
-
-        private final StreamObserver<MulticastRouteServiceOuterClass.MulticastReply> responseObserver;
-
-        public MulticastServiceServerProxy(
-                StreamObserver<MulticastRouteServiceOuterClass.MulticastReply> responseObserver) {
-            this.responseObserver = responseObserver;
-        }
-
-        @Override
-        public void onNext(MulticastRouteServiceOuterClass.MulticastRequest value) {
-            MulticastRouteServiceOuterClass.MulticastRoute route = value.getRoute();
-
-            switch (value.getOperation()) {
-            case ADD_ROUTE:
-                multicastRouteService.add(
-                        new McastRoute(IpAddress.valueOf(route.getSource()),
-                                IpAddress.valueOf(route.getGroup()),
-                                McastRoute.Type.STATIC));
-                break;
-            case ADD_SOURCE:
-                break;
-            case ADD_SINK:
-                break;
-            case REMOVE_ROUTE:
-                break;
-            case REMOVE_SOURCE:
-                break;
-            case REMOVE_SINK:
-                break;
-            case UNRECOGNIZED:
-            default:
-                break;
-            }
-
-            responseObserver.onNext(MulticastRouteServiceOuterClass.MulticastReply.newBuilder().build());
-        }
-
-        @Override
-        public void onError(Throwable t) {
-            log.warn("Error receiving multicast route", t);
-        }
-
-        @Override
-        public void onCompleted() {
-            // When the client closes their stream, we'll close ours too
-            responseObserver.onCompleted();
-        }
-    }
-}
diff --git a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/mcast/package-info.java b/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/mcast/package-info.java
deleted file mode 100644
index 60fc7d0..0000000
--- a/graveyard/rpc-nb/src/main/java/org/onosproject/incubator/rpc/nb/mcast/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Multicast gRPC implementation.
- */
-package org.onosproject.incubator.rpc.nb.mcast;
diff --git a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/AbstractProviderRegistry.java b/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/AbstractProviderRegistry.java
deleted file mode 100644
index 2638064..0000000
--- a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/AbstractProviderRegistry.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.impl;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.onosproject.incubator.rpc.RemoteServiceContextProvider;
-import org.onosproject.incubator.rpc.RemoteServiceContextProviderService;
-import org.onosproject.incubator.rpc.RemoteServiceProviderRegistry;
-import org.onosproject.net.provider.ProviderId;
-
-import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
-
-// Probably should change name or add missing feature (provider from scheme) to
-//  org.onosproject.net.provider.AbstractProviderRegistry<P, S>
-@Beta
-abstract class AbstractProviderRegistry
-    implements RemoteServiceProviderRegistry {
-
-
-    private final Map<ProviderId, RemoteServiceContextProvider> pidToProvider = Maps.newConcurrentMap();
-    private final Map<String, RemoteServiceContextProvider> schemeToProvider = Maps.newConcurrentMap();
-
-    public AbstractProviderRegistry() {
-        super();
-    }
-
-    protected abstract RemoteServiceContextProviderService createProviderService(RemoteServiceContextProvider provider);
-
-    @Override
-    public synchronized RemoteServiceContextProviderService register(RemoteServiceContextProvider provider) {
-        // TODO check if it already exists
-        pidToProvider.put(provider.id(), provider);
-        schemeToProvider.put(provider.id().scheme(), provider);
-        return createProviderService(provider);
-    }
-
-    @Override
-    public synchronized void unregister(RemoteServiceContextProvider provider) {
-        pidToProvider.remove(provider.id(), provider);
-        schemeToProvider.remove(provider.id().scheme(), provider);
-    }
-
-    @Override
-    public Set<ProviderId> getProviders() {
-        return ImmutableSet.copyOf(pidToProvider.keySet());
-    }
-
-    protected RemoteServiceContextProvider getProvider(ProviderId pid) {
-        return pidToProvider.get(pid);
-    }
-
-    protected RemoteServiceContextProvider getProvider(String scheme) {
-        return schemeToProvider.get(scheme);
-    }
-
-}
diff --git a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/LocalRemoteServiceProvider.java b/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/LocalRemoteServiceProvider.java
deleted file mode 100644
index 5ef0d20..0000000
--- a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/LocalRemoteServiceProvider.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.impl;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onosproject.incubator.rpc.RemoteServiceContext;
-import org.onosproject.incubator.rpc.RemoteServiceContextProvider;
-import org.onosproject.incubator.rpc.RemoteServiceContextProviderService;
-import org.onosproject.incubator.rpc.RemoteServiceProviderRegistry;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Sample implementation of RemoteServiceContextProvider.
- *
- * Scheme: "local", calling corresponding local service on request.
- * Only expected for testing until real RPC implementation is ready.
- *
- * Note: This is expected to be removed or separated out as separate bundle
- * once other RPC implementaion became available.
- */
-@Beta
-@Component(immediate = true)
-public class LocalRemoteServiceProvider implements RemoteServiceContextProvider {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private RemoteServiceContext theOne = new LocalServiceContext();
-
-    private static final ProviderId PID = new ProviderId("local", "org.onosproject.rpc.provider.local");
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY)
-    protected RemoteServiceProviderRegistry rpcRegistry;
-
-    private final Map<Class<? extends Object>, Object> services = new ConcurrentHashMap<>();
-
-    private RemoteServiceContextProviderService providerService;
-
-    @Activate
-    protected void activate() {
-
-        services.put(SomeOtherService.class, new SomeOtherServiceImpl());
-
-        providerService = rpcRegistry.register(this);
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        rpcRegistry.unregister(this);
-        log.info("Stopped");
-    }
-
-    @Override
-    public ProviderId id() {
-        return PID;
-    }
-
-    @Override
-    public RemoteServiceContext get(URI uri) {
-        checkArgument(Objects.equals(uri.getScheme(), "local"));
-        return theOne;
-    }
-
-    private final class LocalServiceContext implements RemoteServiceContext {
-
-        private final ServiceDirectory directory = new DefaultServiceDirectory();
-
-        @Override
-        public <T> T get(Class<T> serviceClass) {
-            @SuppressWarnings("unchecked")
-            T service = (T) services.get(serviceClass);
-            if (service != null) {
-                return service;
-            }
-            // look up OSGi services on this host.
-            // provided to unblock development depending on RPC.
-            return directory.get(serviceClass);
-        }
-    }
-
-    // Service provided by RPC can be non-OSGi Service
-    public static interface SomeOtherService {
-        String hello();
-    }
-
-    public static class SomeOtherServiceImpl implements SomeOtherService {
-
-        @Override
-        public String hello() {
-            return "Goodbye";
-        }
-    }
-
-}
diff --git a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/RemoteServiceManager.java b/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/RemoteServiceManager.java
deleted file mode 100644
index b6afe06..0000000
--- a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/RemoteServiceManager.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.impl;
-
-import com.google.common.annotations.Beta;
-import org.onosproject.incubator.rpc.RemoteServiceContext;
-import org.onosproject.incubator.rpc.RemoteServiceContextProvider;
-import org.onosproject.incubator.rpc.RemoteServiceContextProviderService;
-import org.onosproject.incubator.rpc.RemoteServiceDirectory;
-import org.onosproject.incubator.rpc.RemoteServiceProviderRegistry;
-import org.onosproject.net.provider.AbstractProviderService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.URI;
-
-/**
- * Provides RemoteService related APIs.
- */
-@Beta
-@Component(immediate = true, service = { RemoteServiceDirectory.class, RemoteServiceProviderRegistry.class })
-public class RemoteServiceManager extends AbstractProviderRegistry
-    implements RemoteServiceDirectory, RemoteServiceProviderRegistry {
-
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Activate
-    protected void activate() {
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        log.info("Stopped");
-    }
-
-    @Override
-    public RemoteServiceContext get(URI uri) {
-        RemoteServiceContextProvider factory = getProvider(uri.getScheme());
-        if (factory != null) {
-            return factory.get(uri);
-        }
-        throw new UnsupportedOperationException(uri.getScheme() + " not supported");
-    }
-
-    private final class InternalRemoteServiceContextProviderService
-            extends AbstractProviderService<RemoteServiceContextProvider>
-            implements RemoteServiceContextProviderService {
-
-        public InternalRemoteServiceContextProviderService(RemoteServiceContextProvider provider) {
-            super(provider);
-        }
-    }
-
-    // make this abstract method if slicing out
-    @Override
-    protected RemoteServiceContextProviderService createProviderService(RemoteServiceContextProvider provider) {
-        return new InternalRemoteServiceContextProviderService(provider);
-    }
-
-}
diff --git a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/package-info.java b/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/package-info.java
deleted file mode 100644
index 79017c1..0000000
--- a/graveyard/rpc/src/main/java/org/onosproject/incubator/rpc/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Implementation of the inter-cluster RPC service.
- */
-package org.onosproject.incubator.rpc.impl;
diff --git a/graveyard/rpc/src/test/java/org/onosproject/incubator/rpc/impl/RemoteServiceManagerTest.java b/graveyard/rpc/src/test/java/org/onosproject/incubator/rpc/impl/RemoteServiceManagerTest.java
deleted file mode 100644
index 40458e5..0000000
--- a/graveyard/rpc/src/test/java/org/onosproject/incubator/rpc/impl/RemoteServiceManagerTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.incubator.rpc.impl;
-
-import static org.junit.Assert.*;
-
-import java.net.URI;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.incubator.rpc.RemoteServiceContext;
-import org.onosproject.incubator.rpc.RemoteServiceDirectory;
-import org.onosproject.incubator.rpc.impl.LocalRemoteServiceProvider.SomeOtherService;
-
-/**
- * Set of tests of the RemoteServiceManager component.
- */
-public class RemoteServiceManagerTest {
-
-    private static final URI LOCAL_URI = URI.create("local://whateverIgnored");
-
-    private RemoteServiceManager rpcManager;
-    private RemoteServiceDirectory rpcDirectory;
-
-    private LocalRemoteServiceProvider rpcProvider;
-
-    @Before
-    public void setUp() {
-        rpcManager = new RemoteServiceManager();
-        rpcManager.activate();
-        rpcDirectory = rpcManager;
-
-        rpcProvider = new LocalRemoteServiceProvider();
-        rpcProvider.rpcRegistry = rpcManager;
-        rpcProvider.activate();
-
-    }
-
-    @After
-    public void tearDown() {
-        rpcProvider.deactivate();
-
-        rpcManager.deactivate();
-    }
-
-    @Test
-    public void basics() {
-        RemoteServiceContext remoteServiceContext = rpcDirectory.get(LOCAL_URI);
-        assertNotNull("Expecting valid RPC context", remoteServiceContext);
-
-        SomeOtherService someService = remoteServiceContext.get(SomeOtherService.class);
-        assertNotNull("Expecting reference to sample service", someService);
-
-        assertEquals("Goodbye", someService.hello());
-    }
-
-}