Document ATVM automation defaults to always include --ignore_force_shutdown on cmc-templates.py commands and to use --use_specified_plugin iscsi unless explicitly overridden. Update the ATVM automation guide, folder-level AGENTS instructions, and run learnings so future runs follow the same defaults.
11 KiB
Run ATVM Automation Guide
This file is guide-only documentation for operating ATVM CMC automation.
Do not put specific run examples here.
For reusable command examples and common option combinations, use atvm-automation-examples.md.
Treat atvm-automation-examples.md as reference-only.
Do not assume the operator wants the extra options shown in examples unless they explicitly request them.
Purpose
Run ATVM CMC automation tests on the designated automation VM without unintended system or file changes.
ATVM Cypress Automation Controller Client
- Hostname:
atvm-cypres-vm-1 - IP:
192.168.3.190 - Credentials:
root / atvmcdsi2012
Operating Constraints
- Run only scripts/commands explicitly requested.
- Do not make manual system configuration changes on the client.
- Do not edit client files unless explicitly requested.
Operator Preferences
- Do not include Gold Disk identifiers in
--build_name. --build_namemust not contain spaces; use-between words.- For multiple VMs in same distro, use distro-scoped filtering (
--containsVm) instead of long explicit VM lists. - Always include
--ignore_force_shutdownoncmc-templates.pycommands unless the operator explicitly asks not to. - Default to
--use_specified_plugin iscsiunless the operator explicitly requests a different plugin. - Before preparing a new run, always check whether automation is already running.
- Always report whether automation is currently running.
- If running, ask whether to terminate; terminate only with explicit approval.
- After termination approval, terminate first, then present planned command(s), then wait for separate execution approval.
- Before any run, always show exact planned command(s) and wait for explicit approval.
- Execute only after explicit approval (for example
approve). - After execution, report immediate success/failure only.
- Do not actively monitor completion unless explicitly requested.
- If monitoring is requested, allow long runtime windows (15-30+ minutes) and continue until completion unless operator instructs otherwise.
- Report command errors immediately.
sshpassmay be used where password-based SSH automation is required.
Core Scripts
- Template prep:
/root/cdc-e2e-cyp-12.17.4/cmc-templates.py - Test execution:
./run-sorry-cypress.py
Typical sequence:
- Run
cmc-templates.pywith requested template/options. - Run
run-sorry-cypress.pywith matching config and build name.
Config File / Gold Disk Mapping
cypress.atvm-config-gold.ts-> Gold Disk 1cypress.atvm-config-gold-2.ts-> Gold Disk 2- Additional numbered config variants map to corresponding Gold Disks.
- Do not default to
cypress.atvm-config.ts. - Unless the operator explicitly requests another config, use a config file with
goldin the filename. - If the operator-specified config file is missing, stop immediately and report the missing file.
- Do not search for substitute ATVM config files and do not switch to another config unless the operator explicitly instructs it.
Available Templates
cmc-e2ecmc-group-consistencycmc-h2h-diff-platfcmc-h2h-same-platfcmc-migrateopscmc-migrateops-compute-migrationcmc-rebootcmc-systemOS
Command Pattern
python3 cmc-templates.py --template <template> --ignore_force_shutdown --config_file_path ./<config-file> --use_specified_plugin iscsi [template options or explicit plugin override...]; \
python3 ./run-sorry-cypress.py --config_file <config-file> --build_name <hyphenated-description-no-spaces> [--categorize]
Examples Reference
- Commonly used command examples:
atvm-automation-examples.md - Keep this guide focused on run-control rules and workflow constraints.
- Use examples as reference material only, not as default intent for new operator requests.
- Keep
atvm-automation-examples.mdlimited to reusable example commands; keep workflow rules, defaults, blacklist policy, and reporting rules in this guide oratvm-automation-runs.md.
Example Option Patterns (Guide-Only)
- Distro-scoped VM selection:
--containsVm redhat--containsVm redhat9
- Explicit VM selection:
--specify_vms <vm1> <vm2> ...
- Compute migrateops platform:
--vm_platforms vmware|ovirt|openshift|proxmox
Blacklisted Machines
Always exclude these machines from ATVM automation runs by adding them to --exclude_partial_match.
Permanently blacklisted because CMC cannot compile:
atvm6-centos6.0atvm41-redhat6.0atvm73-oracle6.0
Temporarily blacklisted because the run crashes when creating a migration session:
atvm144-suse15.0
Temporarily blacklisted while support requests are waiting:
atvm113-debian9.0.0atvm115-debian9.1.0atvm116-debian9.2.0atvm156-debian9.3.0
Temporarily blacklisted until re-created:
atvm157-debian13.0.0
Preferred exclude list:
--exclude_partial_match atvm6-centos6.0 atvm41-redhat6.0 atvm73-oracle6.0 atvm144-suse15.0 atvm113-debian9.0.0 atvm115-debian9.1.0 atvm116-debian9.2.0 atvm156-debian9.3.0 atvm157-debian13.0.0
Running-Automation Check (Mandatory)
Before any new automation request:
- SSH to
root@192.168.3.190. - Check for active automation processes (for example
run-sorry-cypress.py,cmc-templates.py, and related Cypress runners). - Report:
Runningwith process details, orNot running.
- If
Running, ask operator whether to terminate. - If termination is approved, terminate matching process(es), confirm termination, then proceed to planned-command approval.
- If termination is not approved, do not start a new run.
Approval Workflow (Mandatory)
- Build exact command(s) for the request.
- Present them verbatim as planned commands.
- Wait for explicit approval.
- Run only approved command(s), no extra options.
- If monitoring was not requested, report immediate success/failure for each command.
- If monitoring was requested, keep monitoring until completion and report final outcome.
Requested Test Style
When asked for one VM or a VM set:
- choose requested template/options,
- choose correct config file for intended Gold Disk,
- default to a config filename containing
goldunless the operator explicitly says otherwise, - always include
--ignore_force_shutdownon the template-generation command unless the operator explicitly overrides that default, - default to
--use_specified_plugin iscsiunless the operator explicitly requests another plugin or the template does not use plugin selection, - use a descriptive
--build_namewithout Gold Disk IDs.
Update Rule
- After each run, update this guide only for workflow/rule/default changes.
- Update
atvm-automation-examples.mdfor reusable command/option examples. - Add run-specific learnings only to
atvm-automation-runs.mdwhen the run produced new information.
Monitoring Policy
- Monitor only when the operator explicitly asks to monitor.
- If monitoring was not requested, run commands and report execution success/failure and any errors.
- If monitoring was requested, do not terminate processes automatically; only terminate if the operator explicitly instructs termination.
Status Reporting Format
When the operator asks for the status of an ATVM automation run, 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-report expectations:
- Use the same display layout for every ATVM automation status response regardless of test type (
e2e,systemOS,reboot,migrateops, and others). - Treat a status request as a request for live status by default.
- Use the live automation VM state when available.
- If no automation is currently running, fall back to the most recent historical run artifacts and logs.
- Derive the heading/title from the run
build_namewhen available. - Format every machine entry as
machine-name - STATUS. - Put each machine on its own line; never combine multiple machines into one paragraph or comma-separated line.
- Use a separate
Notessection for failure reasons, anomalies, or operator-relevant context rather than cramming those details into the completed-machine list. - For categorized runs, reconstruct the whole run across all category batches; do not treat the current live category batch as the full run scope.
- For categorized runs with no active automation, reconstruct the status from the full historical run across all category batches, not only the most recent category batch.
- Always report the status of the entire requested run, even when the runner split execution into multiple category batches or cloud sub-runs.
- Derive completed-machine status from completed spec results already written during the same run.
- Parse all same-run
test-result-*.xmlfiles, not only machine-namedtest-result-atvm*.xmlfiles. - When XML filenames are hash-named, extract the machine name from XML contents such as
testsuite file=,testsuite name=, ortestcase name=. - Ignore
check-xml-files.tsXML outputs when counting machine completion because they are bookkeeping steps, not machine runs. - When multiple same-run XML files exist for one machine, use the most recently written XML for that machine.
- Include the run start time in every status response when it can be derived from the run log.
- If the run is complete, include the end time and total run time.
- If the run is still active, include the elapsed run time so far.
- Include quickest completed test runtime, longest completed test runtime, and average completed test runtime under timing details when they can be derived from the run log.
- Show blacklisted machines under skipped machines even if they are part of the broader machine family requested by the operator.
- For skipped machines, include the reason category:
BLACKLISTED: CMC INSTALL - CAN'T COMPILEBLACKLISTED: SUPPORT REQUEST - WAITINGBLACKLISTED: RE-CREATE NEEDED
- If a machine is currently in progress, show it under remaining machines as
RUNNING. - If a machine has not started yet, show it under remaining machines as
NOT STARTED. - If no failures are present in completed spec results, report those completed machines as
PASS. - If a completed spec result shows a failure, report that machine as
FAILin the completed list and append a longer same-line failure description when the extra detail is useful to the operator. - Use
Notesfor extra context beyond the machine-specific same-line failure description. - Base the completion estimate on the full remaining machine count and recent per-machine runtime visible in the run log.
- Make the estimate explicitly refer to completion of the entire remaining run, not only the current machine/spec.