예제 #1
0
파일: api.py 프로젝트: twekberg/uwgroups
    def sync_members(self, group_name, members, dry_run=False):
        """Add or remove users from the specified group as necessary so that
        the group contains ``members`` (a list or uwnetids). When
        ``dry_run`` is True, log the necessary actions but don't
        modify the group. The group is created if it does not already
        exist.

        """

        desired_members = set(members)

        try:
            current_members = set(self.get_members(group_name))
        except MissingResourceError:
            self.reset()
            current_members = set()
            log.warning('creating group {}'.format(group_name))
            if not dry_run:
                self.create_group(group_name)

        log.info('{} current members'.format(len(current_members)))
        log.debug('current members: {}'.format(current_members))
        to_add, to_delete = reconcile(current_members, desired_members)

        if to_add:
            log.info('[+] {}: {}'.format(group_name, ','.join(to_add)))
            if not dry_run:
                self.add_members(group_name, sorted(to_add))

        if to_delete:
            log.info('[-] {}: {}'.format(group_name, ','.join(to_delete)))
            if not dry_run:
                self.delete_members(group_name, sorted(to_delete))
예제 #2
0
    def test05(self):
        to_add, to_remove = reconcile(current={'b', 'd'},
                                      desired={'a', 'b', 'c'})

        self.assertSetEqual(to_add, {'a', 'c'})
        self.assertSetEqual(to_remove, {'d'})
예제 #3
0
    def test01(self):
        to_add, to_remove = reconcile(current=set(), desired=set())

        self.assertSetEqual(to_add, set())
        self.assertSetEqual(to_remove, set())