Alon Bar-Lev has posted comments on this change.

Change subject: extensions test tool: logger
......................................................................


Patch Set 17:

(16 comments)

https://gerrit.ovirt.org/#/c/37886/17/backend/manager/extension-tool/src/main/java/org/ovirt/engine/exttool/core/ExtensionsToolExecutor.java
File 
backend/manager/extension-tool/src/main/java/org/ovirt/engine/exttool/core/ExtensionsToolExecutor.java:

Line 48:             }
Line 49:             if(argMap.containsKey("version")) {
Line 50:                 logger.info(
Line 51:                     String.format(
Line 52:                         "%1$s - %2$s (%3$s)",
%1$s-%2$s (%3$s), notice the space
Line 53:                         
System.getProperty("org.ovirt.engine.exttool.core.packageName"),
Line 54:                         
System.getProperty("org.ovirt.engine.exttool.core.packageVersion"),
Line 55:                         
System.getProperty("org.ovirt.engine.exttool.core.packageDisplayName")
Line 56:                     )


Line 70:             }
Line 71:             loadExtensions(moduleService, argMap);
Line 72:             moduleService.parseArguments(
Line 73:                 moduleService.parseArguments(moduleOthers)
Line 74:             );
why is double parsing here? you should provided the others to the module to 
parse, it should ignore its name if not important to it and parse arguments.
Line 75:             moduleService.run();
Line 76:         } catch(ExitException e) {
Line 77:             if(e.getMessage() != null) {
Line 78:                 if(e.getExitCode() > 0) {


Line 78:                 if(e.getExitCode() > 0) {
Line 79:                     logger.error(e.getMessage());
Line 80:                 } else {
Line 81:                     logger.info(e.getMessage());
Line 82:                 }
which makes me wounder why do we need the message within this exception... why 
not info/error before throwing it and only use the message for debug.
Line 83:             }
Line 84:             exitStatus = e.getExitCode();
Line 85:         } catch (Throwable t) {
Line 86:             String message = t.getMessage() != null ? t.getMessage() : 
t.getClass().getName();


Line 155:         return propFiles;
Line 156:     }
Line 157: 
Line 158:     private static String getModules(Map<String, ModuleService> 
modules) {
Line 159:         StringBuilder sb = new StringBuilder("Available Modules:\n");
if you using %n in usage, then we should be consistent...
Line 160:         for(ModuleService entry : modules.values()) {
Line 161:                 sb.append(String.format("  %-10s - %s", 
entry.getName(), entry.getDescription()));
Line 162:         }
Line 163:         return sb.toString();


https://gerrit.ovirt.org/#/c/37886/17/backend/manager/extension-tool/src/main/java/org/ovirt/engine/exttool/core/ModuleService.java
File 
backend/manager/extension-tool/src/main/java/org/ovirt/engine/exttool/core/ModuleService.java:

Line 8: 
Line 9: public interface ModuleService {
Line 10: 
Line 11:     public static final ExtKey EXTENSIONS_MAP = new 
ExtKey("GLOBAL_EXTENSIONS_MAP", Map/*<ExtMap>*/.class, 
"78680401-40cf-4bae-a6ee-7e8c204a9010");
Line 12:     public static String PROGRAM_NAME ="test";// 
System.getProperty("org.ovirt.engine.exttool.core.packageName");
why is it here and not within core?

you can add it to the context to be available at module.
Line 13: 
Line 14:     public String getName();
Line 15: 
Line 16:     public String getDescription();


Line 14:     public String getName();
Line 15: 
Line 16:     public String getDescription();
Line 17: 
Line 18:     public Map<String, Object> getArguments();
I am still unsure why this is required.
Line 19: 
Line 20:     public boolean doHelp();
Line 21: 
Line 22:     public void setContext(ExtMap context);


https://gerrit.ovirt.org/#/c/37886/17/backend/manager/extension-tool/src/main/java/org/ovirt/engine/exttool/logger/LoggerServiceImpl.java
File 
backend/manager/extension-tool/src/main/java/org/ovirt/engine/exttool/logger/LoggerServiceImpl.java:

Line 18: public class LoggerServiceImpl implements ModuleService {
Line 19: 
Line 20:     private static final org.slf4j.Logger logger = 
LoggerFactory.getLogger(LoggerServiceImpl.class);
Line 21: 
Line 22:     private String prefix;
not sure why this is a member.
Line 23:     private ExtMap context;
Line 24:     private Map<String, Object> args = new HashMap<>();
Line 25:     private Map<String, Runnable> actions = new HashMap<>();
Line 26:     {


Line 72:     public List<String> parseArguments(List<String> argsList) throws 
Exception {
Line 73:         prefix = argsList.remove(0);
Line 74:         ParametersParser parser = new ParametersParser(
Line 75:             getClass().getResourceAsStream("arguments.properties"),
Line 76:             prefix
this should be constant
Line 77:         );
Line 78:         args.putAll(parser.parse(argsList));
Line 79:         if(args.containsKey("help")) {
Line 80:             logger.info(


Line 87:             );
Line 88:             throw new ExitException();
Line 89:         }
Line 90: 
Line 91:         return (List<String>)args.get("__other__");
why not store it as member?
Line 92:     }
Line 93: 
Line 94:     @Override
Line 95:     public void run() throws Exception {


Line 92:     }
Line 93: 
Line 94:     @Override
Line 95:     public void run() throws Exception {
Line 96:         Runnable actionMethod = actions.get(prefix);
the action should be parsed in this module.
Line 97:         if(actionMethod == null) {
Line 98:             throw new IllegalArgumentException(
Line 99:                 String.format("No such action '%1$s' exists for module 
'%2$s'", prefix, getName())
Line 100:             );


Line 95:     public void run() throws Exception {
Line 96:         Runnable actionMethod = actions.get(prefix);
Line 97:         if(actionMethod == null) {
Line 98:             throw new IllegalArgumentException(
Line 99:                 String.format("No such action '%1$s' exists for module 
'%2$s'", prefix, getName())
shouldn't this check be in the parseArguments? why defer it to run?
Line 100:             );
Line 101:         }
Line 102: 
Line 103:         actionMethod.run();


https://gerrit.ovirt.org/#/c/37886/17/backend/manager/extension-tool/src/main/resources/org/ovirt/engine/exttool/core/arguments.properties
File 
backend/manager/extension-tool/src/main/resources/org/ovirt/engine/exttool/core/arguments.properties:

Line 19: core.arg.help.name = help
Line 20: core.arg.help.help = show test tool help
Line 21: core.arg.version.name = version
Line 22: core.arg.version.help = show version of test tool
Line 23: core.help.underlinetext = You can use this tool to test your extension.
footer?

oVirt Engine Extension API test tool?


Line 20: core.arg.help.help = show test tool help
Line 21: core.arg.version.name = version
Line 22: core.arg.version.help = show version of test tool
Line 23: core.help.underlinetext = You can use this tool to test your extension.
Line 24: core.help.usage.header = @PROGRAM_NAME@ [options] module
@PROGRAM_NAME@ [options] module [options]


https://gerrit.ovirt.org/#/c/37886/17/backend/manager/extension-tool/src/main/resources/org/ovirt/engine/exttool/logger/arguments.properties
File 
backend/manager/extension-tool/src/main/resources/org/ovirt/engine/exttool/logger/arguments.properties:

Line 22: log-record.help.usage.header = @PROGRAM_NAME@ logger logrecord 
[options]
Line 23: logger.arg.help.name = help
Line 24: logger.arg.help.help = show help for logger module
Line 25: logger.help.underlinetext = You can test your logger extension
Line 26: logger.help.usage.header = @PROGRAM_NAME@ logger [options] action 
[options]
logger -> action|module -> so it will be the same at all modules we add.

please also reorder so it will be first.


https://gerrit.ovirt.org/#/c/37886/17/backend/manager/modules/uutils/src/main/resources/org/ovirt/engine/core/uutils/cli/parser/defaults.properties
File 
backend/manager/modules/uutils/src/main/resources/org/ovirt/engine/core/uutils/cli/parser/defaults.properties:

Line 5: arg.matcher = .*
Line 6: arg.metavar = STRING
Line 7: arg.multivalue = false
Line 8: help.underlinetext =
Line 9: help.usage.header =
new line please


https://gerrit.ovirt.org/#/c/37886/17/packaging/bin/ovirt-engine-extensions-tool.sh
File packaging/bin/ovirt-engine-extensions-tool.sh:

Line 24:        -Djboss.modules.write-indexes=false \
Line 25:        -Dorg.ovirt.engine.exttool.core.programName="${0}" \
Line 26:        -Dorg.ovirt.engine.exttool.core.packageName="${PACKAGE_NAME}" \
Line 27:        
-Dorg.ovirt.engine.exttool.core.packageVersion="${PACKAGE_VERSION}" \
Line 28:        
-Dorg.ovirt.engine.exttool.core.packageDisplayName="${PACKAGE_DISPLAY_NAME}" \
etc is missing
Line 29:        -jar "${JBOSS_HOME}/jboss-modules.jar" \
Line 30:        -dependencies org.ovirt.engine.core.extension-tool \
Line 31:        -class org.ovirt.engine.exttool.core.ExtensionsToolExecutor \


-- 
To view, visit https://gerrit.ovirt.org/37886
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ie06113c5d56a49e58d557c851f9ff00b9a9ca409
Gerrit-PatchSet: 17
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ondřej Macháček <machacek.on...@gmail.com>
Gerrit-Reviewer: Alon Bar-Lev <alo...@redhat.com>
Gerrit-Reviewer: Ondra Machacek <omach...@redhat.com>
Gerrit-Reviewer: Ondřej Macháček <machacek.on...@gmail.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-Reviewer: mooli tayer <mta...@redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to