From 110008e9091968837d0137e1b61a29851c248154 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 7 Nov 2012 11:29:39 -0500 Subject: [PATCH] added saas shit --- .../media-monitor2/media/saas/__init__.py | 0 .../media/saas/airtimeinstance.py | 32 +++++++++++++++++++ .../media-monitor2/media/saas/thread.py | 19 +++++++++++ 3 files changed, 51 insertions(+) create mode 100644 python_apps/media-monitor2/media/saas/__init__.py create mode 100644 python_apps/media-monitor2/media/saas/airtimeinstance.py create mode 100644 python_apps/media-monitor2/media/saas/thread.py diff --git a/python_apps/media-monitor2/media/saas/__init__.py b/python_apps/media-monitor2/media/saas/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/python_apps/media-monitor2/media/saas/airtimeinstance.py b/python_apps/media-monitor2/media/saas/airtimeinstance.py new file mode 100644 index 000000000..ed37caa41 --- /dev/null +++ b/python_apps/media-monitor2/media/saas/airtimeinstance.py @@ -0,0 +1,32 @@ +import os + +from media.monitor.exceptions import NoConfigFile +from media.monitor.pure import LazyProperty +from media.monitor.config import MMConfig +from api_cients import AirtimeApiClient + +class AirtimeInstance(object): + """ AirtimeInstance is a class that abstracts away every airtime + instance by providing all the necessary objects required to interact + with the instance. ApiClient, configs, root_directory """ + + def __init__(self,name, root_path, config_paths): + """ name is an internal name only """ + for cfg in ['api_client','media_monitor', 'logging']: + if cfg not in config_paths: raise NoConfigFile(config_paths) + elif not os.path.exists(config_paths[cfg]): + raise NoConfigFile(config_paths[cfg]) + self.name = name + self.config_paths = config_paths + self.root_path = root_path + + def __str__(self): + return "%s,%s(%s)" % (self.name, self.root_path, self.config_paths) + + @LazyProperty + def api_client(self): + return AirtimeApiClient(config_path=self.config_paths['api_client']) + + @LazyProperty + def mm_config(self): + return MMConfig(self.config_paths['media_monitor']) diff --git a/python_apps/media-monitor2/media/saas/thread.py b/python_apps/media-monitor2/media/saas/thread.py new file mode 100644 index 000000000..b71c4a8fb --- /dev/null +++ b/python_apps/media-monitor2/media/saas/thread.py @@ -0,0 +1,19 @@ +import threading + +tc = threading.local() + +class InstanceThread(threading.Thread): + def __init__(self,user, *args, **kwargs): + super(InstanceThread, self).__init__(*args, **kwargs) + self._user = user + + def run(self): + tc._user = self._user + + def user(self): + return tc._user + +class InstanceInheritingThread(threading.Thread): + def __init__(self, *args, **kwargs): + super(InstanceInheritingThread, self).__init__(*args, **kwargs) + self.user = tc._user