Demoting boy-cried-wolf log messages.

Change-Id: Idfb9b3178b79ab6b30af285c10a52b9f20dfbfe1
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index 9a2b9e2..d901623 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -581,7 +581,6 @@
 
         @Override
         public void event(MastershipEvent event) {
-
             if (event.type() != MastershipEvent.Type.MASTER_CHANGED) {
                 // Don't care if backup list changed.
                 return;
@@ -625,7 +624,7 @@
             if (store.getDevice(did) != null) {
                 reassertRole(did, myNextRole);
             } else {
-                log.warn("Device is not yet/no longer in the store: {}", did);
+                log.debug("Device is not yet/no longer in the store: {}", did);
             }
         }
     }
diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java
index 882b75a..5b0c8ac 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java
@@ -207,7 +207,7 @@
         Driver driver = driverService
                 .getDriver(desc.getMfrDesc(), desc.getHwDesc(), desc.getSwDesc());
 
-        if (driver.hasBehaviour(OpenFlowSwitchDriver.class)) {
+        if (driver != null && driver.hasBehaviour(OpenFlowSwitchDriver.class)) {
             OpenFlowSwitchDriver ofSwitchDriver = driver.createBehaviour(new DefaultDriverHandler(
                     new DefaultDriverData(driver)), OpenFlowSwitchDriver.class);
             ofSwitchDriver.init(new Dpid(dpid), desc, ofv);
diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
index b361478..416abd3 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
@@ -25,6 +25,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
+import org.onosproject.net.driver.DefaultDriverProviderService;
 import org.onosproject.net.driver.DriverService;
 import org.onosproject.openflow.controller.DefaultOpenFlowPacketContext;
 import org.onosproject.openflow.controller.Dpid;
@@ -81,6 +82,10 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected DriverService driverService;
 
+    // References exists merely for sequencing purpose to assure drivers are loaded
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected DefaultDriverProviderService defaultDriverProviderService;
+
     private final ExecutorService executorMsgs =
         Executors.newFixedThreadPool(32, groupedThreads("onos/of", "event-stats-%d"));
 
@@ -507,11 +512,10 @@
             connectedSwitches.remove(dpid);
             OpenFlowSwitch sw = activeMasterSwitches.remove(dpid);
             if (sw == null) {
-                log.warn("sw was null for {}", dpid);
+                log.debug("sw was null for {}", dpid);
                 sw = activeEqualSwitches.remove(dpid);
             }
             for (OpenFlowSwitchListener l : ofSwitchListener) {
-                log.warn("removal for {}", dpid);
                 l.switchRemoved(dpid);
             }
         }
diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java
index 2d7e2e7..e7e5ffe 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/RoleManager.java
@@ -92,7 +92,7 @@
             // ensuring that the only two roles sent to 1.0 switches with
             // Nicira role support, are MASTER and SLAVE
             roleToSend = OFNiciraControllerRole.ROLE_OTHER;
-            log.warn("Sending Nx Role.SLAVE to switch {}.", sw);
+            log.debug("Sending Nx Role.SLAVE to switch {}.", sw);
         }
         int xid = sw.getNextTransactionId();
         OFExperimenter roleRequest = OFFactories.getFactory(OFVersion.OF_10)
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
index 3920e2d..6a69af8 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
@@ -266,7 +266,6 @@
 
         @Override
         public void event(MastershipEvent event) {
-
             if (MastershipEvent.Type.BACKUPS_CHANGED.equals(event.type())) {
                 // only need new master events
                 return;
@@ -275,7 +274,7 @@
             DeviceId deviceId = event.subject();
             Device device = deviceService.getDevice(deviceId);
             if (device == null) {
-                log.warn("Device {} doesn't exist, or isn't there yet", deviceId);
+                log.debug("Device {} doesn't exist, or isn't there yet", deviceId);
                 return;
             }
             if (rules.isSuppressed(device)) {
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
index 08c87e1..f9d415e 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
@@ -51,6 +51,7 @@
 import org.onosproject.openflow.controller.RoleState;
 import org.onosproject.openflow.controller.ThirdPartyMessage;
 import org.osgi.service.component.ComponentContext;
+import org.projectfloodlight.openflow.protocol.OFBadRequestCode;
 import org.projectfloodlight.openflow.protocol.OFBarrierRequest;
 import org.projectfloodlight.openflow.protocol.OFErrorMsg;
 import org.projectfloodlight.openflow.protocol.OFErrorType;
@@ -61,6 +62,7 @@
 import org.projectfloodlight.openflow.protocol.OFPortStatus;
 import org.projectfloodlight.openflow.protocol.OFStatsReply;
 import org.projectfloodlight.openflow.protocol.OFStatsType;
+import org.projectfloodlight.openflow.protocol.errormsg.OFBadRequestErrorMsg;
 import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg;
 import org.slf4j.Logger;
 
@@ -327,8 +329,7 @@
                     break;
                 case BARRIER_REPLY:
                     try {
-                        InternalCacheEntry entry = pendingBatches.getIfPresent(msg
-                                                                                       .getXid());
+                        InternalCacheEntry entry = pendingBatches.getIfPresent(msg.getXid());
                         if (entry != null) {
                             providerService
                                     .batchOperationCompleted(msg.getXid(),
@@ -342,32 +343,32 @@
                     }
                     break;
                 case ERROR:
-                    log.warn("received Error message {} from {}", msg, dpid);
+                    // TODO: This needs to get suppressed in a better way.
+                    if (msg instanceof OFBadRequestErrorMsg &&
+                            ((OFBadRequestErrorMsg) msg).getCode() == OFBadRequestCode.BAD_TYPE) {
+                        log.debug("Received error message {} from {}", msg, dpid);
+                    } else {
+                        log.warn("Received error message {} from {}", msg, dpid);
+                    }
 
                     OFErrorMsg error = (OFErrorMsg) msg;
                     if (error.getErrType() == OFErrorType.FLOW_MOD_FAILED) {
                         OFFlowModFailedErrorMsg fmFailed = (OFFlowModFailedErrorMsg) error;
                         if (fmFailed.getData().getParsedMessage().isPresent()) {
-                            OFMessage m = fmFailed.getData().getParsedMessage()
-                                    .get();
+                            OFMessage m = fmFailed.getData().getParsedMessage().get();
                             OFFlowMod fm = (OFFlowMod) m;
-                            InternalCacheEntry entry = pendingBatches
-                                    .getIfPresent(msg.getXid());
+                            InternalCacheEntry entry =
+                                    pendingBatches.getIfPresent(msg.getXid());
                             if (entry != null) {
-                                entry.appendFailure(new FlowEntryBuilder(dpid, fm)
-                                                            .build());
+                                entry.appendFailure(new FlowEntryBuilder(dpid, fm).build());
                             } else {
-                                log.error("No matching batch for this error: {}",
-                                          error);
+                                log.error("No matching batch for this error: {}", error);
                             }
                         } else {
-                            // FIXME: Potentially add flowtracking to avoid this
-                            // message.
+                            // FIXME: Potentially add flowtracking to avoid this message.
                             log.error("Flow installation failed but switch didn't"
                                               + " tell us which one.");
                         }
-                    } else {
-                        log.warn("Received error {}", error);
                     }
 
                 default: