Skip to content

TPT-4275: IP Reservation (IPv4) Project#987

Open
lgarber-akamai wants to merge 3 commits into
mainfrom
proj/reserved-ips
Open

TPT-4275: IP Reservation (IPv4) Project#987
lgarber-akamai wants to merge 3 commits into
mainfrom
proj/reserved-ips

Conversation

@lgarber-akamai

Copy link
Copy Markdown
Contributor

📝 Description

This pull request merges the changes from the Reserved IPv4 project into the main branch for release.

Copilot AI review requested due to automatic review settings June 8, 2026 17:32
@lgarber-akamai lgarber-akamai requested review from a team as code owners June 8, 2026 17:32
@lgarber-akamai lgarber-akamai added the project for new projects in the changelog. label Jun 8, 2026
@lgarber-akamai lgarber-akamai requested review from ezilber-akamai and mawilk90 and removed request for a team June 8, 2026 17:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR merges the “Reserved IPv4” work into linodego, extending the client/models to support reserving IPv4 addresses (including tagging and assignment metadata) and wiring that through tags, instances, and related tests/fixtures. It also includes several adjacent API model updates (Monitor alerts/channels, Firewall entities/devices, Object Storage quotas), dependency bumps, and CI/workflow adjustments.

Changes:

  • Add/extend Reserved IPv4 support (reserve/list/update/delete/types, tagging, and richer IP response fields).
  • Expand Monitor alert definitions/channels support (scope/regions/entities listing; channel schema updates).
  • Update Firewall and Object Storage quota models/APIs, plus extensive unit/integration test + fixture updates and workflow/tooling bumps.

Reviewed changes

