diff options
Diffstat (limited to 'geo-replication/src')
| -rw-r--r-- | geo-replication/src/peer_mountbroker.in | 34 | 
1 files changed, 33 insertions, 1 deletions
diff --git a/geo-replication/src/peer_mountbroker.in b/geo-replication/src/peer_mountbroker.in index 4c97c6923c4..8573abdf122 100644 --- a/geo-replication/src/peer_mountbroker.in +++ b/geo-replication/src/peer_mountbroker.in @@ -86,8 +86,31 @@ class MountbrokerUserMgmt(object):              del(self._options[key])      def add_user(self, user, volumes): +        vols = set() +        for k, v in self._options.iteritems(): +            if k.startswith("mountbroker-geo-replication.") \ +               and user == k.split(".")[-1]: +                vols.update(v.split(",")) + +        vols.update(volumes)          self.set_opt("mountbroker-geo-replication.%s" % user, -                     ",".join(volumes)) +                     ",".join(vols)) + +    def remove_volume(self, user, volumes): +        vols = set() +        for k, v in self._options.iteritems(): +            if k.startswith("mountbroker-geo-replication.") \ +               and user == k.split(".")[-1]: +                vols.update(v.split(",")) + +        for v1 in volumes: +            vols.discard(v1) + +        if vols: +            self.set_opt("mountbroker-geo-replication.%s" % user, +                         ",".join(vols)) +        else: +            self.remove_opt("mountbroker-geo-replication.%s" % user)      def remove_user(self, user):          self.remove_opt("mountbroker-geo-replication.%s" % user) @@ -129,6 +152,7 @@ def _get_args():      subparsers = parser.add_subparsers(title='subcommands', dest='cmd')      parser_useradd = subparsers.add_parser('user')      parser_userdel = subparsers.add_parser('userdel') +    parser_volumedel = subparsers.add_parser('volumedel')      subparsers.add_parser('info')      parser_opt = subparsers.add_parser('opt')      parser_optdel = subparsers.add_parser('optdel') @@ -137,6 +161,10 @@ def _get_args():      parser_useradd.add_argument('volumes', type=str, default='',                                  help="Volumes list. ',' seperated") +    parser_volumedel.add_argument('username', help="Username", type=str) +    parser_volumedel.add_argument('volumes', type=str, default='', +                                help="Volumes list. ',' seperated") +      parser_userdel.add_argument('username', help="Username", type=str)      parser_opt.add_argument('opt_name', help="Name", type=str) @@ -163,6 +191,10 @@ def main():          volumes = [v.strip() for v in args.volumes.split(",")                     if v.strip() != ""]          m.add_user(args.username, volumes) +    elif args.cmd == "volumedel": +        volumes = [v.strip() for v in args.volumes.split(",") +                   if v.strip() != ""] +        m.remove_volume(args.username, volumes)      elif args.cmd == "info":          info = m.info()          if not args.json:  | 
