[Freeipa-devel] Bulk IPA commands
Rob Crittenden
rcritten at redhat.com
Tue Oct 19 19:39:06 UTC 2010
Adam Young wrote:
> I think I have an approach that will work for pacaking up multiple
> commands at once.
>
Just want to mention that XML-RPC has a provision for doing multiple
requests in a single HTTP request that has a similar format. We just
don't support it currently.
rob
> Stage 1:
>
>
> 1. We create a new plugin, we call it bulk. For now, it will speak only
> JSON.
>
> 2. The json requests look like this:
>
>
> |{"method":"bulk","params":[[|
> | {"method":"user_find","params":[[""],{}]},|
> | {"method":"user_show","params":[[""],{}]},|
> | {"method":"user_add","params":[[""],{}]},|
> |{"method":"user_blah","params":[[""],{}]}|,
> |],{"all":true,"sizelimit":100}],"id":2}|
>
>
> This gets sent as a single json_request.
>
> On the server side, each request is pulled out of the params and the
> common items all=true and sizelimit=100 is added to each request. The
> resulting json request is then executed locally, without re-requiring
> the kerberos auth. THe response from the individual requests are put
> into the response array, like so:
>
> |{
> || "error": null,
> || "id": 2,
> || "result": {
> || "count": 1,
> || "result": [{
> || "error": null, //start of the response for the first nested command.
> || "id": 1,
> || "result": {
> || "count": 1,
> || "result": [
> || {
> || "cn": [
> || "Administrator"
> || ],|
>
> ...
>
> Thus the plugin is responsible for processing each request, marshalling
> up the return and adding it to the current response.
>
>
>
>
> Stage 2: we add an asynchronous mechanism. We add an option for the
> email notification address to the bulk plugin. The response returns
> immediately. Meanwhile, the plugin hands off the processing of the
> initial request to a queue that will be handled by another thread or
> process, and email the response to the address. Alternatively, we email
> back just an abbreviated status message.
>
>
> Stage 3: Store the response in a filesystem or the DirSrv, and mail back
> a link that allows the user to fetch the status.
>
>
>
>
> I really only care about Stage 1 for now. THe json_metadata plugin is
> getting loaded up with too many unrelated calls in it. I'd like to be
> able to craft and arbitraty message that gets sent and returned with all
> of the information required to initialize the IPA Web UI.
>
> user-find --whoami
> json_metadata
> I18N_messages
> Effective rights
> plugin lists (to enable/disable UI features based on what is active)
>
> While we would do this initially as a JSON only call, the XML-RPC should
> nest the same way. I leave it to Rob and Simo to figureo ut if this
> would support the CLI, but it seems to me that it should be pretty easy
> to do:
>
>
> ipa bulk
> >ipa user-mod ...
> >ipa user-del ...
> >upa group-add ...
> ^D
>
> And have that sent as a single command, with the responses again parsed
> out by the cli. Then the user can do:
>
> cat mycommands | ipa bulk > bulk.response
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> Freeipa-devel mailing list
> Freeipa-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/freeipa-devel
More information about the Freeipa-devel
mailing list