- show failed machines with a longer failure description on the same status line - keep Notes for broader context beyond the machine-specific failure reason - update the ATVM automation guide and AGENTS rules to match - record the reporting preference in atvm-automation-runs.md
8.1 KiB
ATVM AGENTS Guide
This file defines how to operate and maintain the ATVM folder workflows.
It is rebuilt from current files in /home/aw/code/cds/atvm.
Scope
Two operational tracks exist in this folder:
- Setup/bootstrap track:
atvm-setup-script.shrun-atvm-setup-and-collect-log.shatvm-setup-script-guide.mdatvm-setup-script-runs.md
- Cypress automation track:
atvm-automation-guide.mdatvm-automation-examples.mdatvm-automation-runs.md
Reference/inventory material:
cypress-automation-for-cmc.mdcypress-automation-for-cmc.md:Zone.Identifier
File Roles
*-guide.mdfiles:- Guide-only procedures, rules, defaults, and checklists.
- No dated or one-off run examples.
*-runs.mdfiles:- Run-specific learnings only when a run introduces new information.
- No routine/no-change run logs.
*-examples.mdfiles:- Reusable command examples and commonly used option combinations.
- Keep generic; avoid dated one-off run outcomes.
- Keep command-focused; move workflow rules, defaults, blacklist policy, and reporting requirements into the corresponding
*-guide.mdor*-runs.mdfiles.
Setup Track: Required Behavior
Use atvm-setup-script-guide.md as the procedure source and keep behavior aligned with atvm-setup-script.sh.
Safety-Critical Rules
- Never run setup without operator-provided
--expected-ipand--expected-hostname. - Never infer expected hostname from target host output.
- Stop immediately on hostname mismatch or expected-IP-not-assigned.
- Keep static IP configuration as a final step to avoid mid-run connection loss.
Canonical Setup Order
- Parse args.
- Validate host identity.
- Check sudo/privileges.
- Fix repositories.
- Configure Ubuntu root SSH/password workflow (Ubuntu only).
- Install sudo if needed.
- Configure Oracle default non-UEK kernel (Oracle Linux only).
- Disable Ubuntu auto-upgrades (Ubuntu only).
- Run package cleanup/install.
- Disable SELinux (RHEL-family).
- Configure static IP.
- Print summary.
- Reboot + post-reboot SELinux verifier when applicable.
- Keep client on until controller log copy + SHA256 verification completes.
- Power off only after verified success and no real error log lines.
Setup Defaults
- ATVM static IP target:
192.168.3.191/22 - Gateway:
192.168.0.1 - DNS:
8.8.8.8,8.8.4.4 - Ubuntu root SSH workflow credential in docs/script:
root / cdsi2012 - Client log file:
atvm_setup_script.log(typically/root/atvm_setup_script.logwhen run as root)
Setup Controller Wrapper Rules
- Wrapper supports:
- run-and-collect (default)
--collect-after-complete
run-and-collectrequires env vars:EXPECTED_IP_ARGEXPECTED_HOSTNAME_ARG
- Wrapper validates success marker and SHA256 before success.
- Wrapper powers off only when log has no lines matching
^\[ERROR\].
Cypress Automation Track: Required Behavior
Use atvm-automation-guide.md as the execution source.
Use atvm-automation-examples.md as the common options/command reference.
Treat atvm-automation-examples.md as reference-only.
Do not treat example options, excludes, plugins, or filters as default operator intent unless the operator explicitly asks for them.
Controller Client
- Hostname:
atvm-cypres-vm-1 - IP:
192.168.3.190 - Credentials:
root / atvmcdsi2012
Mandatory Run Control
- Before planning a new run, check for active automation processes.
- Report running/not-running status.
- If running, ask before termination; terminate only with explicit approval.
- Always show exact planned command(s) before execution.
- Execute only after explicit approval.
- If monitoring is not requested, report immediate command success/failure and any errors.
- Monitor completion only when explicitly requested by the operator.
- For monitored runs, allow long runtime windows (15-30+ minutes or longer) and continue until completion unless operator instructs otherwise.
- Do not terminate monitored runs unless the operator explicitly instructs termination.
Status Request Format
When the operator asks for run status, report in this order:
- Heading/title using the run
build_name. - Completed machines with machine name first and status second for each machine.
- Notes.
- Skipped machines with reason.
- Remaining machines still to run.
- Summary counts for finished, passed, failed, and skipped machines.
- Timing details:
- start time
- end time if complete
- total run time if complete, or elapsed run time if still running
- quickest completed test runtime
- longest completed test runtime
- average completed test runtime
- Estimated completion time.
Status details:
- Use the same status display format for every ATVM automation status response regardless of template type (
e2e,systemOS,reboot,migrateops, and others). - Use the live run log on the automation VM when available.
- Use the run
build_nameas the heading/title when available. - Format every machine entry as
machine-name - STATUS. - Put each machine on its own line; do not combine multiple machine statuses on one line.
- Put failure reasons, oddities, and operator-facing context in a dedicated
Notessection. - Show blacklisted machines under skipped machines when they are part of the requested scope.
- Show in-progress machines under remaining machines as
RUNNING. - Show not-yet-started machines as
NOT STARTED. - Use completed spec results already recorded in the log to determine machine pass/fail state.
- For failed machines, mark the machine
FAILin the completed list and append a longer failure description on the same machine line when the reason materially helps the operator understand the failure. - Keep
Notesfor broader context, anomalies, or follow-up details that are not part of the machine-specific failure description. - Include start time in status output when it can be derived from the log.
- Include end time and total runtime for completed runs, or elapsed runtime for active runs.
- Include quickest completed test runtime, longest completed test runtime, and average completed test runtime under timing details when they can be derived from the log.
- Make the estimated completion time refer to the entire remaining run, not only the current machine/spec.
Automation Blacklist
Always exclude these machines with --exclude_partial_match when building ATVM automation commands.
CMC install blacklist (BLACKLISTED: CMC INSTALL - CAN'T COMPILE):
atvm6-centos6.0atvm41-redhat6.0atvm73-oracle6.0
Crash blacklist (BLACKLISTED: CRASHES WHEN CREATING MIGRATION SESSION - BUG):
atvm144-suse15.0
Support-request blacklist (BLACKLISTED: SUPPORT REQUEST - WAITING):
atvm113-debian9.0.0atvm115-debian9.1.0atvm116-debian9.2.0atvm156-debian9.3.0
Re-create blacklist:
atvm157-debian13.0.0
Operator Preferences
- Do not include Gold Disk IDs in
--build_name. --build_namemust not contain spaces; use-between words.- Prefer distro-scoped filtering (for example
--containsVm redhat9) when possible. - Do not reference
cypress.atvm-config.tsby default. - Unless the operator explicitly asks for another config, use ATVM config files with
goldin the filename (for examplecypress.atvm-config-gold.ts).
Update Policy (Both Tracks)
After each run:
- Update corresponding
*-guide.mdonly if workflow/rules/default behavior changed. - Update corresponding
*-examples.mdwhen common command patterns/options change. - Update corresponding
*-runs.mdonly if the run produced new learning.
Path and Naming Consistency Note
Current repo filenames use hyphen style, but some script text/defaults still show underscore-style paths (for example atvm_setup_script.sh, run_atvm_setup_and_collect_log.sh, /home/aw/code/atvm).
When operating:
- Use actual filesystem paths in this repo first (
/home/aw/code/cds/atvm/...). - If script defaults are used, verify they match existing files before execution.
- If changing path conventions, update scripts and guides in the same change.
Non-Goals
- Do not treat
cypress-automation-for-cmc.mdas executable runbook logic. - Do not record secrets/tokens into new guide or runs entries.