diff options
-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: |