Fix a few more app startup/shutdown problems

Change-Id: Ideb48a1e845ae345306fa10ec55499c471566ce7
diff --git a/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java b/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java
index 6ee27a3..eb3d873 100644
--- a/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java
+++ b/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java
@@ -84,6 +84,7 @@
 
     private DeviceListener deviceListener;
     private IcmpHandler icmpHandler;
+    private BgpConfig bgpConfig = null;
 
     private static List<String> components = new ArrayList<>();
     static {
@@ -100,11 +101,10 @@
         components.forEach(name -> componentService.activate(appId, name));
 
         ApplicationId routerAppId = coreService.getAppId(RoutingService.ROUTER_APP_ID);
-        BgpConfig bgpConfig =
-                networkConfigService.getConfig(routerAppId, RoutingService.CONFIG_CLASS);
+        bgpConfig = networkConfigService.getConfig(routerAppId, RoutingService.CONFIG_CLASS);
 
         if (bgpConfig == null) {
-            log.error("No BgpConfig found");
+            log.warn("No BgpConfig found");
             return;
         }
 
@@ -137,9 +137,11 @@
 
         RoutingConfiguration.unregister(networkConfigService);
 
-        connectivityManager.stop();
-        icmpHandler.stop();
-        deviceService.removeListener(deviceListener);
+        if (bgpConfig != null) {
+            connectivityManager.stop();
+            icmpHandler.stop();
+            deviceService.removeListener(deviceListener);
+        }
 
         log.info("BgpRouter stopped");
     }
diff --git a/apps/castor/src/main/java/org/onosproject/castor/CastorArpManager.java b/apps/castor/src/main/java/org/onosproject/castor/CastorArpManager.java
index 3d6e7d0..ff7ec6b 100644
--- a/apps/castor/src/main/java/org/onosproject/castor/CastorArpManager.java
+++ b/apps/castor/src/main/java/org/onosproject/castor/CastorArpManager.java
@@ -116,10 +116,12 @@
      * Withdraws the requested ARP packets.
      */
     private void withdrawIntercepts() {
-        TrafficSelector.Builder selectorBuilder =
+        if (deviceID != null && deviceID.isPresent()) {
+            TrafficSelector.Builder selectorBuilder =
                 DefaultTrafficSelector.builder();
-        selectorBuilder.matchEthType(TYPE_ARP);
-        packetService.cancelPackets(selectorBuilder.build(), CONTROL, appId, deviceID);
+            selectorBuilder.matchEthType(TYPE_ARP);
+            packetService.cancelPackets(selectorBuilder.build(), CONTROL, appId, deviceID);
+        }
     }
 
     /**
diff --git a/apps/graphitemetrics/BUILD b/apps/graphitemetrics/BUILD
index a7ca902..0d3ea56 100644
--- a/apps/graphitemetrics/BUILD
+++ b/apps/graphitemetrics/BUILD
@@ -3,9 +3,10 @@
     "@metrics_graphite//jar",
 ]
 
-EXCLUDED_BUNDLES = [
+INCLUDED_BUNDLES = [
     "@gmetric4j//jar",
     "@metrics_graphite//jar",
+    "@remotetea_oncrpc//jar",
 ]
 
 osgi_jar_with_tests(
@@ -15,7 +16,7 @@
 onos_app(
     category = "Monitoring",
     description = "Performance metric service reporter and retriever for graphite",
-    excluded_bundles = EXCLUDED_BUNDLES,
+    included_bundles = INCLUDED_BUNDLES,
     title = "Graphite Report and Query",
     url = "http://onosproject.org",
 )