Alon Bar-Lev has uploaded a new change for review. Change subject: pki: use relative lock file ......................................................................
pki: use relative lock file Current implementation uses /var/lock/ovirt-engine/* to perform lock of pki operations. Problem in current implementation is that /var/lock may be cleared on distributions so no ovirt-engine exists. Also, in development mode there is no access to /var directory. The new implementation uses persistent SignReq.lock file which is relative to SignReq.sh at PREFIX/etc, which is a valid location. Change-Id: I4274778254167db8f632908a9bdcc0d6ad284b3e Signed-off-by: Alon Bar-Lev <alo...@redhat.com> --- M Makefile A backend/manager/conf/ca/SignReq.lock M backend/manager/conf/ca/SignReq.sh M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/hostinstall/OpenSslCAWrapper.java M packaging/fedora/spec/ovirt-engine.spec.in 7 files changed, 6 insertions(+), 40 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/30/13030/1 diff --git a/Makefile b/Makefile index 3c67858..095f0ae 100644 --- a/Makefile +++ b/Makefile @@ -320,6 +320,7 @@ # Scripts: install -m 755 backend/manager/conf/ca/*.sh $(DESTDIR)$(PKG_PKI_DIR) + install -m 644 backend/manager/conf/ca/*.lock $(DESTDIR)$(PKG_PKI_DIR) install_config: @echo "*** Deploying engine-config & engine-manage-domains" diff --git a/backend/manager/conf/ca/SignReq.lock b/backend/manager/conf/ca/SignReq.lock new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/backend/manager/conf/ca/SignReq.lock diff --git a/backend/manager/conf/ca/SignReq.sh b/backend/manager/conf/ca/SignReq.sh index 20e0981..43a20a4 100755 --- a/backend/manager/conf/ca/SignReq.sh +++ b/backend/manager/conf/ca/SignReq.sh @@ -18,13 +18,8 @@ printf "\tPass = Certificate password\n" printf "\tHost = CN\n" printf "\tOrganization = O\n" - printf "\tlock file = Name of file to be used for locking\n" printf "\tlocking timeout = Amount of seconds to wait for locking\n" return 0 -} - -rollback () { - [[ $step -eq 1 ]] && rm -f $lock_file } sign () { @@ -46,7 +41,6 @@ die "Error: wrong argument number: $#.\n" fi -step=0 result=9 req_file=$1 out_file=$2 @@ -57,30 +51,17 @@ req_name=$7 req_org=$8 -shift -lock_file=$8 -if [ -z "$lock_file" ]; then - lock_file=/var/lock/ovirt-engine/.openssl.exclusivelock -fi - +lock_file="$(dirname "$0")/SignReq.lock" shift timeout=$8 if [ -z "$timeout" ]; then timeout=20 fi -trap "rollback; exit $result" HUP KILL INT QUIT TERM - { # Wait for lock on $lock_file (fd 200) for $timeout seconds - flock -e -w $timeout 200 - if [ $? -eq 0 ]; - then - step=1 - sign - else - die "Timeout waiting for lock. Giving up" - fi + flock -e -w $timeout 200 || die "Timeout waiting for lock. Giving up" + sign result=$? } 200>$lock_file diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java index 53c7fba..3c43211 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java @@ -1,6 +1,5 @@ package org.ovirt.engine.core.bll; -import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -223,17 +222,6 @@ SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(QuotaManager.getInstance(), "updateQuotaCache", new Class[] {}, new Object[] {}, 1, quotaCacheIntervalInMinutes, TimeUnit.MINUTES); - - try { - File fLock = new File(Config.<String> GetValue(ConfigValues.SignLockFile)); - if (fLock.exists()) { - if (!fLock.delete()) { - log.error("Cleanup lockfile failed to delete the locking file."); - } - } - } catch (SecurityException se) { - log.error("Cleanup lockfile failed!", se); - } } private void initJobRepository() { 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 803e1e1..ae4908b 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 @@ -799,10 +799,6 @@ LdapServers(305), @TypeConverterAttribute(String.class) - @DefaultValueAttribute("/var/lock/ovirt-engine/.openssl.exclusivelock") - SignLockFile(306), - - @TypeConverterAttribute(String.class) @DefaultValueAttribute("3.0.0.0") ProductRPMVersion(307), diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/hostinstall/OpenSslCAWrapper.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/hostinstall/OpenSslCAWrapper.java index 0913045..210a102 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/hostinstall/OpenSslCAWrapper.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/hostinstall/OpenSslCAWrapper.java @@ -226,7 +226,6 @@ log.debug("Building command array for Sign Certificate request script"); String baseDirectoryPath = Config.resolveCABasePath(); String keystorePass = Config.<String> GetValue(ConfigValues.keystorePass); - String lockfileName = Config.<String> GetValue(ConfigValues.SignLockFile); Calendar yesterday = Calendar.getInstance(); yesterday.add(Calendar.DATE, -1); SimpleDateFormat format = new SimpleDateFormat("yyMMddHHmmssZ"); @@ -234,7 +233,7 @@ String[] command_array = { signRequestBatch, requestFileName, signedCertificateFileName, "" + days, baseDirectoryPath, format.format(yesterday.getTime()), keystorePass, hostname, organization, - lockfileName, "" + (signatureTimeout / 2) }; + "" + (signatureTimeout / 2) }; log.debug("Finished building command array for Sign Certificate request script"); return command_array; } diff --git a/packaging/fedora/spec/ovirt-engine.spec.in b/packaging/fedora/spec/ovirt-engine.spec.in index 3ef06f7..cf4d435 100644 --- a/packaging/fedora/spec/ovirt-engine.spec.in +++ b/packaging/fedora/spec/ovirt-engine.spec.in @@ -527,6 +527,7 @@ # PKI scripts: %{engine_pki}/*.sh +%attr(-, %{engine_user}, %{engine_group}) %{engine_pki}/*.lock # PKI configuration files: %config(noreplace) %{engine_pki}/openssl.conf -- To view, visit http://gerrit.ovirt.org/13030 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4274778254167db8f632908a9bdcc0d6ad284b3e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches