Skip to content

Commit adcb306

Browse files
authored
feat(baremetal): add support for MigrateServerToMonthlyOffer (#2433)
1 parent 46c6b97 commit adcb306

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

api/baremetal/v1/baremetal_sdk.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,7 @@ const (
757757
ServerStatusOutOfStock = ServerStatus("out_of_stock")
758758
ServerStatusOrdered = ServerStatus("ordered")
759759
ServerStatusResetting = ServerStatus("resetting")
760+
ServerStatusMigrating = ServerStatus("migrating")
760761
)
761762

762763
func (enum ServerStatus) String() string {
@@ -781,6 +782,7 @@ func (enum ServerStatus) Values() []ServerStatus {
781782
"out_of_stock",
782783
"ordered",
783784
"resetting",
785+
"migrating",
784786
}
785787
}
786788

@@ -1294,6 +1296,9 @@ type Offer struct {
12941296

12951297
// Gpus: gPU specifications of the offer.
12961298
Gpus []*GPU `json:"gpus"`
1299+
1300+
// MonthlyOfferID: exist only for hourly offers, to migrate to the monthly offer.
1301+
MonthlyOfferID *string `json:"monthly_offer_id"`
12971302
}
12981303

12991304
// Option: option.
@@ -1956,6 +1961,15 @@ func (r *ListSettingsResponse) UnsafeAppend(res interface{}) (uint32, error) {
19561961
return uint32(len(results.Settings)), nil
19571962
}
19581963

1964+
// MigrateServerToMonthlyOfferRequest: migrate server to monthly offer request.
1965+
type MigrateServerToMonthlyOfferRequest struct {
1966+
// Zone: zone to target. If none is passed will use default zone from the config.
1967+
Zone scw.Zone `json:"-"`
1968+
1969+
// ServerID: ID of the server.
1970+
ServerID string `json:"-"`
1971+
}
1972+
19591973
// PrivateNetworkAPIAddServerPrivateNetworkRequest: private network api add server private network request.
19601974
type PrivateNetworkAPIAddServerPrivateNetworkRequest struct {
19611975
// Zone: zone to target. If none is passed will use default zone from the config.
@@ -2833,6 +2847,37 @@ func (s *API) DeleteOptionServer(req *DeleteOptionServerRequest, opts ...scw.Req
28332847
return &resp, nil
28342848
}
28352849

2850+
// MigrateServerToMonthlyOffer: Migrate server with hourly offer to monthly offer.
2851+
func (s *API) MigrateServerToMonthlyOffer(req *MigrateServerToMonthlyOfferRequest, opts ...scw.RequestOption) (*Server, error) {
2852+
var err error
2853+
2854+
if req.Zone == "" {
2855+
defaultZone, _ := s.client.GetDefaultZone()
2856+
req.Zone = defaultZone
2857+
}
2858+
2859+
if fmt.Sprint(req.Zone) == "" {
2860+
return nil, errors.New("field Zone cannot be empty in request")
2861+
}
2862+
2863+
if fmt.Sprint(req.ServerID) == "" {
2864+
return nil, errors.New("field ServerID cannot be empty in request")
2865+
}
2866+
2867+
scwReq := &scw.ScalewayRequest{
2868+
Method: "POST",
2869+
Path: "/baremetal/v1/zones/" + fmt.Sprint(req.Zone) + "/servers/" + fmt.Sprint(req.ServerID) + "/migrate-offer-monthly",
2870+
}
2871+
2872+
var resp Server
2873+
2874+
err = s.client.Do(scwReq, &resp, opts...)
2875+
if err != nil {
2876+
return nil, err
2877+
}
2878+
return &resp, nil
2879+
}
2880+
28362881
// ListOffers: List all available Elastic Metal server configurations.
28372882
func (s *API) ListOffers(req *ListOffersRequest, opts ...scw.RequestOption) (*ListOffersResponse, error) {
28382883
var err error

0 commit comments

Comments
 (0)