[CORD-2565] Recursively iterate on service folders to find xproto

Change-Id: I7d97bf4956b56d0f0048b96b64c134d04cf53773
diff --git a/docs/scripts/swagger_docs.py b/docs/scripts/swagger_docs.py
index 7f35d0e..4e80984 100644
--- a/docs/scripts/swagger_docs.py
+++ b/docs/scripts/swagger_docs.py
@@ -45,28 +45,27 @@
         print "ERROR: Couldn't generate swagger specs"
         print e
 
+def get_xproto_recursively(root):
+    files = []
+    items = os.listdir(root)
+    # iterate over the content of the folder excluding hidden items
+    for item in [i for i in items if i[0] is not "."]:
+        item_abs_path = os.path.abspath(root + "/" + item)
+        if os.path.isdir(item_abs_path):
+            files = files + get_xproto_recursively(item_abs_path)
+        elif os.path.isfile(item_abs_path):
+            files.append(item_abs_path)
+
+    return [f for f in files if "xproto" in f]
+
+
 def main():
 
-    # generate_swagger_docs('core', XOS_XPROTO)
     protos = [XOS_XPROTO]
 
-    services = os.listdir(SERVICE_DIR)
-    for service in services:
-        xos_folder = os.path.abspath(SERVICE_DIR + "/%s/xos" % service);
-        if os.path.isdir(xos_folder):
-            for file in os.listdir(xos_folder):
-                if 'xproto' in file and "monitoring" not in file:
-                    proto = os.path.abspath(xos_folder + "/%s" % file)
-                    # generate_swagger_docs(service, proto)
-                    if os.path.isfile(proto):
-                        protos.append(proto)
-                    else:
-                        print "ERROR: Couldn't find xproto file for %s at: %s" % (service, file)
-                else:
-                    "WARNING: %s does not have an xproto file" % service
-        else:
-            print "WARNING: %s does not have an XOS folder" % service
-    generate_swagger_docs(protos)
+    service_protos = get_xproto_recursively(SERVICE_DIR)
+
+    generate_swagger_docs(protos + service_protos)
 
 
 if __name__ == '__main__':