コード例 #1
0
 def del_user_data(self):
     data_files = glob.glob(
         os.path.join(self.channel_handler.ucache_path, '*.json'))
     if len(data_files) < 5:
         return
     for f_path in sorted(data_files, reverse=True)[5:]:
         File.force_delete(f_path)
コード例 #2
0
    def set_user_data(self, event):
        return_code = 1314

        event_data = event.get_event_data()
        user_data = UserData.from_json(event_data)
        if not user_data.is_valid():
            logger.info('{0} got invalid user data: {1}'.format(
                self.real_name, event))
            return_code = 1313
            return return_code
        event_timestamp = event.get_event_timestamp()
        udata_path = settings.DEFAULT_USERDATA_PATH
        udata_name = os.path.basename(udata_path)
        ufile_name = '{0}_{1}'.format(event_timestamp, udata_name)
        ufile_path = os.path.join(self.channel_handler.ucache_path, ufile_name)
        File.write_content(event_data, ufile_path)

        self.del_user_data()

        data_files = glob.glob(
            os.path.join(self.channel_handler.ucache_path, '*.json'))
        sort_files = sorted(data_files, reverse=True)
        if not sort_files:
            return_code = 1313
            return return_code
        File.force_copy(sort_files[0], udata_path)

        return return_code
コード例 #3
0
    def write(self, data, cache_path=None, suffix='json'):
        path = self.get_realpath(cache_path)
        name = '{0}.{1}'.format(Random.get_uuid(), suffix)

        file_path = os.path.join(path, name)

        File.write_content(data, file_path)
コード例 #4
0
    def before_run(self):
        source_file = self._obj.channel_handler.rcache_handler.abspath(
            self._fname)
        target_file = self._obj.channel_handler.ccache_handler.abspath(
            self._fname)

        File.force_move(source_file, target_file)
コード例 #5
0
ファイル: cache.py プロジェクト: sacus/xm2cloud_agent
    def write(self, data, cache_path=None, suffix='json'):
        path = self.get_realpath(cache_path)
        uuid = Random.get_uuid()
        name = '{0}.{1}'.format(uuid, suffix)
        temp = '{0}.{1}'.format(uuid, 'temp')

        file_path = os.path.join(path, name)
        temp_path = os.path.join(path, temp)

        File.write_content(data, temp_path)
        File.force_move(temp_path, file_path)
コード例 #6
0
    def read(self, cache_path=None, batch=50, suffix='json'):
        event_data = []

        path = self.get_realpath(cache_path)
        name = os.path.join(path, '*.{0}'.format(suffix))

        glob_files = glob.glob(name)
        for f in itertools.islice(glob_files, 0, batch):
            f_name = os.path.basename(f)
            try:
                f_content = File.read_content(f)
            except Exception as e:
                logger.warning('Read {0} {1}'.format(f, e))
                continue
            event_data.append((f_name, f_content))

        return event_data
コード例 #7
0
    def read(self, cache_path=None, batch=512, suffix='json'):
        event_data = []

        path = self.get_realpath(cache_path)
        name = os.path.join(path, '*.{0}'.format(suffix))

        count = 0
        for f in glob.iglob(name):
            f_name = os.path.basename(f)
            try:
                f_content = File.read_content(f)
            except Exception as e:
                logger.warning('Read {0} {1}'.format(f, e))
                continue
            event_data.append((f_name, f_content))
            count += 1
            if count >= batch:
                break

        return sorted(event_data)
コード例 #8
0
ファイル: engine.py プロジェクト: sacus/xm2cloud_agent
    def put_ccache(self, fname):
        source_file = self.channel_handler.rcache_handler.abspath(fname)
        target_file = self.channel_handler.ccache_handler.abspath(fname)

        File.force_move(source_file, target_file)
コード例 #9
0
    def get_json_data(self):
        json_data = File.read_content(self.udata_path)

        return json_data