Source code for b2sdk.sync.policy_manager

######################################################################
#
# File: b2sdk/sync/policy_manager.py
#
# Copyright 2019 Backblaze Inc. All Rights Reserved.
#
# License https://www.backblaze.com/using_b2_code.html
#
######################################################################

from .policy import DownAndDeletePolicy, DownAndKeepDaysPolicy, DownPolicy
from .policy import UpAndDeletePolicy, UpAndKeepDaysPolicy, UpPolicy


[docs]class SyncPolicyManager(object): """ Policy manager, implements a logic to get a correct policy class and create a policy object based on various parameters """
[docs] def __init__(self): self.policies = {} # dict<,>
[docs] def get_policy( self, sync_type, source_file, source_folder, dest_file, dest_folder, now_millis, args ): """ Return policy object :param sync_type: synchronization type :type sync_type: str :param source_file: source file name :type source_file: str :param source_folder: a source folder path :type source_folder: str :param dest_file: destination file name :type dest_file: str :param dest_folder: a destination folder path :type dest_folder: str :param now_millis: current time in milliseconds :type now_millis: int :param args: an object which holds command line arguments :return: a policy object """ policy_class = self.get_policy_class(sync_type, args) return policy_class(source_file, source_folder, dest_file, dest_folder, now_millis, args)
[docs] def get_policy_class(self, sync_type, args): """ Get policy class by a given sync type :param sync_type: synchronization type :type sync_type: str :param args: an object which holds command line arguments :return: a policy class """ if sync_type == 'local-to-b2': if args.delete: return UpAndDeletePolicy elif args.keepDays: return UpAndKeepDaysPolicy else: return UpPolicy elif sync_type == 'b2-to-local': if args.delete: return DownAndDeletePolicy elif args.keepDays: return DownAndKeepDaysPolicy else: return DownPolicy assert False, 'invalid sync type: %s, args: %s' % (sync_type, str(args))
POLICY_MANAGER = SyncPolicyManager()