@@ -645,6 +645,10 @@ type CreatePlacementGroupResponse struct {
645645 PlacementGroup * PlacementGroup `json:"placement_group"`
646646}
647647
648+ type CreatePrivateNICResponse struct {
649+ PrivateNic * PrivateNIC `json:"private_nic"`
650+ }
651+
648652type CreateSecurityGroupResponse struct {
649653 SecurityGroup * SecurityGroup `json:"security_group"`
650654}
@@ -711,6 +715,10 @@ type GetPlacementGroupServersResponse struct {
711715 Servers []* PlacementGroupServer `json:"servers"`
712716}
713717
718+ type GetPrivateNICResponse struct {
719+ PrivateNic * PrivateNIC `json:"private_nic"`
720+ }
721+
714722type GetSecurityGroupResponse struct {
715723 SecurityGroup * SecurityGroup `json:"security_group"`
716724}
@@ -818,6 +826,10 @@ type ListPlacementGroupsResponse struct {
818826 TotalCount uint32 `json:"total_count"`
819827}
820828
829+ type ListPrivateNICsResponse struct {
830+ PrivateNics []* PrivateNIC `json:"private_nics"`
831+ }
832+
821833type ListSecurityGroupRulesResponse struct {
822834 Rules []* SecurityGroupRule `json:"rules"`
823835
@@ -906,6 +918,18 @@ type PlacementGroupServer struct {
906918 PolicyRespected bool `json:"policy_respected"`
907919}
908920
921+ // PrivateNIC: private nic
922+ type PrivateNIC struct {
923+ // ID: the private NIC unique ID
924+ ID string `json:"id,omitempty"`
925+ // ServerID: the server the private NIC is attached to
926+ ServerID string `json:"server_id,omitempty"`
927+ // PrivateNetworkID: the private network where the private NIC is attached
928+ PrivateNetworkID string `json:"private_network_id,omitempty"`
929+ // MacAddress: the private NIC MAC address
930+ MacAddress string `json:"mac_address,omitempty"`
931+ }
932+
909933// SecurityGroup: security group
910934type SecurityGroup struct {
911935 // ID: the security groups' unique ID
@@ -1046,6 +1070,8 @@ type Server struct {
10461070 Arch Arch `json:"arch"`
10471071 // PlacementGroup: the server placement group
10481072 PlacementGroup * PlacementGroup `json:"placement_group"`
1073+ // PrivateNics: the server private NICs
1074+ PrivateNics []* PrivateNIC `json:"private_nics"`
10491075 // Zone: the zone in which is the server
10501076 Zone scw.Zone `json:"zone"`
10511077}
@@ -1613,6 +1639,8 @@ type CreateServerRequest struct {
16131639 SecurityGroup * string `json:"security_group,omitempty"`
16141640 // PlacementGroup: placement group ID if server must be part of a placement group
16151641 PlacementGroup * string `json:"placement_group,omitempty"`
1642+ // PrivateNetwork: private Network IDs if the server need to be part of one or more Private Networks
1643+ PrivateNetwork []string `json:"private_network,omitempty"`
16161644}
16171645
16181646// createServer: create a server
@@ -1802,6 +1830,8 @@ type setServerRequest struct {
18021830 Arch Arch `json:"arch"`
18031831 // PlacementGroup: the server placement group
18041832 PlacementGroup * PlacementGroup `json:"placement_group"`
1833+ // PrivateNics: the server private NICs
1834+ PrivateNics []* PrivateNIC `json:"private_nics"`
18051835}
18061836
18071837func (s * API ) setServer (req * setServerRequest , opts ... scw.RequestOption ) (* setServerResponse , error ) {
@@ -1876,6 +1906,8 @@ type UpdateServerRequest struct {
18761906 SecurityGroup * SecurityGroupTemplate `json:"security_group,omitempty"`
18771907 // PlacementGroup: placement group ID if server must be part of a placement group
18781908 PlacementGroup * NullableStringValue `json:"placement_group,omitempty"`
1909+ // PrivateNics: the server private NICs
1910+ PrivateNics []* PrivateNIC `json:"private_nics,omitempty"`
18791911}
18801912
18811913// updateServer: update a server
@@ -4340,6 +4372,183 @@ func (s *API) DeleteIP(req *DeleteIPRequest, opts ...scw.RequestOption) error {
43404372 return nil
43414373}
43424374
4375+ type ListPrivateNICsRequest struct {
4376+ Zone scw.Zone `json:"-"`
4377+
4378+ ServerID string `json:"-"`
4379+ }
4380+
4381+ // ListPrivateNICs: list all private NICs
4382+ //
4383+ // List all private NICs of a given server.
4384+ func (s * API ) ListPrivateNICs (req * ListPrivateNICsRequest , opts ... scw.RequestOption ) (* ListPrivateNICsResponse , error ) {
4385+ var err error
4386+
4387+ if req .Zone == "" {
4388+ defaultZone , _ := s .client .GetDefaultZone ()
4389+ req .Zone = defaultZone
4390+ }
4391+
4392+ if fmt .Sprint (req .Zone ) == "" {
4393+ return nil , errors .New ("field Zone cannot be empty in request" )
4394+ }
4395+
4396+ if fmt .Sprint (req .ServerID ) == "" {
4397+ return nil , errors .New ("field ServerID cannot be empty in request" )
4398+ }
4399+
4400+ scwReq := & scw.ScalewayRequest {
4401+ Method : "GET" ,
4402+ Path : "/instance/v1/zones/" + fmt .Sprint (req .Zone ) + "/servers/" + fmt .Sprint (req .ServerID ) + "/private_nics" ,
4403+ Headers : http.Header {},
4404+ }
4405+
4406+ var resp ListPrivateNICsResponse
4407+
4408+ err = s .client .Do (scwReq , & resp , opts ... )
4409+ if err != nil {
4410+ return nil , err
4411+ }
4412+ return & resp , nil
4413+ }
4414+
4415+ type CreatePrivateNICRequest struct {
4416+ Zone scw.Zone `json:"-"`
4417+
4418+ ServerID string `json:"-"`
4419+
4420+ PrivateNetworkID string `json:"private_network_id,omitempty"`
4421+ }
4422+
4423+ // CreatePrivateNIC: create a private NIC connecting a server to a private network
4424+ //
4425+ // Create a private NIC connecting a server to a private network.
4426+ func (s * API ) CreatePrivateNIC (req * CreatePrivateNICRequest , opts ... scw.RequestOption ) (* CreatePrivateNICResponse , error ) {
4427+ var err error
4428+
4429+ if req .Zone == "" {
4430+ defaultZone , _ := s .client .GetDefaultZone ()
4431+ req .Zone = defaultZone
4432+ }
4433+
4434+ if fmt .Sprint (req .Zone ) == "" {
4435+ return nil , errors .New ("field Zone cannot be empty in request" )
4436+ }
4437+
4438+ if fmt .Sprint (req .ServerID ) == "" {
4439+ return nil , errors .New ("field ServerID cannot be empty in request" )
4440+ }
4441+
4442+ scwReq := & scw.ScalewayRequest {
4443+ Method : "POST" ,
4444+ Path : "/instance/v1/zones/" + fmt .Sprint (req .Zone ) + "/servers/" + fmt .Sprint (req .ServerID ) + "/private_nics" ,
4445+ Headers : http.Header {},
4446+ }
4447+
4448+ err = scwReq .SetBody (req )
4449+ if err != nil {
4450+ return nil , err
4451+ }
4452+
4453+ var resp CreatePrivateNICResponse
4454+
4455+ err = s .client .Do (scwReq , & resp , opts ... )
4456+ if err != nil {
4457+ return nil , err
4458+ }
4459+ return & resp , nil
4460+ }
4461+
4462+ type GetPrivateNICRequest struct {
4463+ Zone scw.Zone `json:"-"`
4464+
4465+ ServerID string `json:"-"`
4466+
4467+ PrivateNicID string `json:"-"`
4468+ }
4469+
4470+ // GetPrivateNIC: get a private NIC
4471+ //
4472+ // Get private NIC properties.
4473+ func (s * API ) GetPrivateNIC (req * GetPrivateNICRequest , opts ... scw.RequestOption ) (* GetPrivateNICResponse , error ) {
4474+ var err error
4475+
4476+ if req .Zone == "" {
4477+ defaultZone , _ := s .client .GetDefaultZone ()
4478+ req .Zone = defaultZone
4479+ }
4480+
4481+ if fmt .Sprint (req .Zone ) == "" {
4482+ return nil , errors .New ("field Zone cannot be empty in request" )
4483+ }
4484+
4485+ if fmt .Sprint (req .ServerID ) == "" {
4486+ return nil , errors .New ("field ServerID cannot be empty in request" )
4487+ }
4488+
4489+ if fmt .Sprint (req .PrivateNicID ) == "" {
4490+ return nil , errors .New ("field PrivateNicID cannot be empty in request" )
4491+ }
4492+
4493+ scwReq := & scw.ScalewayRequest {
4494+ Method : "GET" ,
4495+ Path : "/instance/v1/zones/" + fmt .Sprint (req .Zone ) + "/servers/" + fmt .Sprint (req .ServerID ) + "/private_nics/" + fmt .Sprint (req .PrivateNicID ) + "" ,
4496+ Headers : http.Header {},
4497+ }
4498+
4499+ var resp GetPrivateNICResponse
4500+
4501+ err = s .client .Do (scwReq , & resp , opts ... )
4502+ if err != nil {
4503+ return nil , err
4504+ }
4505+ return & resp , nil
4506+ }
4507+
4508+ type DeletePrivateNICRequest struct {
4509+ Zone scw.Zone `json:"-"`
4510+
4511+ ServerID string `json:"-"`
4512+
4513+ PrivateNicID string `json:"-"`
4514+ }
4515+
4516+ // DeletePrivateNIC: delete a private NIC
4517+ //
4518+ // Delete a private NIC.
4519+ func (s * API ) DeletePrivateNIC (req * DeletePrivateNICRequest , opts ... scw.RequestOption ) error {
4520+ var err error
4521+
4522+ if req .Zone == "" {
4523+ defaultZone , _ := s .client .GetDefaultZone ()
4524+ req .Zone = defaultZone
4525+ }
4526+
4527+ if fmt .Sprint (req .Zone ) == "" {
4528+ return errors .New ("field Zone cannot be empty in request" )
4529+ }
4530+
4531+ if fmt .Sprint (req .ServerID ) == "" {
4532+ return errors .New ("field ServerID cannot be empty in request" )
4533+ }
4534+
4535+ if fmt .Sprint (req .PrivateNicID ) == "" {
4536+ return errors .New ("field PrivateNicID cannot be empty in request" )
4537+ }
4538+
4539+ scwReq := & scw.ScalewayRequest {
4540+ Method : "DELETE" ,
4541+ Path : "/instance/v1/zones/" + fmt .Sprint (req .Zone ) + "/servers/" + fmt .Sprint (req .ServerID ) + "/private_nics/" + fmt .Sprint (req .PrivateNicID ) + "" ,
4542+ Headers : http.Header {},
4543+ }
4544+
4545+ err = s .client .Do (scwReq , nil , opts ... )
4546+ if err != nil {
4547+ return err
4548+ }
4549+ return nil
4550+ }
4551+
43434552type ListBootscriptsRequest struct {
43444553 Zone scw.Zone `json:"-"`
43454554
0 commit comments