From 700d58ac1e29378569f2f9ac1a4fe39c8747aeba Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Sun, 20 Jul 2008 02:03:15 +0000 Subject: [PATCH] 11: Added submodules needed to triger the plugin loading, etc., so I can start work on the cli demo --- ipalib/base.py | 1 + ipalib/crud.py | 10 ++-------- ipalib/plugins.py | 39 +++++++++++++++++++++++++++++++++++++++ ipalib/run.py | 28 ++++++++++++++++++++++++++++ ipalib/startup.py | 31 +++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 8 deletions(-) create mode 100644 ipalib/plugins.py create mode 100644 ipalib/run.py create mode 100644 ipalib/startup.py diff --git a/ipalib/base.py b/ipalib/base.py index 3cadc70e8..537146b4c 100644 --- a/ipalib/base.py +++ b/ipalib/base.py @@ -212,6 +212,7 @@ class API(object): def finalize(self): cmd_d = {} + cmd_l = {} for obj in self.__obj_d.values(): for cmd in obj.commands(): assert cmd.full_name not in cmd_d diff --git a/ipalib/crud.py b/ipalib/crud.py index c20b4cc16..2ae736f53 100644 --- a/ipalib/crud.py +++ b/ipalib/crud.py @@ -26,29 +26,23 @@ import base class add(base.Command): pass - -class get(base.Command): +class find(base.Command): pass - class edit(base.Command): pass - class delete(base.Command): pass -class find(base.Command): - pass class CrudLike(base.Object): def get_commands(self): return [ add, - get, + find, edit, delete, - find, ] diff --git a/ipalib/plugins.py b/ipalib/plugins.py new file mode 100644 index 000000000..a78755ab2 --- /dev/null +++ b/ipalib/plugins.py @@ -0,0 +1,39 @@ +# Authors: +# Jason Gerard DeRose +# +# 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 + +""" +Some example plugins. +""" + +import crud +from run import api + +class user(crud.CrudLike): + pass +api.register_object(user) + + +class group(crud.CrudLike): + pass +api.register_object(group) + + +class service(crud.CrudLike): + pass +api.register_object(service) diff --git a/ipalib/run.py b/ipalib/run.py new file mode 100644 index 000000000..ffaa655f4 --- /dev/null +++ b/ipalib/run.py @@ -0,0 +1,28 @@ +# Authors: +# Jason Gerard DeRose +# +# 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 + +""" +Standard run-time instances of importard classes. This is where plugins +should access the registration API. +""" + +import base + +# The standard API instance +api = base.API() diff --git a/ipalib/startup.py b/ipalib/startup.py new file mode 100644 index 000000000..cfeb57b16 --- /dev/null +++ b/ipalib/startup.py @@ -0,0 +1,31 @@ +# Authors: +# Jason Gerard DeRose +# +# 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 + +""" +Importing this module causes the plugins to be loaded and the API to be +generated. + +This is not in __init__.py so that imported other IPA modules doesn't cause +unnecessary side effects (needed for unit tests, among other things). +""" + +from run import api +import plugins + +api.finalize()