Description: Red Hat's Bugzilla exports a XMLRPC interface for performing a variety of Bugzilla functions. Function Requirements: Mostly self contained on backend in xmlrpc.cgi, Bugzilla/RPC.pm and Bugzilla/RPC/*.pm.
This bug is large task and will be broken into little tasks : 1- first task: update Bugzilla/RPC/Bug.pm to be compatible with upstream WebServices/Bug.pm ,, This will include adding new xmlrpc function from upstream get_bugs() as currently we only have xmlrpc functions that returns one bug. also we are going to rework Bugzilla/RPC/Bug.pm by replacing all the update/change bug functions with single function that can update any field for us, so it would match with what can be done in the web UI (bug 426099)
2- Second subtask: As part of making Our XMLRPC API compatible with the upstream API ,, we will update Bugzilla/RPC/User.pm to include all the functions in the upstream WebService/User.pm and add our additional ones this will require moving some functions from Bugzilla/RPC/Admin.pm to Bugzilla/RPC/User.pm "addUser and name it create" . Also We will add new module Bugzilla/RPC/Admin.pm which doesn't exist in the Upstream bugzilla.
3- Third subtask: Currently we have module Bugzilla/RPC/Info.pm that has xmlrpc functions to return information about components and products,, Upstream has only /Bugzilla/WebService/Product.pm that basically can only Get a list of actual products, based on list of ids which is a functionality we don't have, We need to add this functionality from Upstream Product.pm to our Info.pm also possibly contribute to the upstream our functions in Info.pm (Bug 426184)
IMO integrating our RPC modules with upstream will be challenging. I think our current interface is the result of ad hoc development. Many of our routines could be compacted down into far fewer routines that are more generic. Instead of simply adding in our RPC functions where the upstream is missing them we need to fully understand how the upstream is designing the interface. Then we need to look at our functionality and determine the best way to integrate it. Otherwise I don't think we have a big chance of getting the upstream to accept our patches.
ok, as discussed on IRC, let's build a cross comparison between 2.18 and 3.2 to see where the gaps are. https://engineering.redhat.com/trac/bugzilla-3.0-rh/wiki/XmlrpcCrossComparison
Bugzilla::RPC 2.18 xmlrpc functions rated by percentage of calls Oct 16 to Dec 21 2007. Recommend implementing in the order the appear in the following table +-----------------+--------------------+-------------+--------------+---+--------+ | 2.18 RPC module | Function | WebService? | Function | I*| %calls | +-----------------+--------------------+-------------+--------------+---+--------+ | Query.pm | runQuery | None | None | N | 48.07% | | Bug.pm | getBug | Bug.pm | get_bugs | P | 34.57% | | Bug.pm | addIT | None | None | N | 4.83% | | Bug.pm | getBugActivity | None | None | N | 4.14% | | User.pm | nameToId | None | None | N | 2.61% | | User.pm | login | User.pm | login | Y | 1.43% | | Bug.pm | getBugSimple | Bug.pm | get_bugs | P | 1.17% | | Admin.pm | editComponent | None | None | N | 0.59% | | User.pm | idToName | None | None | N | 0.57% | | Bug.pm | getBugModified | None | None | N | 0.54% | | Bug.pm | addComment | None | None | N | 0.28% | | Bug.pm | updateFlags | None | None | N | 0.19% | | Bug.pm | closeBug | None | None | N | 0.16% | | Bug.pm | changeStatus | None | None | N | 0.11% | | Bug.pm | updateCC | None | None | N | 0.08% | | Info.pm | getProdInfo | Product.pm | get_products | P | 0.07% | | Bug.pm | createBug | Bug.pm | create | Y | 0.05% | | Bug.pm | changeAssignment | None | None | N | 0.04% | | Bug.pm | updateDepends | None | None | N | 0.03% | | Info.pm | getProdCompDetails | None | None | N | 0.02% | | Admin.pm | addComponent | None | None | N | 0.02% | | Bug.pm | updateMilestone | None | None | N | 0.02% | | Info.pm | getCompInfo | None | None | N | 0.01% | | Info.pm | getProductDetails | Product.pm | get_products | P | 0.01% | | Info.pm | getProductDetails | Product.pm | get_products | P | 0.01% | | User.pm | userInfo | None | None | N | 0.01% | | Admin.pm | addUser | User.pm | create | Y | 0.00% | | Admin.pm | disableAccount | None | None | N | 0.00% | | Admin.pm | updatePerms | None | None | N | 0.00% | | Bug.pm | addAttachment | None | None | N | 0.00% | | Bug.pm | deleteIT | None | None | N | 0.00% | | Bug.pm | getLastBug | None | None | N | 0.00% | | Bug.pm | updateGroups | None | None | N | 0.00% | | Bug.pm | updateKeywords | None | None | N | 0.00% | | Bug.pm | updatePriority | None | None | N | 0.00% | | Bug.pm | updateWhiteboard | None | None | N | 0.00% | | Info.pm | getProdCompInfo | None | None | N | 0.00% | | Query.pm | getQueryInfo | None | None | N | 0.00% | +-----------------+--------------------+-------------+--------------+---+--------+ I* - N - the function is not implemented in the upstream P - the function is partially implemented in the upstream Y - the function is fully implemented in the upstream %calls - These not called: +-----------------+--------------------+-------------+--------------+---+--------+ | Admin.pm | isCanCreateAccount | None | None | N | | | Admin.pm | changeUserInfo | None | None | N | | | Admin.pm | canSeeBug | None | None | N | | | Admin.pm | getAllGroups | None | None | N | | | Bug.pm | sillyness | None | None | N | | | Bug.pm | isPrivate | None | None | N | | | Bug.pm | issueExists | None | None | N | | | Bug.pm | ping | None | None | N | | | Bug.pm | getReleaseFlags | None | None | N | | | Bug.pm | updateSeverity | None | None | N | | | Bug.pm | getBugFields | None | None | N | | | Info.pm | sillyness | None | None | N | | | Info.pm | getCompDesc | None | None | N | | | Info.pm | _product_to_id | None | None | N | | | Process.pm | changeBug | None | None | N | | | Process.pm | addComment | None | None | N | | | Process.pm | addAttachment | None | None | N | | +-----------------+--------------------+-------------+--------------+---+--------+
Noura, I think that bugs 426099, 426182, 426184 will need to be replaced with bugs that specific to implementing the functions in the above table. Each function we need will require discussion with the upstream about the most appropriate way to implement it. Please talk with dkl about how to approach this.
Please research the upstream conversations around xmlrpc http://groups.google.com/group/mozilla.dev.apps.bugzilla/browse_thread/thread/ec6ae302c336e6a3 This tiny url was referenced in the above conversation. It lists upstream bugs relevant to xmlrpc http://tinyurl.com/3afonu IMO the upstream has stalled on xmlrpc since October. Maybe there is activity behind the scenes.