Skip to content

Commit e53df1e

Browse files
Merge pull request #2222 from jan-cerny/error_check
Exit oscap-im if oscap fails
2 parents 061e9ca + 1bdea26 commit e53df1e

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

utils/oscap-im

+21-6
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,24 @@ def add_eval_args(args, cmd):
105105

106106

107107
def pre_scan_fix(args):
108-
with tempfile.NamedTemporaryFile(delete=False) as remediation_script:
108+
with tempfile.NamedTemporaryFile() as remediation_script:
109109
gen_fix_cmd = [
110110
"oscap", "xccdf", "generate", "fix", "--fix-type", "bootc",
111111
"--output", remediation_script.name]
112112
add_common_args(args, gen_fix_cmd)
113113
gen_fix_cmd.append(args.data_stream)
114-
subprocess.run(gen_fix_cmd, check=True)
115-
subprocess.run(["bash", remediation_script.name], check=True)
114+
try:
115+
subprocess.run(gen_fix_cmd, check=True, capture_output=True)
116+
except subprocess.CalledProcessError as e:
117+
raise RuntimeError(
118+
f"OpenSCAP generate fix failed with return code "
119+
f"{e.returncode}.\nOutput: {e.stderr.decode()}")
120+
try:
121+
subprocess.run(["bash", remediation_script.name], check=True)
122+
except subprocess.CalledProcessError as e:
123+
raise RuntimeError(
124+
f"Remediation script failed with return code "
125+
f"{e.returncode}.")
116126

117127

118128
def scan_and_remediate(args):
@@ -125,15 +135,20 @@ def scan_and_remediate(args):
125135
subprocess.run(oscap_cmd, env=env, check=True)
126136
except subprocess.CalledProcessError as e:
127137
if e.returncode not in [0, 2]:
128-
print(e, file=sys.stderr)
138+
raise RuntimeError(
139+
f"OpenSCAP scan failed with return code {e.returncode}.\n")
129140

130141

131142
def main():
132143
args = parse_args()
133144
verify_bootc_build_env()
134145
install_sce_dependencies()
135-
pre_scan_fix(args)
136-
scan_and_remediate(args)
146+
try:
147+
pre_scan_fix(args)
148+
scan_and_remediate(args)
149+
except RuntimeError as e:
150+
print(e, file=sys.stderr)
151+
sys.exit(1)
137152

138153

139154
if __name__ == "__main__":

0 commit comments

Comments
 (0)