Skip to content

Commit bf0864e

Browse files
fix(instance): activate attach/detach filesystems in the sdk (scaleway#2529)
Co-authored-by: Jonathan R. <[email protected]>
1 parent 400195e commit bf0864e

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

api/instance/v1/instance_sdk.go

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2108,6 +2108,21 @@ type ApplyBlockMigrationRequest struct {
21082108
ValidationKey string `json:"validation_key,omitempty"`
21092109
}
21102110

2111+
// AttachServerFileSystemRequest: attach server file system request.
2112+
type AttachServerFileSystemRequest struct {
2113+
// Zone: zone to target. If none is passed will use default zone from the config.
2114+
Zone scw.Zone `json:"-"`
2115+
2116+
ServerID string `json:"-"`
2117+
2118+
FilesystemID string `json:"filesystem_id,omitempty"`
2119+
}
2120+
2121+
// AttachServerFileSystemResponse: attach server file system response.
2122+
type AttachServerFileSystemResponse struct {
2123+
Server *Server `json:"server"`
2124+
}
2125+
21112126
// AttachServerVolumeRequest: attach server volume request.
21122127
type AttachServerVolumeRequest struct {
21132128
// Zone: zone to target. If none is passed will use default zone from the config.
@@ -2591,6 +2606,21 @@ type DeleteVolumeRequest struct {
25912606
VolumeID string `json:"-"`
25922607
}
25932608

2609+
// DetachServerFileSystemRequest: detach server file system request.
2610+
type DetachServerFileSystemRequest struct {
2611+
// Zone: zone to target. If none is passed will use default zone from the config.
2612+
Zone scw.Zone `json:"-"`
2613+
2614+
ServerID string `json:"-"`
2615+
2616+
FilesystemID string `json:"filesystem_id,omitempty"`
2617+
}
2618+
2619+
// DetachServerFileSystemResponse: detach server file system response.
2620+
type DetachServerFileSystemResponse struct {
2621+
Server *Server `json:"server"`
2622+
}
2623+
25942624
// DetachServerVolumeRequest: detach server volume request.
25952625
type DetachServerVolumeRequest struct {
25962626
// Zone: zone to target. If none is passed will use default zone from the config.
@@ -4761,6 +4791,78 @@ func (s *API) DetachServerVolume(req *DetachServerVolumeRequest, opts ...scw.Req
47614791
return &resp, nil
47624792
}
47634793

4794+
// AttachServerFileSystem: Attach a filesystem volume to an Instance.
4795+
func (s *API) AttachServerFileSystem(req *AttachServerFileSystemRequest, opts ...scw.RequestOption) (*AttachServerFileSystemResponse, error) {
4796+
var err error
4797+
4798+
if req.Zone == "" {
4799+
defaultZone, _ := s.client.GetDefaultZone()
4800+
req.Zone = defaultZone
4801+
}
4802+
4803+
if fmt.Sprint(req.Zone) == "" {
4804+
return nil, errors.New("field Zone cannot be empty in request")
4805+
}
4806+
4807+
if fmt.Sprint(req.ServerID) == "" {
4808+
return nil, errors.New("field ServerID cannot be empty in request")
4809+
}
4810+
4811+
scwReq := &scw.ScalewayRequest{
4812+
Method: "POST",
4813+
Path: "/instance/v1/zones/" + fmt.Sprint(req.Zone) + "/servers/" + fmt.Sprint(req.ServerID) + "/attach-filesystem",
4814+
}
4815+
4816+
err = scwReq.SetBody(req)
4817+
if err != nil {
4818+
return nil, err
4819+
}
4820+
4821+
var resp AttachServerFileSystemResponse
4822+
4823+
err = s.client.Do(scwReq, &resp, opts...)
4824+
if err != nil {
4825+
return nil, err
4826+
}
4827+
return &resp, nil
4828+
}
4829+
4830+
// DetachServerFileSystem: Detach a filesystem volume to an Instance.
4831+
func (s *API) DetachServerFileSystem(req *DetachServerFileSystemRequest, opts ...scw.RequestOption) (*DetachServerFileSystemResponse, error) {
4832+
var err error
4833+
4834+
if req.Zone == "" {
4835+
defaultZone, _ := s.client.GetDefaultZone()
4836+
req.Zone = defaultZone
4837+
}
4838+
4839+
if fmt.Sprint(req.Zone) == "" {
4840+
return nil, errors.New("field Zone cannot be empty in request")
4841+
}
4842+
4843+
if fmt.Sprint(req.ServerID) == "" {
4844+
return nil, errors.New("field ServerID cannot be empty in request")
4845+
}
4846+
4847+
scwReq := &scw.ScalewayRequest{
4848+
Method: "POST",
4849+
Path: "/instance/v1/zones/" + fmt.Sprint(req.Zone) + "/servers/" + fmt.Sprint(req.ServerID) + "/detach-filesystem",
4850+
}
4851+
4852+
err = scwReq.SetBody(req)
4853+
if err != nil {
4854+
return nil, err
4855+
}
4856+
4857+
var resp DetachServerFileSystemResponse
4858+
4859+
err = s.client.Do(scwReq, &resp, opts...)
4860+
if err != nil {
4861+
return nil, err
4862+
}
4863+
return &resp, nil
4864+
}
4865+
47644866
// ListImages: List all existing Instance images.
47654867
func (s *API) ListImages(req *ListImagesRequest, opts ...scw.RequestOption) (*ListImagesResponse, error) {
47664868
var err error

0 commit comments

Comments
 (0)