コード例 #1
0
ファイル: mounter.py プロジェクト: zaoqi-clone/gitfs
def prepare_components(args):
    commit_queue = CommitQueue()

    credentials = get_credentials(args)

    try:
        # setting router
        router = Router(remote_url=args.remote_url,
                        mount_path=args.mount_point,
                        current_path=args.current_path,
                        history_path=args.history_path,
                        repo_path=args.repo_path,
                        branch=args.branch,
                        user=args.user,
                        group=args.group,
                        max_size=args.max_size * 1024 * 1024,
                        max_offset=args.max_size * 1024 * 1024,
                        commit_queue=commit_queue,
                        credentials=credentials,
                        ignore_file=args.ignore_file,
                        hard_ignore=args.hard_ignore)
    except KeyError as error:
        sys.stderr.write(
            "Can't clone reference origin/%s from remote %s: %s\n" %
            (args.branch, args.remote_url, error))
        raise error

    # register all the routes
    routes = prepare_routes(args)
    router.register(routes)

    # setup workers
    merge_worker = SyncWorker(args.commiter_name,
                              args.commiter_email,
                              args.commiter_name,
                              args.commiter_email,
                              commit_queue=commit_queue,
                              repository=router.repo,
                              upstream="origin",
                              branch=args.branch,
                              repo_path=router.repo_path,
                              timeout=args.merge_timeout,
                              credentials=credentials,
                              min_idle_times=args.min_idle_times)

    fetch_worker = FetchWorker(upstream="origin",
                               branch=args.branch,
                               repository=router.repo,
                               timeout=args.fetch_timeout,
                               credentials=credentials,
                               idle_timeout=args.idle_fetch_timeout)

    merge_worker.daemon = True
    fetch_worker.daemon = True

    router.workers = [merge_worker, fetch_worker]

    return merge_worker, fetch_worker, router
コード例 #2
0
ファイル: mounter.py プロジェクト: PressLabs/gitfs
def prepare_components(args):
    commit_queue = CommitQueue()

    credentials = get_credentials(args)

    try:
        # setting router
        router = Router(remote_url=args.remote_url,
                        mount_path=args.mount_point,
                        current_path=args.current_path,
                        history_path=args.history_path,
                        repo_path=args.repo_path,
                        branch=args.branch,
                        user=args.user,
                        group=args.group,
                        max_size=args.max_size * 1024 * 1024,
                        max_offset=args.max_size * 1024 * 1024,
                        commit_queue=commit_queue,
                        credentials=credentials,
                        ignore_file=args.ignore_file,
                        hard_ignore=args.hard_ignore)
    except KeyError as error:
        sys.stderr.write("Can't clone reference origin/%s from remote %s: %s\n" %
                         (args.branch, args.remote_url, error))
        raise error

    # register all the routes
    routes = prepare_routes(args)
    router.register(routes)

    # setup workers
    merge_worker = SyncWorker(args.commiter_name, args.commiter_email,
                              args.commiter_name, args.commiter_email,
                              commit_queue=commit_queue,
                              repository=router.repo,
                              upstream="origin",
                              branch=args.branch,
                              repo_path=router.repo_path,
                              timeout=args.merge_timeout,
                              credentials=credentials,
                              min_idle_times=args.min_idle_times)

    fetch_worker = FetchWorker(upstream="origin",
                               branch=args.branch,
                               repository=router.repo,
                               timeout=args.fetch_timeout,
                               credentials=credentials,
                               idle_timeout=args.idle_fetch_timeout)

    merge_worker.daemon = True
    fetch_worker.daemon = True

    router.workers = [merge_worker, fetch_worker]

    return merge_worker, fetch_worker, router
コード例 #3
0
def prepare_components(args):
    commit_queue = CommitQueue()

    credentials = get_credentials(args)

    # setting router
    router = Router(remote_url=args.remote_url,
                    mount_path=args.mount_point,
                    repo_path=args.repo_path,
                    branch=args.branch,
                    user=args.user,
                    group=args.group,
                    max_size=args.max_size * 1024 * 1024,
                    max_offset=args.max_size * 1024 * 1024,
                    commit_queue=commit_queue,
                    credentials=credentials,
                    ignore_file=args.ignore_file,
                    hard_ignore=args.hard_ignore)

    # register all the routes
    router.register(routes)

    # setup workers
    merge_worker = SyncWorker(args.commiter_name,
                              args.commiter_email,
                              args.commiter_name,
                              args.commiter_email,
                              commit_queue=commit_queue,
                              repository=router.repo,
                              upstream="origin",
                              branch=args.branch,
                              repo_path=router.repo_path,
                              timeout=args.merge_timeout,
                              credentials=credentials,
                              min_idle_times=args.min_idle_times)

    fetch_worker = FetchWorker(upstream="origin",
                               branch=args.branch,
                               repository=router.repo,
                               timeout=args.fetch_timeout,
                               credentials=credentials,
                               idle_timeout=args.idle_fetch_timeout)

    merge_worker.daemon = True
    fetch_worker.daemon = True

    router.workers = [merge_worker, fetch_worker]

    return merge_worker, fetch_worker, router
コード例 #4
0
ファイル: mounter.py プロジェクト: HWL-RobAt/gitfs
def prepare_components(args):
    commit_queue = CommitQueue()

    credentials = get_credentials(args)

    # setting router
    router = Router(remote_url=args.remote_url,
                    mount_path=args.mount_point,
                    repo_path=args.repo_path,
                    branch=args.branch,
                    user=args.user,
                    group=args.group,
                    max_size=args.max_size * 1024 * 1024,
                    max_offset=args.max_size * 1024 * 1024,
                    commit_queue=commit_queue,
                    credentials=credentials,
                    ignore_file=args.ignore_file,
                    hard_ignore=args.hard_ignore)

    # register all the routes
    router.register(routes)

    # setup workers
    merge_worker = SyncWorker(args.commiter_name, args.commiter_email,
                              args.commiter_name, args.commiter_email,
                              commit_queue=commit_queue,
                              repository=router.repo,
                              upstream="origin",
                              branch=args.branch,
                              repo_path=router.repo_path,
                              timeout=args.merge_timeout,
                              credentials=credentials,
                              min_idle_times=args.min_idle_times)

    fetch_worker = FetchWorker(upstream="origin",
                               branch=args.branch,
                               repository=router.repo,
                               timeout=args.fetch_timeout,
                               credentials=credentials,
                               idle_timeout=args.idle_fetch_timeout)

    merge_worker.daemon = True
    fetch_worker.daemon = True

    router.workers = [merge_worker, fetch_worker]

    return merge_worker, fetch_worker, router
コード例 #5
0
    def get_new_router(self):
        mocked_credentials = MagicMock()
        mocked_branch = MagicMock()
        mocked_repo = MagicMock()
        mocked_repository = MagicMock()
        mocked_log = MagicMock()
        mocked_ignore = MagicMock()
        mocked_cache_ignore = MagicMock()
        mocked_lru = MagicMock()
        mocked_pwnam = MagicMock()
        mocked_grnam = MagicMock()
        mocked_time = MagicMock()
        mocked_queue = MagicMock()
        mocked_shutil = MagicMock()
        mocked_shutting = MagicMock()
        mocked_fetch = MagicMock()

        mocked_time.time.return_value = 0
        mocked_repository.clone.return_value = mocked_repo
        mocked_ignore.return_value = mocked_cache_ignore
        mocked_pwnam.return_value.pw_uid = 1
        mocked_grnam.return_value.gr_gid = 1

        mocks = {
            'repository': mocked_repository,
            'repo': mocked_repo,
            'log': mocked_log,
            'ignore': mocked_ignore,
            'ignore_cache': mocked_ignore,
            'lru': mocked_lru,
            'getpwnam': mocked_pwnam,
            'getgrnam': mocked_grnam,
            'time': mocked_time,
            'queue': mocked_queue,
            'shutil': mocked_shutil,
            'shutting': mocked_shutting,
            'fetch': mocked_fetch,
        }

        init_kwargs = {
            'remote_url': 'remote_url',
            'repo_path': 'repository_path',
            'mount_path': 'mount_path',
            'credentials': mocked_credentials,
            'branch': mocked_branch,
            'user': '******',
            'group': 'root',
            'commit_queue': mocked_queue,
            'max_size': 10,
            'max_offset': 10,
            'ignore_file': '',
            'module_file': '',
            'hard_ignore': None,
        }

        with patch.multiple('gitfs.router', Repository=mocked_repository,
                            log=mocked_log, CachedIgnore=mocked_ignore,
                            lru_cache=mocked_lru, getpwnam=mocked_pwnam,
                            getgrnam=mocked_grnam, time=mocked_time,
                            shutil=mocked_shutil, fetch=mocked_fetch,
                            shutting_down=mocked_shutting):
            router = Router(**init_kwargs)

        mocks.update(init_kwargs)
        return router, mocks
コード例 #6
0
ファイル: test_router.py プロジェクト: tuxxon/gitfs
    def get_new_router(self):
        mocked_credentials = MagicMock()
        mocked_branch = MagicMock()
        mocked_repo = MagicMock()
        mocked_repository = MagicMock()
        mocked_log = MagicMock()
        mocked_ignore = MagicMock()
        mocked_cache_ignore = MagicMock()
        mocked_lru = MagicMock()
        mocked_pwnam = MagicMock()
        mocked_grnam = MagicMock()
        mocked_time = MagicMock()
        mocked_queue = MagicMock()
        mocked_shutil = MagicMock()
        mocked_shutting = MagicMock()
        mocked_fetch = MagicMock()

        mocked_time.time.return_value = 0
        mocked_repository.clone.return_value = mocked_repo
        mocked_ignore.return_value = mocked_cache_ignore
        mocked_pwnam.return_value.pw_uid = 1
        mocked_grnam.return_value.gr_gid = 1

        mocks = {
            "repository": mocked_repository,
            "repo": mocked_repo,
            "log": mocked_log,
            "ignore": mocked_ignore,
            "ignore_cache": mocked_ignore,
            "lru": mocked_lru,
            "getpwnam": mocked_pwnam,
            "getgrnam": mocked_grnam,
            "time": mocked_time,
            "queue": mocked_queue,
            "shutil": mocked_shutil,
            "shutting": mocked_shutting,
            "fetch": mocked_fetch,
        }

        init_kwargs = {
            "remote_url": "remote_url",
            "repo_path": "repository_path",
            "mount_path": "mount_path",
            "credentials": mocked_credentials,
            "branch": mocked_branch,
            "user": "******",
            "group": "root",
            "commit_queue": mocked_queue,
            "max_size": 10,
            "max_offset": 10,
            "ignore_file": "",
            "module_file": "",
            "hard_ignore": None,
        }

        with patch.multiple(
            "gitfs.router",
            Repository=mocked_repository,
            log=mocked_log,
            CachedIgnore=mocked_ignore,
            lru_cache=mocked_lru,
            getpwnam=mocked_pwnam,
            getgrnam=mocked_grnam,
            time=mocked_time,
            shutil=mocked_shutil,
            fetch=mocked_fetch,
            shutting_down=mocked_shutting,
        ):
            router = Router(**init_kwargs)

        mocks.update(init_kwargs)
        return router, mocks
コード例 #7
0
ファイル: mounter.py プロジェクト: odony/gitfs
def prepare_components(args):
    commit_queue = CommitQueue()

    credentials = get_credentials(args)

    try:
        # setting router
        router = Router(remote_url=args.remote_url,
                        mount_path=args.mount_point,
                        current_path=args.current_path,
                        history_path=args.history_path,
                        repo_path=args.repo_path,
                        branch=args.branch,
                        user=args.user,
                        group=args.group,
                        max_size=args.max_size * 1024 * 1024,
                        max_offset=args.max_size * 1024 * 1024,
                        commit_queue=commit_queue,
                        credentials=credentials,
                        ignore_file=args.ignore_file,
                        hard_ignore=args.hard_ignore)
    except KeyError as error:
        sys.stderr.write(
            "Can't clone reference origin/%s from remote %s: %s\n" %
            (args.branch, args.remote_url, error))
        raise error

    # register all the routes
    routes = prepare_routes(args)
    router.register(routes)

    # determine global git user/email if not set (default is to use hostname)
    if ('@%s' % socket.gethostname()
        ) in args.commiter_email and router.repo.default_signature:
        sig = router.repo.default_signature
        args.commiter_email = sig.email
        args.commiter_name = sig.name
        log.info('Using default signature: %s <%s>', sig.name, sig.email)

    # setup workers
    merge_worker = SyncWorker(args.commiter_name,
                              args.commiter_email,
                              args.commiter_name,
                              args.commiter_email,
                              commit_queue=commit_queue,
                              repository=router.repo,
                              upstream="origin",
                              branch=args.branch,
                              repo_path=router.repo_path,
                              timeout=args.merge_timeout,
                              credentials=credentials,
                              min_idle_times=args.min_idle_times)

    fetch_worker = FetchWorker(upstream="origin",
                               branch=args.branch,
                               repository=router.repo,
                               timeout=args.fetch_timeout,
                               credentials=credentials,
                               idle_timeout=args.idle_fetch_timeout)

    merge_worker.daemon = True
    fetch_worker.daemon = True

    router.workers = [merge_worker, fetch_worker]

    return merge_worker, fetch_worker, router