Daniel Erez has uploaded a new change for review. Change subject: core: GetCinderVolumeTypesByStorageDomainIdQuery ......................................................................
core: GetCinderVolumeTypesByStorageDomainIdQuery Adding a query form fetching a list of CinderVolumeTypes by a storage domain ID. Change-Id: Ie964dd3e363358abf20f3753fb46082070ab8e07 Bug-Url: https://bugzilla.redhat.com/1185826 Signed-off-by: Daniel Erez <de...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackVolumeProviderProxy.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetCinderVolumeTypesByStorageDomainIdQuery.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java 3 files changed, 57 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/39027/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackVolumeProviderProxy.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackVolumeProviderProxy.java index c0ac4db..31f45e4 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackVolumeProviderProxy.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/OpenStackVolumeProviderProxy.java @@ -1,12 +1,16 @@ package org.ovirt.engine.core.bll.provider.storage; +import com.woorea.openstack.base.client.OpenStackRequest; import com.woorea.openstack.cinder.Cinder; import com.woorea.openstack.cinder.model.Limits; import com.woorea.openstack.cinder.model.Volume; import com.woorea.openstack.cinder.model.VolumeForCreate; +import com.woorea.openstack.cinder.model.VolumeType; +import com.woorea.openstack.cinder.model.VolumeTypes; import org.ovirt.engine.core.bll.provider.ProviderProxyFactory; import org.ovirt.engine.core.bll.storage.CINDERStorageHelper; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.businessentities.storage.CinderVolumeType; import org.ovirt.engine.core.common.businessentities.storage.OpenStackVolumeProviderProperties; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.StorageDomain; @@ -15,6 +19,7 @@ import org.ovirt.engine.core.compat.Guid; import java.security.cert.Certificate; +import java.util.ArrayList; import java.util.List; public class OpenStackVolumeProviderProxy extends AbstractOpenStackStorageProviderProxy<Cinder, OpenStackVolumeProviderProperties, CinderProviderValidator> { @@ -70,6 +75,21 @@ return getClient(getTenantId()).limits().list().execute(); } + public List<CinderVolumeType> getVolumeTypes() { + ArrayList<CinderVolumeType> cinderVolumeTypes = new ArrayList<>(); + OpenStackRequest<VolumeTypes> listRequest = getClient(getTenantId()).volumeTypes().list(); + + VolumeTypes volumeTypes = listRequest.execute(); + for (VolumeType volumeType : volumeTypes) { + CinderVolumeType cinderVolumeType = new CinderVolumeType(); + cinderVolumeType.setId(volumeType.getId()); + cinderVolumeType.setName(volumeType.getName()); + cinderVolumeType.setExtraSpecs(volumeType.getExtraSpecs()); + cinderVolumeTypes.add(cinderVolumeType); + } + return cinderVolumeTypes; + } + @Override public void onRemoval() { List<StorageDomain> storageDomains = getDbFacade().getStorageDomainDao().getAllByConnectionId(provider.getId()); @@ -82,12 +102,25 @@ public static OpenStackVolumeProviderProxy getFromStorageDomainId(Guid storageDomainId) { StorageDomainStatic storageDomainStatic = getDbFacade().getStorageDomainStaticDao().get(storageDomainId); if (storageDomainStatic != null) { - Provider provider = getDbFacade().getProviderDao().get(new Guid(storageDomainStatic.getStorage())); + return getFromStorageDomainStatic(storageDomainStatic); + } + return null; + } + + public static OpenStackVolumeProviderProxy getFromStorageDomainId(Guid storageDomainId, Guid userID, boolean isFiltered) { + StorageDomain storageDomain = getDbFacade().getStorageDomainDao().get(storageDomainId, userID, isFiltered); + if (storageDomain != null) { + Provider provider = getDbFacade().getProviderDao().get(new Guid(storageDomain.getStorage())); return ProviderProxyFactory.getInstance().create(provider); } return null; } + private static OpenStackVolumeProviderProxy getFromStorageDomainStatic(StorageDomainStatic storageDomainStatic) { + Provider provider = getDbFacade().getProviderDao().get(new Guid(storageDomainStatic.getStorage())); + return ProviderProxyFactory.getInstance().create(provider); + } + @Override public CinderProviderValidator getProviderValidator() { if (providerValidator == null) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetCinderVolumeTypesByStorageDomainIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetCinderVolumeTypesByStorageDomainIdQuery.java new file mode 100644 index 0000000..ab61cd5 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetCinderVolumeTypesByStorageDomainIdQuery.java @@ -0,0 +1,20 @@ +package org.ovirt.engine.core.bll.storage; + +import org.ovirt.engine.core.common.businessentities.storage.CinderVolumeType; +import org.ovirt.engine.core.common.queries.IdQueryParameters; + +import java.util.ArrayList; +import java.util.List; + +public class GetCinderVolumeTypesByStorageDomainIdQuery<P extends IdQueryParameters> extends CinderQueryBase<P> { + + public GetCinderVolumeTypesByStorageDomainIdQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + List<CinderVolumeType> volumeTypes = getVolumeProviderProxy().getVolumeTypes(); + getQueryReturnValue().setReturnValue(new ArrayList<>(volumeTypes)); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index 2495a80..dc894ff 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -297,6 +297,9 @@ GetBlockStorageDomainsWithAttachedStoragePoolGuid, GetStorageDomainDefaultWipeAfterDelete, + // Cinder + GetCinderVolumeTypesByStorageDomainId(VdcQueryAuthType.User), + // Event Notification GetEventSubscribersBySubscriberIdGrouped, -- To view, visit https://gerrit.ovirt.org/39027 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie964dd3e363358abf20f3753fb46082070ab8e07 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <de...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches