Example #1
0
 def index(reponame):
     ''' List all groups '''
     conf = glconfig.GLConfig(reponame)
     if not conf.exists():
         raise HTTPNotFound('Repo %s not found.' % reponame)
     conf.load()
     group_list = [group.get_id() for group in conf.group_list]
     return group_list
Example #2
0
 def show(reponame, rule_id):
     ''' Show a specific rule '''
     refex_list, member_list = glrule.GLRule.parse_id(rule_id)
     conf = glconfig.GLConfig(reponame)
     conf.load()
     rule = conf.find_rule(refex_list, member_list)
     if rule:
         return rule.to_dict()
     if (len(refex_list) == 1 and len(member_list) == 1):
         rule = conf.match_rule(refex_list[0], member_list[0])
         if rule:
             return rule.to_dict()
     raise HTTPNotFound
Example #3
0
 def show(repo_id, name):
     ''' Show a specific group '''
     if not name.startswith('@'):
         raise HTTPBadRequest('Repo name should starts with "@".')
     group_id = '@%s_%s' % (repo_id, name[1:])
     conf = glconfig.GLConfig(repo_id)
     if not conf.exists():
         raise HTTPNotFound('Repo %s not found.' % repo_id)
     conf.load()
     group = conf.find_group(group_id)
     if not group:
         raise HTTPNotFound('Group %s not found.' % group_id)
     return group.member_list
Example #4
0
    def create(reponame, permission, refex_list, member_list):
        ''' Create a new rule '''
        conf = glconfig.GLConfig(reponame)

        def bind():
            ''' operations binded for create '''
            conf.load()
            rule = glrule.GLRule(permission, refex_list, member_list)
            if conf.find_rule(refex_list, member_list):
                raise HTTPConflict('Rule already exists.')
            conf.rule_list.append(rule)
            conf.save()
            return rule.get_id()

        return _transaction(gllock.OP_CREATE, 'Create Rule: %s' % reponame,
                            conf, bind)
Example #5
0
    def delete(reponame, rule_id):
        ''' Delete an existing rule '''
        refex_list, member_list = glrule.GLRule.parse_id(rule_id)
        conf = glconfig.GLConfig(reponame)

        def bind():
            ''' operations binded for delete '''
            conf.load()
            rule = conf.find_rule(refex_list, member_list)
            if not rule:
                raise HTTPNotFound('Rule %s %s not found.' %
                                   (refex_list, member_list))
            result = rule.delete()
            conf.save()
            return result

        return _transaction(gllock.OP_DELETE, 'Delete Rule: %s' % rule_id,
                            conf, bind)
Example #6
0
    def update(reponame, rule_id, new_member_list):
        ''' Update an existing rule '''
        refex_list, member_list = glrule.GLRule.parse_id(rule_id)
        conf = glconfig.GLConfig(reponame)

        def bind():
            ''' operations binded for update '''
            conf.load()
            rule = conf.find_rule(refex_list, member_list)
            if not rule:
                raise HTTPNotFound('Rule %s %s not found.' %
                                   (refex_list, member_list))
            rule.member_list = new_member_list
            conf.save()
            return True

        return _transaction(gllock.OP_UPDATE, 'Update Rule: %s' % rule_id,
                            conf, bind)
Example #7
0
    def delete(repo_id, name):
        ''' Delete an existing group '''
        if not name.startswith('@'):
            raise HTTPBadRequest('Repo name should starts with "@".')
        group_id = '@%s_%s' % (repo_id, name[1:])
        conf = glconfig.GLConfig(repo_id)

        def bind():
            ''' operations binded for delete '''
            conf.load()
            group = conf.find_group(group_id)
            if not group:
                raise HTTPNotFound
            result = group.delete()
            conf.save()
            return result

        return _transaction(gllock.OP_DELETE, 'Delete Group: %s' % group_id,
                            conf, bind)
Example #8
0
    def create(repo_id, name, member_list):
        ''' Create a new group '''
        if not name.startswith('@'):
            raise HTTPBadRequest('Repo name should starts with "@".')
        group_id = '@%s_%s' % (repo_id, name[1:])
        conf = glconfig.GLConfig(repo_id)

        def bind():
            ''' operations binded for create '''
            conf.load()
            if any(group.get_id() == name for group in conf.group_list):
                raise HTTPConflict('Group %s already exists.' % name)
            group = glgroup.GLGroup(group_id, member_list)
            conf.group_list.append(group)
            conf.save()
            return group.get_id()

        return _transaction(gllock.OP_CREATE, 'Create Group: %s' % group_id,
                            conf, bind)
Example #9
0
    def update(repo_id, name, new_member_list):
        ''' Update an existing group '''
        if not name.startswith('@'):
            raise HTTPBadRequest('Repo name should starts with "@".')
        group_id = '@%s_%s' % (repo_id, name[1:])
        conf = glconfig.GLConfig(repo_id)
        if not conf:
            raise HTTPNotFound('Repo %s not found.' % repo_id)

        def bind():
            ''' operations binded for update '''
            conf.load()
            if not any(group.get_id() == name for group in conf.group_list):
                raise HTTPNotFound('Group %s not found.' % name)
            group = conf.find_group(group_id)
            group.member_list = new_member_list
            conf.save()
            return True

        return _transaction(gllock.OP_UPDATE, 'Update Group: %s' % group_id,
                            conf, bind)
Example #10
0
 def index(reponame):
     ''' List all rules '''
     conf = glconfig.GLConfig(reponame)
     conf.load()
     rule_list = [rule.get_id() for rule in conf.rule_list]
     return rule_list
Example #11
0
 def delete(name):
     ''' Delete an existing repo '''
     conf = glconfig.GLConfig(name)
     return _transaction(gllock.OP_DELETE, 'Delete Repo: %s' % name, conf,
                         conf.delete)
Example #12
0
 def create(name):
     ''' Create a new repo '''
     conf = glconfig.GLConfig(name)
     if _transaction(gllock.OP_CREATE, 'Create Repo: %s' % name, conf,
                     conf.create):
         return name