diff --git a/src/emuvim/api/rest/compute.py b/src/emuvim/api/rest/compute.py
index 7a12c68..62a8f18 100755
--- a/src/emuvim/api/rest/compute.py
+++ b/src/emuvim/api/rest/compute.py
@@ -153,25 +153,16 @@
             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
