Nicolas Vazquez created CLOUDSTACK-9438:
-------------------------------------------
Summary: Fix for CLOUDSTACK-9252 - Make NFS version changeable in
UI
Key: CLOUDSTACK-9438
URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9438
Project: CloudStack
Issue Type: Improvement
Security Level: Public (Anyone can view this level - this is the default.)
Reporter: Nicolas Vazquez
Assignee: Nicolas Vazquez
h3. Introduction
>From [9252|https://issues.apache.org/jira/browse/CLOUDSTACK-9252] it was
>possible to configure NFS version for secondary storage mount.
However, changing NFS version requires inserting an new detail on
{{image_store_details}} table, with {{name = 'nfs.version'}} and {{value = X}}
where X is desired NFS version, and then restarting management server for
changes to take effect.
Our improvement aims to make NFS version changeable from UI, instead of
previously described workflow.
h3. Proposed solution
Basically, NFS version is defined as an image store ConfigKey, this implied:
* Adding a new Config scope: *ImageStore*
* Make {{ImageStoreDetailsDao}} class to extend {{ResourceDetailsDaoBase}} and
{{ImageStoreDetailVO}} implement {{ResourceDetail}}
* Insert {{'display'}} column on {{image_store_details}} table
* Extending {{ListCfgsCmd}} and {{UpdateCfgCmd}} to support *ImageStore* scope,
which implied:
** Injecting {{ImageStoreDetailsDao}} and {{ImageStoreDao}} on
{{ConfigurationManagerImpl}} class, on {{cloud-server}} module.
h4. Important
It is important to mention that {{ImageStoreDaoImpl}} and
{{ImageStoreDetailsDaoImpl}} classes were moved from {{cloud-engine-storage}}
to {{cloud-engine-schema}} module in order to Spring find those beans to inject
on {{ConfigurationManagerImpl}} in {{cloud-server}} module.
We had this maven dependencies between modules:
* {{cloud-server --> cloud-engine-schema}}
* {{cloud-engine-storage --> cloud-secondary-storage --> cloud-server}}
As {{ImageStoreDaoImpl}} and {{ImageStoreDetailsDaoImpl}} were defined in
{{cloud-engine-storage}}, and they needed in {{cloud-server}} module, to be
injected on {{ConfigurationManagerImpl}}, if we added dependency from
{{cloud-server}} to {{cloud-engine-storage}} we would introduce a dependency
cycle. To avoid this cycle, we moved those classes to {{cloud-engine-schema}}
module
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)