refactor: streamline error handling with contextlib in template preparation
This commit is contained in:
@@ -19,10 +19,10 @@ from __future__ import annotations
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
|
import signal
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
import signal
|
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ template prepare-win
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import contextlib
|
||||||
import fnmatch
|
import fnmatch
|
||||||
import json
|
import json
|
||||||
import socket
|
import socket
|
||||||
@@ -565,10 +566,8 @@ def template_prepare_win(
|
|||||||
)
|
)
|
||||||
|
|
||||||
click.echo("[prepare-win] Windows Update requires reboot — rebooting ...")
|
click.echo("[prepare-win] Windows Update requires reboot — rebooting ...")
|
||||||
try:
|
with contextlib.suppress(TransportError):
|
||||||
transport.run("Restart-Computer -Force", check=False)
|
transport.run("Restart-Computer -Force", check=False)
|
||||||
except TransportError:
|
|
||||||
pass
|
|
||||||
transport.close()
|
transport.close()
|
||||||
time.sleep(30)
|
time.sleep(30)
|
||||||
click.echo(f"[prepare-win] Waiting for WinRM after reboot ({winrm_timeout}s) ...")
|
click.echo(f"[prepare-win] Waiting for WinRM after reboot ({winrm_timeout}s) ...")
|
||||||
@@ -638,10 +637,8 @@ Register-ScheduledTask -TaskName 'CI-StaticIp' `
|
|||||||
|
|
||||||
# Final reboot to flush installation state
|
# Final reboot to flush installation state
|
||||||
click.echo("[prepare-win] Final reboot to flush installation state ...")
|
click.echo("[prepare-win] Final reboot to flush installation state ...")
|
||||||
try:
|
with contextlib.suppress(TransportError):
|
||||||
transport.run("Restart-Computer -Force", check=False)
|
transport.run("Restart-Computer -Force", check=False)
|
||||||
except TransportError:
|
|
||||||
pass
|
|
||||||
transport.close()
|
transport.close()
|
||||||
time.sleep(30)
|
time.sleep(30)
|
||||||
click.echo("[prepare-win] Waiting for WinRM after final reboot ...")
|
click.echo("[prepare-win] Waiting for WinRM after final reboot ...")
|
||||||
@@ -689,10 +686,8 @@ Register-ScheduledTask -TaskName 'CI-StaticIp' `
|
|||||||
|
|
||||||
# Graceful shutdown
|
# Graceful shutdown
|
||||||
click.echo("[prepare-win] Sending graceful shutdown ...")
|
click.echo("[prepare-win] Sending graceful shutdown ...")
|
||||||
try:
|
with contextlib.suppress(TransportError):
|
||||||
transport.run("Stop-Computer -Force", check=False)
|
transport.run("Stop-Computer -Force", check=False)
|
||||||
except TransportError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
transport.close()
|
transport.close()
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ and releases it on VM destroy. The guest applies the static IP at boot:
|
|||||||
(``template/guest-setup/windows/ci-static-ip.ps1``) runs at system startup
|
(``template/guest-setup/windows/ci-static-ip.ps1``) runs at system startup
|
||||||
as SYSTEM and applies the static IP before WinRM starts.
|
as SYSTEM and applies the static IP before WinRM starts.
|
||||||
|
|
||||||
This eliminates the DHCP / VMware-Tools IP-detect polling loop (20–180 s
|
This eliminates the DHCP / VMware-Tools IP-detect polling loop (20-180 s
|
||||||
variance observed in B7 benchmarks). After the VM reaches *running* state the
|
variance observed in B7 benchmarks). After the VM reaches *running* state the
|
||||||
host knows the IP immediately and goes straight to the transport probe.
|
host knows the IP immediately and goes straight to the transport probe.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user