Skip to content

Commit d112b8a

Browse files
authored
Merge pull request #19 from platform9/feat/networking-qos
feat(networking): Neutron QoS family (policy + bandwidth-limit / DSCP / minimum-bandwidth rules)
2 parents 4af1b6d + ff549f6 commit d112b8a

19 files changed

Lines changed: 1265 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ All notable changes to this project are documented here. The format is based on
6767
`payload`) and `pcd_keymanager_container` (grouped secrets) resources plus a
6868
`pcd_keymanager_secret` data source (optionally fetches the payload). Barbican identifies
6969
objects by URL refs; the resources expose the full ref and use the bare UUID as the ID.
70+
- Network QoS (Neutron `qos` extension) — Phase 3: `pcd_networking_qos_policy` and its three
71+
rule types — `pcd_networking_qos_bandwidth_limit_rule`, `pcd_networking_qos_dscp_marking_rule`,
72+
`pcd_networking_qos_minimum_bandwidth_rule` — plus a `pcd_networking_qos_policy` data source.
73+
Rules are nested under a policy and imported by a composite `<qos_policy_id>/<rule_id>` ID.
7074

7175
- Registry documentation generation wired via `tfplugindocs` (`make generate`) — renders
7276
`docs/` for every resource and data source plus the provider index from schema

DECISIONS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ yet passable on this lab (reason noted). Generated registry docs are not committ
3939
| Load balancing (Octavia) | `pcd_lb_loadbalancer`, `_listener`, `_pool`, `_member`, `_monitor`, `_l7policy`, `_l7rule` + `_loadbalancer` DS | **PENDING** — Phase 3, code-complete; per-LB wait-for-`ACTIVE` lifecycle, root-LB resolution for every child, echo-only churny fields. Full-tree acc test + examples written. Octavia is live on the lab (Step 0), but LB provisioning needs a working amphora/provider driver; not yet run live (credentials unavailable this session). |
4040
| DNS (Designate) | `pcd_dns_zone`, `pcd_dns_recordset` + `pcd_dns_zone` DS | **PENDING** — Phase 3, code-complete; async create/update/delete → wait-for-`ACTIVE`/404. Acc test (zone + recordset + import) + examples written. Designate is live on the lab (Step 0) and DNS needs no compute/storage backend, so this should pass live — not yet run this session (credentials unavailable). |
4141
| Key management (Barbican) | `pcd_keymanager_secret`, `pcd_keymanager_container` + `pcd_keymanager_secret` DS | **PENDING** — Phase 3, code-complete; write-only echo-only `payload`, URL-ref→UUID id handling, wait-for-`ACTIVE` only on create-with-payload. Acc test (secret + container + data source + import) + examples written. Barbican is live on the lab (Step 0) and needs no compute/storage backend, so this should pass live — not yet run this session (credentials unavailable). |
42+
| Network QoS (Neutron) | `pcd_networking_qos_policy`, `_qos_bandwidth_limit_rule`, `_qos_dscp_marking_rule`, `_qos_minimum_bandwidth_rule` + `_qos_policy` DS | **PENDING** — Phase 3, code-complete; rules nested under a policy with composite `<policy_id>/<rule_id>` import, tags via the attributes-tags extension (`policies` type), `ForceNew` on `qos_policy_id`. Full-tree acc test (policy + all three rules + data source + import) + examples written. Depends only on the Neutron `qos` extension (no compute/storage backend), so this should pass live — not yet run this session (credentials unavailable). |
4243

4344
Both PENDING items are lab-side configuration gaps (Platform9 / lab-ops), not provider
4445
defects; their acceptance tests flip green on a properly-configured PCD cloud.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
data "pcd_networking_qos_policy" "example" {
2+
name = "tf-example-qos"
3+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
terraform import pcd_networking_qos_bandwidth_limit_rule.example <qos_policy_id>/<rule_id>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
resource "pcd_networking_qos_policy" "example" {
2+
name = "tf-example-qos"
3+
}
4+
5+
resource "pcd_networking_qos_bandwidth_limit_rule" "example" {
6+
qos_policy_id = pcd_networking_qos_policy.example.id
7+
max_kbps = 3000
8+
max_burst_kbps = 300
9+
direction = "egress"
10+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
terraform import pcd_networking_qos_dscp_marking_rule.example <qos_policy_id>/<rule_id>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
resource "pcd_networking_qos_policy" "example" {
2+
name = "tf-example-qos"
3+
}
4+
5+
resource "pcd_networking_qos_dscp_marking_rule" "example" {
6+
qos_policy_id = pcd_networking_qos_policy.example.id
7+
dscp_mark = 26
8+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
terraform import pcd_networking_qos_minimum_bandwidth_rule.example <qos_policy_id>/<rule_id>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
resource "pcd_networking_qos_policy" "example" {
2+
name = "tf-example-qos"
3+
}
4+
5+
resource "pcd_networking_qos_minimum_bandwidth_rule" "example" {
6+
qos_policy_id = pcd_networking_qos_policy.example.id
7+
min_kbps = 1000
8+
direction = "egress"
9+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
terraform import pcd_networking_qos_policy.example <qos_policy_id>

0 commit comments

Comments
 (0)