MCPcopy Create free account
hub / github.com/akash-network/node / validateGenesisMaintenance

Function validateGenesisMaintenance

x/provider/genesis.go:229–271  ·  view source on GitHub ↗
(record types.ProviderMaintenanceRecord, providers map[string]struct{}, params types.ProviderMaintenanceParams)

Source from the content-addressed store, hash-verified

227}
228
229func validateGenesisMaintenance(record types.ProviderMaintenanceRecord, providers map[string]struct{}, params types.ProviderMaintenanceParams) error {
230 if record.ID == 0 {
231 return sdkerrors.ErrInvalidRequest.Wrap("maintenance id must be set")
232 }
233
234 if _, err := sdk.AccAddressFromBech32(record.Provider); err != nil {
235 return types.ErrInvalidAddress.Wrap(err.Error())
236 }
237
238 if _, exists := providers[record.Provider]; !exists {
239 return types.ErrProviderNotFound.Wrapf("maintenance provider: %s", record.Provider)
240 }
241
242 if !keeper.ValidMaintenanceType(record.MaintenanceType) {
243 return sdkerrors.ErrInvalidRequest.Wrap("maintenance type must be specified")
244 }
245
246 if record.StartsAt.IsZero() {
247 return sdkerrors.ErrInvalidRequest.Wrap("starts_at must be set")
248 }
249
250 if record.ExpectedEndsAt.IsZero() {
251 return sdkerrors.ErrInvalidRequest.Wrap("expected_ends_at must be set")
252 }
253
254 if !record.ExpectedEndsAt.After(record.StartsAt) {
255 return sdkerrors.ErrInvalidRequest.Wrap("expected_ends_at must be after starts_at")
256 }
257
258 if record.ExpectedEndsAt.Sub(record.StartsAt) > params.MaintenanceMaxDuration {
259 return sdkerrors.ErrInvalidRequest.Wrap("maintenance duration exceeds max duration")
260 }
261
262 if record.OpenedAt.IsZero() {
263 return sdkerrors.ErrInvalidRequest.Wrap("opened_at must be set")
264 }
265
266 if record.ClosedAt != nil && record.ClosedAt.Before(record.OpenedAt) {
267 return sdkerrors.ErrInvalidRequest.Wrap("closed_at must be after opened_at")
268 }
269
270 return nil
271}

Callers 1

ValidateGenesisFunction · 0.85

Calls 4

ValidMaintenanceTypeFunction · 0.92
AfterMethod · 0.80
BeforeMethod · 0.80
ErrorMethod · 0.65

Tested by

no test coverage detected