summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 5d8b23805a9fe5ee5ed9a5836ad3252a560e0544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
API chages before January 2009 simi-freeze:

  * Merge Param and Type together so that rather than taking the type as a
    kwarg, you simply use the Type. For example, instead of:
        >>> Param('number', type=Int())
    You would do this:
        >>> Int('number')
    The types will correspond to Python 3.0 text/binary disambiguaiton, so we
    will have Bytes, Str, Int, Float, and Bool.

  * Rename crud Method base classes to standard CRUDS name: Add=>Create,
    Get=>Retrieve, Mod=>Update, Del=>Delete, Find=>Search.

  * Add a Command.backend convenience attribute that checks if the class
    uses_backend attribute is sets the Command.backend attribute like this:
        self.backend = self.Backend[self.uses_backend]

  * Finish methods on Plugin base class for calling external commands via
    subprocess.

  * Probably renamed ipa_server package to ipaserver.

  * Add special logging methods to Plugin baseclass for authorization events
    (escalation, de-escalation, and denial).

  * Implement gettext service.

  * Add ability to register pre-op, post-op plugins per command.

  * Add ability to have certain args/options only active on either client-side
    or server-side, and also the same for things like default_from callbacks.

  * Add ability to have a post-processing step that only gets called
    client-side.  It should have a signature like output_for_cli() minus the
    textui argument.  Need to decide whether we allow this method to modify
    the return value.

  * Make Plugin base class parse class docstring into overview and
    full-description strings (similar to Bazaar).

  * Removed depreciated code in config.py.

  * Remove __getattr__() from Env (and probably elsewhere) as in Python 2.4 and
    2.5 hasattr() will catch KeyboardInterrupt and SystemExit exceptions (BTW,
    this has been fixed in Python 2.6).

  * Remove support for dynamic environment values from Env... Jason feels this
    the Env class should be simple and static.  Other mechanisms should be used
    for retrieving per-request dynamic environment variables.


CRUD base classes:

  * The Retrieve method should add in the common Flag('all') option for
    retrieving all attributes.

  * We probably need some LDAP centric crud method base classes, like
    LDAPCreate, etc.  Or other options it to have an LDAPObject base class and
    have the crud Method plugins rely more on their corresponding Object plugin.

  * Update the Retrieve, Update, Delete, and Search classes so that the utilize
    the new Param.query kwarg (to turn off validation) when cloning params.


Existing plugins:

  * Many existing plugins that are doing crud-type operations aren't using the
    Object + Method way of defining their parameters, and are therefore defining
    the exact same parameter several times in a module.  This should be fixed
    one way or another... if there are deficiencies in the crud base classes,
    they need to be improved.


Command Line interface:

  * Finish textui plugin

  * Make possible Enum values self-documenting

  * All "comma-separated list of..." parameters should really be changed to
    multivalue and have a flag that tells the CLI whether a multivalue should
    be parsed as comma-separated.

  * Add a file option so an argument may be read from a file. This is needed
    for cert-request to pass along the CSR.

  * Replace RequiresRoot() with more fine-grained control based on the
    files that need to be read/written


Improve ease of plugin writting
  - make "from ipalib import *" import everything a plugin writter will need
  - Finish ipa_types, add Str and Float Types

Packaging
  - Use setuptools instead of plain distutils
  - Make setup.py generate dev-docs and run unit tests
  - Package for rpm (.spec file)
  - Package for apt (debian/ dir)

Migration
  - Add the IPAService objectclass to existing principals
  - Move existng host/ principals from cn=services to cn=computers?