Fix: Improved performance of REST getStatus endpoint.
[osm/vim-emu.git] / src / emuvim / api / rest / compute.py
index 5120b9e..62a8f18 100755 (executable)
@@ -79,17 +79,22 @@ class Compute(Resource):
             try:
                 config = c.dcinfo.get("Config", dict())
                 env = config.get("Env", list())
+                legacy_command_execution = False
                 for env_var in env:
                     var, cmd = map(str.strip, map(str, env_var.split('=', 1)))
                     logging.debug("%r = %r" % (var, cmd))
                     if var == "SON_EMU_CMD" or var == "VIM_EMU_CMD":
-                        logging.info(
-                            "Executing entry point script in %r: %r" % (c.name, cmd))
+                        logging.info("Executing script in '{}': {}={}"
+                                     .format(compute_name, var, cmd))
                         # execute command in new thread to ensure that API is
                         # not blocked by VNF
                         t = threading.Thread(target=c.cmdPrint, args=(cmd,))
                         t.daemon = True
                         t.start()
+                        legacy_command_execution = True
+                        break
+                if not legacy_command_execution:
+                    c.start()
             except Exception as ex:
                 logging.warning("Couldn't run Docker entry point VIM_EMU_CMD")
                 logging.exception("Exception:")
@@ -148,25 +153,16 @@ class ComputeList(Resource):
             if dc_label is None or dc_label == 'None':
                 # return list with all compute nodes in all DCs
                 all_containers = []
-                all_extSAPs = []
                 for dc in dcs.itervalues():
                     all_containers += dc.listCompute()
-                    all_extSAPs += dc.listExtSAPs()
-
-                extSAP_list = [(sap.name, sap.getStatus())
-                               for sap in all_extSAPs]
                 container_list = [(c.name, c.getStatus())
                                   for c in all_containers]
-                total_list = container_list + extSAP_list
-                return total_list, 200, CORS_HEADER
+                return container_list, 200, CORS_HEADER
             else:
                 # return list of compute nodes for specified DC
                 container_list = [(c.name, c.getStatus())
                                   for c in dcs.get(dc_label).listCompute()]
-                extSAP_list = [(sap.name, sap.getStatus())
-                               for sap in dcs.get(dc_label).listExtSAPs()]
-                total_list = container_list + extSAP_list
-                return total_list, 200, CORS_HEADER
+                return container_list, 200, CORS_HEADER
         except Exception as ex:
             logging.exception("API error.")
             return ex.message, 500, CORS_HEADER