Skip to content

WDT-639 consistent exit handling across tools #1169

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 11 additions & 14 deletions core/src/main/python/compare_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
from wlsdeploy.tool.compare.model_comparer import ModelComparer
from wlsdeploy.tool.validate.validator import Validator
from wlsdeploy.util import cla_helper
from wlsdeploy.util import tool_exit
from wlsdeploy.util import validate_configuration
from wlsdeploy.util import variables
from wlsdeploy.util.cla_utils import CommandLineArgUtil
Expand Down Expand Up @@ -203,7 +204,7 @@ def compare(self):
except YamlException, ye:
_logger.severe('WLSDPLY-05708', file_name, ye.getLocalizedMessage(),
error=ye, class_name=_class_name, method_name=_method_name)
System.exit(ExitCode.ERROR)
tool_exit.end(None, ExitCode.ERROR)
else:
# write the change model to standard output in YAML format
print(format_message('WLSDPLY-05707'))
Expand Down Expand Up @@ -251,6 +252,7 @@ def main():
_logger.finer('sys.argv[{0}] = {1}', str(index), str(arg), class_name=_class_name, method_name=_method_name)

_outputdir = None
_exit_code = ExitCode.OK

try:
model_context = __process_args(sys.argv)
Expand All @@ -269,7 +271,7 @@ def main():
obj = ModelFileDiffer(model1, model2, model_context, _outputdir)
rc = obj.compare()
if rc == VALIDATION_FAIL:
System.exit(ExitCode.ERROR)
tool_exit.__log_and_exit(_logger, model_context, ExitCode.ERROR, _class_name, _method_name)

if _outputdir:
fos = None
Expand Down Expand Up @@ -311,30 +313,25 @@ def main():
index = index + 1
print(BLANK_LINE)

System.exit(0)

