Change the config format to yaml

Yaml is the format that openstack-infra uses, it's easier to
read and not nearly as ugly as a json file.

It has been decided that we will replace the json formatted config
file with a yaml one. This change completely removes json config
support from turbo hipster and replaces it with yaml. As such the
old config.json has also been replaced by a yaml version.

Change-Id: Ic4c62281ee3796e5f118e441722377046e850135
diff --git a/doc/source/installation.rst b/doc/source/installation.rst
index f3fd4af..101a8fa 100644
--- a/doc/source/installation.rst
+++ b/doc/source/installation.rst
@@ -8,7 +8,7 @@
 
 Turbo-hipster is installed directly into your Python ``site-packages``
 directory, and is then run as a service. It is managed using a configuration
-file, which is in json format.
+file, which is in yaml format.
 
 Installing turbo-hipster
 ------------------------
@@ -19,12 +19,12 @@
  $ sudo python setup.py install
 
 2. Copy the configuration file to a convenient location. By default,
-turbo-hipster will look in ``/etc/turbo-hipster/config.json``:
+turbo-hipster will look in ``/etc/turbo-hipster/config.yaml``:
 
  $ cp -R etc/turbo-hipster /etc/
 
-3. The turbo-hipster configuration file is in json format. Open the
-``config.json`` configuration file in your preferred editor and modify it
+3. The turbo-hipster configuration file is in yaml format. Open the
+``config.yaml`` configuration file in your preferred editor and modify it
 for your environment::
 
   **zuul_server**
@@ -113,4 +113,4 @@
  Debug logging must be configured for turbo-hipster, as it uses the Python
  logging framework to capture log messages from the task plugin code.
  To configure debug logging, set the ``debug_log`` configuration
- setting in the ``config.json`` configuration file.
\ No newline at end of file
+ setting in the ``config.yaml`` configuration file.
diff --git a/doc/source/running.rst b/doc/source/running.rst
index 8cd8e0e..c7cd9e2 100644
--- a/doc/source/running.rst
+++ b/doc/source/running.rst
@@ -61,7 +61,7 @@
 class.
 
 Once you have created a turbo-hipster plugin, you need to configure it in
-the ``config.json`` configuration file.
+the ``config.yaml`` configuration file.
 
 .. FIXME More config information required here
 
@@ -86,7 +86,7 @@
 
  $ cp /my/dataset.json /var/lib/turbo-hipster/datasets/
 
-3. Open the ``/etc/turbo-hipster/config.json`` file in your preferred
+3. Open the ``/etc/turbo-hipster/config.yaml`` file in your preferred
 editor, locate the plugins section, and add this line::
 
   **plugins**
diff --git a/etc/turbo-hipster/config.json b/etc/turbo-hipster/config.json
deleted file mode 100644
index 9a3457b..0000000
--- a/etc/turbo-hipster/config.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-    "zuul_server": {
-        "gerrit_site": "http://review.openstack.org",
-        "zuul_site": "http://119.9.13.90",
-        "git_origin": "git://git.openstack.org/",
-        "gearman_host": "119.9.13.90",
-        "gearman_port": 4730
-    },
-    "debug_log": "/var/log/turbo-hipster/debug.log",
-    "jobs_working_dir": "/var/lib/turbo-hipster/jobs",
-    "git_working_dir": "/var/lib/turbo-hipster/git",
-    "pip_download_cache": "/var/cache/pip",
-    "plugins": [
-        {
-            "name": "gate_real_db_upgrade",
-            "datasets_dir": "/var/lib/turbo-hipster/datasets_devstack_131007",
-            "function": "build:gate-real-db-upgrade_nova_mysql_devstack_131007"
-        }, {
-            "name": "gate_real_db_upgrade",
-            "datasets_dir": "/var/lib/turbo-hipster/datasets_trivial_500",
-            "function": "build:gate-real-db-upgrade_nova_mysql_trivial_500"
-        }, {
-            "name": "gate_real_db_upgrade",
-            "datasets_dir": "/var/lib/turbo-hipster/datasets_trivial_6000",
-            "function": "build:gate-real-db-upgrade_nova_mysql_trivial_6000"
-        }, {
-            "name": "gate_real_db_upgrade",
-            "datasets_dir": "/var/lib/turbo-hipster/datasets_user_001",
-            "function": "build:gate-real-db-upgrade_nova_mysql_user_001"
-        }, {
-            "name": "gate_real_db_upgrade",
-            "datasets_dir": "/var/lib/turbo-hipster/datasets_user_002",
-            "function": "build:gate-real-db-upgrade_nova_mysql_user_002"
-        }
-    ],
-    "publish_logs": {
-        "type": "swift",
-        "authurl": "https://identity.api.rackspacecloud.com/v2.0/",
-        "tenant": " ",
-        "user": "XXXXXX",
-        "password": "XXXXXX",
-        "container": "XXXXXX",
-        "region": "SYD",
-        "prepend_url": "http://www.rcbops.com/turbo_hipster/results/"
-    }
-}
diff --git a/etc/turbo-hipster/config.yaml b/etc/turbo-hipster/config.yaml
new file mode 100644
index 0000000..399c44c
--- /dev/null
+++ b/etc/turbo-hipster/config.yaml
@@ -0,0 +1,46 @@
+zuul_server:
+  gerrit_site: http://review.openstack.org
+  zuul_site: http://119.9.13.90
+  git_origin: git://git.openstack.org/
+  gearman_host: 119.9.13.90
+  gearman_port: 4730
+
+debug_log: /var/log/turbo-hipster/debug.log
+jobs_working_dir: /var/lib/turbo-hipster/jobs
+git_working_dir: /var/lib/turbo-hipster/git
+pip_download_cache: /var/cache/pip
+
+plugins:
+  - name: gate_real_db_upgrade
+    datasets_dir: /var/lib/turbo-hipster/datasets_devstack_131007
+    function: build:gate-real-db-upgrade_nova_mysql_devstack_131007
+
+  - name: gate_real_db_upgrade
+    datasets_dir: /var/lib/turbo-hipster/datasets_devstack_150
+    function: build:gate-real-db-upgrade_nova_mysql_devstack_150
+
+  - name: gate_real_db_upgrade
+    datasets_dir: /var/lib/turbo-hipster/datasets_trivial_500
+    function: build:gate-real-db-upgrade_nova_mysql_trivial_500
+
+  - name: gate_real_db_upgrade
+    datasets_dir: /var/lib/turbo-hipster/datasets_trivial_6000
+    function: build:gate-real-db-upgrade_nova_mysql_trivial_6000
+
+  - name: gate_real_db_upgrade
+    datasets_dir: /var/lib/turbo-hipster/datasets_user_001
+    function: build:gate-real-db-upgrade_nova_mysql_user_001
+
+  - name: gate_real_db_upgrade
+    datasets_dir: /var/lib/turbo-hipster/datasets_user_002
+    function: build:gate-real-db-upgrade_nova_mysql_user_002
+
+publish_logs:
+  type: swift
+  authurl: https://identity.api.rackspacecloud.com/v2.0/
+  tenant: XXXX
+  user: XXXXXX
+  password: XXXXXX
+  container: XXXXXX
+  region: SYD
+  prepend_url: http://www.rcbops.com/turbo_hipster/results/
diff --git a/turbo_hipster/cmd/analyse_historical.py b/turbo_hipster/cmd/analyse_historical.py
index 95df6c4..2b2ba16 100644
--- a/turbo_hipster/cmd/analyse_historical.py
+++ b/turbo_hipster/cmd/analyse_historical.py
@@ -23,6 +23,7 @@
 import os
 import re
 import sys
+import yaml
 
 import swiftclient
 
@@ -33,12 +34,12 @@
     parser = argparse.ArgumentParser()
     parser.add_argument('-c', '--config',
                         default=
-                        '/etc/turbo-hipster/config.json',
-                        help='Path to json config file.')
+                        '/etc/turbo-hipster/config.yaml',
+                        help='Path to yaml config file.')
     args = parser.parse_args()
 
     with open(args.config, 'r') as config_stream:
-        config = json.load(config_stream)
+        config = yaml.safe_load(config_stream)
     swift_config = config['publish_logs']
 
     log = logging.getLogger(__name__)
diff --git a/turbo_hipster/cmd/report_historical.py b/turbo_hipster/cmd/report_historical.py
index 215b968..35f3c9b 100644
--- a/turbo_hipster/cmd/report_historical.py
+++ b/turbo_hipster/cmd/report_historical.py
@@ -20,6 +20,7 @@
 import MySQLdb
 import os
 import sys
+import yaml
 
 
 def main():
@@ -29,8 +30,8 @@
 
 
 def process_dataset(dataset):
-    with open('/etc/turbo-hipster/config.json', 'r') as config_stream:
-        config = json.load(config_stream)
+    with open('/etc/turbo-hipster/config.yaml', 'r') as config_stream:
+        config = yaml.safe_load(config_stream)
     db = MySQLdb.connect(host=config['results']['host'],
                          port=config['results'].get('port', 3306),
                          user=config['results']['username'],
diff --git a/turbo_hipster/cmd/server.py b/turbo_hipster/cmd/server.py
index d54978d..9cbf4e3 100644
--- a/turbo_hipster/cmd/server.py
+++ b/turbo_hipster/cmd/server.py
@@ -18,10 +18,10 @@
 import argparse
 import daemon
 import extras
-import json
 import os
 import signal
 import sys
+import yaml
 
 from turbo_hipster import worker_server
 
@@ -33,7 +33,7 @@
 def main(args):
 
     with open(args.config, 'r') as config_stream:
-        config = json.load(config_stream)
+        config = yaml.safe_load(config_stream)
 
     server = worker_server.Server(config)
 
@@ -59,8 +59,8 @@
     parser = argparse.ArgumentParser()
     parser.add_argument('-c', '--config',
                         default=
-                        '/etc/turbo-hipster/config.json',
-                        help='Path to json config file.')
+                        '/etc/turbo-hipster/config.yaml',
+                        help='Path to yaml config file.')
     parser.add_argument('-b', '--background', action='store_true',
                         help='Run as a daemon in the background.')
     parser.add_argument('-p', '--pidfile',