/create-dt — Deployment Topology Generator
Orchestrator skill that scaffolds new Deployment Topologies (DTs) in the
architecture repo.
Analyzes both existing DTs and VAs as candidates, then dispatches a
create-dt agent for generation.
Input Routing
Determine the input source from the user's argument:
| Pattern |
Source |
Action |
OSPRH-\d+, OSPA-\d+, or [A-Z]+-\d+ Jira key |
Jira ticket |
Fetch ticket via Atlassian MCP. Extract services needed, hardware specs, storage backend, network topology, node count and roles from the description and acceptance criteria. If MCP is unavailable, ask the user to paste the ticket description. |
Path to a .md, .yaml, .yml, or .txt file |
Spec file |
Read the file. Extract requirements from its content. |
--continue (with or without other args) |
Resume |
Skip input routing and resume from the most recent matching plan file. |
| Anything else |
Free-text |
Treat the entire argument as a requirements description. |
| No argument |
Interactive |
Ask the user what topology they need. |
Resume Detection
Check for existing DT plans:
~/.openstack-k8s-agent-plans/architecture/YYYY-MM-DD-<ticket-or-slug>-dt-plan.md
If a matching plan exists:
- Incomplete → offer to resume from the first missing section
- Strategy not yet approved → re-present strategies for approval
- Complete but not generated → offer to generate files
- Fully generated → note completion, ask if they want to start fresh
Prerequisites
| Dependency |
Required |
Purpose |
| Architecture repo clone |
Yes |
Must be run from or have access to a local clone of openstack-k8s-operators/architecture |
kustomize or oc |
Yes |
Build and validate kustomize overlays |
yamllint |
Yes |
YAML validation |
yamale |
Yes |
Automation schema validation |
| Atlassian MCP |
Optional |
Fetch Jira ticket details for requirements |
gh CLI |
Optional |
Create PR after generation |
Workflow
Determine input — route per table above
Locate architecture repo — find the local clone (check cwd, common paths, ask user)
Pre-flight check — verify each required tool individually:
kustomize or oc (at least one)
yamllint (pip install yamllint)
yamale — YAML schema validator (pip install yamale), used by the architecture repo to validate automation vars against .ci/automation-schema.yaml
If any tool is missing, list the missing ones with install instructions and stop.
Check for existing plan — resume if found
Dispatch agent — single dispatch; the agent handles the full flow
(analysis, strategy proposal, HITL gate, generation, validation) internally:
Agent(
subagent_type="openstack-k8s-agent-tools:create-dt:create-dt",
prompt="<context summary with requirements, architecture repo path, and any existing plan>"
)
- Report results — relay the agent's output: generated files, validation status, environment-specific action items
Architecture Repo Location
The skill must locate a local clone of openstack-k8s-operators/architecture. Search order:
- Current working directory (if it contains
lib/ and dt/ directories)
- Parent directories (up to 3 levels)
~/projects/architecture, ~/go/src/github.com/openstack-k8s-operators/architecture
- Ask the user for the path
Output
The agent writes a plan file to:
~/.openstack-k8s-agent-plans/architecture/YYYY-MM-DD-<ticket-or-slug>-dt-plan.md
Generated DT files go directly into the architecture repo working tree.
Quick Reference — Generated DT Components
Every new DT requires these components (the agent also reads existing VAs
with the same structure during analysis):
| Component |
Path |
Description |
| Kustomization |
dt/<name>/kustomization.yaml |
Kustomize Component assembling services from lib/ |
| Network values |
dt/<name>/values.yaml |
Subnets, VLANs, IPs, MetalLB config |
| Service values |
dt/<name>/service-values.yaml |
Service-specific config (replicas, features) |
| Control plane |
dt/<name>/control-plane/ |
Control plane overlays |
| Dataplane |
dt/<name>/edpm*/ |
EDPM nodeset and deployment definitions |
| Networking |
dt/<name>/networking/ |
MetalLB, NAD, netconfig (if needed) |
| Automation vars |
automation/vars/<name>.yaml |
Staged deployment pipeline |
| Examples |
examples/dt/<name>/ |
User-facing customizable layer |
| Documentation |
dt/<name>/README.md |
Topology description and usage |
Validation
The agent runs all required validation checks (yamllint, test-kustomizations,
yamale, schema-paths, zuul-jobs) as part of its Step 5. See AGENT.md for the
full validation sequence.
1---2name: create-dt3description: Scaffold RHOSO Deployment Topologies/Validated Architectures for the architecture repo with existing DT/VA analysis, kustomize generation, and staged automation4---56# /create-dt — Deployment Topology Generator78Orchestrator skill that scaffolds new Deployment Topologies (DTs) in the9[architecture repo](https://github.com/openstack-k8s-operators/architecture).10Analyzes both existing DTs and VAs as candidates, then dispatches a11`create-dt` agent for generation.1213## Input Routing1415Determine the input source from the user's argument:1617| Pattern | Source | Action |18|---------|--------|--------|19| `OSPRH-\d+`, `OSPA-\d+`, or `[A-Z]+-\d+` Jira key | Jira ticket | Fetch ticket via Atlassian MCP. Extract services needed, hardware specs, storage backend, network topology, node count and roles from the description and acceptance criteria. If MCP is unavailable, ask the user to paste the ticket description. |20| Path to a `.md`, `.yaml`, `.yml`, or `.txt` file | Spec file | Read the file. Extract requirements from its content. |21| `--continue` (with or without other args) | Resume | Skip input routing and resume from the most recent matching plan file. |22| Anything else | Free-text | Treat the entire argument as a requirements description. |23| No argument | Interactive | Ask the user what topology they need. |2425## Resume Detection2627Check for existing DT plans:2829```30~/.openstack-k8s-agent-plans/architecture/YYYY-MM-DD-<ticket-or-slug>-dt-plan.md31```3233If a matching plan exists:34- **Incomplete** → offer to resume from the first missing section35- **Strategy not yet approved** → re-present strategies for approval36- **Complete but not generated** → offer to generate files37- **Fully generated** → note completion, ask if they want to start fresh3839## Prerequisites4041| Dependency | Required | Purpose |42|------------|----------|---------|43| Architecture repo clone | **Yes** | Must be run from or have access to a local clone of `openstack-k8s-operators/architecture` |44| `kustomize` or `oc` | **Yes** | Build and validate kustomize overlays |45| `yamllint` | **Yes** | YAML validation |46| `yamale` | **Yes** | Automation schema validation |47| Atlassian MCP | Optional | Fetch Jira ticket details for requirements |48| `gh` CLI | Optional | Create PR after generation |4950## Workflow51521. **Determine input** — route per table above532. **Locate architecture repo** — find the local clone (check cwd, common paths, ask user)543. **Pre-flight check** — verify each required tool individually:55 - `kustomize` or `oc` (at least one)56 - `yamllint` (`pip install yamllint`)57 - `yamale` — YAML schema validator (`pip install yamale`), used by the architecture repo to validate automation vars against `.ci/automation-schema.yaml`5859 If any tool is missing, list the missing ones with install instructions and stop.604. **Check for existing plan** — resume if found615. **Dispatch agent** — single dispatch; the agent handles the full flow62 (analysis, strategy proposal, HITL gate, generation, validation) internally:6364```65Agent(66 subagent_type="openstack-k8s-agent-tools:create-dt:create-dt",67 prompt="<context summary with requirements, architecture repo path, and any existing plan>"68)69```70716. **Report results** — relay the agent's output: generated files, validation status, environment-specific action items7273## Architecture Repo Location7475The skill must locate a local clone of `openstack-k8s-operators/architecture`. Search order:76771. Current working directory (if it contains `lib/` and `dt/` directories)782. Parent directories (up to 3 levels)793. `~/projects/architecture`, `~/go/src/github.com/openstack-k8s-operators/architecture`804. Ask the user for the path8182## Output8384The agent writes a plan file to:85```86~/.openstack-k8s-agent-plans/architecture/YYYY-MM-DD-<ticket-or-slug>-dt-plan.md87```8889Generated DT files go directly into the architecture repo working tree.9091## Quick Reference — Generated DT Components9293Every new DT requires these components (the agent also reads existing VAs94with the same structure during analysis):9596| Component | Path | Description |97|-----------|------|-------------|98| Kustomization | `dt/<name>/kustomization.yaml` | Kustomize Component assembling services from `lib/` |99| Network values | `dt/<name>/values.yaml` | Subnets, VLANs, IPs, MetalLB config |100| Service values | `dt/<name>/service-values.yaml` | Service-specific config (replicas, features) |101| Control plane | `dt/<name>/control-plane/` | Control plane overlays |102| Dataplane | `dt/<name>/edpm*/` | EDPM nodeset and deployment definitions |103| Networking | `dt/<name>/networking/` | MetalLB, NAD, netconfig (if needed) |104| Automation vars | `automation/vars/<name>.yaml` | Staged deployment pipeline |105| Examples | `examples/dt/<name>/` | User-facing customizable layer |106| Documentation | `dt/<name>/README.md` | Topology description and usage |107108## Validation109110The agent runs all required validation checks (yamllint, test-kustomizations,111yamale, schema-paths, zuul-jobs) as part of its Step 5. See AGENT.md for the112full validation sequence.