except CLAException, ex:
exit_code = ex.getExitCode()
if exit_code != ExitCode.HELP:
_exit_code = ex.getExitCode()
if _exit_code != ExitCode.HELP:
_logger.severe('WLSDPLY-20008', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
sys.exit(exit_code)
except CompareException, ce:
cla_helper.clean_up_temp_files()
_exit_code = ExitCode.ERROR
_logger.severe('WLSDPLY-05704', ce.getLocalizedMessage(), class_name=_class_name, method_name=_method_name)
System.exit(ExitCode.ERROR)
except PyWLSTException, pe:
cla_helper.clean_up_temp_files()
_exit_code = ExitCode.ERROR
_logger.severe('WLSDPLY-05704', pe.getLocalizedMessage(), class_name=_class_name, method_name=_method_name)
System.exit(ExitCode.ERROR)
except:
exc_type, exc_obj, exc_tb = sys.exc_info()
_exit_code = ExitCode.ERROR
ee_string = traceback.format_exception(exc_type, exc_obj, exc_tb)
cla_helper.clean_up_temp_files()
_logger.severe('WLSDPLY-05704', ee_string)
System.exit(ExitCode.ERROR)

cla_helper.clean_up_temp_files()
tool_exit.__log_and_exit(_logger, model_context, _exit_code, _class_name, _method_name)

def format_message(key, *args):
"""
Expand Down
27 changes: 9 additions & 18 deletions core/src/main/python/create.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,20 +304,20 @@ def main(args):

WlstHelper(ExceptionType.CREATE).silence()

exit_code = ExitCode.OK
_exit_code = ExitCode.OK

try:
model_context = __process_args(args)
except CLAException, ex:
exit_code = ex.getExitCode()
if exit_code != ExitCode.HELP:
_exit_code = ex.getExitCode()
if _exit_code != ExitCode.HELP:
__logger.severe('WLSDPLY-20008', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()

# create a minimal model for summary logging
model_context = model_context_helper.create_exit_context(_program_name)
tool_exit.end(model_context, exit_code)
tool_exit.__log_and_exit(__logger, model_context, _exit_code, _class_name, _method_name)

aliases = Aliases(model_context, wlst_mode=__wlst_mode, exception_type=ExceptionType.CREATE)

Expand Down Expand Up @@ -349,33 +349,24 @@ def main(args):
rcu_db_info = RcuDbInfo(model_context, aliases, rcu_properties_map)
ssl_helper.fix_jps_config(rcu_db_info, model_context)
except WLSDeployArchiveIOException, ex:
_exit_code = ExitCode.ERROR
__logger.severe('WLSDPLY-12409', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
tool_exit.end(model_context, ExitCode.ERROR)

except CreateException, ex:
_exit_code = ExitCode.ERROR
__logger.severe('WLSDPLY-12409', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
tool_exit.end(model_context, ExitCode.ERROR)

except IOException, ex:
_exit_code = ExitCode.ERROR
__logger.severe('WLSDPLY-12409', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
tool_exit.end(model_context, ExitCode.ERROR)

except DeployException, ex:
_exit_code = ExitCode.ERROR
__logger.severe('WLSDPLY-12410', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
tool_exit.end(model_context, ExitCode.ERROR)

cla_helper.clean_up_temp_files()

tool_exit.end(model_context, exit_code)

tool_exit.__log_and_exit(__logger, model_context, _exit_code, _class_name, _method_name)

if __name__ == '__main__' or __name__ == 'main':
WebLogicDeployToolingVersion.logVersionInfo(_program_name)
Expand Down
17 changes: 7 additions & 10 deletions core/src/main/python/deploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,38 +226,35 @@ def main(args):

__wlst_helper.silence()

exit_code = ExitCode.OK
_exit_code = ExitCode.OK

try:
model_context = __process_args(args)
except CLAException, ex:
exit_code = ex.getExitCode()
if exit_code != ExitCode.HELP:
_exit_code = ex.getExitCode()
if _exit_code != ExitCode.HELP:
__logger.severe('WLSDPLY-20008', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()

# create a minimal model for summary logging
model_context = model_context_helper.create_exit_context(_program_name)
tool_exit.end(model_context, exit_code)
tool_exit.__log_and_exit(__logger, model_context, _exit_code, _class_name, _method_name)

aliases = Aliases(model_context, wlst_mode=__wlst_mode, exception_type=ExceptionType.DEPLOY)

model_dictionary = cla_helper.load_model(_program_name, model_context, aliases, "deploy", __wlst_mode)

try:
model = Model(model_dictionary)
exit_code = __deploy(model, model_context, aliases)
_exit_code = __deploy(model, model_context, aliases)
except DeployException, ex:
_exit_code = ExitCode.ERROR
__logger.severe('WLSDPLY-09015', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
tool_exit.end(model_context, ExitCode.ERROR)

cla_helper.clean_up_temp_files()

tool_exit.end(model_context, exit_code)

tool_exit.__log_and_exit(__logger, model_context, _exit_code, _class_name, _method_name)

if __name__ == '__main__' or __name__ == 'main':
WebLogicDeployToolingVersion.logVersionInfo(_program_name)
Expand Down
28 changes: 9 additions & 19 deletions core/src/main/python/discover.py
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,8 @@ def __clear_archive_file(model_context):
__logger.throwing(class_name=_class_name, method_name=_method_name, error=de)
raise de

__logger.exiting(class_name=_class_name, method_name=_method_name)


def __close_archive(model_context):
"""
Expand Down Expand Up @@ -508,6 +510,7 @@ def __check_and_customize_model(model, model_context, aliases, credential_inject
archive_file_name=model_context.get_archive_file_name())
except ValidateException, ex:
__logger.warning('WLSDPLY-06015', ex.getLocalizedMessage(), class_name=_class_name, method_name=_method_name)
__logger.exiting(_class_name, _method_name)
return model


Expand Down Expand Up @@ -554,19 +557,6 @@ def __remote_report(model_context):
print key, ' ', wls_archive
print ''


def __log_and_exit(model_context, exit_code, class_name, method_name):
"""
Helper method to log the exiting message and call sys.exit()
:param exit_code: the exit code to use
:param class_name: the class name to pass to the logger
:param method_name: the method name to pass to the logger
"""
__logger.exiting(result=exit_code, class_name=class_name, method_name=method_name)

tool_exit.end(model_context, exit_code)


def main(args):
"""
The main entry point for the discoverDomain tool.
Expand Down Expand Up @@ -594,14 +584,14 @@ def main(args):

# create a minimal model for summary logging
model_context = model_context_helper.create_exit_context(_program_name)
__log_and_exit(model_context, exit_code, _class_name, _method_name)
tool_exit.__log_and_exit(__logger, model_context, exit_code, _class_name, _method_name)

try:
__clear_archive_file(model_context)
except DiscoverException, ex:
__logger.severe('WLSDPLY-06010', _program_name, model_context.get_archive_file_name(),
ex.getLocalizedMessage(), error=ex, class_name=_class_name, method_name=_method_name)
__log_and_exit(model_context, ExitCode.ERROR, _class_name, _method_name)
tool_exit.__log_and_exit(__logger, model_context, ExitCode.ERROR, _class_name, _method_name)

aliases = Aliases(model_context, wlst_mode=__wlst_mode, exception_type=ExceptionType.DISCOVER)
model = None
Expand All @@ -624,19 +614,19 @@ def main(args):
__logger.severe('WLSDPLY-06011', _program_name, model_context.get_domain_name(),
model_context.get_domain_home(), ex.getLocalizedMessage(),
error=ex, class_name=_class_name, method_name=_method_name)
__log_and_exit(model_context, ExitCode.ERROR, _class_name, _method_name)
tool_exit.__log_and_exit(__logger, model_context, ExitCode.ERROR, _class_name, _method_name)

try:
__persist_model(model, model_context)

except TranslateException, ex:
__logger.severe('WLSDPLY-20024', _program_name, model_context.get_archive_file_name(), ex.getLocalizedMessage(),
error=ex, class_name=_class_name, method_name=_method_name)
__log_and_exit(model_context, ExitCode.ERROR, _class_name, _method_name)
tool_exit.__log_and_exit(__logger, model_context, ExitCode.ERROR, _class_name, _method_name)

__close_archive(model_context)

__log_and_exit(model_context, exit_code, _class_name, _method_name)
tool_exit.__log_and_exit(__logger, model_context, exit_code, _class_name, _method_name)


if __name__ == '__main__' or __name__ == 'main':
Expand All @@ -646,4 +636,4 @@ def main(args):
except exceptions.SystemExit, ex:
raise ex
except (exceptions.Exception, java.lang.Exception), ex:
exception_helper.__handle_unexpected_exception(ex, _program_name, _class_name, __logger)
tool_exit.__handle_unexpected_exception(ex, _program_name, _class_name, __logger)
9 changes: 6 additions & 3 deletions core/src/main/python/encrypt.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@
from wlsdeploy.exception.expection_types import ExceptionType
from wlsdeploy.logging.platform_logger import PlatformLogger
from wlsdeploy.tool.encrypt import encryption_utils
from wlsdeploy.tool.util import model_context_helper
from wlsdeploy.util import cla_utils
from wlsdeploy.util import getcreds
from wlsdeploy.util import tool_exit
from wlsdeploy.util import variables as variable_helper
from wlsdeploy.util.cla_utils import CommandLineArgUtil
from wlsdeploy.util.exit_code import ExitCode
Expand Down Expand Up @@ -215,6 +217,7 @@ def _process_request(args):
if exit_code != ExitCode.HELP:
__logger.severe('WLSDPLY-20008', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
__logger.exiting(class_name=_class_name, method_name=_method_name, result=exit_code)
return exit_code

if model_context.is_encryption_manual():
Expand Down Expand Up @@ -249,9 +252,9 @@ def main(args):
__logger.finer('sys.argv[{0}] = {1}', str(index), str(arg), class_name=_class_name, method_name=_method_name)

exit_code = _process_request(args)
__logger.exiting(class_name=_class_name, method_name=_method_name, result=exit_code)
sys.exit(exit_code)

# create a minimal model for summary logging
model_context = model_context_helper.create_exit_context(_program_name)
tool_exit.__log_and_exit(__logger, model_context, exit_code, _class_name, _method_name)

if __name__ == '__main__' or __name__ == 'main':
WebLogicDeployToolingVersion.logVersionInfo(_program_name)
Expand Down
16 changes: 7 additions & 9 deletions core/src/main/python/extract_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,37 +124,35 @@ def main(args):
for index, arg in enumerate(args):
__logger.finer('sys.argv[{0}] = {1}', str(index), str(arg), class_name=_class_name, method_name=_method_name)

exit_code = ExitCode.OK
_exit_code = ExitCode.OK

try:
model_context = __process_args(args)
except CLAException, ex:
exit_code = ex.getExitCode()
if exit_code != ExitCode.HELP:
_exit_code = ex.getExitCode()
if _exit_code != ExitCode.HELP:
__logger.severe('WLSDPLY-20008', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()

# create a minimal model for summary logging
model_context = model_context_helper.create_exit_context(_program_name)
tool_exit.end(model_context, exit_code)
tool_exit.__log_and_exit(__logger, model_context, _exit_code, _class_name, _method_name)

aliases = Aliases(model_context, wlst_mode=__wlst_mode)

model_dictionary = cla_helper.load_model(_program_name, model_context, aliases, "extract", __wlst_mode)

try:
model = Model(model_dictionary)
exit_code = __extract_resource(model, model_context, aliases)
_exit_code = __extract_resource(model, model_context, aliases)
except DeployException, ex:
_exit_code = ExitCode.ERROR
__logger.severe('WLSDPLY-09015', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
tool_exit.end(model_context, ExitCode.ERROR)

cla_helper.clean_up_temp_files()

tool_exit.end(model_context, exit_code)
tool_exit.__log_and_exit(__logger, model_context, _exit_code, _class_name, _method_name)
return


Expand Down
10 changes: 4 additions & 6 deletions core/src/main/python/model_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,15 @@
from oracle.weblogic.deploy.util import WebLogicDeployToolingVersion

# Jython tools don't require sys.path modification

from wlsdeploy.aliases.aliases import Aliases
from wlsdeploy.aliases.wlst_modes import WlstModes
from wlsdeploy.exception import exception_helper
from wlsdeploy.logging.platform_logger import PlatformLogger
from wlsdeploy.tool.modelhelp.model_help_printer import ModelHelpPrinter
from wlsdeploy.tool.modelhelp.model_help_utils import ControlOptions
from wlsdeploy.tool.util import model_context_helper
from wlsdeploy.util import cla_helper
from wlsdeploy.util import model
from wlsdeploy.util import tool_exit
from wlsdeploy.util.cla_utils import CommandLineArgUtil
from wlsdeploy.util.exit_code import ExitCode

Expand Down Expand Up @@ -435,18 +434,17 @@ def main(args):
__logger.severe('WLSDPLY-20008', _program_name, ex.getLocalizedMessage(), error=ex,
class_name=_class_name, method_name=_method_name)
cla_helper.clean_up_temp_files()
sys.exit(exit_code)
tool_exit.__log_and_exit(__logger, model_context, exit_code, _class_name, _method_name)

try:
model_path = model_context.get_trailing_argument(0)
exit_code = print_help(model_path, model_context)
except CLAException, ve:
__logger.severe('WLSDPLY-10112', _program_name, ve.getLocalizedMessage(), error=ve,
class_name=_class_name, method_name=_method_name)
sys.exit(ExitCode.ERROR)
exit_code = ExitCode.ERROR

__logger.exiting(result=exit_code, class_name=_class_name, method_name=_method_name)
sys.exit(exit_code)
tool_exit.__log_and_exit(__logger, model_context, exit_code, _class_name, _method_name)


if __name__ == '__main__' or __name__ == 'main':
Expand Down
Loading