Some checks failed
Run Check Script / check (pull_request) Failing after 10s
41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
# Developer Guide
|
|
|
|
This section covers how to extend Harmony by building your own `Score`, `Topology`, and `Capability` implementations.
|
|
|
|
## Writing a Score
|
|
|
|
A `Score` is a declarative description of desired state. To create your own:
|
|
|
|
1. Define a struct that represents your desired state
|
|
2. Implement the `Score<T>` trait, where `T` is your target `Topology`
|
|
3. Implement the `Interpret<T>` trait to define how the Score translates to infrastructure actions
|
|
|
|
See the [Writing a Score](./writing-a-score.md) guide for a step-by-step walkthrough.
|
|
|
|
## Writing a Topology
|
|
|
|
A `Topology` models your infrastructure environment. To create your own:
|
|
|
|
1. Define a struct that holds your infrastructure configuration
|
|
2. Implement the `Topology` trait
|
|
3. Implement the `Capability` traits your Score needs
|
|
|
|
See the [Writing a Topology](./writing-a-topology.md) guide for details.
|
|
|
|
## Adding Capabilities
|
|
|
|
`Capabilities` are the specific APIs or features a `Topology` exposes. They are the bridge between Scores and the actual infrastructure.
|
|
|
|
See the [Adding Capabilities](./adding-capabilities.md) guide for details on implementing and exposing Capabilities.
|
|
|
|
## Core Traits Reference
|
|
|
|
| Trait | Purpose |
|
|
|-------|---------|
|
|
| `Score<T>` | Declares desired state ("what") |
|
|
| `Topology` | Represents infrastructure ("where") |
|
|
| `Interpret<T>` | Execution logic ("how") |
|
|
| `Capability` | A feature exposed by a Topology |
|
|
|
|
See [Core Concepts](../concepts.md) for the conceptual foundation.
|