Esempio n. 1
0
    def run(self):
        self.index_create()
        manager = Manager()
        apiclient = apc()
        config = user().mm_config
        WatchSyncer(signal=getsig('watch'),
                    chunking_number=config['chunking_number'],
                    timeout=config['request_max_wait'])
        airtime_receiver = AirtimeMessageReceiver(config, manager)
        airtime_notifier = AirtimeNotifier(config, airtime_receiver)

        adb = AirtimeDB(apiclient)
        store = {
            u'stor': adb.storage_path(),
            u'watched_dirs': adb.list_watched(),
        }

        self.logger.info("initializing mm with directories: %s" % str(store))

        self.logger.info("Initing with the following airtime response:%s" %
                         str(store))

        airtime_receiver.change_storage({'directory': store[u'stor']})

        for watch_dir in store[u'watched_dirs']:
            if not os.path.exists(watch_dir):
                # Create the watch_directory here
                try:
                    os.makedirs(watch_dir)
                except Exception:
                    self.logger.error("Could not create watch directory: '%s' \
                            (given from the database)." % watch_dir)
            if os.path.exists(watch_dir):
                airtime_receiver.new_watch({'directory': watch_dir},
                                           restart=True)
            else:
                self.logger.info("Failed to add watch on %s" % str(watch_dir))

        EventDrainer(airtime_notifier,
                     interval=float(config['rmq_event_wait']))

        # Launch the toucher that updates the last time when the script was
        # ran every n seconds.
        # TODO : verify that this does not interfere with bootstrapping because the
        # toucher thread might update the last_ran variable too fast
        ToucherThread(path=user().touch_file_path(),
                      interval=int(config['touch_interval']))

        success = False
        while not success:
            try:
                apiclient.register_component('media-monitor')
                success = True
            except Exception, e:
                self.logger.error(str(e))
                import time
                time.sleep(10)
Esempio n. 2
0
 def test_directory_get_files(self):
     sdb = AirtimeDB(self.ac)
     print(sdb.list_storable_paths())
     for wdir in sdb.list_storable_paths():
         files = sdb.directory_get_files(wdir)
         print( "total files: %d" % len(files) )
         self.assertTrue( len(files) >= 0 )
         self.assertTrue( isinstance(files, set) )
         exist, deleted = partition(os.path.exists, files)
         print("(exist, deleted) = (%d, %d)" % ( len(exist), len(deleted) ) )
Esempio n. 3
0
 def test_directory_get_files(self):
     sdb = AirtimeDB(self.ac)
     print(sdb.list_storable_paths())
     for wdir in sdb.list_storable_paths():
         files = sdb.directory_get_files(wdir)
         print("total files: %d" % len(files))
         self.assertTrue(len(files) >= 0)
         self.assertTrue(isinstance(files, set))
         exist, deleted = partition(os.path.exists, files)
         print("(exist, deleted) = (%d, %d)" % (len(exist), len(deleted)))
Esempio n. 4
0
    def run(self):
        self.index_create()
        manager = Manager()
        apiclient = apc()
        config = user().mm_config
        WatchSyncer(signal=getsig('watch'),
                chunking_number=config['chunking_number'],
                timeout=config['request_max_wait'])
        airtime_receiver = AirtimeMessageReceiver(config,manager)
        airtime_notifier = AirtimeNotifier(config, airtime_receiver)


        adb = AirtimeDB(apiclient)
        store = {
                u'stor' : adb.storage_path(),
                u'watched_dirs' : adb.list_watched(),
        }

        self.logger.info("initializing mm with directories: %s" % str(store))

        self.logger.info(
                "Initing with the following airtime response:%s" % str(store))

        airtime_receiver.change_storage({ 'directory':store[u'stor'] })

        for watch_dir in store[u'watched_dirs']:
            if not os.path.exists(watch_dir):
                # Create the watch_directory here
                try: os.makedirs(watch_dir)
                except Exception:
                    self.logger.error("Could not create watch directory: '%s' \
                            (given from the database)." % watch_dir)
            if os.path.exists(watch_dir):
                airtime_receiver.new_watch({ 'directory':watch_dir }, restart=True)
            else: self.logger.info("Failed to add watch on %s" % str(watch_dir))

        EventDrainer(airtime_notifier,
                interval=float(config['rmq_event_wait']))

        # Launch the toucher that updates the last time when the script was
        # ran every n seconds.
        # TODO : verify that this does not interfere with bootstrapping because the
        # toucher thread might update the last_ran variable too fast
        ToucherThread(path=user().touch_file_path(),
                interval=int(config['touch_interval']))

        success = False
        while not success:
            try:
                apiclient.register_component('media-monitor')
                success = True
            except Exception, e:
                self.logger.error(str(e))
                import time
                time.sleep(10)
Esempio n. 5
0
 def __request_now_bootstrap(self, directory_id=None, directory=None,
         all_files=True):
     if (not directory_id) and (not directory):
         raise ValueError("You must provide either directory_id or \
                 directory")
     sdb = AirtimeDB(apc.AirtimeApiClient.create_right_config())
     if directory            : directory = os.path.normpath(directory)
     if directory_id == None : directory_id = sdb.to_id(directory)
     if directory    == None : directory = sdb.to_directory(directory_id)
     try:
         bs = Bootstrapper( sdb, self.manager.watch_signal() )
         bs.flush_watch( directory=directory, last_ran=self.cfg.last_ran() )
     except Exception as e:
         self.fatal_exception("Exception bootstrapping: (dir,id)=(%s,%s)" %
                              (directory, directory_id), e)
         raise DirectoryIsNotListed(directory, cause=e)
Esempio n. 6
0
class TestAirtimeDB(unittest.TestCase):
    def setUp(self):
        self.ac = ac.AirtimeApiClient(logger=get_logger(),
                                      config_path=prepare_tests.real_config)

    def test_syncdb_init(self):
        sdb = AirtimeDB(self.ac)
        self.assertTrue( len(sdb.list_storable_paths()) > 0 )

    def test_list(self):
        self.sdb = AirtimeDB(self.ac)
        for watch_dir in self.sdb.list_storable_paths():
            self.assertTrue( os.path.exists(watch_dir) )

    def test_directory_get_files(self):
        sdb = AirtimeDB(self.ac)
        print(sdb.list_storable_paths())
        for wdir in sdb.list_storable_paths():
            files = sdb.directory_get_files(wdir)
            print( "total files: %d" % len(files) )
            self.assertTrue( len(files) >= 0 )
            self.assertTrue( isinstance(files, set) )
            exist, deleted = partition(os.path.exists, files)
            print("(exist, deleted) = (%d, %d)" % ( len(exist), len(deleted) ) )
Esempio n. 7
0
class TestAirtimeDB(unittest.TestCase):
    def setUp(self):
        self.ac = ac.AirtimeApiClient(logger=get_logger(),
                                      config_path=prepare_tests.real_config)

    def test_syncdb_init(self):
        sdb = AirtimeDB(self.ac)
        self.assertTrue(len(sdb.list_storable_paths()) > 0)

    def test_list(self):
        self.sdb = AirtimeDB(self.ac)
        for watch_dir in self.sdb.list_storable_paths():
            self.assertTrue(os.path.exists(watch_dir))

    def test_directory_get_files(self):
        sdb = AirtimeDB(self.ac)
        print(sdb.list_storable_paths())
        for wdir in sdb.list_storable_paths():
            files = sdb.directory_get_files(wdir)
            print("total files: %d" % len(files))
            self.assertTrue(len(files) >= 0)
            self.assertTrue(isinstance(files, set))
            exist, deleted = partition(os.path.exists, files)
            print("(exist, deleted) = (%d, %d)" % (len(exist), len(deleted)))
Esempio n. 8
0
 def test_list(self):
     self.sdb = AirtimeDB(self.ac)
     for watch_dir in self.sdb.list_storable_paths():
         self.assertTrue( os.path.exists(watch_dir) )
Esempio n. 9
0
 def test_syncdb_init(self):
     sdb = AirtimeDB(self.ac)
     self.assertTrue( len(sdb.list_storable_paths()) > 0 )
Esempio n. 10
0
 def test_list(self):
     self.sdb = AirtimeDB(self.ac)
     for watch_dir in self.sdb.list_storable_paths():
         self.assertTrue(os.path.exists(watch_dir))
Esempio n. 11
0
 def test_syncdb_init(self):
     sdb = AirtimeDB(self.ac)
     self.assertTrue(len(sdb.list_storable_paths()) > 0)