Hi,
In order to identify whether a cluster exposes Gluster / Virtualization
capabilities, we plan to introduce two boolean columns - virt_service
and gluster_service in the vds_groups table. As per immediate plans, it
is intended to support only one service per cluster, meaning only one of
these two values can be true.
We plan to make following changes as part of the patch:
1) Introduce an upgrade script for adding following columns to the table
"vds_groups"
- virt_service - boolean - NOT_NULL - default value true
- gluster_service - boolean - NOT_NULL - default value false
=> What is the naming convention for naming the upgrade script? Is it
<major-version>_<minor-version>_<running-sequence-with-step-10>_script_description.sql
? By that logic, the name of our script will be something like
03_01_0560_add_service_columns_to_vds_groups.sql
2) Modify vds_groups_sp.sql to introduce these arguments / variables in
save and update methods
3) Modify the DAO interface and implementation to introduce these
arguments / variables in the save/update methods and VdsGroupRawMapper.
4) Modify the DAO JUnit test class to take care of these new fields, if
required.
5) Modify class VDSGroup to introduce the two new boolean variables
virtService and glusterService and modify the methods equals and
hashCode to use these.
=> One question here. Most of the attributes of class VDSGroup have
annotations like @XmlElement and @Column. I think these are related to
jaxb and JPA. Are these annotations really required? If yes, how are
they useful?
6) REST API : Default populate these variables (virtService = true,
glusterService = false) before invoking the BLL command
(AddVdsGroupCommand / UpdateVdsGroupCommand). This makes sure that the
existing API won't break. No change in api.xsd for now.
7) webadmin create cluster code: Default populate the new variables,
same as above. No change in UI screen for now.
=> Alternatively, the variable declaration on VDSGroup itself can
initialize these variables with default values, so that changes to UI /
REST API code (points 6 and 7) may not be required immediately. What do
you suggest?
Inputs / comments / suggestions welcome.
--
Thanks,
Shireesh