Federico Simoncelli has uploaded a new change for review. Change subject: [wip] providers: add the openstack glance support ......................................................................
[wip] providers: add the openstack glance support Change-Id: I424998de6f6514d65938484fffa5405e35857e43 Signed-off-by: Federico Simoncelli <[email protected]> --- M backend/manager/dbscripts/storages_sp.sql A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/GlanceProviderProxy.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxyFactory.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ProviderType.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAO.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAODbFacadeImpl.java 6 files changed, 111 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/15899/1 diff --git a/backend/manager/dbscripts/storages_sp.sql b/backend/manager/dbscripts/storages_sp.sql index 436a470..93028f2 100644 --- a/backend/manager/dbscripts/storages_sp.sql +++ b/backend/manager/dbscripts/storages_sp.sql @@ -388,6 +388,21 @@ +Create or replace FUNCTION Getstorage_domain_staticBystorage(v_storage VARCHAR(250)) +RETURNS SETOF storage_domain_static + AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM storage_domain_static + WHERE storage = v_storage; + +END; $procedure$ +LANGUAGE plpgsql; + + + + + Create or replace FUNCTION Getstorage_domain_staticBystorage_pool_id(v_storage_pool_id UUID) RETURNS SETOF storage_domain_static_view AS $procedure$ diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/GlanceProviderProxy.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/GlanceProviderProxy.java new file mode 100644 index 0000000..1084f89 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/GlanceProviderProxy.java @@ -0,0 +1,69 @@ +package org.ovirt.engine.core.bll.provider; + +import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.StorageDomainDynamic; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.businessentities.StorageDomainType; +import org.ovirt.engine.core.common.businessentities.StorageFormatType; +import org.ovirt.engine.core.common.businessentities.StorageType; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; + +import java.security.cert.Certificate; +import java.util.List; + + +public class GlanceProviderProxy implements ProviderProxy { + + private Provider provider; + + public GlanceProviderProxy(Provider provider) { + this.provider = provider; + } + + @Override + public void testConnection() { + } + + @Override + public List<? extends Certificate> getCertificateChain() { + return null; + } + + protected DbFacade getDbFacade() { + return DbFacade.getInstance(); + } + + @Override + public void onAddition() { + // Storage domain static + StorageDomainStatic domainStaticEntry = new StorageDomainStatic(); + domainStaticEntry.setId(Guid.NewGuid()); + domainStaticEntry.setStorage(provider.getId().toString()); + domainStaticEntry.setStorageName(provider.getName()); + domainStaticEntry.setDescription(provider.getDescription()); + domainStaticEntry.setStorageFormat(StorageFormatType.V1); + domainStaticEntry.setStorageType(StorageType.GLANCE); + domainStaticEntry.setStorageDomainType(StorageDomainType.Image); + getDbFacade().getStorageDomainStaticDao().save(domainStaticEntry); + // Storage domain dynamic + StorageDomainDynamic domainDynamicEntry = new StorageDomainDynamic(); + domainDynamicEntry.setId(domainStaticEntry.getId()); + domainDynamicEntry.setAvailableDiskSize(0); + domainDynamicEntry.setUsedDiskSize(0); + getDbFacade().getStorageDomainDynamicDao().save(domainDynamicEntry); + } + + @Override + public void onRemoval() { + List<StorageDomainStatic> domainStaticEntries = getDbFacade().getStorageDomainStaticDao() + .getAllByStorage(provider.getId().toString()); + + // removing the static and dynamic storage domain entries + for (StorageDomainStatic domainStaticEntry : domainStaticEntries) { + getDbFacade().getStorageDomainDynamicDao().remove(domainStaticEntry.getId()); + getDbFacade().getStorageDomainStaticDao().remove(domainStaticEntry.getId()); + } + } + +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxyFactory.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxyFactory.java index 5cea11d..f0eddaf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxyFactory.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderProxyFactory.java @@ -22,7 +22,14 @@ * @return The proxy for communicating with the provider */ public <P extends ProviderProxy> P create(Provider provider) { - return (P) new ForemanHostProviderProxy(provider); + switch (provider.getType()) { + case FOREMAN: + return (P) new ForemanHostProviderProxy(provider); + case OPENSTACK_IMAGE: + return (P) new GlanceProviderProxy(provider); + default: + return null; + } } /** diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ProviderType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ProviderType.java index f96f263..7d51cd6 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ProviderType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ProviderType.java @@ -5,7 +5,8 @@ */ public enum ProviderType implements Identifiable { OPENSTACK_NETWORK(0), - FOREMAN(1); + FOREMAN(1), + OPENSTACK_IMAGE(2); private int value; diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAO.java index 116389b..b277af1 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAO.java @@ -19,6 +19,15 @@ StorageDomainStatic getByName(String name); /** + * Retrieves all the instances with the specified storage. + * + * @param storage + * the storage value + * @return the domain + */ + List<StorageDomainStatic> getAllByStorage(String storage); + + /** * Retrieves all domains of the specified type for the specified pool. * * @param type diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAODbFacadeImpl.java index 8517ce4..c83405c 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainStaticDAODbFacadeImpl.java @@ -30,6 +30,14 @@ } @Override + public List<StorageDomainStatic> getAllByStorage(String storage) { + return getCallsHandler().executeReadList("Getstorage_domain_staticBystorage", + StorageDomainStaticRowMapper.instance, + getCustomMapSqlParameterSource() + .addValue("storage", storage)); + } + + @Override public List<StorageDomainStatic> getAllOfStorageType( StorageType type) { return getCallsHandler().executeReadList("Getstorage_domain_staticBystorage_pool_type", -- To view, visit http://gerrit.ovirt.org/15899 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I424998de6f6514d65938484fffa5405e35857e43 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
