Ramesh N has posted comments on this change.

Change subject: engine: add feature comptability check for VDS
......................................................................


Patch Set 10:

(27 comments)

https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetClusterFeaturesByVersionAndCategoryQuery.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetClusterFeaturesByVersionAndCategoryQuery.java:

Line 15: clusterFeaturesList
> the List shouldn't be part of the name. clusterFeatures is enough.
Done


Line 12: 
Line 13:     @Override
Line 14:     protected void executeQueryCommand() {
Line 15:         Set<AdditionalClusterFeature> clusterFeaturesList =
Line 16:                 getDbFacade().getClusterFeatureDao()
> you should be able to use injection here instead of getDbFacade().getCluste
Done
Line 17:                         
.getClusterFeaturesForVersionAndCategory(getParameters().getVersion().getValue(),
Line 18:                                 getParameters().getCategory());
Line 19:         getQueryReturnValue().setReturnValue(clusterFeaturesList);
Line 20:     }


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HandleVdsVersionCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HandleVdsVersionCommand.java:

Line 87:     }
Line 88: 
Line 89:     private void checkClusterAdditionalFeaturesSupported(VDSGroup 
cluster, VDS vds) {
Line 90:         ClusterFeatureDao clusterFeatureDao = getClusterFeatureDao();
Line 91:         VdsDynamicDAO vdsDynamicDao = getVdsDynamicDao();
> please replace the 2 above with injection.
Done
Line 92:         Set<SupportedAdditionalClusterFeature> 
featuresSupportedByCluster =
Line 93:                 
clusterFeatureDao.getSupportedFeaturesByClusterId(cluster.getId());
Line 94:         Set<String> featuresSupportedByVds =
Line 95:                 
vdsDynamicDao.getSupportedHostFeaturesByVdsId(vds.getId());


Line 88: 
Line 89:     private void checkClusterAdditionalFeaturesSupported(VDSGroup 
cluster, VDS vds) {
Line 90:         ClusterFeatureDao clusterFeatureDao = getClusterFeatureDao();
Line 91:         VdsDynamicDAO vdsDynamicDao = getVdsDynamicDao();
Line 92:         Set<SupportedAdditionalClusterFeature> 
featuresSupportedByCluster =
> i'd name it clusterSupportedFeatures
Done
Line 93:                 
clusterFeatureDao.getSupportedFeaturesByClusterId(cluster.getId());
Line 94:         Set<String> featuresSupportedByVds =
Line 95:                 
vdsDynamicDao.getSupportedHostFeaturesByVdsId(vds.getId());
Line 96:         for (SupportedAdditionalClusterFeature feature : 
featuresSupportedByCluster) {


Line 90:         ClusterFeatureDao clusterFeatureDao = getClusterFeatureDao();
Line 91:         VdsDynamicDAO vdsDynamicDao = getVdsDynamicDao();
Line 92:         Set<SupportedAdditionalClusterFeature> 
featuresSupportedByCluster =
Line 93:                 
clusterFeatureDao.getSupportedFeaturesByClusterId(cluster.getId());
Line 94:         Set<String> featuresSupportedByVds =
> and this hostSupportedFeatures
Done
Line 95:                 
vdsDynamicDao.getSupportedHostFeaturesByVdsId(vds.getId());
Line 96:         for (SupportedAdditionalClusterFeature feature : 
featuresSupportedByCluster) {
Line 97:             if (feature.isEnabled() && 
!featuresSupportedByVds.contains(feature.getFeature().getName())) {
Line 98:                 Map<String, String> customLogValues = new HashMap<>();


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java:

Line 154:         Set<SupportedAdditionalClusterFeature> supportedFeatures =
Line 155:                 
clusterFeatureDao.getSupportedFeaturesByClusterId(getVdsGroup().getId());
Line 156:         
supportedFeatures.removeAll(getVdsGroup().getAddtionalFeaturesSupported());
Line 157:         // Disable the features which are not selected in update 
cluster
Line 158:         if (!supportedFeatures.isEmpty()) {
> the surrounding if is not needed. if supportedFeatures, no iteration will b
Done
Line 159:             for (SupportedAdditionalClusterFeature feature : 
supportedFeatures) {
Line 160:                 if (feature.isEnabled()) {
Line 161:                     feature.setEnabled(false);
Line 162:                     
clusterFeatureDao.updateSupportedClusterFeature(feature);


Line 462: 
Line 463:     private Set<SupportedAdditionalClusterFeature> 
getAdditionalClusterFeaturesAdded() {
Line 464:         // Lets not modify the existing collection. Hence creating a 
new hashset.
Line 465:         Set<SupportedAdditionalClusterFeature> featuresSupported =
Line 466:                 new 
HashSet<SupportedAdditionalClusterFeature>(getVdsGroup().getAddtionalFeaturesSupported());
> i don't think redeclaring the type on the right side is needed.
Done
Line 467:         
featuresSupported.removeAll(clusterFeatureDao.getSupportedFeaturesByClusterId(getVdsGroup().getId()));
Line 468:         return featuresSupported;
Line 469:     }
Line 470: 


Line 483:             }
Line 484:         }
Line 485: 
Line 486:         return true;
Line 487: 
> please remove this empty line.
Done
Line 488:     }
Line 489: 
Line 490:     private boolean validateManagementNetworkAttachement() {
Line 491:         final Network managementNetwork;


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java:

Line 447:  VDS
> s/VDS/HOST
Done


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AdditionalClusterFeature.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AdditionalClusterFeature.java:

Line 30:         this.version = version;
Line 31:         this.description = description;
Line 32:         this.category = category;
Line 33:     }
Line 34: 
> this is a bit un-organized: there are first 4 getters, followed by 4 setter
Done
Line 35:     public Guid getId() {
Line 36:         return id;
Line 37:     }
Line 38: 


Line 75:     @Override
Line 76:     public int hashCode() {
Line 77:         final int prime = 31;
Line 78:         int result = 1;
Line 79:         result = prime * result + ((id == null) ? 0 : id.hashCode());
> please use java.util.Objects.hash() which simplifies this method.
That simplifies a lot. Thank you for the suggestion.
Line 80:         result = prime * result + ((name == null) ? 0 : 
name.hashCode());
Line 81:         result = prime * result + ((version == null) ? 0 : 
version.hashCode());
Line 82:         result = prime * result + ((description == null) ? 0 : 
description.hashCode());
Line 83:         result = prime * result + ((category == null) ? 0 : 
category.hashCode());


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/SupportedAdditionalClusterFeature.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/SupportedAdditionalClusterFeature.java:

Line 15: 
Line 16:     public SupportedAdditionalClusterFeature() {
Line 17:     }
Line 18: 
Line 19:     public SupportedAdditionalClusterFeature(Guid clusterId,
> please format (if line is longer than 120, each line should contain a singl
Done
Line 20:             boolean enabled, AdditionalClusterFeature feature) {
Line 21:         this.clusterId = clusterId;
Line 22:         this.setEnabled(enabled);
Line 23:         this.feature = feature;


Line 50:     @Override
Line 51:     public int hashCode() {
Line 52:         final int prime = 31;
Line 53:         int result = 1;
Line 54:         result = prime * result + ((clusterId == null) ? 0 : 
clusterId.hashCode());
> see previous file's comment regarding usage of Objects.hash()
Done
Line 55:         result = prime * result + ((feature == null) ? 0 : 
feature.hashCode());
Line 56:         result = prime * result + (enabled ? 0 : 1);
Line 57:         return result;
Line 58:     }


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetClusterFeaturesByVersionAndCategoryParameters.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetClusterFeaturesByVersionAndCategoryParameters.java:

Line 19:     public void setVersion(Version version) {
Line 20:         this.version = version;
Line 21:     }
Line 22: 
Line 23:     public GetClusterFeaturesByVersionAndCategoryParameters(Version 
version, ApplicationMode category) {
> please move the c'tor next to the other c'tor
Done
Line 24:         this.version = version;
Line 25:         this.category = category;
Line 26:         setRefresh(false);
Line 27:     }


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java
File 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java:

Line 42:      * @param id
Line 43:      * @param cpuFlags
Line 44:      */
Line 45:     void updateCpuFlags(Guid id, String cpuFlags);
Line 46: 
> please name the id field hostId where capable below and align the java doc 
Done
Line 47:     /**
Line 48:      * Add the given feature to the supported_host_features table.
Line 49:      *
Line 50:      * @param feature


Line 51: vdsId
> please fix
Done


Line 48:      * Add the given feature to the supported_host_features table.
Line 49:      *
Line 50:      * @param feature
Line 51:      * @param vdsId
Line 52:      */
> please move the feature related apis into a new DAO interface and its imple
Moved all the new APIs into SupportedHostFeatureDao
Line 53:     void addSupportedHostFeature(Guid id, String feature);
Line 54: 
Line 55:     /**
Line 56:      * Add all the given features to the supported_host_features table.


Line 55:     /**
Line 56:      * Add all the given features to the supported_host_features table.
Line 57:      *
Line 58:      * @param features
Line 59:      * @param vdsId
> please fix
Done
Line 60:      */
Line 61:     void addAllSupportedHostFeature(Guid id, Set<String> features);
Line 62: 
Line 63:     /**


Line 73:      *
Line 74:      * @param id
Line 75:      * @return
Line 76:      */
Line 77:     Set<String> getSupportedHostFeaturesByVdsId(Guid id);
> s/getSupportedHostFeaturesByVdsId/getSupportedHostFeaturesByHostId
Done


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
File 
backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties:

Line 470: Hosts which doesn't
> s/Hosts which doesn't/hosts which don't
Done


Line 467:       -Please move Hosts with lower CPU to maintenance first.
Line 468: VDS_GROUP_CANNOT_UPDATE_COMPATIBILITY_VERSION_WITH_LOWER_HOSTS=Cannot 
change Cluster Compatibility Version to higher version when there are active 
Hosts with lower version.\n\
Line 469:       -Please move Hosts with lower version to maintenance first.
Line 470: VDS_GROUP_CANNOT_UPDATE_SUPPORTED_FEATURES_WITH_LOWER_HOSTS=Cannot 
enable new Cluster feature when there are active Hosts which doesn't support 
the selected feature.\n\
Line 471:       -Please move Hosts with lower version to maintenance first.
> s/Hosts/hosts
Done
Line 472: VDS_GROUP_CANNOT_UPDATE_VDS_UP=Cannot change Cluster.Trying to 
connect Cluster to Data Center with Hosts that are up.
Line 473: 
VDS_GROUP_CANNOT_ADD_COMPATIBILITY_VERSION_WITH_LOWER_STORAGE_POOL=Cannot add 
Cluster with Compatibility Version that is lower than the Data Center 
Compatibility Version.\n\
Line 474:       -Please upgrade your Cluster to a later Compatibility version 
first.
Line 475: VDS_GROUP_CPU_TYPE_CANNOT_BE_NULL=Cannot add Cluster. CPU type must 
be specified


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
File 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java:

Line 657: processVdsFeaturesReported
> processHostFeaturesReported
Done


https://gerrit.ovirt.org/#/c/39756/10/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
File 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java:

Line 707:             vds.setLiveMergeSupport(AssignBoolValue(xmlRpcStruct, 
VdsProperties.liveMergeSupport));
Line 708:         } else {
Line 709:             vds.setLiveMergeSupport(false);
Line 710:         }
Line 711: 
> since we expect this to grow, and due to the fact that this method is alrea
I will change this with actual code where we will look for the field 
'additionalFeatures' and all the entries in the field.
Line 712:         // Its an work around until the supportedFeatures field is 
supported by VDSM
Line 713:         if 
(RpmVersionUtils.compareRpmParts(vds.getGlusterVersion().getMajor() + "."
Line 714:                 + vds.getGlusterVersion().getMinor(), "3.7") >= 0) {
Line 715:             vds.getSupportedFeatures().add("gluster37_features");


Line 710:         }
Line 711: 
Line 712:         // Its an work around until the supportedFeatures field is 
supported by VDSM
Line 713:         if 
(RpmVersionUtils.compareRpmParts(vds.getGlusterVersion().getMajor() + "."
Line 714:                 + vds.getGlusterVersion().getMinor(), "3.7") >= 0) {
> please move "3.7" into a constant in Version class.
Done
Line 715:             vds.getSupportedFeatures().add("gluster37_features");
Line 716:         }
Line 717:     }
Line 718: 


Line 711: 
Line 712:         // Its an work around until the supportedFeatures field is 
supported by VDSM
Line 713:         if 
(RpmVersionUtils.compareRpmParts(vds.getGlusterVersion().getMajor() + "."
Line 714:                 + vds.getGlusterVersion().getMinor(), "3.7") >= 0) {
Line 715:             vds.getSupportedFeatures().add("gluster37_features");
> please replace hard-coded string with VdsProperties.GLUSTER37
Done
Line 716:         }
Line 717:     }
Line 718: 
Line 719:     private static void setRngSupportedSourcesToVds(VDS vds, 
Map<String, Object> xmlRpcStruct) {


https://gerrit.ovirt.org/#/c/39756/10/packaging/dbscripts/upgrade/03_06_1290_add_cluster_features_table.sql
File packaging/dbscripts/upgrade/03_06_1290_add_cluster_features_table.sql:

Line 12: -- 3. All      1111 1111
Line 13: 
Line 14: CREATE TABLE cluster_features
Line 15: (
Line 16:   feature_id UUID NOT NULL,
> this should be aligned with the next field, so please either:
Done
Line 17:   name VARCHAR(256) NOT NULL,
Line 18:   version VARCHAR(40),
Line 19:   category INTEGER NOT NULL,
Line 20:   description TEXT,


Line 37: 
Line 38: CREATE TABLE supported_host_features
Line 39: (
Line 40:   host_id UUID NOT NULL,
Line 41:   feature VARCHAR(256) NOT NULL,
> s/feature/feature_name
Done
Line 42:   CONSTRAINT PK_supported_host_features PRIMARY KEY (host_id, feature),
Line 43:   FOREIGN KEY (host_id) REFERENCES vds_static(vds_id) ON DELETE CASCADE
Line 44: ) ;
Line 45: 


-- 
To view, visit https://gerrit.ovirt.org/39756
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Icba02b189a169bc676e0c5f47f7aaf394f0b49a6
Gerrit-PatchSet: 10
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ramesh N <rnach...@redhat.com>
Gerrit-Reviewer: Eli Mesika <emes...@redhat.com>
Gerrit-Reviewer: Jenkins CI
Gerrit-Reviewer: Kanagaraj M <kmayi...@redhat.com>
Gerrit-Reviewer: Moti Asayag <masa...@redhat.com>
Gerrit-Reviewer: Oved Ourfali <oourf...@redhat.com>
Gerrit-Reviewer: Ramesh N <rnach...@redhat.com>
Gerrit-Reviewer: Sahina Bose <sab...@redhat.com>
Gerrit-Reviewer: Shubhendu Tripathi <shtri...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to