Dannon Baker avatar Dannon Baker committed 15543df Merge

Comments (0)

Files changed (3)

 #!/bin/sh
 
+
+# Usage: ./run_reports.sh [--sync-config] <start|stop>
+#
+#
+# Description: This script can be used to start or stop the galaxy
+# reports web application. Passing in --sync-config as the first
+# argument to this will cause Galaxy's database and path parameters
+# from universe_wsgi.ini to be copied over into reports_wsgi.ini.
+
 cd `dirname $0`
-python ./scripts/paster.py serve reports_wsgi.ini --pid-file=reports_webapp.pid --log-file=reports_webapp.log $@
+
+GALAXY_REPORTS_CONFIG=${GALAXY_REPORTS_CONFIG:-reports_wsgi.ini}
+GALAXY_REPORTS_PID=${GALAXY_REPORTS_PID:-reports_webapp.pid}
+GALAXY_REPORTS_LOG=${GALAXY_REPORTS_LOG:-reports_webapp.log}
+
+if [ -n "$GALAXY_REPORTS_CONFIG_DIR" ]; then
+    python ./scripts/build_universe_config.py "$GALAXY_REPORTS_CONFIG_DIR" "$GALAXY_REPORTS_CONFIG"
+fi
+
+
+if [ "$1" = "--sync-config" ];
+then
+    python ./scripts/sync_reports_config.py
+    shift
+fi
+
+python ./scripts/paster.py serve "$GALAXY_REPORTS_CONFIG" --pid-file="$GALAXY_REPORTS_PID" --log-file="$GALAXY_REPORTS_LOG" $@

scripts/build_universe_config.py

     ## TODO: Expand enviroment variables here, that would
     ## also make Galaxy much easier to configure. 
 
-    parser.write(open("universe_wsgi.ini", 'w'))
+    destination= "universe_wsgi.ini"
+    if len(argv) > 2:
+        destination = argv[2]
+
+    parser.write(open(destination, 'w'))
 
 if __name__ == '__main__':
     merge()

scripts/sync_reports_config.py

+from ConfigParser import ConfigParser
+from sys import argv
+
+REPLACE_PROPERTIES = ["file_path", "database_connection", "new_file_path"]
+MAIN_SECTION = "app:main"
+
+def sync():
+    # Add or replace the relevant properites from universe_wsgi.ini
+    # into reports_wsgi.ini
+    reports_config_file = "reports_wsgi.ini"
+    if len(argv) > 1:
+        reports_config_file = argv[1]
+
+    universe_config_file = "universe_wsgi.ini"
+    if len(argv) > 2:
+        universe_config_file = argv[2]
+
+    parser = ConfigParser()
+    parser.read(universe_config_file)
+    
+    with open(reports_config_file, "r") as f:
+        reports_config_lines = f.readlines()
+
+    replaced_properties = set([])
+    with open(reports_config_file, "w") as f:
+        # Write all properties from reports config replacing as
+        # needed.
+        for reports_config_line in reports_config_lines:
+            (line, replaced_property) = get_synced_line(reports_config_line, parser)
+            if replaced_property:
+                replaced_properties.add(replaced_property)
+            f.write(line)
+
+        # If any properties appear in universe config and not in
+        # reports write these as well.
+        for replacement_property in REPLACE_PROPERTIES:
+            if parser.has_option(MAIN_SECTION, replacement_property) and \
+                    not (replacement_property in replaced_properties):
+                f.write(get_universe_line(replacement_property, parser))
+
+def get_synced_line(reports_line, universe_config):
+    # Cycle through properties to replace and perform replacement on
+    # this line if needed.
+    synced_line = reports_line
+    replaced_property = None
+    for replacement_property in REPLACE_PROPERTIES:
+        if reports_line.startswith(replacement_property) and \
+                universe_config.has_option(MAIN_SECTION, replacement_property):
+            synced_line = get_universe_line(replacement_property, universe_config)
+            replaced_property = replacement_property
+            break
+    return (synced_line, replaced_property)
+
+def get_universe_line(property_name, universe_config):
+    return "%s=%s\n" % (property_name, universe_config.get(MAIN_SECTION, property_name))
+    
+if __name__ == '__main__':
+    sync()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.