Files
freeipa/ipalib/plugins/hostgroup.py
T
Rob Crittenden 6c393e53b0 This is the second half of a patch. Only the part that had to be
re-based got pushed for some reason.

Use better description for group names in help and always prompt for members

When running <foo>-[add|remove]-member completely interactively it didn't
prompt for managing membership, it just reported that 0 members were
handled which was rather confusing.

This will work via a shell if you want to echo too:

$ echo "" | ipa group-add-member g1

This returns 0 members because nothing is read for users or group members.

$ echo -e "g1\nadmin\n" | ipa group-add-member

This adds the user admin to the group g1. It adds it as a user because
user membership is prompted for first.

ticket 415
2010-12-02 16:29:26 -05:00

156 lines
3.6 KiB
Python

# Authors:
# Rob Crittenden <rcritten@redhat.com>
# Pavel Zuna <pzuna@redhat.com>
#
# Copyright (C) 2009 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; version 2 only
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
Groups of hosts.
Manage groups of hosts. This is useful for applying access control to a
number of hosts by using Host-based Access Control.
EXAMPLES:
Add a new host group:
ipa hostgroup-add --desc="Baltimore hosts" baltimore
Add another new host group:
ipa hostgroup-add --desc="Maryland hosts" maryland
Add members to the hostgroup:
ipa hostgroup-add-member --hosts=box1,box2,box3 baltimore
Add a hostgroup as a member of another hostgroup:
ipa hostgroup-add-member --hostgroups=baltimore maryland
Remove a host from the hostgroup:
ipa hostgroup-remove-member --hosts=box2 baltimore
Display a host group:
ipa hostgroup-show baltimore
Delete a hostgroup:
ipa hostgroup-del baltimore
"""
from ipalib.plugins.baseldap import *
from ipalib import api, Int, _, ngettext
class hostgroup(LDAPObject):
"""
Hostgroup object.
"""
container_dn = api.env.container_hostgroup
object_name = 'hostgroup'
object_name_plural = 'hostgroups'
object_class = ['ipaobject', 'ipahostgroup']
default_attributes = ['cn', 'description', 'member', 'memberof',
'memberindirect'
]
uuid_attribute = 'ipauniqueid'
attribute_members = {
'member': ['host', 'hostgroup'],
'memberof': ['hostgroup'],
'memberindirect': ['host', 'hostgroup'],
}
label = _('Host Groups')
takes_params = (
Str('cn',
cli_name='hostgroup_name',
label=_('Host-group'),
doc=_('Name of host-group'),
primary_key=True,
normalizer=lambda value: value.lower(),
),
Str('description',
cli_name='desc',
label=_('Description'),
doc=_('A description of this host-group'),
),
)
api.register(hostgroup)
class hostgroup_add(LDAPCreate):
"""
Add a new hostgroup.
"""
msg_summary = _('Added hostgroup "%(value)s"')
api.register(hostgroup_add)
class hostgroup_del(LDAPDelete):
"""
Delete a hostgroup.
"""
msg_summary = _('Deleted hostgroup "%(value)s"')
api.register(hostgroup_del)
class hostgroup_mod(LDAPUpdate):
"""
Modify a hostgroup.
"""
msg_summary = _('Modified hostgroup "%(value)s"')
api.register(hostgroup_mod)
class hostgroup_find(LDAPSearch):
"""
Search for hostgroups.
"""
msg_summary = ngettext(
'%(count)d hostgroup matched', '%(count)d hostgroups matched'
)
api.register(hostgroup_find)
class hostgroup_show(LDAPRetrieve):
"""
Display information about a hostgroup.
"""
api.register(hostgroup_show)
class hostgroup_add_member(LDAPAddMember):
"""
Add members to a hostgroup.
"""
api.register(hostgroup_add_member)
class hostgroup_remove_member(LDAPRemoveMember):
"""
Remove members from a hostgroup.
"""
api.register(hostgroup_remove_member)