Log current DG & NodeId using MDC
authorMarcus G K Williams <marcus.williams@intel.com>
Thu, 14 Sep 2017 22:25:57 +0000 (15:25 -0700)
committerMarcus G K Williams <marcus.williams@intel.com>
Thu, 14 Sep 2017 22:33:53 +0000 (15:33 -0700)
Uses MDC.put to add current directed
graph and current nodeId to MDC
context which is then logged into the
standard karaf log.

Issue-Id: CCSDK-71
Change-Id: Ieeeea6a89761cdf0ee7a3e63f4e58e182f37ff28
Signed-off-by: Marcus G K Williams <marcus.williams@intel.com>
sli/provider/src/main/java/org/onap/ccsdk/sli/core/sli/provider/SvcLogicServiceImpl.java

index a904eb8..4bb460d 100644 (file)
@@ -44,230 +44,235 @@ import org.slf4j.MDC;
 
 public class SvcLogicServiceImpl implements SvcLogicService {
 
-       private static final Logger LOG = LoggerFactory
-                       .getLogger(SvcLogicServiceImpl.class);
-
-       private HashMap<String, SvcLogicNodeExecutor> nodeExecutors = null;
-
-       private BundleContext bctx = null;
-
-       private void registerExecutors() {
-
-               LOG.info("Entered register executors");
-               if (bctx == null) {
-                       bctx = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
-               }
-
-               if (nodeExecutors == null) {
-                       nodeExecutors = new HashMap<String, SvcLogicNodeExecutor>();
-               }
-
-               LOG.info("Opening service tracker");
-               ServiceTracker tracker = new ServiceTracker(bctx,
-                               SvcLogicNodeExecutor.class.getName(), null);
-               
-               tracker.open();
-
-               ServiceListener listener = new ServiceListener() {
-
-                       public void serviceChanged(ServiceEvent ev) {
-                               ServiceReference sr = ev.getServiceReference();
-                               switch (ev.getType()) {
-                               case ServiceEvent.REGISTERED: {
-                                       registerExecutor(sr);
-                               }
-                                       break;
-                               case ServiceEvent.UNREGISTERING: {
-                                       unregisterExecutor(sr);
-                               }
-                                       break;
-                               }
-                       }
-               };
-
-               LOG.info("Adding service listener");
-               String filter = "(objectclass=" + SvcLogicNodeExecutor.class.getName()
-                               + ")";
-               try {
-                       bctx.addServiceListener(listener, filter);
-                       ServiceReference[] srl = bctx.getServiceReferences(
-                                       SvcLogicNodeExecutor.class.getName(), null);
-                       for (int i = 0; srl != null && i < srl.length; i++) {
-                               listener.serviceChanged(new ServiceEvent(
-                                               ServiceEvent.REGISTERED, srl[i]));
-                       }
-               } catch (InvalidSyntaxException e) {
-                       e.printStackTrace();
-               }
-               LOG.info("Done registerExecutors");
-       }
-
-       public void registerExecutor(ServiceReference sr) {
-
-               String nodeName = (String) sr.getProperty("nodeType");
-               if (nodeName != null) {
-
-                       SvcLogicNodeExecutor executor = null;
-
-                       try {
-                               executor = (SvcLogicNodeExecutor) bctx.getService(sr);
-                       } catch (Exception e) {
-                               LOG.error("Cannot get service executor for " + nodeName);
-                               return;
-                       }
+    private static final Logger LOG = LoggerFactory
+            .getLogger(SvcLogicServiceImpl.class);
+
+    private HashMap<String, SvcLogicNodeExecutor> nodeExecutors = null;
+
+    private BundleContext bctx = null;
+
+    private void registerExecutors() {
+
+        LOG.info("Entered register executors");
+        if (bctx == null) {
+            bctx = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
+        }
+
+        if (nodeExecutors == null) {
+            nodeExecutors = new HashMap<String, SvcLogicNodeExecutor>();
+        }
+
+        LOG.info("Opening service tracker");
+        ServiceTracker tracker = new ServiceTracker(bctx,
+                SvcLogicNodeExecutor.class.getName(), null);
+
+        tracker.open();
+
+        ServiceListener listener = new ServiceListener() {
+
+            public void serviceChanged(ServiceEvent ev) {
+                ServiceReference sr = ev.getServiceReference();
+                switch (ev.getType()) {
+                case ServiceEvent.REGISTERED: {
+                    registerExecutor(sr);
+                }
+                    break;
+                case ServiceEvent.UNREGISTERING: {
+                    unregisterExecutor(sr);
+                }
+                    break;
+                }
+            }
+        };
+
+        LOG.info("Adding service listener");
+        String filter = "(objectclass=" + SvcLogicNodeExecutor.class.getName()
+                + ")";
+        try {
+            bctx.addServiceListener(listener, filter);
+            ServiceReference[] srl = bctx.getServiceReferences(
+                    SvcLogicNodeExecutor.class.getName(), null);
+            for (int i = 0; srl != null && i < srl.length; i++) {
+                listener.serviceChanged(new ServiceEvent(
+                        ServiceEvent.REGISTERED, srl[i]));
+            }
+        } catch (InvalidSyntaxException e) {
+            e.printStackTrace();
+        }
+        LOG.info("Done registerExecutors");
+    }
+
+    public void registerExecutor(ServiceReference sr) {
+
+        String nodeName = (String) sr.getProperty("nodeType");
+        if (nodeName != null) {
+
+            SvcLogicNodeExecutor executor = null;
+
+            try {
+                executor = (SvcLogicNodeExecutor) bctx.getService(sr);
+            } catch (Exception e) {
+                LOG.error("Cannot get service executor for " + nodeName);
+                return;
+            }
 
             registerExecutor(nodeName, executor);
 
-               }
-       }
-       
-       public void registerExecutor(String nodeName, SvcLogicNodeExecutor executor)
-       {
-               if (nodeExecutors == null) {
-                       nodeExecutors = new HashMap<String, SvcLogicNodeExecutor>();
-               }
-               LOG.info("SLI - registering executor for node type "+nodeName);
-               nodeExecutors.put(nodeName, executor);
-       }
-
-       public void unregisterExecutor(ServiceReference sr) {
-               String nodeName = (String) sr.getProperty("nodeType");
-
-               if (nodeName != null) {
-                       
+        }
+    }
+
+    public void registerExecutor(String nodeName, SvcLogicNodeExecutor executor)
+    {
+        if (nodeExecutors == null) {
+            nodeExecutors = new HashMap<String, SvcLogicNodeExecutor>();
+        }
+        LOG.info("SLI - registering executor for node type "+nodeName);
+        nodeExecutors.put(nodeName, executor);
+    }
+
+    public void unregisterExecutor(ServiceReference sr) {
+        String nodeName = (String) sr.getProperty("nodeType");
+
+        if (nodeName != null) {
+
              unregisterExecutor(nodeName);
 
-               }
-
-       }
-       
-       public void unregisterExecutor(String nodeName)
-       {
-
-               LOG.info("SLI - unregistering executor for node type "+nodeName);
-               nodeExecutors.remove(nodeName);
-       }
-       
-
-
-       
-       public SvcLogicContext execute(SvcLogicGraph graph, SvcLogicContext ctx)
-                       throws SvcLogicException {
-
-               if (nodeExecutors == null) {
-                       registerExecutors();
-               }
-               
-               // Set service name in MDC to reference current working directed graph
-               MDC.put(MetricLogger.SERVICE_NAME, graph.getModule()+":"+graph.getRpc()+"/v"+graph.getVersion());
-
-               SvcLogicNode curNode = graph.getRootNode();
-               LOG.info("About to execute graph " + graph.toString());
-               
-               
-
-               while (curNode != null) {
-                       LOG.info("About to execute node # "+curNode.getNodeId()+" ("+curNode.getNodeType()+")");
-                       
-                       SvcLogicNode nextNode = executeNode(curNode, ctx);
-                       curNode = nextNode;
-               }
-
-               return (ctx);
-       }
-
-
-       public SvcLogicNode executeNode(SvcLogicNode node, SvcLogicContext ctx)
-                       throws SvcLogicException {
-               if (node == null) {
-                       return (null);
-               }
-
-               if (LOG.isDebugEnabled()) {
-                       LOG.debug("Executing node " + node.getNodeId());
-               }
-
-               SvcLogicNodeExecutor executor = nodeExecutors.get(node.getNodeType());
-
-               if (executor != null) {
-                       LOG.debug("Executing node executor for node type "+node.getNodeType()+" - "+executor.getClass().getName());
-                       return (executor.execute(this, node, ctx));
-               } else {
-                       if (LOG.isDebugEnabled()) {
-                               LOG.debug(node.getNodeType() + " node not implemented");
-                       }
-                       SvcLogicNode nextNode = node.getOutcomeValue("failure");
-                       if (nextNode != null) {
-                               if (LOG.isDebugEnabled()) {
-                                       LOG.debug("about to execute failure branch");
-                               }
-                               return (nextNode);
-                       }
-
-                       nextNode = node.getOutcomeValue("Other");
-                       if (nextNode != null) {
-                               if (LOG.isDebugEnabled()) {
-                                       LOG.debug("about to execute Other branch");
-                               }
-                       } else {
-                               if (LOG.isDebugEnabled()) {
-                                       LOG.debug("no failure or Other branch found");
-                               }
-                       }
-                       return (nextNode);
-               }
-
-       }
-
-       @Override
-       public boolean hasGraph(String module, String rpc, String version, String mode) throws SvcLogicException
-       {
-               SvcLogicStore store = SvcLogicActivator.getStore();
-
-               return (store.hasGraph(module, rpc, version, mode));
-       }
-       
-       @Override
-       public Properties execute(String module, String rpc, String version, String mode, Properties props)
-                       throws SvcLogicException {
-               return(execute(module, rpc, version, mode, props, null));
-       }
-       
-       
-       @Override
-       public Properties execute(String module, String rpc, String version, String mode,
-                       Properties props, DOMDataBroker domDataBroker) throws SvcLogicException {
-               
-
-               // See if there is a service logic defined
-               //
-               SvcLogicStore store = SvcLogicActivator.getStore();
-
-               LOG.info("Fetching service logic from data store");
-               SvcLogicGraph graph = store.fetch(module, rpc, version, mode);
-               
-               
-               
-               if (graph == null)
-               {
-                       Properties retProps = new Properties();
-                       retProps.setProperty("error-code", "401");
-                       retProps.setProperty("error-message", "No service logic found for ["+module+","+rpc+","+version+","+mode+"]");
-                       return(retProps);
-
-               }
-               
-               SvcLogicContext ctx = new SvcLogicContext(props);
+        }
+
+    }
+
+    public void unregisterExecutor(String nodeName)
+    {
+
+        LOG.info("SLI - unregistering executor for node type "+nodeName);
+        nodeExecutors.remove(nodeName);
+    }
+
+
+
+
+    public SvcLogicContext execute(SvcLogicGraph graph, SvcLogicContext ctx)
+            throws SvcLogicException {
+
+        if (nodeExecutors == null) {
+            registerExecutors();
+        }
+
+        // Set service name in MDC to reference current working directed graph
+        MDC.put(MetricLogger.SERVICE_NAME, graph.getModule()+":"+graph.getRpc()+"/v"+graph.getVersion());
+
+        MDC.put("currentGraph", graph.toString());
+
+        SvcLogicNode curNode = graph.getRootNode();
+        LOG.info("About to execute graph " + graph.toString());
+
+
+
+        while (curNode != null) {
+            MDC.put("nodeId", curNode.getNodeId()+" ("+curNode.getNodeType()+")");
+            LOG.info("About to execute node # "+curNode.getNodeId()+" ("+curNode.getNodeType()+")");
+
+            SvcLogicNode nextNode = executeNode(curNode, ctx);
+            curNode = nextNode;
+        }
+        MDC.remove("nodeId");
+        MDC.remove("currentGraph");
+
+        return (ctx);
+    }
+
+
+    public SvcLogicNode executeNode(SvcLogicNode node, SvcLogicContext ctx)
+            throws SvcLogicException {
+        if (node == null) {
+            return (null);
+        }
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Executing node " + node.getNodeId());
+        }
+
+        SvcLogicNodeExecutor executor = nodeExecutors.get(node.getNodeType());
+
+        if (executor != null) {
+            LOG.debug("Executing node executor for node type "+node.getNodeType()+" - "+executor.getClass().getName());
+            return (executor.execute(this, node, ctx));
+        } else {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug(node.getNodeType() + " node not implemented");
+            }
+            SvcLogicNode nextNode = node.getOutcomeValue("failure");
+            if (nextNode != null) {
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("about to execute failure branch");
+                }
+                return (nextNode);
+            }
+
+            nextNode = node.getOutcomeValue("Other");
+            if (nextNode != null) {
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("about to execute Other branch");
+                }
+            } else {
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("no failure or Other branch found");
+                }
+            }
+            return (nextNode);
+        }
+
+    }
+
+    @Override
+    public boolean hasGraph(String module, String rpc, String version, String mode) throws SvcLogicException
+    {
+        SvcLogicStore store = SvcLogicActivator.getStore();
+
+        return (store.hasGraph(module, rpc, version, mode));
+    }
+
+    @Override
+    public Properties execute(String module, String rpc, String version, String mode, Properties props)
+            throws SvcLogicException {
+        return(execute(module, rpc, version, mode, props, null));
+    }
+
+
+    @Override
+    public Properties execute(String module, String rpc, String version, String mode,
+            Properties props, DOMDataBroker domDataBroker) throws SvcLogicException {
+
+
+        // See if there is a service logic defined
+        //
+        SvcLogicStore store = SvcLogicActivator.getStore();
+
+        LOG.info("Fetching service logic from data store");
+        SvcLogicGraph graph = store.fetch(module, rpc, version, mode);
+
+
+
+        if (graph == null)
+        {
+            Properties retProps = new Properties();
+            retProps.setProperty("error-code", "401");
+            retProps.setProperty("error-message", "No service logic found for ["+module+","+rpc+","+version+","+mode+"]");
+            return(retProps);
+
+        }
+
+        SvcLogicContext ctx = new SvcLogicContext(props);
         ctx.setAttribute("currentGraph", graph.toString());
         ctx.setAttribute("X-ECOMP-RequestID", MDC.get("X-ECOMP-RequestID"));
-               ctx.setDomDataBroker(domDataBroker);
-               
-               execute(graph, ctx);
+        ctx.setDomDataBroker(domDataBroker);
+
+        execute(graph, ctx);
+
+        return(ctx.toProperties());
+    }
+
 
-               return(ctx.toProperties());
-       }
-       
 
 
-       
 }