It is agreed to measure the database space usage by each tenant. Here we
will not limit the tenant(in terms of database access) on its DB
usage but will keep track on excess DB space use by each tenant.
Component level view of the process.
Changes to each component:
Rss-manager: This component will
be used to gather usage data from the RSS. And this will add those
data to a queue which in turn will be retrieved by usage agent
component. This Usage data collection will be handle through couple
of newly added classes. And this is scheduled to be run daily. And it
is configurable to run starting from a given time and repeated with
given time gap(currently decided to run it in 24h intervals). Here we
will only interested in tenants with exceeded usage. So it is needed
to know the usage plan of a interested tenant, in order to get its
limits. We thought of only publishing information about those tenants
who exceeds the space limits, due to two reasons.
- To reduce the data transfer between components and to the BAM server.
- Exceeded DB size is all we need for billing calculations.
Usage-agent: This component will
retrieve usage data from the queue(above mentioned) in the
rss-manager. This is handled by newly added class,
DatabaseUsageDataRetrievalTask. This is also scheduled to be run
daily. And it is configurable to run starting from a given time and
repeated with given time gap(currently decided to run it in 24h
intervals).
Stratos-commons: This is where
usage plan details are manipulated. Here plan details are read from
'multitenancy-packages.xml' and made available for use through a
service. Here I have changed the xml file, xml reading class, data
storing bean, to contain DB usage related data.
Dependencies: this depends on
the yet to develop component (to get the tenant usage plan given the
tenant domain/id) and that component is required for the RSS-Manager
component changed to work perfectly.