Federico Simoncelli has uploaded a new change for review. Change subject: provider: glance images listing size and limits ......................................................................
provider: glance images listing size and limits This patch adds two configuration parameters to control the glance image listing. In fact OpenStack glance servers by default return a limited number of images (limit_param_default) and it's up to the client to either request a longer list (using the "limit" parameter) or to iterate with multiple requests. GlanceImageListSize defines the number of images that should be returned in each request (20 as the default in glance client). GlanceImageTotalListSize defines the total number of images that should be transferred from the server (with multiple requests if necessary). Change-Id: I7b534caccbdcf121b81571384e3420f1a6efde00 Signed-off-by: Federico Simoncelli <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/OpenStackImageProviderProxy.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 3 files changed, 38 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/23/19223/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/OpenStackImageProviderProxy.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/OpenStackImageProviderProxy.java index e79e995..765a0b5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/OpenStackImageProviderProxy.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/OpenStackImageProviderProxy.java @@ -6,6 +6,7 @@ import com.woorea.openstack.glance.Glance; import com.woorea.openstack.glance.model.Image; import com.woorea.openstack.glance.model.ImageDownload; +import com.woorea.openstack.glance.model.Images; import com.woorea.openstack.keystone.utils.KeystoneTokenProvider; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.ImageFileType; @@ -216,11 +217,31 @@ long currentTime = System.currentTimeMillis(); - for (Image glanceImage : getClient().images().list(true).execute()) { - RepoImage repoImage = imageToRepoImage(glanceImage); - repoImage.setLastRefreshed(currentTime); - repoImages.add(repoImage); - } + Integer listSize = Config.<Integer> GetValue(ConfigValues.GlanceImageListSize); + Integer totalListSize = Config.<Integer> GetValue(ConfigValues.GlanceImageTotalListSize); + + Images images = null; + + do { + OpenStackRequest<Images> listRequest = getClient().images() + .list(true) + .queryParam("limit", Integer.valueOf(listSize)) + .queryParam("sort_key", "name") + .queryParam("sort_dir", "asc"); + + if (images != null) { + listRequest.queryParam("marker", + images.getList().get(images.getList().size() - 1).getId()); + } + + images = listRequest.execute(); + + for (Image glanceImage : images) { + RepoImage repoImage = imageToRepoImage(glanceImage); + repoImage.setLastRefreshed(currentTime); + repoImages.add(repoImage); + } + } while((images.getList().size() >= listSize) && repoImages.size() < totalListSize); return repoImages; } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java index 8821654..e7b2033 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java @@ -1505,6 +1505,14 @@ @DefaultValueAttribute("60") AutoStartVmsRunnerIntervalInSeconds(538), + @TypeConverterAttribute(Integer.class) + @DefaultValueAttribute("20") + GlanceImageListSize(539), + + @TypeConverterAttribute(Integer.class) + @DefaultValueAttribute("500") + GlanceImageTotalListSize(540), + Invalid(65535); private int intValue; diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql index f4fa8cf..6c8d056 100644 --- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql +++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql @@ -618,6 +618,10 @@ select fn_db_add_config_value('ExternalSchedulerEnabled','false','general'); select fn_db_add_config_value('ExternalSchedulerResponseTimeout','120000','general'); +-- OpenStack Glance +select fn_db_add_config_value('GlanceImageListSize','20','general'); +select fn_db_add_config_value('GlanceImageTotalListSize','500','general'); + ------------------------------------------------------------------------------------ -- Update with override section ------------------------------------------------------------------------------------ -- To view, visit http://gerrit.ovirt.org/19223 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7b534caccbdcf121b81571384e3420f1a6efde00 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Federico Simoncelli <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
