ONOS-6825: added OFAgent tracer

Change-Id: Ib04184b5fe108c636f8fb9c4b721a1004b72c0a7
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java
index c82dc94..d87e474 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import org.onosproject.incubator.net.virtual.NetworkId;
+import org.onosproject.incubator.net.virtual.TenantId;
 import org.onosproject.ofagent.api.OFAgent;
 import org.onosproject.ofagent.api.OFController;
 
@@ -33,13 +34,16 @@
 public final class DefaultOFAgent implements OFAgent {
 
     private final NetworkId networkId;
+    private final TenantId tenantId;
+
     private final Set<OFController> controllers;
     private final State state;
 
-    private DefaultOFAgent(NetworkId networkId,
+    private DefaultOFAgent(NetworkId networkId, TenantId tenantId,
                            Set<OFController> controllers,
                            State state) {
         this.networkId = networkId;
+        this.tenantId = tenantId;
         this.controllers = controllers;
         this.state = state;
     }
@@ -50,6 +54,11 @@
     }
 
     @Override
+    public TenantId tenantId() {
+        return tenantId;
+    }
+
+    @Override
     public Set<OFController> controllers() {
         return controllers;
     }
@@ -83,6 +92,7 @@
     public String toString() {
         return MoreObjects.toStringHelper(this)
                 .add("networkId", this.networkId)
+                .add("tenantId", this.tenantId)
                 .add("controllers", this.controllers)
                 .add("state", this.state)
                 .toString();
@@ -100,6 +110,7 @@
     public static final class Builder implements OFAgent.Builder {
 
         private NetworkId networkId;
+        private TenantId tenantId;
         private Set<OFController> controllers = Sets.newHashSet();
         private State state;
 
@@ -109,15 +120,17 @@
         @Override
         public OFAgent build() {
             checkNotNull(networkId, "Network ID cannot be null");
+            checkNotNull(tenantId, "Tenant ID cannot be null");
             checkNotNull(state, "State cannot be null");
             controllers = controllers == null ? ImmutableSet.of() : controllers;
 
-            return new DefaultOFAgent(networkId, controllers, state);
+            return new DefaultOFAgent(networkId, tenantId, controllers, state);
         }
 
         @Override
         public Builder from(OFAgent ofAgent) {
             this.networkId = ofAgent.networkId();
+            this.tenantId = ofAgent.tenantId();
             this.controllers = Sets.newHashSet(ofAgent.controllers());
             this.state = ofAgent.state();
             return this;
@@ -130,6 +143,12 @@
         }
 
         @Override
+        public Builder tenantId(TenantId tenantId) {
+            this.tenantId = tenantId;
+            return this;
+        }
+
+        @Override
         public Builder controllers(Set<OFController> controllers) {
             this.controllers = controllers;
             return this;
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java
index 3c04364..1fbd561 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFSwitch.java
@@ -49,6 +49,7 @@
 import org.onosproject.net.meter.MeterRequest;
 import org.onosproject.net.meter.MeterService;
 import org.onosproject.net.packet.InboundPacket;
+import org.onosproject.ofagent.api.OFAgent;
 import org.onosproject.ofagent.api.OFSwitch;
 import org.onosproject.ofagent.api.OFSwitchCapabilities;
 import org.onosproject.ofagent.api.OFSwitchService;
@@ -176,7 +177,9 @@
         this.flowRuleService = virtualNetworkService.get(networkId, FlowRuleService.class);
         this.groupService = virtualNetworkService.get(networkId, GroupService.class);
         this.meterService = virtualNetworkService.get(networkId, MeterService.class);
-        log = LoggerFactory.getLogger(getClass().getName() + " : " + dpid);
+
+        log = LoggerFactory.getLogger(OFAgent.TRACER_LOG_TENANT_ID_PREFIX + virtualNetworkService.getTenantId(networkId)
+                                              + " " + getClass().getSimpleName() + " : " + dpid);
     }
 
     public static DefaultOFSwitch of(DatapathId dpid, OFSwitchCapabilities capabilities,
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DistributedOFAgentStore.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DistributedOFAgentStore.java
index e405c14..7e41243 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DistributedOFAgentStore.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DistributedOFAgentStore.java
@@ -26,6 +26,7 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.incubator.net.virtual.NetworkId;
+import org.onosproject.incubator.net.virtual.TenantId;
 import org.onosproject.ofagent.api.OFAgent;
 import org.onosproject.ofagent.api.OFAgentEvent;
 import org.onosproject.ofagent.api.OFAgentEvent.Type;
@@ -72,6 +73,7 @@
             .register(OFAgent.class)
             .register(OFAgent.State.class)
             .register(NetworkId.class)
+            .register(TenantId.class)
             .register(DefaultOFAgent.class)
             .register(OFController.class)
             .register(DefaultOFController.class)
@@ -155,7 +157,8 @@
             switch (event.type()) {
                 case INSERT:
                     eventExecutor.execute(() -> {
-                        log.debug("OFAgent for network {} created", event.key());
+                        log.debug(OFAgent.TRACER_LOG_TENANT_ID_PREFIX + event.newValue().value().tenantId()
+                                          + " OFAgent for network {} created", event.key());
                         notifyDelegate(new OFAgentEvent(
                                 Type.OFAGENT_CREATED,
                                 event.newValue().value()));
@@ -163,13 +166,15 @@
                     break;
                 case UPDATE:
                     eventExecutor.execute(() -> {
-                        log.debug("OFAgent for network {} updated", event.key());
+                        log.debug(OFAgent.TRACER_LOG_TENANT_ID_PREFIX + event.newValue().value().tenantId()
+                                          + " OFAgent for network {} updated", event.key());
                         processUpdated(event.oldValue().value(), event.newValue().value());
                     });
                     break;
                 case REMOVE:
                     eventExecutor.execute(() -> {
-                        log.debug("OFAgent for network {} removed", event.key());
+                        log.debug(OFAgent.TRACER_LOG_TENANT_ID_PREFIX + event.oldValue().value().tenantId()
+                                          + " OFAgent for network {} removed", event.key());
                         notifyDelegate(new OFAgentEvent(
                                 Type.OFAGENT_REMOVED,
                                 event.oldValue().value()));