1# 2# CDDL HEADER START 3# 4# The contents of this file are subject to the terms of the 5# Common Development and Distribution License (the "License"). 6# You may not use this file except in compliance with the License. 7# 8# See LICENSE.txt included in this distribution for the specific 9# language governing permissions and limitations under the License. 10# 11# When distributing Covered Code, include this CDDL HEADER in each 12# file and include the License file at LICENSE.txt. 13# If applicable, add the following below this CDDL HEADER, with the 14# fields enclosed by brackets "[]" replaced with your own identifying 15# information: Portions Copyright [yyyy] [name of copyright owner] 16# 17# CDDL HEADER END 18# 19 20# 21# Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. 22# 23 24from .command import Command 25from .exitvals import ( 26 FAILURE_EXITVAL, 27 SUCCESS_EXITVAL 28) 29 30 31def run_hook(logger, script, path, env, timeout): 32 """ 33 Change a working directory to specified path, run a command 34 and change the working directory back to its original value. 35 36 Return 0 on success, 1 on failure. 37 """ 38 39 ret = SUCCESS_EXITVAL 40 logger.debug("Running hook '{}' in directory {}". 41 format(script, path)) 42 cmd = Command([script], logger=logger, work_dir=path, env_vars=env, 43 timeout=timeout, doprint=True) 44 cmd.execute() 45 if cmd.state != "finished" or cmd.getretcode() != SUCCESS_EXITVAL: 46 logger.error("command failed: {} -> {}".format(cmd, cmd.getretcode())) 47 ret = FAILURE_EXITVAL 48 49 return ret 50