From 6205b301521efa800c939369fb60e52b507ed5d8 Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 19 Jul 2011 19:35:39 -0400 Subject: [PATCH] CC-2566: Separate URL config out of config files and put them with API_CLIENT -fixed --- install_minimal/include/AirtimeIni.php | 4 +- .../airtime-1.9.0/airtime-upgrade.php | 2 - python_apps/api_clients/api_client.cfg | 109 ++++++++++++++++++ python_apps/api_clients/api_client.py | 15 ++- .../airtimemediamonitorbootstrap.py | 2 + python_apps/media-monitor/media-monitor.cfg | 36 ------ python_apps/pypo/pypo.cfg | 67 ----------- python_apps/show-recorder/recorder.cfg | 25 ---- utils/airtime-check-system.php | 18 +-- 9 files changed, 132 insertions(+), 146 deletions(-) diff --git a/install_minimal/include/AirtimeIni.php b/install_minimal/include/AirtimeIni.php index 5a2db8dd0..be81a9226 100644 --- a/install_minimal/include/AirtimeIni.php +++ b/install_minimal/include/AirtimeIni.php @@ -202,9 +202,7 @@ class AirtimeIni $api_key = AirtimeIni::GenerateRandomString(); AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_AIRTIME, 'api_key', $api_key); AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_AIRTIME, 'airtime_dir', AirtimeInstall::CONF_DIR_WWW); - AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_PYPO, 'api_key', "'$api_key'"); - AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_RECORDER, 'api_key', "'$api_key'"); - AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_MEDIAMONITOR, 'api_key', "'$api_key'"); + AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_API_CLIENT, 'api_key', "'$api_key'"); } public static function ReadPythonConfig($p_filename) diff --git a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php index 057b3cde6..d844f3c20 100644 --- a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php @@ -568,8 +568,6 @@ class Airtime190Upgrade{ echo "Could not copy media-monitor.cfg to /etc/airtime/. Exiting."; } - AirtimeIni::UpdateIniValue(AirtimeIni::CONF_FILE_MEDIAMONITOR, "api_key", $values["general"]["api_key"]); - echo "Reorganizing files in stor directory".PHP_EOL; $cwd = __DIR__; diff --git a/python_apps/api_clients/api_client.cfg b/python_apps/api_clients/api_client.cfg index 9a0fc8fb6..7c94e34c2 100644 --- a/python_apps/api_clients/api_client.cfg +++ b/python_apps/api_clients/api_client.cfg @@ -1 +1,110 @@ bin_dir = "/usr/lib/airtime/api_clients" + +############################# +## Common +############################# + +# Value needed to access the API +api_key = 'AAA' + +# Path to the base of the API +api_base = 'api' + +# URL to get the version number of the server API +version_url = 'version/api_key/%%api_key%%' + +# Hostname +base_url = 'localhost' +base_port = 80 + +############################# +## Config for Media Monitor +############################# + +# URL to setup the media monitor +media_setup_url = 'media-monitor-setup/format/json/api_key/%%api_key%%' + +# Tell Airtime the file id associated with a show instance. +upload_recorded = 'upload-recorded/format/json/api_key/%%api_key%%/fileid/%%fileid%%/showinstanceid/%%showinstanceid%%' + +# URL to tell Airtime to update file's meta data +update_media_url = 'reload-metadata/format/json/api_key/%%api_key%%/mode/%%mode%%' + +# URL to tell Airtime we want a listing of all files it knows about +list_all_db_files = 'list-all-files/format/json/api_key/%%api_key%%/dir_id/%%dir_id%%' + +# URL to tell Airtime we want a listing of all dirs its watching (including the stor dir) +list_all_watched_dirs = 'list-all-watched-dirs/format/json/api_key/%%api_key%%' + +# URL to tell Airtime we want to add watched directory +add_watched_dir = 'add-watched-dir/format/json/api_key/%%api_key%%/path/%%path%%' + +# URL to tell Airtime we want to add watched directory +remove_watched_dir = 'remove-watched-dir/format/json/api_key/%%api_key%%/path/%%path%%' + +# URL to tell Airtime we want to add watched directory +set_storage_dir = 'set-storage-dir/format/json/api_key/%%api_key%%/path/%%path%%' + + +############################# +## Config for Recorder +############################# + +# URL to get the schedule of shows set to record +show_schedule_url = 'recorded-shows/format/json/api_key/%%api_key%%' + +# URL to upload the recorded show's file to Airtime +upload_file_url = 'upload-file/format/json/api_key/%%api_key%%' + +#number of retries to upload file if connection problem +upload_retries = 3 + +#time to wait between attempts to upload file if connection problem (in seconds) +upload_wait = 60 + +################################################################################ +# Uncomment *one of the sets* of values from the API clients below, and comment +# out all the others. +################################################################################ + +############################# +## Config for Pypo +############################# + +# Schedule export path. +# %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm +# %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm +export_url = 'schedule/api_key/%%api_key%%' + +get_media_url = 'get-media/file/%%file%%/api_key/%%api_key%%' + +# Update whether a schedule group has begun playing. +update_item_url = 'notify-schedule-group-play/api_key/%%api_key%%/schedule_id/%%schedule_id%%' + +# Update whether an audio clip is currently playing. +update_start_playing_url = 'notify-media-item-start-play/api_key/%%api_key%%/media_id/%%media_id%%/schedule_id/%%schedule_id%%' + +# ??? +generate_range_url = 'generate_range_dp.php' + + +############## +# OBP config # +############## + +# URL to get the version number of the server API +#version_url = 'api/pypo/status/json' + +# Schedule export path. +# %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm +# %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm + +# Update whether an item has been played. +#update_item_url = 'api/pypo/update_shedueled_item/$$item_id%%?played=%%played%%' + +# Update whether an item is currently playing. +#update_start_playing_url = 'api/pypo/mod/medialibrary/?playlist_type=%%playlist_type%%&export_source=%%export_source%%&media_id=%%media_id%%&playlist_id=%%playlist_id%%&transmission_id=%%transmission_id%%' + +# ??? +#generate_range_url = 'api/pypo/generate_range_dp/' + diff --git a/python_apps/api_clients/api_client.py b/python_apps/api_clients/api_client.py index fc0fee7f7..4bb40d46b 100644 --- a/python_apps/api_clients/api_client.py +++ b/python_apps/api_clients/api_client.py @@ -19,15 +19,16 @@ import json import os from urlparse import urlparse import base64 +from configobj import ConfigObj AIRTIME_VERSION = "1.9.0-devel" def api_client_factory(config): logger = logging.getLogger() if config["api_client"] == "airtime": - return AirTimeApiClient(config) + return AirTimeApiClient() elif config["api_client"] == "obp": - return ObpApiClient(config) + return ObpApiClient() else: logger.info('API Client "'+config["api_client"]+'" not supported. Please check your config file.\n') sys.exit() @@ -135,8 +136,14 @@ class ApiClientInterface: class AirTimeApiClient(ApiClientInterface): - def __init__(self, config): - self.config = config + def __init__(self): + # loading config file + try: + self.config = ConfigObj('/etc/airtime/api_client.cfg') + except Exception, e: + logger = logging.getLogger() + logger.error('Error loading config file: %s', e) + sys.exit(1) def __get_airtime_version(self, verbose = True): logger = logging.getLogger() diff --git a/python_apps/media-monitor/airtimefilemonitor/airtimemediamonitorbootstrap.py b/python_apps/media-monitor/airtimefilemonitor/airtimemediamonitorbootstrap.py index e1fb2e43c..1e7c89c9b 100644 --- a/python_apps/media-monitor/airtimefilemonitor/airtimemediamonitorbootstrap.py +++ b/python_apps/media-monitor/airtimefilemonitor/airtimemediamonitorbootstrap.py @@ -105,6 +105,8 @@ class AirtimeMediaMonitorBootstrap(): new_files_set = all_files_set - db_known_files_set modified_files_set = new_and_modified_files - new_files_set + #NAOMI: Please comment out the "Known files" line, if you find the bug. + #it is for debugging purposes only (Too much data will be written to log). -mk self.logger.info("Known files: \n%s\n\n"%db_known_files_set) self.logger.info("Deleted files: \n%s\n\n"%deleted_files_set) self.logger.info("New files: \n%s\n\n"%new_files_set) diff --git a/python_apps/media-monitor/media-monitor.cfg b/python_apps/media-monitor/media-monitor.cfg index 00569074e..066c42b31 100644 --- a/python_apps/media-monitor/media-monitor.cfg +++ b/python_apps/media-monitor/media-monitor.cfg @@ -1,47 +1,11 @@ api_client = "airtime" -# Hostname -base_url = 'localhost' -base_port = 80 - # where the binary files live bin_dir = '/usr/lib/airtime/media-monitor' # where the logging files live log_dir = '/var/log/airtime/media-monitor' -# Value needed to access the API -api_key = 'AAA' - -# Path to the base of the API -api_base = 'api' - -# URL to get the version number of the server API -version_url = 'version/api_key/%%api_key%%' - -# URL to setup the media monitor -media_setup_url = 'media-monitor-setup/format/json/api_key/%%api_key%%' - -# Tell Airtime the file id associated with a show instance. -upload_recorded = 'upload-recorded/format/json/api_key/%%api_key%%/fileid/%%fileid%%/showinstanceid/%%showinstanceid%%' - -# URL to tell Airtime to update file's meta data -update_media_url = 'reload-metadata/format/json/api_key/%%api_key%%/mode/%%mode%%' - -# URL to tell Airtime we want a listing of all files it knows about -list_all_db_files = 'list-all-files/format/json/api_key/%%api_key%%/dir_id/%%dir_id%%' - -# URL to tell Airtime we want a listing of all dirs its watching (including the stor dir) -list_all_watched_dirs = 'list-all-watched-dirs/format/json/api_key/%%api_key%%' - -# URL to tell Airtime we want to add watched directory -add_watched_dir = 'add-watched-dir/format/json/api_key/%%api_key%%/path/%%path%%' - -# URL to tell Airtime we want to add watched directory -remove_watched_dir = 'remove-watched-dir/format/json/api_key/%%api_key%%/path/%%path%%' - -# URL to tell Airtime we want to add watched directory -set_storage_dir = 'set-storage-dir/format/json/api_key/%%api_key%%/path/%%path%%' ############################################ # RabbitMQ settings # diff --git a/python_apps/pypo/pypo.cfg b/python_apps/pypo/pypo.cfg index e2ab6fead..352d234d0 100644 --- a/python_apps/pypo/pypo.cfg +++ b/python_apps/pypo/pypo.cfg @@ -27,10 +27,6 @@ log_base_dir = '/var/log/airtime' pypo_log_dir = '/var/log/airtime/pypo' liquidsoap_log_dir = '/var/log/airtime/pypo-liquidsoap' -# Hostname -base_url = 'localhost' -base_port = 80 - ############################################ # Liquidsoap settings # ############################################ @@ -74,66 +70,3 @@ push_interval = 1 # in seconds # while 'otf' (on the fly) cues while loading into ls # (needs the post_processor patch) cue_style = 'pre' - - -################################################################################ -# Uncomment *one of the sets* of values from the API clients below, and comment -# out all the others. -################################################################################ - -##################### -# Airtime Config # -##################### -# Value needed to access the API -api_key = 'AAA' - -# Path to the base of the API -api_base = 'api' - -# URL to get the version number of the server API -version_url = 'version/api_key/%%api_key%%' - -# Schedule export path. -# %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm -# %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm -export_url = 'schedule/api_key/%%api_key%%' - -get_media_url = 'get-media/file/%%file%%/api_key/%%api_key%%' - -# Update whether a schedule group has begun playing. -update_item_url = 'notify-schedule-group-play/api_key/%%api_key%%/schedule_id/%%schedule_id%%' - -# Update whether an audio clip is currently playing. -update_start_playing_url = 'notify-media-item-start-play/api_key/%%api_key%%/media_id/%%media_id%%/schedule_id/%%schedule_id%%' - -# ??? -generate_range_url = 'generate_range_dp.php' - - -############## -# OBP config # -############## -# Value needed to access the API -#api_key = 'AAA' - -#base_url = 'http://localhost/' - -# Path to the base of the API -#api_base = '' - -# URL to get the version number of the server API -#version_url = 'api/pypo/status/json' - -# Schedule export path. -# %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm -# %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm - -# Update whether an item has been played. -#update_item_url = 'api/pypo/update_shedueled_item/$$item_id%%?played=%%played%%' - -# Update whether an item is currently playing. -#update_start_playing_url = 'api/pypo/mod/medialibrary/?playlist_type=%%playlist_type%%&export_source=%%export_source%%&media_id=%%media_id%%&playlist_id=%%playlist_id%%&transmission_id=%%transmission_id%%' - -# ??? -#generate_range_url = 'api/pypo/generate_range_dp/' - diff --git a/python_apps/show-recorder/recorder.cfg b/python_apps/show-recorder/recorder.cfg index 0079fd017..9eb98849d 100644 --- a/python_apps/show-recorder/recorder.cfg +++ b/python_apps/show-recorder/recorder.cfg @@ -1,9 +1,5 @@ api_client = "airtime" -# Hostname -base_url = 'localhost' -base_port = 80 - # where the binary files live bin_dir = '/usr/lib/airtime/show-recorder' @@ -12,24 +8,3 @@ base_recorded_files = '/var/tmp/airtime/show-recorder/' # where the logging files live log_dir = '/var/log/airtime/show-recorder' - -# Value needed to access the API -api_key = 'AAA' - -# Path to the base of the API -api_base = 'api' - -# URL to get the version number of the server API -version_url = 'version/api_key/%%api_key%%' - -# URL to get the schedule of shows set to record -show_schedule_url = 'recorded-shows/format/json/api_key/%%api_key%%' - -# URL to upload the recorded show's file to Airtime -upload_file_url = 'upload-file/format/json/api_key/%%api_key%%' - -#number of retries to upload file if connection problem -upload_retries = 3 - -#time to wait between attempts to upload file if connection problem (in seconds) -upload_wait = 60 diff --git a/utils/airtime-check-system.php b/utils/airtime-check-system.php index 00a62217c..fd8879f0c 100644 --- a/utils/airtime-check-system.php +++ b/utils/airtime-check-system.php @@ -14,7 +14,7 @@ AirtimeCheck::CheckOsTypeVersion(); AirtimeCheck::CheckConfigFilesExist(); -$pypoCfg = AirtimeCheck::GetPypoCfg(); +$apiClientCfg = AirtimeCheck::GetApiClientCfg(); AirtimeCheck::GetDbConnection($airtimeIni); AirtimeCheck::PythonLibrariesInstalled(); @@ -23,7 +23,7 @@ AirtimeCheck::CheckRabbitMqConnection($airtimeIni); //AirtimeCheck::CheckApacheVHostFiles(); -AirtimeCheck::GetAirtimeServerVersion($pypoCfg); +AirtimeCheck::GetAirtimeServerVersion($apiClientCfg); AirtimeCheck::CheckAirtimeDaemons(); AirtimeCheck::CheckIcecastRunning(); @@ -205,12 +205,12 @@ class AirtimeCheck { return $ini; } - public static function GetPypoCfg() + public static function GetApiClientCfg() { - $ini = parse_ini_file("/etc/airtime/pypo.cfg", false); + $ini = parse_ini_file("/etc/airtime/api_client.cfg", false); if ($ini === false){ - echo "Error reading /etc/airtime/pypo.cfg.".PHP_EOL; + echo "Error reading /etc/airtime/api_client.cfg.".PHP_EOL; exit; } @@ -335,17 +335,17 @@ class AirtimeCheck { output_status("RABBITMQ_SERVER", $status); } - public static function GetAirtimeServerVersion($pypoCfg) + public static function GetAirtimeServerVersion($apiClientCfg) { - $baseUrl = $pypoCfg["base_url"]; - $basePort = $pypoCfg["base_port"]; + $baseUrl = $apiClientCfg["base_url"]; + $basePort = $apiClientCfg["base_port"]; $apiKey = "%%api_key%%"; $url = "http://$baseUrl:$basePort/api/version/api_key/$apiKey"; output_status("AIRTIME_VERSION_URL", $url); - $apiKey = $pypoCfg["api_key"]; + $apiKey = $apiClientCfg["api_key"]; $url = "http://$baseUrl:$basePort/api/version/api_key/$apiKey"; $rh = fopen($url, "r");