Daniel Erez has uploaded a new change for review. Change subject: core: registerLibvirtSecrets on add and update secret ......................................................................
core: registerLibvirtSecrets on add and update secret Invoke RegisterLibvirtSecrets command upon adding a new libvirt secret or updating an existing one. Change-Id: I9d000e7d4cfcc946b7d055c9ed205aa54e9e2c7b 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/storage/AddLibvirtSecretCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/LibvirtSecretCommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateLibvirtSecretCommand.java 4 files changed, 46 insertions(+), 10 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/41561/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLibvirtSecretCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLibvirtSecretCommand.java index 6a709d4..a98b165 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLibvirtSecretCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLibvirtSecretCommand.java @@ -1,11 +1,11 @@ package org.ovirt.engine.core.bll.storage; +import java.util.Date; + import org.ovirt.engine.core.bll.provider.storage.LibvirtSecretValidator; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.LibvirtSecretParameters; import org.ovirt.engine.core.common.errors.VdcBllMessages; - -import java.util.Date; public class AddLibvirtSecretCommand extends LibvirtSecretCommandBase { @@ -28,6 +28,7 @@ super.executeCommand(); getParameters().getLibvirtSecret().setCreationDate(new Date()); getLibvirtSecretDAO().save(getParameters().getLibvirtSecret()); + registerLibvirtSecret(); setSucceeded(true); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java index a872b0e..5111a4b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java @@ -44,7 +44,7 @@ public class CINDERStorageHelper extends StorageHelperBase { - private Logger log = LoggerFactory.getLogger(CINDERStorageHelper.class); + private static Logger log = LoggerFactory.getLogger(CINDERStorageHelper.class); private boolean runInNewTransaction = true; @@ -58,7 +58,10 @@ @Override protected Pair<Boolean, VdcFault> runConnectionStorageToDomain(StorageDomain storageDomain, Guid vdsId, int type) { - return registerLibvirtSecrets(storageDomain, vdsId); + Provider provider = getProviderDao().get(Guid.createGuidFromString(storageDomain.getStorage())); + List<LibvirtSecret> libvirtSecrets = getLibvirtSecretDao().getAllByProviderId(provider.getId()); + VDS vds = getVdsDao().get(vdsId); + return registerLibvirtSecrets(storageDomain, vds, libvirtSecrets); } @Override @@ -66,14 +69,12 @@ return unregisterLibvirtSecrets(storageDomain, vdsId); } - private Pair<Boolean, VdcFault> registerLibvirtSecrets(StorageDomain storageDomain, Guid vdsId) { - Provider provider = getProviderDao().get(Guid.createGuidFromString(storageDomain.getStorage())); - VDS vds = getVdsDao().get(vdsId); - List<LibvirtSecret> libvirtSecrets = getLibvirtSecretDao().getAllByProviderId(provider.getId()); + public static Pair<Boolean, VdcFault> registerLibvirtSecrets( + StorageDomain storageDomain, VDS vds, List<LibvirtSecret> libvirtSecrets) { if (!libvirtSecrets.isEmpty()) { VDSReturnValue returnValue = Backend.getInstance().getResourceManager().RunVdsCommand( VDSCommandType.RegisterLibvirtSecrets, - new RegisterLibvirtSecretsVDSParameters(vdsId, libvirtSecrets)); + new RegisterLibvirtSecretsVDSParameters(vds.getId(), libvirtSecrets)); if (!returnValue.getSucceeded()) { addMessageToAuditLog(AuditLogType.FAILED_TO_REGISTER_LIBVIRT_SECRET, storageDomain.getName(), vds.getName()); @@ -107,7 +108,7 @@ return true; } - private void addMessageToAuditLog(AuditLogType auditLogType, String storageDomainName, String vdsName){ + private static void addMessageToAuditLog(AuditLogType auditLogType, String storageDomainName, String vdsName){ AuditLogableBase logable = new AuditLogableBase(); logable.addCustomValue("StorageDomainName", storageDomainName); logable.addCustomValue("VdsName", vdsName); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/LibvirtSecretCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/LibvirtSecretCommandBase.java index 5750295..240303d 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/LibvirtSecretCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/LibvirtSecretCommandBase.java @@ -8,11 +8,17 @@ import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.LibvirtSecretParameters; import org.ovirt.engine.core.common.businessentities.ActionGroup; +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.LibvirtSecretDao; public abstract class LibvirtSecretCommandBase extends CommandBase<LibvirtSecretParameters> { + + private StorageDomain storageDomain; public LibvirtSecretCommandBase(LibvirtSecretParameters parameters) { super(parameters); @@ -41,4 +47,31 @@ addCustomValue("LibvirtSecretUUID", secretUuid.toString()); getReturnValue().setActionReturnValue(secretUuid); } + + @Override + public StorageDomain getStorageDomain() { + if (storageDomain == null) { + Guid providerId = getParameters().getLibvirtSecret().getProviderId(); + List<StorageDomain> storageDomains = getStorageDomainDAO().getAllByConnectionId(providerId); + storageDomain = storageDomains.get(0); + } + return storageDomain; + } + + protected List<VDS> getAllRunningVdssInPool() { + return getVdsDAO().getAllForStoragePoolAndStatus(getStoragePool().getId(), VDSStatus.Up); + } + + protected void registerLibvirtSecret() { + if (getStorageDomain().getStatus() == StorageDomainStatus.Active) { + List<VDS> hostsInStatusUp = getAllRunningVdssInPool(); + for (VDS vds : hostsInStatusUp) { + CINDERStorageHelper.registerLibvirtSecrets( + getStorageDomain(), vds, Collections.singletonList(getParameters().getLibvirtSecret())); + } + } else { + log.info("Libvirt secret '{}' hasn't been registered since storage domain '{}' is not Active", + getParameters().getLibvirtSecret().getId(), getStorageDomain().getName()); + } + } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateLibvirtSecretCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateLibvirtSecretCommand.java index bc131c4..64a1fb9 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateLibvirtSecretCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateLibvirtSecretCommand.java @@ -24,6 +24,7 @@ protected void executeCommand() { super.executeCommand(); getLibvirtSecretDAO().update(getParameters().getLibvirtSecret()); + registerLibvirtSecret(); setSucceeded(true); } -- To view, visit https://gerrit.ovirt.org/41561 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9d000e7d4cfcc946b7d055c9ed205aa54e9e2c7b 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