diff options
Diffstat (limited to 'ipalib/plugins/application.py')
-rw-r--r-- | ipalib/plugins/application.py | 255 |
1 files changed, 0 insertions, 255 deletions
diff --git a/ipalib/plugins/application.py b/ipalib/plugins/application.py deleted file mode 100644 index 150dbe8e1..000000000 --- a/ipalib/plugins/application.py +++ /dev/null @@ -1,255 +0,0 @@ -# Authors: -# Jakub Hrozek <jhrozek@redhat.com> -# -# Copyright (C) 2008 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 - -""" -Frontend plugins for application policy containers. -""" - -from ipalib import api, crud -from ipalib import Object, Command # Plugin base classes -from ipalib import Str, StrEnum, Flag # Parameter types - -def get_base_by_type(type): - if type == 'config': - return api.env.container_applications - if type == 'role': - return api.env.container_roles - -class application(Object): - 'Application object' - takes_params = ( - Str('cn', - cli_name='appname', - primary_key=True, - doc='Application name', - ), - Str('description?', - doc='Application description', - ), - ) -api.register(application) - -# The default attributes to query -default_attributes = ['cn','description'] - -class application_create(crud.Create): - 'Add a new application' - takes_options = ( - StrEnum('type', - values=(u'config', u'role'), - doc='The type of the application', - ), - ) - - def execute(self, cn, **kw): - """ - Execute the application-create operation - - The dn should not be passed as a keyword argument, it - should be constructed by this method. - - :param cn: The name of the application being added. - :param kw: Keyword arguments for the other LDAP attributes. - """ - self.log.info("IPA: application-create '%s'" % cn) - - assert 'dn' not in kw - assert 'cn' not in kw - ldap = self.api.Backend.ldap - - kw['objectClass'] = ['nsContainer', 'ipaContainer'] - if kw['type'] == 'config': - kw['dn'] = ldap.make_application_dn(cn) - if kw['type'] == 'role': - kw['dn'] = ldap.make_role_application_dn(cn) - kw['cn'] = cn - - del kw['type'] - return ldap.create(**kw) - - def output_for_cli(self, textui, result, *args, **options): - """ - Output result of this command to command line interface. - """ - textui.print_name(self.name) - textui.print_entry(result) - textui.print_dashed('Added application "%s"' % result['cn']) - -api.register(application_create) - -class application_find(crud.Search): - 'Search for applications' - takes_options = ( - StrEnum('type', - values=(u'config', u'role'), - doc='The type of the application', - ), - Flag('all', - doc='Retrieve all application attributes' - ), - ) - - def execute(self, term, **kw): - """ - Execute the application-find operation - """ - ldap = self.api.Backend.ldap - - search_kw = dict() - search_kw['cn'] = term - search_kw['objectclass'] = 'ipaContainer' - search_kw['base'] = get_base_by_type(kw['type']) - search_kw['scope'] = 'one' - if kw.get('all', False): - search_kw['attributes'] = ['*'] - else: - search_kw['attributes'] = default_attributes - - return ldap.search(**search_kw) - - def output_for_cli(self, textui, result, cn, **options): - """ - Output result of this command to command line interface. - """ - counter = result[0] - apps = result[1:] - if counter == 0 or len(apps) == 0: - textui.print_plain("No applications found") - return - if len(apps) == 1: - textui.print_entry(apps[0]) - return - textui.print_name(self.name) - for a in apps: - textui.print_plain('%(cn)s:' % a) - textui.print_entry(a) - textui.print_plain('') - if counter == -1: - textui.print_plain('These results are truncated.') - textui.print_plain('Please refine your search and try again.') - textui.print_count(apps, '%d applications matched') - -api.register(application_find) - -class application_delete(crud.Del): - 'Delete an application' - takes_options = ( - StrEnum('type', - values=(u'config', u'role'), - doc='The type of the application', - ), - ) - - def execute(self, cn, **kw): - """ - Delete the application container. - - :param cn: The name of the application being deleted. - :param kw: Not used. - """ - if cn == "Shell Applications": - raise SyntaxError("Cannot delete shell application") - self.log.info("IPA: application_delete '%s'" % cn) - - ldap = self.api.Backend.ldap - dn = ldap.find_entry_dn("cn", - cn, - object_type='ipaContainer', - base=get_base_by_type(kw['type'])) - - return ldap.delete(dn) - - def output_for_cli(self, textui, result, cn): - """ - Output result of this command to command line interface. - """ - textui.print_plain('Deleted application "%s"' % cn) - -api.register(application_delete) - -class application_show(crud.Get): - 'Examine an existing application' - takes_options = ( - StrEnum('type', - values=(u'config', u'role'), - doc='The type of the application', - ), - Flag('all', - doc='Retrieve all application attributes' - ), - ) - def execute(self, cn, **kw): - """ - Execute the application-show operation. - """ - ldap = self.api.Backend.ldap - dn = ldap.find_entry_dn("cn", - cn, - object_type='ipaContainer', - base=get_base_by_type(kw['type'])) - - if kw.get('all', False): - return ldap.retrieve(dn) - else: - return ldap.retrieve(dn, default_attributes) - - def output_for_cli(self, textui, result, cn, **options): - if result: - textui.print_entry(result) - -api.register(application_show) - -class application_edit(crud.Mod): - 'Edit an existing application' - takes_options = ( - StrEnum('type', - values=(u'config', u'role'), - doc='The type of the application', - ), - ) - - def execute(self, cn, **kw): - """ - Execute the application-edit operation - - :param cn: The name of the application to edit - :param kw: Keyword arguments for the other LDAP attributes. - """ - self.log.info("IPA: application_edit '%s'" % cn) - - assert 'cn' not in kw - assert 'dn' not in kw - ldap = self.api.Backend.ldap - dn = ldap.find_entry_dn("cn", - cn, - object_type='ipaContainer', - base=get_base_by_type(kw['type'])) - - del kw['type'] - return ldap.update(dn, **kw) - - def output_for_cli(self, textui, result, cn, **options): - """ - Output result of this command to command line interface. - """ - textui.print_name(self.name) - textui.print_entry(result) - textui.print_dashed('Updated application "%s"' % result['cn']) - -api.register(application_edit) |