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

Reply via email to