Martin Sivák has uploaded a new change for review. Change subject: [WIP] engine: Update MoM policy when host comes online ......................................................................
[WIP] engine: Update MoM policy when host comes online This patch adds the necessary backend infrastructure for enabling and disabling ballooning feature on the hosts. Change-Id: If5c73939b666228822e01fe51be3736d4d18ece5 https://bugzilla.redhat.com/show_bug.cgi?id=967572 Signed-off-by: Martin Sivak <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java A packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql M packaging/dbscripts/vds_groups_sp.sql 9 files changed, 54 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/16693/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java index a776775..774c6db 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java @@ -40,6 +40,7 @@ import org.ovirt.engine.core.common.eventqueue.EventType; import org.ovirt.engine.core.common.gluster.GlusterFeatureSupported; import org.ovirt.engine.core.common.vdscommands.ConnectStoragePoolVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.MomPolicyVDSParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; @@ -128,6 +129,7 @@ if (InitializeStorage()) { processFence(); processStoragePoolStatus(); + runUpdateMomPolicy(getVdsGroup(), getVds()); } else { Map<String, String> customLogValues = Collections.singletonMap("StoragePoolName", getStoragePoolName()); setNonOperational(NonOperationalReason.STORAGE_DOMAIN_UNREACHABLE, customLogValues); @@ -244,6 +246,19 @@ return result; } + private EventResult runUpdateMomPolicy(final VDSGroup cluster, final VDS vds) { + EventResult result = new EventResult(true, EventType.VDSCONNECTTOPOOL); + try { + runVdsCommand(VDSCommandType.SetMomPolicyParameters, + new MomPolicyVDSParameters(cluster.isEnableBallooning())); + } catch (VdcBLLException e) { + log.errorFormat("Could not update MoM policy on host {0}", vds.getName()); + result.setSuccess(false); + } + + return result; + } + protected boolean proceedVdsStats() { boolean returnValue = true; try { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java index ff302f6..be00fc6 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VDSGroup.java @@ -50,6 +50,8 @@ private int max_vds_memory_over_commit = 0; + private boolean enableBallooning = false; + private boolean countThreadsAsCores = false; @Size(max = BusinessEntitiesDefinitions.GENERAL_VERSION_SIZE) @@ -262,6 +264,14 @@ return trustedService; } + public boolean isEnableBallooning() { + return enableBallooning; + } + + public void setEnableBallooning(boolean enableBallooning) { + this.enableBallooning = enableBallooning; + } + @Override public int hashCode() { final int prime = 31; @@ -287,6 +297,7 @@ result = prime * result + (tunnelMigration ? 1231 : 1237); result = prime * result + (emulatedMachine == null ? 0 : emulatedMachine.hashCode()); result = prime * result + (trustedService ? 1231 : 1237); + result = prime * result + (enableBallooning ? 1231 : 1237); return result; } @@ -322,6 +333,7 @@ && glusterService == other.glusterService && tunnelMigration == other.tunnelMigration && ObjectUtils.objectsEqual(emulatedMachine, other.emulatedMachine) - && trustedService == other.trustedService); + && trustedService == other.trustedService + && enableBallooning == other.enableBallooning); } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java index 9a21f4d..dbc554f 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java @@ -111,6 +111,7 @@ Snapshot("org.ovirt.engine.core.vdsbroker.vdsbroker"), UpdateVmInterface("org.ovirt.engine.core.vdsbroker.vdsbroker"), GetHardwareInfo("org.ovirt.engine.core.vdsbroker.vdsbroker"), + SetMomPolicyParameters("org.ovirt.engine.core.vdsbroker.vdsbroker"), // Gluster VDS commands CreateGlusterVolume("org.ovirt.engine.core.vdsbroker.gluster"), SetGlusterVolumeOption("org.ovirt.engine.core.vdsbroker.gluster"), diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java index c7b27bf..0d50dad 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java @@ -167,7 +167,9 @@ .addValue("gluster_service", group.supportsGlusterService()) .addValue("tunnel_migration", group.isTunnelMigration()) .addValue("emulated_machine", group.getEmulatedMachine()) - .addValue("trusted_service", group.supportsTrustedService()); + .addValue("trusted_service", group.supportsTrustedService()) + .addValue("enable_balloon", group.isEnableBallooning()); + return parameterSource; } @@ -205,6 +207,8 @@ entity.setTunnelMigration(rs.getBoolean("tunnel_migration")); entity.setEmulatedMachine(rs.getString("emulated_machine")); entity.setTrustedService(rs.getBoolean("trusted_service")); + entity.setEnableBallooning(rs.getBoolean("enable_balloon")); + return entity; } } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java index dd1b521..c97173d 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java @@ -72,6 +72,9 @@ if (model.isSetTrustedService()){ entity.setTrustedService(model.isTrustedService()); } + if (model.getEnableBallooning()) { + entity.setEnableBallooning(model.getEnableBallooning()); + } return entity; } @@ -104,6 +107,8 @@ model.setThreadsAsCores(entity.getCountThreadsAsCores()); model.setTunnelMigration(entity.isTunnelMigration()); model.setTrustedService(entity.supportsTrustedService()); + model.setEnableBallooning(entity.isEnableBallooning()); + return model; } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java index e3f6e01..38eb0da 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java @@ -40,6 +40,8 @@ VDSInfoReturnForXmlRpc getVdsStats(); + StatusOnlyReturnForXmlRpc setMOMPolicyParameters(Map<String, Object> key_value_store); + StatusOnlyReturnForXmlRpc desktopLogin(String vmId, String domain, String user, String password); StatusOnlyReturnForXmlRpc desktopLogoff(String vmId, String force); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java index ed791a4..c3cc8e4 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java @@ -287,6 +287,9 @@ } } + // MoM policy tuning + public static final String balloonEnabled = "balloonEnabled"; + // properties for ServerConnectionListReturnForXmlRpc public static final String serverType = "serverType"; public static final String target = "target"; diff --git a/packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql b/packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql new file mode 100644 index 0000000..765b82e --- /dev/null +++ b/packaging/dbscripts/upgrade/03_03_0400_add_enable_balloon_to_vds_groups.sql @@ -0,0 +1 @@ +select fn_db_add_column('vds_groups', 'enable_balloon', 'boolean not null default false'); \ No newline at end of file diff --git a/packaging/dbscripts/vds_groups_sp.sql b/packaging/dbscripts/vds_groups_sp.sql index abf45ae..07077c4 100644 --- a/packaging/dbscripts/vds_groups_sp.sql +++ b/packaging/dbscripts/vds_groups_sp.sql @@ -26,16 +26,19 @@ v_gluster_service BOOLEAN, v_tunnel_migration BOOLEAN, v_emulated_machine VARCHAR(40), - v_trusted_service BOOLEAN) + v_trusted_service BOOLEAN, + v_enable_balloon BOOLEAN) RETURNS VOID AS $procedure$ BEGIN INSERT INTO vds_groups(vds_group_id,description, name, cpu_name, selection_algorithm, high_utilization, low_utilization, cpu_over_commit_duration_minutes, storage_pool_id, max_vds_memory_over_commit, count_threads_as_cores, compatibility_version, - transparent_hugepages, migrate_on_error, virt_service, gluster_service, tunnel_migration, emulated_machine, trusted_service) + transparent_hugepages, migrate_on_error, virt_service, gluster_service, tunnel_migration, emulated_machine, trusted_service, + enable_balloon) VALUES(v_vds_group_id,v_description, v_name, v_cpu_name, v_selection_algorithm, v_high_utilization, v_low_utilization, v_cpu_over_commit_duration_minutes, v_storage_pool_id, v_max_vds_memory_over_commit, v_count_threads_as_cores, v_compatibility_version, - v_transparent_hugepages, v_migrate_on_error, v_virt_service, v_gluster_service, v_tunnel_migration, v_emulated_machine, v_trusted_service); + v_transparent_hugepages, v_migrate_on_error, v_virt_service, v_gluster_service, v_tunnel_migration, v_emulated_machine, v_trusted_service, + v_enable_balloon); END; $procedure$ LANGUAGE plpgsql; @@ -61,7 +64,8 @@ v_gluster_service BOOLEAN, v_tunnel_migration BOOLEAN, v_emulated_machine VARCHAR(40), - v_trusted_service BOOLEAN) + v_trusted_service BOOLEAN, + v_enable_balloon BOOLEAN) RETURNS VOID --The [vds_groups] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated @@ -77,7 +81,7 @@ compatibility_version = v_compatibility_version,transparent_hugepages = v_transparent_hugepages, migrate_on_error = v_migrate_on_error, virt_service = v_virt_service, gluster_service = v_gluster_service, tunnel_migration = v_tunnel_migration, - emulated_machine = v_emulated_machine, trusted_service = v_trusted_service + emulated_machine = v_emulated_machine, trusted_service = v_trusted_service, enable_balloon = v_enable_balloon WHERE vds_group_id = v_vds_group_id; END; $procedure$ LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/16693 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If5c73939b666228822e01fe51be3736d4d18ece5 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Sivák <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