Copilot reviewed 50 out of 117 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
volumes.go Minor struct field formatting/comment adjustment.
tags.go Add reserved_ipv4_addresses tagging + decode tagged reserved IP objects.
network_reserved_ips.go Add reserved IP tagging/update + reserved IP types listing.
instance_ips.go Add tags + assigned entity metadata to IP response model.
object_storage_quota.go Add quota fields + new global quota APIs/types.
monitor_alert_definitions.go Add scope/regions/entities and entity listing endpoint.
monitor_alert_channels.go Update alert channel schema (content removal, details usage).
lke_node_pools.go Add disk encryption create option + include in GetCreateOptions.
interfaces.go Change interface create options firewall ID type.
instances.go Reformat instance structs + ensure create supports disk encryption/placement group fields ordering.
instance_disks.go Reformat disk struct; keep disk encryption field.
firewalls.go Add firewall entities + rename device create field to linode interfaces.
firewall_devices.go Add parent entity support to firewall device entity.
retries.go Add linter suppression comment for nginx retry content-type constant.
retries_http.go Add linter suppression comment for nginx retry content-type constant.
request_helpers.go Update pointer-kind reflection check.
client.go Add header redaction for debug logging and resty log sanitization (req+resp).
client_test.go Add tests for header redaction and log sanitization.
CODEOWNERS Add additional code owners team.
.github/workflows/release-notify-slack.yml Bump Slack action major version.
.github/workflows/nightly_smoke_tests.yml Bump Slack action major version.
.github/workflows/integration_tests_pr.yml Bump github-script action major version.
.github/workflows/clean-release-notes.yml Add workflow to strip ticket prefixes from release notes.
.github/workflows/ci.yml Add PR-title validation + bump Slack action major version.
go.mod Bump x/* and ini dependencies.
go.sum Dependency checksum updates.
k8s/go.mod Dependency bumps for k8s module.
k8s/go.sum Dependency checksum updates for k8s module.
test/go.mod Dependency bumps for test module.
test/go.sum Dependency checksum updates for test module.
test/unit/tag_test.go Add unit coverage for reserved IPv4 tagging behavior.
test/unit/nodebalancer_test.go Add request-body unit test for NodeBalancer IPv4 field.
test/unit/network_reserved_ips_test.go Extend reserved IP unit tests for tags/assigned entity/types/update.
test/unit/network_ips_test.go Add unit tests for reserved+rdns request body and reserved filtering.
test/unit/monitor_alert_definitions_test.go Update fixtures/assertions for expanded alert definition schema + entities listing.
test/unit/monitor_alert_channels_test.go Add unit test for listing alert channels (new file).
test/unit/interface_test.go Update unit test to use single-pointer firewall ID.
test/unit/instance_test.go Add request-body unit test for instance IPv4 reserved IP list.
test/unit/instance_ip_test.go Extend reserved IP assign test + add request-body validation.
test/unit/firewalls_test.go Update firewall create test for linode interfaces + entities + timestamps.
test/unit/firewall_devices_test.go Add parent entity assertions and new test coverage for parent entity response.
test/unit/client_test.go Add httpmock import for new tests.
test/unit/fixtures/tagged_objects_reserved_ip_list.json Add fixture for tagged reserved IP object.
test/unit/fixtures/network_reserved_ips.json Extend reserved IP fixture with reserved/tags fields.
test/unit/fixtures/network_reserved_ips_list.json Extend reserved IP list fixture with reserved/tags fields.
test/unit/fixtures/network_reserved_ips_get.json Extend reserved IP get fixture with reserved/tags/assigned entity.
test/unit/fixtures/network_reserved_ip_update.json Add reserved IP update fixture.
test/unit/fixtures/network_reserved_ip_types_list.json Add reserved IP types fixture.
test/unit/fixtures/instance_ip_reserved.json Extend reserved instance IP fixture with reserved/assigned entity.
test/unit/fixtures/firewall_create.json Extend firewall fixture with entities.
test/integration/tags_test.go Add integration coverage for tagging reserved IPs.
test/integration/object_storage_quota_test.go Relax assertions and validate new quota fields.
test/integration/object_storage_global_quota_test.go Add integration coverage for global object storage quotas (new file).
test/integration/network_reserved_ips_test.go Add/expand integration coverage for reserved IP tags/types/status and region selection.
test/integration/network_ips_test.go Add assertions around tags presence/absence based on reserved status.
test/integration/monitor_alert_definitions_test.go Add assertions for channel email details + entities listing test.
test/integration/lke_node_pools_test.go Update node pool create opts for disk encryption + expectation fix.
test/integration/instance_reserved_ips_test.go Expand reserved IP instance tests; parameterize region; update image.
test/integration/instance_interfaces_test.go Update firewall ID pointer usage for interfaces.
test/integration/fixtures/TestReservedIPTypes_List.yaml Add fixture for reserved IP types list.
test/integration/fixtures/TestObjectStorageQuotas_Get.yaml Update fixture to include new quota fields.
test/integration/fixtures/TestObjectStorageGlobalQuotaUsage_Get.yaml Add fixture for global quota usage flow.
test/integration/fixtures/TestObjectStorageGlobalQuotas_List.yaml Add fixture for listing global quotas.
test/integration/fixtures/TestObjectStorageGlobalQuotas_Get.yaml Add fixture for getting a global quota.
test/integration/fixtures/TestMonitorAlertDefinitions_List.yaml Update monitor alert definitions list fixture to new schema.
test/integration/fixtures/TestMonitorAlertDefinitionEntities_List.yaml Add fixture for alert definition entities listing.
test/integration/fixtures/TestMonitorAlertDefinition.yaml Update monitor alert definition fixture to new schema.
test/integration/fixtures/TestMonitorAlertDefinition_CreateWithIdempotency.yaml Update idempotency fixture to new channel schema and entities block.
test/integration/fixtures/TestMonitorAlertChannels_List.yaml Update monitor alert channels fixture to new schema.
test/integration/fixtures/TestLKENodePool_GetMissing.yaml Update fixture headers/values for node pool missing case.
test/integration/fixtures/TestLKENodePool_GetFound_k8s.yaml Update kube fixture content (host/arch/metadata) for node pool test.
test/integration/TestReservedIPAddresses_GetInstanceIPReservationStatus.yaml Remove old top-level fixture file (moved/renamed under fixtures).
test/integration/fixtures/TestListMonitorAlertChannels.yaml Remove obsolete fixture file.
test/integration/firewalls_test.go Add assertions for firewall entities being empty in create/update responses.
test/integration/firewalls_devices_test.go Add assertions for firewall/entities and parent entity behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread interfaces.go Outdated
Comment thread firewalls.go
Comment thread lke_node_pools.go
Comment thread test/integration/tags_test.go
Comment thread monitor_alert_channels.go
@lgarber-akamai lgarber-akamai changed the title TPT-4275: IP Reservation (IPv4) TPT-4275: IP Reservation (IPv4) Project Jun 9, 2026
mgwoj and others added 2 commits June 9, 2026 15:43
…IPv4 (#945)

* TPT-4277 Implement support for Reserved IP for IPv4

* Refactor existing tests for ReservedIPs

- replace hardcoded regions with getRegionsWithCaps
- skip tests that will fail on DevCloud

* Update fixtures for existing ReservedIPs tests

* Add assertions for ReservedIPs in existing tests

* Add assertions for ReservedIP Tags

* Add test for Tag with ReservedIP

* Linter & fixtures fixes

* Extend assertions in TestTag_CreateTagWithReservedIP

* Regenerate fixtures after merge with proj/reserved-ips

* Remove redundant unit tests added accidentally during rebase

---------

Co-authored-by: Michal Wojcik <miwojci@akamai.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 24 out of 48 changed files in this pull request and generated 3 comments.

Comment thread network_reserved_ips.go
Comment on lines 18 to +21
type ReserveIPOptions struct {
Region string `json:"region"`
Region string `json:"region"`
Tags []string `json:"tags,omitempty"`
}
Comment thread network_reserved_ips.go
Comment on lines +7 to +11
// ReservedIPAssignedEntity represents the entity that a reserved IP is assigned to.
// NOTE: Reserved IP feature may not currently be available to all users.
type ReservedIPAssignedEntity struct {
ID int `json:"id"`
Label string `json:"label"`
Comment on lines +108 to +110
if len(tagObjects) == 0 || tagObjects[0].Type != "reserved_ipv4_address" || !tagObjects[0].Data.(InstanceIP).Reserved || tagObjects[0].Data.(InstanceIP).Tags[0] != tag.Label {
t.Fatalf("Should have found Tag in tagged objects list, got %v", tagObjects)
}
Comment thread network_reserved_ips.go
type ReserveIPOptions struct {
Region string `json:"region"`
Region string `json:"region"`
Tags []string `json:"tags,omitempty"`

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to replace all omitempty with omitzero since linodego v2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

project for new projects in the changelog.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants