一键导入
two-node-verify-rhel-bugfix
Verify a RHEL resource-agents bug fix on a TNF cluster — fetch Jira context, check cluster, patch nodes, run test, generate JIRA report
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Verify a RHEL resource-agents bug fix on a TNF cluster — fetch Jira context, check cluster, patch nodes, run test, generate JIRA report
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Surface your daily task list — QA-ready tickets, sprint backlog, carry-over items, open PRs, RHEL verification queue, and quarterly reminders. Use at the start of your day to see what needs attention.
Show detailed info about a specific TODO task — its tracked links, notes, and live Jira/PR status. Use when the user asks about a task, wants context to resume work on it, or asks what's needed to finish a ticket. Not for listing all tasks (read the TODO file directly or use edge-ic:sprint-status for sprint-wide views)
End-of-week automation - review active work and prepare next week's TODO
Run the full Prow CI release testing workflow — create PR, trigger jobs, check status, merge PR, download and upload artifacts
Generate interactive PCP performance dashboard from a Prow job URL
Download Prow job artifacts, identify root cause of failure, and produce a structured error report
| name | two-node:verify-rhel-bugfix |
| description | Verify a RHEL resource-agents bug fix on a TNF cluster — fetch Jira context, check cluster, patch nodes, run test, generate JIRA report |
| argument-hint | <RHEL-XXXXX or URL> |
| allowed-tools | Agent, AskUserQuestion, Write, Read, Glob, Grep, Bash, mcp__mcp-atlassian__jira_get_issue, mcp__mcp-atlassian__jira_search, mcp__mcp-atlassian__jira_add_comment |
| user-invocable | true |
/two-node:verify-rhel-bugfix RHEL-157145
/two-node:verify-rhel-bugfix https://issues.redhat.com/browse/RHEL-157145
Verify a RHEL resource-agents bug fix on a Two-Node with Fencing (TNF) cluster. Fetches the full bug context from Jira (title, z-stream, upstream PR, linked OCPEDGE tracking ticket, test instructions), checks cluster state, patches nodes with the fixed RPM, runs verification tests, and generates a JIRA comment report.
$ARGUMENTS (required): A JIRA issue key or URL
RHEL-157145): Use as JIRA ID directlyhttps://issues.redhat.com/browse/RHEL-157145): Extract JIRA ID from the URLThis skill requires the mcp-atlassian MCP server for Jira access (configured
via the plugin's .mcp.json). If the mcp__mcp-atlassian__jira_get_issue tool
is not available, stop and show setup instructions (see create-rhel-stories
skill for reference).
Additional requirements:
~/Downloads/)Determine the hypervisor IP:
cd two-node-toolbox/deploy && make info 2>/dev/null | grep "Host:" | awk '{print $2}'
If two-node-toolbox/ is not at the repo root, ask the user for the
hypervisor IP.
Store as HYPERVISOR for all subsequent steps.
All scripts are run relative to the plugin directory:
SCRIPTS_DIR=${PLUGIN_DIR}/scripts
Available scripts:
verify-cluster.sh — Cluster health check (OCP, nodes, pcs, etcd, RPM versions)patch-nodes.sh <path-to-rpm> [grep-pattern] — RPM patching with persistent override + reboot + verificationcollect-logs.sh [minutes-ago] [output-dir] — Collect pacemaker/etcd logs from both nodesAll scripts auto-detect the hypervisor IP from two-node-toolbox/deploy
if present, or fall back to the HYPERVISOR environment variable.
Fetch the RHEL ticket and all connected tickets to build the full context automatically. Only ask the user for what can't be derived from Jira.
mcp__mcp-atlassian__jira_get_issue(
issue_key="<RHEL-XXXXX>",
fields="summary,status,description,fixVersions,issuelinks,components,priority,customfield_10879,customfield_10638",
comment_limit=5
)
Extract:
summaryfixVersions (e.g., rhel-9.8.z)Fixed in Build field or fixVersions contextdescription and comments for "how to test",
"test steps", "verification steps", or similar patternsFrom the RHEL ticket's issuelinks, identify and fetch:
Parent/upstream bug — look for links of type "is cloned by" or "clones" pointing to OCPBUGS or another RHEL ticket. Fetch it:
mcp__mcp-atlassian__jira_get_issue(
issue_key="<OCPBUGS-XXXXX>",
fields="summary,description,issuelinks,fixVersions,components",
comment_limit=5
)
From the upstream bug, extract:
github.com/ClusterLabs/resource-agents/pull/XXXX or
ClusterLabs/resource-agents#XXXX)OCPEDGE tracking ticket — look for links of type "Relates" or "is related to" pointing to OCPEDGE tickets. If found, fetch it:
mcp__mcp-atlassian__jira_get_issue(
issue_key="<OCPEDGE-XXXXX>",
fields="summary,status,customfield_10020",
comment_limit=0
)
From the OCPEDGE ticket, extract:
customfield_10020 (sprint field) or the ticket summarySibling clones — if the RHEL ticket has clone links to other RHEL tickets (same fix, different z-streams), note them for context. These are other z-stream verifications of the same fix.
Present all gathered information to the user in a summary:
## Bug Context (from Jira)
- **RHEL ticket:** RHEL-XXXXX — <title>
- **Status:** <status>
- **Target z-stream:** <fixVersion>
- **Parent/upstream bug:** OCPBUGS-XXXXX (or "none found")
- **Upstream PR:** ClusterLabs/resource-agents#XXXX (or "none found")
- **Fix commit:** <hash> (or "not found — will verify from RPM")
- **Author:** <author> (or "unknown")
- **OCPEDGE tracking:** OCPEDGE-XXXX / Sprint XXX (or "none found")
- **Sibling z-stream tickets:** RHEL-AAAA (9.6.z), RHEL-BBBB (9.7.z)
- **Test instructions from Jira:** <extracted instructions or "none found">
Only ask for what wasn't found in Jira:
RPM to test — ask: "What's the RPM filename? (e.g.,
resource-agents-4.10.0-108.el9_8.2.x86_64.rpm)"
Then check if the RPM exists in ~/Downloads/ automatically:
ls ~/Downloads/*resource-agents* 2>/dev/null
If multiple matches, ask the user to pick one.
Target z-stream — only if not found in fixVersions. Use
AskUserQuestion:
"Which RHEL z-stream is this fix targeting?" Options:
- rhel-9.6.z (OCP 4.19.x / 4.22.x-ec, RHCOS 9.6)
- rhel-9.7.z (OCP 4.20.x, RHCOS 9.7)
- rhel-9.8.z (OCP 4.21.x / 4.22.x-ec, RHCOS 9.8)
- rhel-10.1.z (OCP 4.22.x + osImageStream rebase to RHEL 10)
Upstream PR — only if not found in linked tickets. Ask: "Link to the upstream PR? (e.g., ClusterLabs/resource-agents#2136, or 'none')"
Test instructions — only if nothing found in Jira. Ask: "Are there specific test instructions from the developer? (paste them, a URL, or 'no' to figure it out from the bug description)"
Verification type — always ask, since this is a judgment call. Use AskUserQuestion:
"What type of verification is needed?" Options:
- Functional test (the bug can be reproduced or fix behavior observed)
- Code-only verification (bug can't be reproduced locally, verify fix code is present in the RPM)
Run the cluster health check script:
export HYPERVISOR="<ip>" && bash "${PLUGIN_DIR}/scripts/verify-cluster.sh"
From the output, compare the running cluster's RHEL version with the target z-stream. Present the status to the user:
If a cluster change is needed, present options via AskUserQuestion:
make redeploy-cluster)make clean && make fencing-ipi)Do NOT deploy or redeploy the cluster yourself. Only inform the user what's needed. Cluster lifecycle is the user's responsibility.
Only proceed if the cluster is ready and the RPM is available locally.
Run the patching script:
export HYPERVISOR="<ip>" && bash "${PLUGIN_DIR}/scripts/patch-nodes.sh" ~/Downloads/<rpm-file> [grep-pattern]
The script will:
rpm-ostree override replace -C on both nodesAfter the script completes, verify the fix is present by examining the
relevant source file on the nodes. For resource-agents bugs, this is
typically /usr/lib/ocf/resource.d/heartbeat/podman-etcd.
If the local resource-agents source repo is available, check it for fix details before asking the user.
This step varies per bug. Based on the verification type:
/usr/lib/ocf/resource.d/heartbeat/podman-etcd)sed -n to show the relevant code sectionsExecute the test steps provided by the developer (from Jira) or designed based on the bug description. Common patterns:
| Pattern | Key Commands |
|---|---|
| Shutdown + restart | sudo virsh shutdown/start ostest_master_X |
| STONITH fencing | pcs stonith fence <node> |
| Standby/unstandby | pcs node standby/unstandby <node> |
| Resource disable/enable | pcs resource disable/enable etcd-clone |
| Attribute manipulation | crm_attribute --update/--delete --name <attr> |
| Log counting | grep -c "<pattern>" /var/log/pacemaker/pacemaker.log |
All commands must be run via SSH through the hypervisor:
ssh ec2-user@${HYPERVISOR} "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null core@192.168.111.20 '<command>'"
After each test:
/var/log/pacemaker/pacemaker.logpcs status, etcd member list, etcd endpoint health)Always ask the user before destructive operations like shutting down VMs or fencing nodes.
Use the log collection script when you need a full log dump:
export HYPERVISOR="<ip>" && bash "${PLUGIN_DIR}/scripts/collect-logs.sh" [minutes-ago]
Default is 30 minutes. Logs are saved to /tmp/bugfix-verify-logs/<timestamp>/.
Compile all results into a JIRA comment using Markdown format. Use this structure:
### Verification of RHEL-XXXXX - Bug Title
#### Environment
- **OCP Version:** <version>
- **Topology:** Two-Node with Fencing (TNF)
- **Platform:** Baremetal IPI (libvirt dev-scripts)
- **RHCOS:** <version>
- **resource-agents RPM:** <NVR>
- **Nodes:** master-0 (192.168.111.20), master-1 (192.168.111.21)
#### Fix Details
- **Upstream PR:** [ClusterLabs/resource-agents#<PR>](<URL>)
- **Commit:** `<hash>` - "<message>"
- **Author:** <author>
- **RHEL tracker:** <parent JIRA ID>
#### Code Verification
<RPM version confirmation + grep/sed output showing fix code>
#### Functional Test
<Test steps and command output — only if functional test was performed>
#### Summary
| Check | Result |
|-------|--------|
| Fix present in podman-etcd script | **PASS** |
| <check 2> | **PASS** |
#### Conclusion
<One paragraph verdict>
Save the report to /tmp/verify-rhel-bugfix-RHEL-XXXXX/report.txt
Present the report to the user for review.
Ask if they want to post the comment to JIRA automatically:
"Post this report as a comment on RHEL-XXXXX? (yes/no)"
If yes:
mcp__mcp-atlassian__jira_add_comment(
issue_key="<RHEL-XXXXX>",
comment="<report content>"
)
If the RHEL ticket has sibling clones (same fix, different z-streams), ask if the user wants to post the same report to those tickets too.
rpm-ostree override replace -C for patching, never
rpm-ostree usroverlay (changes lost on reboot)/two-node:verify-rhel-bugfix RHEL-157145
Fetches RHEL-157145 from Jira, discovers linked OCPBUGS upstream bug and OCPEDGE tracking ticket, checks cluster, patches nodes, runs verification, and generates report.
/two-node:verify-rhel-bugfix https://issues.redhat.com/browse/RHEL-150700
Extracts RHEL-150700 from the URL and runs the same workflow.
/two-node:bug-reproducer instead.