Martin Peřina has uploaded a new change for review. Change subject: tools: Moves temp file creation from .sh to Java in engine-manage-domains ......................................................................
tools: Moves temp file creation from .sh to Java in engine-manage-domains Moves creation of engine-config custom properties temporary file from engine-manage-domains.sh to Java, so -propertiesFile command line argument can be removed. Change-Id: Ia6fd2c5066e0e0cf12d10be32ec6c36a8a91bfaf Bug-Url: https://bugzilla.redhat.com/904029 Signed-off-by: Martin Perina <mper...@redhat.com> --- M backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomains.java M backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomainsResultEnum.java M packaging/bin/engine-manage-domains.sh 3 files changed, 89 insertions(+), 68 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/23994/1 diff --git a/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomains.java b/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomains.java index bc51e82..10a9782 100644 --- a/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomains.java +++ b/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomains.java @@ -10,6 +10,7 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; @@ -93,7 +94,6 @@ passwordFile, servers, configFile, - propertiesFile, report, addPermissions, provider, @@ -204,10 +204,9 @@ try { // it's existence is checked during the parser validation - String engineConfigProperties = parser.getArg(Arguments.propertiesFile.name()); util.init(configFilePath); util.validate(parser); - util.createConfigurationProvider(engineConfigProperties); + util.createConfigurationProvider(); util.runCommand(parser); } catch (ManageDomainsResult e) { exitOnError(e); @@ -236,7 +235,8 @@ } } - private void createConfigurationProvider(String engineConfigProperties) throws ManageDomainsResult { + private void createConfigurationProvider() throws ManageDomainsResult { + String engineConfigProperties = createTempPropFile(); try { String engineConfigExecutable = utilityConfiguration.getEngineConfigExecutablePath(); String adUserName = getConfigValue(engineConfigExecutable, engineConfigProperties, ConfigValues.AdUserName); @@ -1101,50 +1101,46 @@ private void validate(CLIParser parser) throws ManageDomainsResult { - if (parser.hasArg(Arguments.propertiesFile.name())) { - if (parser.hasArg(Arguments.action.name())) { - String action = parser.getArg(Arguments.action.name()); - ActionType actionType; - try { - actionType = ActionType.valueOf(action); - } catch (IllegalArgumentException ex) { - throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, - action); - } - if (actionType.equals(ActionType.add)) { - requireArgs(parser, Arguments.domain, Arguments.user, Arguments.provider); - requireArgsValue(parser, Arguments.domain, Arguments.user, Arguments.provider, - Arguments.passwordFile); - checkInvalidArgs(parser, - Arguments.forceDelete); - } else if (actionType.equals(ActionType.edit)) { - requireArgs(parser, Arguments.domain); - requireArgsValue(parser, Arguments.domain, Arguments.user, Arguments.provider, - Arguments.passwordFile); - checkInvalidArgs(parser, - Arguments.forceDelete); - } else if (actionType.equals(ActionType.delete)) { - requireArgs(parser, Arguments.domain); - requireArgsValue(parser, Arguments.domain, Arguments.passwordFile); - checkInvalidArgs(parser); - } else if (actionType.equals(ActionType.validate)) { - checkInvalidArgs(parser, - Arguments.domain, - Arguments.user, - Arguments.passwordFile, - Arguments.forceDelete); - } else if (actionType.equals(ActionType.list)) { - checkInvalidArgs(parser, - Arguments.domain, - Arguments.user, - Arguments.passwordFile, - Arguments.forceDelete); - } - } else { - throw new ManageDomainsResult(ManageDomainsResultEnum.ACTION_IS_NOT_SPECIFIED); + if (parser.hasArg(Arguments.action.name())) { + String action = parser.getArg(Arguments.action.name()); + ActionType actionType; + try { + actionType = ActionType.valueOf(action); + } catch (IllegalArgumentException ex) { + throw new ManageDomainsResult(ManageDomainsResultEnum.INVALID_ACTION, + action); + } + if (actionType.equals(ActionType.add)) { + requireArgs(parser, Arguments.domain, Arguments.user, Arguments.provider); + requireArgsValue(parser, Arguments.domain, Arguments.user, Arguments.provider, + Arguments.passwordFile); + checkInvalidArgs(parser, + Arguments.forceDelete); + } else if (actionType.equals(ActionType.edit)) { + requireArgs(parser, Arguments.domain); + requireArgsValue(parser, Arguments.domain, Arguments.user, Arguments.provider, + Arguments.passwordFile); + checkInvalidArgs(parser, + Arguments.forceDelete); + } else if (actionType.equals(ActionType.delete)) { + requireArgs(parser, Arguments.domain); + requireArgsValue(parser, Arguments.domain, Arguments.passwordFile); + checkInvalidArgs(parser); + } else if (actionType.equals(ActionType.validate)) { + checkInvalidArgs(parser, + Arguments.domain, + Arguments.user, + Arguments.passwordFile, + Arguments.forceDelete); + } else if (actionType.equals(ActionType.list)) { + checkInvalidArgs(parser, + Arguments.domain, + Arguments.user, + Arguments.passwordFile, + Arguments.forceDelete); } } else { - throw new ManageDomainsResult(ManageDomainsResultEnum.PROPERTIES_FILE_IS_NOT_SPECIFIED); + throw new ManageDomainsResult(ManageDomainsResultEnum.ACTION_IS_NOT_SPECIFIED); } if (parser.getArgs().size() > Arguments.values().length) { throw new ManageDomainsResult(ManageDomainsResultEnum.TOO_MANY_ARGUMENTS); @@ -1228,4 +1224,49 @@ } } } + + /** + * Creates temporary properties file for engine-config to work with configuration values that + * are not exposed by standard {@code engine-config.properties} file + * + * @return absolute path of properties file + */ + private String createTempPropFile() throws ManageDomainsResult { + File propFile = null; + try { + propFile = File.createTempFile("engine-config", "properties"); + propFile.deleteOnExit(); + } catch (IOException ex) { + throw new ManageDomainsResult(ManageDomainsResultEnum.ERROR_CREATING_PROPERTIES_FILE, + ex.getMessage()); + } + + try (FileWriter fw = new FileWriter(propFile)) { + fw.write(new StringBuilder() + .append(ConfigValues.AdUserName.name()) + .append("=\n") + .append(ConfigValues.AdUserPassword.name()) + .append(".type=CompositePassword\n") + .append(ConfigValues.LDAPSecurityAuthentication.name()) + .append("=\n") + .append(ConfigValues.DomainName.name()) + .append("=\n") + .append(ConfigValues.AdUserId.name()) + .append("=\n") + .append(ConfigValues.LdapServers.name()) + .append("=\n") + .append(ConfigValues.LDAPProviderTypes.name()) + .append("=\n") + .append(ConfigValues.LDAPServerPort.name()) + .append("=\n") + .append(ConfigValues.ChangePasswordMsg.name()) + .append("=\n") + .toString()); + fw.flush(); + } catch (IOException ex) { + throw new ManageDomainsResult(ManageDomainsResultEnum.ERROR_CREATING_PROPERTIES_FILE, + ex.getMessage()); + } + return propFile.getAbsolutePath(); + } } diff --git a/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomainsResultEnum.java b/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomainsResultEnum.java index 4d37a8c..30d71f2 100644 --- a/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomainsResultEnum.java +++ b/backend/manager/tools/src/main/java/org/ovirt/engine/core/domains/ManageDomainsResultEnum.java @@ -27,7 +27,7 @@ 15), FAILURE_CREATING_KERBEROS_CONFIGURATION("Failure while applying Kerberos configuration. Details: %1$s", 16), - PROPERTIES_FILE_IS_NOT_SPECIFIED("engine-config properties file is not specified.", 17), + ERROR_CREATING_PROPERTIES_FILE("Error creating engine-config properties file. Details: %1$s", 17), ILLEGAL_PASSWORD("Password contains illegal characters.", 18), UNKNOWN_ERROR( "Operation failed due to exception. Details: %1$s", diff --git a/packaging/bin/engine-manage-domains.sh b/packaging/bin/engine-manage-domains.sh index e2e3d2e..5180076 100755 --- a/packaging/bin/engine-manage-domains.sh +++ b/packaging/bin/engine-manage-domains.sh @@ -65,26 +65,6 @@ # do this in function so we do not lose $@ parseArgs "$@" -# TODO: -# what is the benefit of creating this here -# and not at java code? -PROPERTIES_FILE="$(mktemp)" || die "Temporary properties file cannot be created" -cleanup() { - rm -fr "${PROPERTIES_FILE}" -} -trap cleanup 0 -cat << __EOF__ > "${PROPERTIES_FILE}" -AdUserName= -AdUserPassword.type=CompositePassword -LDAPSecurityAuthentication= -DomainName= -AdUserId= -LdapServers= -LDAPProviderTypes= -LDAPServerPort= -ChangePasswordMsg= -__EOF__ - # # Add this option to the java command line to enable remote debugging in # all IP addresses and port 8787: @@ -102,4 +82,4 @@ -jar "${JBOSS_HOME}/jboss-modules.jar" \ -dependencies org.ovirt.engine.core.tools \ -class org.ovirt.engine.core.domains.ManageDomains \ - "$@" -propertiesFile="${PROPERTIES_FILE}" + "$@" -- To view, visit http://gerrit.ovirt.org/23994 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia6fd2c5066e0e0cf12d10be32ec6c36a8a91bfaf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Martin Peřina <mper...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches