From 6c1e822b6a3b65ccef3731eef727ac6b416c48ef Mon Sep 17 00:00:00 2001
From: Rudi Grinberg <rudi.grinberg@sourcefabric.org>
Date: Mon, 20 Aug 2012 12:32:16 -0400
Subject: [PATCH] cc-4227: updated install scripts for upgrade

---
 .../api_clients/install/api_client_install.py |  7 ++++--
 .../install/media-monitor-copy-files.py       |  4 +++
 .../media-monitor2/tests/test_upgrade2dot2.py |  2 +-
 python_apps/media-monitor2/upgrade2dot2.py    | 25 +++++++++----------
 4 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/python_apps/api_clients/install/api_client_install.py b/python_apps/api_clients/install/api_client_install.py
index 461dea372..c81b0b47b 100644
--- a/python_apps/api_clients/install/api_client_install.py
+++ b/python_apps/api_clients/install/api_client_install.py
@@ -2,6 +2,7 @@ import os
 import shutil
 import sys
 from configobj import ConfigObj
+import upgrade2dot2
 
 def get_current_script_dir():
     return os.path.dirname(os.path.realpath(__file__))
@@ -14,12 +15,14 @@ def copy_dir(src_dir, dest_dir):
         shutil.copytree(src_dir, dest_dir)
 
 PATH_INI_FILE = '/etc/airtime/api_client.cfg'
-    
+
 current_script_dir = get_current_script_dir()
 
 if not os.path.exists(PATH_INI_FILE):
     shutil.copy('%s/../api_client.cfg'%current_script_dir, PATH_INI_FILE)
-    
+
+upgrade2dot2.upgrade('%s/../api_client.cfg'% current_script_dir, PATH_INI_FILE)
+
 """load config file"""
 try:
     config = ConfigObj("%s/../api_client.cfg" % current_script_dir)
diff --git a/python_apps/media-monitor/install/media-monitor-copy-files.py b/python_apps/media-monitor/install/media-monitor-copy-files.py
index 5f3b5d0f0..41ab6e8fc 100644
--- a/python_apps/media-monitor/install/media-monitor-copy-files.py
+++ b/python_apps/media-monitor/install/media-monitor-copy-files.py
@@ -4,6 +4,7 @@ import sys
 import subprocess
 import random
 import string
+import upgrade2dot2
 from configobj import ConfigObj
 
 if os.geteuid() != 0:
@@ -62,6 +63,9 @@ try:
     mm2_source = os.path.realpath(os.path.join(current_script_dir,
         "../../media-monitor2"))
     copy_dir(mm2_source, os.path.join( config["bin_dir"], "mm2" ))
+    # upgrade mm2 config
+    upgrade2dot2.upgrade(('%s/../media-monitor.cfg'%current_script_dir),
+        PATH_INI_FILE)
 
     #copy init.d script
     shutil.copy(config["bin_dir"]+"/airtime-media-monitor-init-d", "/etc/init.d/airtime-media-monitor")
diff --git a/python_apps/media-monitor2/tests/test_upgrade2dot2.py b/python_apps/media-monitor2/tests/test_upgrade2dot2.py
index fc74d8984..aa6fb57cc 100644
--- a/python_apps/media-monitor2/tests/test_upgrade2dot2.py
+++ b/python_apps/media-monitor2/tests/test_upgrade2dot2.py
@@ -38,7 +38,7 @@ class TestUpgrade(unittest.TestCase):
         self.assertTrue( os.path.exists(cf['source']['path']) )
         self.assertTrue( os.path.exists(cf['dest']['path']) )
         # Finished preparing
-        upgrade2dot2.upgrade({ cf['source']['path'] : cf['dest']['path'] })
+        upgrade2dot2.upgrade(cf['source']['path'], cf['dest']['path'] )
         c1, c2 = ConfigObj(cf['source']['path']), ConfigObj(cf['dest']['path'])
         self.assertEqual( c2['key2'], 'val2')
         self.assertEqual( c2['key4'], '10')
diff --git a/python_apps/media-monitor2/upgrade2dot2.py b/python_apps/media-monitor2/upgrade2dot2.py
index 5283c28b1..6b8e684ae 100644
--- a/python_apps/media-monitor2/upgrade2dot2.py
+++ b/python_apps/media-monitor2/upgrade2dot2.py
@@ -7,22 +7,21 @@ upgrades_config = {
     '/etc/airtime/api_client.cfg' : '../api_clients/api_client.cfg',
 }
 
-def upgrade(upgrade_data):
+def upgrade(source, destination):
     """
     Must be ran as sudo. will do upgrade of configuration files by filling in
     missing values according to upgrade_data
     """
-    for source, destination in upgrade_data.iteritems():
-        if not os.path.exists(source):
-            print("Cannot upgrade '%s'. Skipping this file" % source)
-            continue
-        try:
-            cfg_source, cfg_dest = ConfigObj(source), ConfigObj(destination)
-            for key, val in cfg_source.iteritems():
-                if key not in cfg_dest: cfg_dest[key] = val
-            cfg_dest.write()
-        except Exception:
-            print("Error upgrading")
-            print( traceback.format_exc() )
+    if not os.path.exists(source):
+        print("Cannot upgrade '%s'. Skipping this file" % source)
+        return
+    try:
+        cfg_source, cfg_dest = ConfigObj(source), ConfigObj(destination)
+        for key, val in cfg_source.iteritems():
+            if key not in cfg_dest: cfg_dest[key] = val
+        cfg_dest.write()
+    except Exception:
+        print("Error upgrading")
+        print( traceback.format_exc() )
 
 if __name__ == "__main__": upgrade(upgrades_config)