@@ -26,6 +26,14 @@ const (
2626 dedicatedServerPTRRecordDeletePath = "/hosts/dedicated_servers/%s/ptr_records/%s"
2727 dedicatedServerReinstallPath = "/hosts/dedicated_servers/%s/reinstall"
2828
29+ // ds networks
30+ dedicatedServerNetworkUsagePath = "/hosts/dedicated_servers/%s/network_utilization"
31+ dedicatedServerNetworkPath = "/hosts/dedicated_servers/%s/networks/%s"
32+ dedicatedServerAddPublicIPv4NetworkPath = "/hosts/dedicated_servers/%s/networks/public_ipv4"
33+ dedicatedServerAddPrivateIPv4NetworkPath = "/hosts/dedicated_servers/%s/networks/private_ipv4"
34+ dedicatedServerActivatePublicIPv6Path = "/hosts/dedicated_servers/%s/networks/public_ipv6"
35+ dedicatedServerDeleteNetworkPath = "/hosts/dedicated_servers/%s/networks/%s"
36+
2937 kubernetesBaremetalNodePath = "/hosts/kubernetes_baremetal_nodes/%s"
3038 kubernetesBaremetalNodePowerOnPath = "/hosts/kubernetes_baremetal_nodes/%s/power_on"
3139 kubernetesBaremetalNodePowerOffPath = "/hosts/kubernetes_baremetal_nodes/%s/power_off"
@@ -73,9 +81,17 @@ type HostsService interface {
7381 PowerOffDedicatedServer (ctx context.Context , id string ) (* DedicatedServer , error )
7482 PowerCycleDedicatedServer (ctx context.Context , id string ) (* DedicatedServer , error )
7583 CreatePTRRecordForDedicatedServer (ctx context.Context , id string , input PTRRecordCreateInput ) (* PTRRecord , error )
76- DeletePTRRecordForDedicatedServer (ctx context.Context , hostID string , ptrRecordID string ) error
84+ DeletePTRRecordForDedicatedServer (ctx context.Context , serverID string , ptrRecordID string ) error
7785 ReinstallOperatingSystemForDedicatedServer (ctx context.Context , id string , input OperatingSystemReinstallInput ) (* DedicatedServer , error )
7886
87+ // ds network methods
88+ GetDedicatedServerNetworkUsage (ctx context.Context , id string ) (* NetworkUsage , error )
89+ GetDedicatedServerNetwork (ctx context.Context , serverID string , networkID string ) (* Network , error )
90+ AddDedicatedServerPublicIPv4Network (ctx context.Context , id string , input NetworkInput ) (* Network , error )
91+ AddDedicatedServerPrivateIPv4Network (ctx context.Context , id string , input NetworkInput ) (* Network , error )
92+ ActivateDedicatedServerPubliIPv6Network (ctx context.Context , id string ) (* Network , error )
93+ DeleteDedicatedServerNetwork (ctx context.Context , serverID string , networkID string ) (* Network , error )
94+
7995 // sbm
8096 PowerOnSBMServer (ctx context.Context , id string ) (* SBMServer , error )
8197 PowerOffSBMServer (ctx context.Context , id string ) (* SBMServer , error )
@@ -659,3 +675,121 @@ func (h *HostsHandler) PowerCycleKubernetesBaremetalNode(ctx context.Context, id
659675
660676 return & node , nil
661677}
678+
679+ // Get network utilization for a dedicated server
680+ // Endpoint: https://developers.servers.com/api-documentation/v1/#tag/Dedicated-Server/operation/GetNetworkUsageForADedicatedServer
681+ func (h * HostsHandler ) GetDedicatedServerNetworkUsage (ctx context.Context , id string ) (* NetworkUsage , error ) {
682+ url := h .client .buildURL (dedicatedServerNetworkUsagePath , id )
683+
684+ body , err := h .client .buildAndExecRequest (ctx , "GET" , url , nil )
685+ if err != nil {
686+ return nil , err
687+ }
688+
689+ var networkUsage NetworkUsage
690+ if err := json .Unmarshal (body , & networkUsage ); err != nil {
691+ return nil , err
692+ }
693+
694+ return & networkUsage , nil
695+ }
696+
697+ // Get network details for a dedicated server
698+ // Endpoint: https://developers.servers.com/api-documentation/v1/#tag/Dedicated-Server/operation/GetANetworkForADedicatedServer
699+ func (h * HostsHandler ) GetDedicatedServerNetwork (ctx context.Context , serverID , networkID string ) (* Network , error ) {
700+ url := h .client .buildURL (dedicatedServerNetworkPath , serverID , networkID )
701+
702+ body , err := h .client .buildAndExecRequest (ctx , "GET" , url , nil )
703+ if err != nil {
704+ return nil , err
705+ }
706+
707+ var network Network
708+ if err := json .Unmarshal (body , & network ); err != nil {
709+ return nil , err
710+ }
711+
712+ return & network , nil
713+ }
714+
715+ // Add a public IPv4 network to a dedicated server
716+ // Endpoint: https://developers.servers.com/api-documentation/v1/#tag/Dedicated-Server/operation/CreateAPublicIpv4NetworkForADedicatedServer
717+ func (h * HostsHandler ) AddDedicatedServerPublicIPv4Network (ctx context.Context , id string , input NetworkInput ) (* Network , error ) {
718+ payload , err := json .Marshal (input )
719+ if err != nil {
720+ return nil , err
721+ }
722+
723+ url := h .client .buildURL (dedicatedServerAddPublicIPv4NetworkPath , id )
724+
725+ body , err := h .client .buildAndExecRequest (ctx , "POST" , url , payload )
726+ if err != nil {
727+ return nil , err
728+ }
729+
730+ var network Network
731+ if err := json .Unmarshal (body , & network ); err != nil {
732+ return nil , err
733+ }
734+
735+ return & network , nil
736+ }
737+
738+ // Add a private IPv4 network to a dedicated server
739+ // Endpoint: https://developers.servers.com/api-documentation/v1/#tag/Dedicated-Server/operation/CreateAPrivateIpv4NetworkForADedicatedServer
740+ func (h * HostsHandler ) AddDedicatedServerPrivateIPv4Network (ctx context.Context , id string , input NetworkInput ) (* Network , error ) {
741+ payload , err := json .Marshal (input )
742+ if err != nil {
743+ return nil , err
744+ }
745+
746+ url := h .client .buildURL (dedicatedServerAddPrivateIPv4NetworkPath , id )
747+
748+ body , err := h .client .buildAndExecRequest (ctx , "POST" , url , payload )
749+ if err != nil {
750+ return nil , err
751+ }
752+
753+ var network Network
754+ if err := json .Unmarshal (body , & network ); err != nil {
755+ return nil , err
756+ }
757+
758+ return & network , nil
759+ }
760+
761+ // Activate a public IPv6 network for a dedicated server
762+ // Endpoint: https://developers.servers.com/api-documentation/v1/#tag/Dedicated-Server/operation/ActivateAPublicIpv6NetworkForADedicatedServer
763+ func (h * HostsHandler ) ActivateDedicatedServerPubliIPv6Network (ctx context.Context , id string ) (* Network , error ) {
764+ url := h .client .buildURL (dedicatedServerActivatePublicIPv6Path , id )
765+
766+ body , err := h .client .buildAndExecRequest (ctx , "POST" , url , nil )
767+ if err != nil {
768+ return nil , err
769+ }
770+
771+ var network Network
772+ if err := json .Unmarshal (body , & network ); err != nil {
773+ return nil , err
774+ }
775+
776+ return & network , nil
777+ }
778+
779+ // Delete a network from a dedicated server
780+ // Endpoint: https://developers.servers.com/api-documentation/v1/#tag/Dedicated-Server/operation/DeleteANetworkForADedicatedServer
781+ func (h * HostsHandler ) DeleteDedicatedServerNetwork (ctx context.Context , serverID , networkID string ) (* Network , error ) {
782+ url := h .client .buildURL (dedicatedServerDeleteNetworkPath , serverID , networkID )
783+
784+ body , err := h .client .buildAndExecRequest (ctx , "DELETE" , url , nil )
785+ if err != nil {
786+ return nil , err
787+ }
788+
789+ var network Network
790+ if err := json .Unmarshal (body , & network ); err != nil {
791+ return nil , err
792+ }
793+
794+ return & network , nil
795+ }
0 commit comments