Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Adding Additional Reserved IP to Existing Linodes #581

Merged
merged 38 commits into from
Sep 25, 2024
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
1b87e78
added reserved field to InstanceIP struct for IP Reservation response
AniJ98 Aug 22, 2024
311ecfc
Reserved IP resource for handling IP reservation API's
AniJ98 Aug 22, 2024
7fb337e
Added integration test covering multiple scenarios of reserving IP ad…
AniJ98 Aug 22, 2024
1c6a8ab
The fixture files for different scenarios of IP Reservation - EndToEn…
AniJ98 Aug 22, 2024
fd426cc
Updated the fixture files with responses after the user has permissio…
AniJ98 Aug 26, 2024
bed7ce0
Changed the error message to relay invalid token for insufficient per…
AniJ98 Aug 26, 2024
4cc42a6
Updated the error message for Insufficient Permission tests to displa…
AniJ98 Aug 26, 2024
11fd3cb
Made changes to Delete, List, Get, Reserve, EndtoEnd fixtures to rec…
AniJ98 Aug 26, 2024
4d24fd1
changed variable name from id to address to keep it consistent with o…
AniJ98 Aug 29, 2024
a265fd4
Made changes to variable names, achanged logf statements to errorf an…
AniJ98 Aug 29, 2024
49d14a6
changed fixture file names to improve consistency, re-recorded fixtur…
AniJ98 Aug 29, 2024
bd106fa
removed debugging fmt statement
AniJ98 Aug 29, 2024
cd7fa48
Made changes to reserve IP addresses before listing them using fitler…
AniJ98 Sep 3, 2024
d52a33f
uncommenting unaffected tests
AniJ98 Sep 3, 2024
cb81bc2
Made changes to error messages, added mandatory checks and re-recorde…
AniJ98 Sep 5, 2024
456d0f2
Added new middleware system (#571)
ezilber-akamai Sep 3, 2024
1867029
build(deps): bump golang.org/x/oauth2 from 0.22.0 to 0.23.0 (#574)
dependabot[bot] Sep 5, 2024
af6a7bd
build(deps): bump golang.org/x/text from 0.17.0 to 0.18.0 (#575)
dependabot[bot] Sep 5, 2024
b25e83d
new: Add support LKE, Volume, NodeBalancer, and network transfer pric…
lgarber-akamai Sep 6, 2024
3bb8dc0
Add test case for ip limit exceed
AniJ98 Sep 16, 2024
ce34304
add cleanup for TestReservedIPAddresses_ExceedLimit
ykim-akamai Sep 16, 2024
8627e4f
added interactions to fixture and changed the ecpected error message
AniJ98 Sep 16, 2024
663e798
Added note indicating feature is currently not available to all users
AniJ98 Sep 16, 2024
5bb2bc1
Merge branch 'main' into main
AniJ98 Sep 17, 2024
138c163
added support for creating a linode with reserved IP address along wi…
AniJ98 Sep 3, 2024
4b44bd8
Added support for adding additional reserved IP to linodes along with…
AniJ98 Sep 5, 2024
35610a0
added ipv4 field in the InstanceCreateOptions struct
AniJ98 Sep 10, 2024
809b407
moved InstanceReservedIPOptions and the method to AddReservedIPToInsa…
AniJ98 Sep 12, 2024
b559ee8
Split the variants tests of createInstanceWithReservedIP into individ…
AniJ98 Sep 12, 2024
402c77a
Re-recorded fixtures after splitting variants test into individual te…
AniJ98 Sep 12, 2024
30eeda7
added teardown funcitnality to handle accidental instance creations
AniJ98 Sep 13, 2024
8909bd6
removed unnecessary defer keyword from test functions
AniJ98 Sep 13, 2024
9b15909
moved tests related to creating a linode with reserved IP and adding …
AniJ98 Sep 17, 2024
97ccd6b
Removing the sensitive token from the previous commit
AniJ98 Sep 17, 2024
be7b869
Merge pull request #5 from AniJ98/ipreservation-existingendpoints-clean
AniJ98 Sep 17, 2024
ff906e3
Merge branch 'linode:main' into main
AniJ98 Sep 17, 2024
2907529
made changes to maintain consistency and improve readability
AniJ98 Sep 24, 2024
6f8ad3c
Merge branch 'main' into main
zliang-akamai Sep 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions instance_ips.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ type IPv6Range struct {
Linodes []int `json:"linodes"`
}

type InstanceReserveIPOptions struct {
Type string `json:"type"`
Public bool `json:"public"`
Address string `json:"address"`
}

// InstanceIPType constants start with IPType and include Linode Instance IP Types
type InstanceIPType string

Expand Down Expand Up @@ -144,3 +150,13 @@ func (c *Client) DeleteInstanceIPAddress(ctx context.Context, linodeID int, ipAd
err := doDELETERequest(ctx, c, e)
return err
}

// Function to add additional reserved IPV4 addresses to an existing linode
func (c *Client) AddReservedIPToInstance(ctx context.Context, linodeID int, opts InstanceReserveIPOptions) (*InstanceIP, error) {
endpoint := formatAPIPath("linode/instances/%d/ips", linodeID)
response, err := doPOSTRequest[InstanceIP](ctx, c, endpoint, opts)
if err != nil {
return nil, err
}
return response, nil
}
2 changes: 2 additions & 0 deletions instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@ type InstanceCreateOptions struct {

// Deprecated: group is a deprecated property denoting a group label for the Linode.
Group string `json:"group,omitempty"`

Ipv4 []string `json:"ipv4,omitempty"`
}

// InstanceCreatePlacementGroupOptions represents the placement group
Expand Down
Loading