Skip to content

feat(cli):migrate cloud network private vrack to API v2 - #213

Merged
amstuta merged 8 commits into
mainfrom
dev/olivierdubo/cloud-network-vrack-v2
Aug 26, 2026
Merged

feat(cli):migrate cloud network private vrack to API v2#213
amstuta merged 8 commits into
mainfrom
dev/olivierdubo/cloud-network-vrack-v2

Conversation

@duboolivier

@duboolivier duboolivier commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Description

Migrates the cloud network private vrack network and subnet commands from the
v1 region-based API to the Cloud API v2 (/v2/publicCloud/project/{id}/network...).

  • network (vRack private): list, get, create, delete, edit (new, PUT)
  • subnet: list, get, create, delete, edit (new, PUT); a subnet inherits
    the parent network's region when --region is omitted
  • Adds --wait (async provisioning) via waitForCloudResourceReady
  • cloud network public and cloud network gateway are left on v1 (no v2 equivalent yet)

Type of change

  • New feature (non-breaking change which adds functionality)
  • Improvement (improvement of existing commands)

Checklist:

  • My code follows the style guidelines of this project
  • I have commented my code
  • I ran go mod tidy
  • I have added tests that prove my fix is effective or that my feature works

Tests

End-to-end manual test against the real v2 API on a real project (IDs anonymized).
Full lifecycle validated, including the new edit commands.

Create private network (async, --wait)

$ ovhcloud cloud network private vrack create GRA11 --name test-vrack-v2 --vlan-id 3567 --wait
Still waiting for resource to be ready (status=CREATING)…
 Network <networkId> created successfully in region GRA11

List

$ ovhcloud cloud network private vrack list
┌─────────────┬───────────────┬────────┬────────┬────────────────┐
│ id          │ name          │ region │ vlanId │ resourceStatus │
├─────────────┼───────────────┼────────┼────────┼────────────────┤
│ <networkId> │ test-vrack-v2 │ GRA11  │ 3567   │ READY          │
│ …           │ (other existing networks omitted)                │
└─────────────┴───────────────┴────────┴────────┴────────────────┘

Get

$ ovhcloud cloud network private vrack get <networkId>
Private network <networkId> — test-vrack-v2
Status: READY
Name:    test-vrack-v2
Region:  GRA11
VLAN ID: 3567

Edit — rename (new command)

$ ovhcloud cloud network private vrack edit <networkId> --name test-vrack-v2-renamed
 Resource updated successfully

$ ovhcloud cloud network private vrack get <networkId>
Name:    test-vrack-v2-renamed
Region:  GRA11
VLAN ID: 3567

Subnet create (async)

$ ovhcloud cloud network private vrack subnet create <networkId> --name sub1 --cidr 192.168.42.0/24 --dhcp-enabled --wait
Subnet <subnetId> created successfully

Subnet list

$ ovhcloud cloud network private vrack subnet list <networkId>
┌────────────┬──────┬────────┬─────────────────┬───────────┬─────────────┬────────────────┐
│ id         │ name │ region │ cidr            │ gatewayIp │ dhcpEnabled │ resourceStatus │
├────────────┼──────┼────────┼─────────────────┼───────────┼─────────────┼────────────────┤
│ <subnetId> │ sub1 │ GRA11  │ 192.168.42.0/24 │           │ true        │ READY          │
└────────────┴──────┴────────┴─────────────────┴───────────┴─────────────┴────────────────┘

Subnet get → edit (new command) → get

$ ovhcloud cloud network private vrack subnet get <networkId> <subnetId>
 Subnet <subnetId> — sub1
CIDR: 192.168.42.0/24   DHCP Enabled: true
Allocation Pools: 192.168.42.1 → 192.168.42.254

$ ovhcloud cloud network private vrack subnet edit <networkId> <subnetId> --name sub1-renamed
 Resource updated successfully

$ ovhcloud cloud network private vrack subnet get <networkId> <subnetId>
 Subnet <subnetId> — sub1-renamed   (CIDR / DHCP unchanged)

Signed-off-by: olivier dubo <olivier.dubo@ovhcloud.com>
@duboolivier
duboolivier requested a review from a team as a code owner July 9, 2026 09:09
…-network-vrack-v2

# Conflicts:
#	internal/assets/api-schemas/cloud_v2.json
…-network-vrack-v2

# Conflicts:
#	internal/assets/api-schemas/cloud_v2.json
Signed-off-by: olivier dubo <olivier.dubo@ovhcloud.com>
Signed-off-by: olivier dubo <olivier.dubo@ovhcloud.com>
Signed-off-by: olivier dubo <olivier.dubo@ovhcloud.com>
Comment thread internal/services/common/common.go Outdated
Signed-off-by: olivier dubo <olivier.dubo@ovhcloud.com>
@amstuta
amstuta merged commit b7b457c into main Aug 26, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants