Hi,

as described in ticket #288, I produced an (experimental!) patch (attached to the ticket and commited on a multiproduct branch - see below) that provides functionalities as described in the ticket description: - extends enum, component, version, milestone and wiki tables with product column - upgrades existing database to a new schema by properly migrating existing configuration to a default product and multiplying the configuration for all products defined
- in runtime:
- introduces BloodhoundIterableCursor that translates all SQLs targeted at the affected tables - introduces BloodhoundEnvironment skeleton that replaces trac Environment with product specific functionality (awareness, scope) - all SQLs targeted at the database are 'scoped' to a product defined in the environment - the only drawback is that there is currently no UI way of changing product scope, at this point in time it can only be changed by modifying DEFAULT_PRODUCT in bloodhound.py and restarting/reloading bloodhound runtime

What this mean in practice is that through controlling product scope within BloodhoundEnvironment, one can (in runtime) easily change product scope and in turn affect all queries targeted at the resources that we want to be product specific. For now these resources include milestones, versions, components, enums (resolutions, priorities, ticket types).

Please test the patch and let me know if you run into any issues. Note that sqlparse (https://code.google.com/p/python-sqlparse/) is a prerequisite for the patch to work.

I also created a Bloodhound branch that we will use for the BEP-0003 multiproduct development. I applied the patch from ticket #288 and we can go from there to implementing other BEP-0003 functionalities. I think that multi product branch should be separated as it affect basically everything from the UI to the database and will take some time before we have a 'release ready' solution.

Cheers,
Jure



On 12/11/12 11:00 AM, Apache Bloodhound wrote:
#288: Create prototype for legacy database schema proxy
---------------------------+-----------------------------------
   Reporter:  jure          |      Owner:  jure
       Type:  enhancement   |     Status:  assigned
   Priority:  major         |  Milestone:
  Component:  multiproduct  |    Version:
Resolution:                |   Keywords:  bep-0003 multiproduct
---------------------------+-----------------------------------

Comment (by jure):

  As described in ticket description, attached patch
  (ticket288_r1418224_MultiproductSQLProxy.diff) is an initial
  implementation of SQL proxy with the fore-mentioned functionality. It
  monkey-patches trac to install BloodhoundIterableCursor and
  BloodhoundEnvironment to capture all SQLs targeted at the database and
  provides product aware/scope selection.

  The patch does the following:
  - introduces modified database schema by extending enum, component,
  milestone, version and wiki tables with additional column named product
  - database upgrade
   -  migrates existing enums, components, milestones, versions to a default
  product and, in addition to that, multiplies the configuration for each
  defined product
   - tickets w/o product are migrated to default product
  - in runtime, the BloodhoundIterableCursor translates SQLs targeted at the
  tables mentioned above to the scope of the product defined in
  bloodhound.py (DEFAULT_PRODUCT). This effectively scopes all SQLs targeted
  to translated tables to that product
  - currently, as there is no obvious UI way of chaning product scope,
  currently selected product scope can be changed by modifying the
  bloodhound.py file and chaning the DEFAULT_PRODUCT...


Reply via email to