Skip to content

Commit c88def7

Browse files
feat(vpc): generate doc/cli/sdk (#532)
Co-authored-by: Olivier Cano <[email protected]>
1 parent a61328d commit c88def7

File tree

1 file changed

+209
-0
lines changed

1 file changed

+209
-0
lines changed

api/instance/v1/instance_sdk.go

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
648652
type 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+
714722
type 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+
821833
type 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
910934
type 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

18071837
func (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+
43434552
type ListBootscriptsRequest struct {
43444553
Zone scw.Zone `json:"-"`
43454554

0 commit comments

Comments
 (0)