From 205778fc80d318542f9407b9d6604fb2339c563c Mon Sep 17 00:00:00 2001 From: William Brown Date: Oct 01 2019 23:26:40 +0000 Subject: Ticket 50619 - extend commands to have more modify options Bug Description: Extend dsidm to support modifying more types of entries. Fix Description: Can now modify groups, posixgroup, ou and others from the cli without an ldifmodify https://pagure.io/389-ds-base/issue/50619 Author: William Brown Review by: spichugi (Thanks!) --- diff --git a/src/lib389/lib389/cli_idm/group.py b/src/lib389/lib389/cli_idm/group.py index 69c0e27..468b397 100644 --- a/src/lib389/lib389/cli_idm/group.py +++ b/src/lib389/lib389/cli_idm/group.py @@ -8,7 +8,7 @@ import argparse from lib389.idm.group import Group, Groups, MUST_ATTRIBUTES -from lib389.cli_base import populate_attr_arguments +from lib389.cli_base import populate_attr_arguments, _generic_modify from lib389.cli_idm import ( _generic_list, _generic_get, @@ -48,6 +48,10 @@ def delete(inst, basedn, log, args, warn=True): _warn(dn, msg="Deleting %s %s" % (SINGULAR.__name__, dn)) _generic_delete(inst, basedn, log.getChild('_generic_delete'), SINGULAR, dn, args) +def modify(inst, basedn, log, args, warn=True): + rdn = _get_arg( args.selector, msg="Enter %s to retrieve" % RDN) + _generic_modify(inst, basedn, log.getChild('_generic_modify'), MANY, rdn, args) + def members(inst, basedn, log, args): cn = _get_arg( args.cn, msg="Enter %s of group" % RDN) groups = MANY(inst, basedn) @@ -100,6 +104,11 @@ def create_parser(subparsers): delete_parser.set_defaults(func=delete) delete_parser.add_argument('dn', nargs='?', help='The dn to delete') + modify_parser = subcommands.add_parser('modify', help='modify :: ...') + modify_parser.set_defaults(func=modify) + modify_parser.add_argument('selector', nargs=1, help='The %s to modify' % RDN) + modify_parser.add_argument('changes', nargs='+', help="A list of changes to apply in format: ::") + members_parser = subcommands.add_parser('members', help="List member dns of a group") members_parser.set_defaults(func=members) members_parser.add_argument('cn', nargs='?', help="cn of group to list members of") diff --git a/src/lib389/lib389/cli_idm/organizationalunit.py b/src/lib389/lib389/cli_idm/organizationalunit.py index f10c3a5..c048fa6 100644 --- a/src/lib389/lib389/cli_idm/organizationalunit.py +++ b/src/lib389/lib389/cli_idm/organizationalunit.py @@ -8,7 +8,7 @@ import argparse from lib389.idm.organizationalunit import OrganizationalUnit, OrganizationalUnits, MUST_ATTRIBUTES -from lib389.cli_base import populate_attr_arguments +from lib389.cli_base import populate_attr_arguments, _generic_modify from lib389.cli_idm import ( _generic_list, _generic_get, @@ -47,6 +47,10 @@ def delete(inst, basedn, log, args): _warn(dn, msg="Deleting %s %s" % (SINGULAR.__name__, dn)) _generic_delete(inst, basedn, log.getChild('_generic_delete'), SINGULAR, dn, args) +def modify(inst, basedn, log, args, warn=True): + rdn = _get_arg( args.selector, msg="Enter %s to retrieve" % RDN) + _generic_modify(inst, basedn, log.getChild('_generic_modify'), MANY, rdn, args) + def create_parser(subparsers): ou_parser = subparsers.add_parser('organizationalunit', help='Manage organizational units') @@ -71,5 +75,10 @@ def create_parser(subparsers): delete_parser.set_defaults(func=delete) delete_parser.add_argument('dn', nargs='?', help='The dn to delete') + modify_parser = subcommands.add_parser('modify', help='modify :: ...') + modify_parser.set_defaults(func=modify) + modify_parser.add_argument('selector', nargs=1, help='The %s to modify' % RDN) + modify_parser.add_argument('changes', nargs='+', help="A list of changes to apply in format: ::") + # vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/src/lib389/lib389/cli_idm/posixgroup.py b/src/lib389/lib389/cli_idm/posixgroup.py index 5213985..67682c0 100644 --- a/src/lib389/lib389/cli_idm/posixgroup.py +++ b/src/lib389/lib389/cli_idm/posixgroup.py @@ -8,7 +8,7 @@ import argparse from lib389.idm.posixgroup import PosixGroup, PosixGroups, MUST_ATTRIBUTES -from lib389.cli_base import populate_attr_arguments +from lib389.cli_base import populate_attr_arguments, _generic_modify from lib389.cli_idm import ( _generic_list, _generic_get, @@ -47,6 +47,10 @@ def delete(inst, basedn, log, args): _warn(dn, msg="Deleting %s %s" % (SINGULAR.__name__, dn)) _generic_delete(inst, basedn, log.getChild('_generic_delete'), SINGULAR, dn, args) +def modify(inst, basedn, log, args, warn=True): + rdn = _get_arg( args.selector, msg="Enter %s to retrieve" % RDN) + _generic_modify(inst, basedn, log.getChild('_generic_modify'), MANY, rdn, args) + def create_parser(subparsers): posixgroup_parser = subparsers.add_parser('posixgroup', help='Manage posix groups') @@ -71,5 +75,9 @@ def create_parser(subparsers): delete_parser.set_defaults(func=delete) delete_parser.add_argument('dn', nargs='?', help='The dn to delete') + modify_parser = subcommands.add_parser('modify', help='modify :: ...') + modify_parser.set_defaults(func=modify) + modify_parser.add_argument('selector', nargs=1, help='The %s to modify' % RDN) + modify_parser.add_argument('changes', nargs='+', help="A list of changes to apply in format: ::") # vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/src/lib389/lib389/cli_idm/user.py b/src/lib389/lib389/cli_idm/user.py index 9cd5005..aec0e15 100644 --- a/src/lib389/lib389/cli_idm/user.py +++ b/src/lib389/lib389/cli_idm/user.py @@ -96,7 +96,7 @@ def create_parser(subparsers): modify_parser = subcommands.add_parser('modify', help='modify :: ...') modify_parser.set_defaults(func=modify) - modify_parser.add_argument('selector', nargs=1, help='The uid to modify') + modify_parser.add_argument('selector', nargs=1, help='The %s to modify' % RDN) modify_parser.add_argument('changes', nargs='+', help="A list of changes to apply in format: ::") delete_parser = subcommands.add_parser('delete', help='deletes the object')