MCPcopy Create free account
hub / github.com/Scalingo/cli / UpdateConfig

Function UpdateConfig

addons/config.go:20–86  ·  view source on GitHub ↗
(ctx context.Context, app, addon string, options UpdateAddonConfigOpts)

Source from the content-addressed store, hash-verified

18}
19
20func UpdateConfig(ctx context.Context, app, addon string, options UpdateAddonConfigOpts) error {
21 weekdayNameToWeekdayOrderMap := map[string]time.Weekday{
22 strings.ToLower(time.Sunday.String()): time.Sunday,
23 strings.ToLower(time.Monday.String()): time.Monday,
24 strings.ToLower(time.Tuesday.String()): time.Tuesday,
25 strings.ToLower(time.Wednesday.String()): time.Wednesday,
26 strings.ToLower(time.Thursday.String()): time.Thursday,
27 strings.ToLower(time.Friday.String()): time.Friday,
28 strings.ToLower(time.Saturday.String()): time.Saturday,
29 }
30
31 c, err := config.ScalingoClient(ctx)
32 if err != nil {
33 return errors.Wrapf(ctx, err, "get Scalingo client to update addon config")
34 }
35
36 // If addon does not contain a UUID, we consider it contains an addon type (e.g. MongoDB)
37 if !strings.HasPrefix(addon, "ad-") {
38 addon, err = utils.GetAddonUUIDFromType(ctx, app, addon)
39 if err != nil {
40 return errors.Wrapf(ctx, err, "fail to get the addon UUID based on its type")
41 }
42 }
43
44 // fetching the current database maintenance window allows
45 // to only overload the specified options
46 db, err := c.DatabaseShow(ctx, app, addon)
47 if err != nil {
48 return errors.Wrapf(ctx, err, "get database information")
49 }
50
51 weekdayLocal, startingHourLocal := utils.ConvertDayAndHourToTimezone(
52 time.Weekday(db.MaintenanceWindow.WeekdayUTC),
53 db.MaintenanceWindow.StartingHourUTC,
54 time.UTC,
55 time.Local,
56 )
57
58 if options.MaintenanceWindowDay != nil {
59 day, ok := weekdayNameToWeekdayOrderMap[strings.ToLower(*options.MaintenanceWindowDay)]
60 if !ok {
61 return errors.Wrapf(ctx, err, "invalid weekday '%s'", *options.MaintenanceWindowDay)
62 }
63 weekdayLocal = day
64 }
65
66 if options.MaintenanceWindowHour != nil {
67 if *options.MaintenanceWindowHour < 0 || *options.MaintenanceWindowHour > 23 {
68 return errors.Wrapf(ctx, err, "invalid starting hour '%d': it must be between 0 and 23", *options.MaintenanceWindowHour)
69 }
70 startingHourLocal = *options.MaintenanceWindowHour
71 }
72
73 weekdayUTC, startingHourUTC := utils.ConvertDayAndHourToTimezone(weekdayLocal, startingHourLocal, time.Local, time.UTC)
74
75 _, err = c.DatabaseUpdateMaintenanceWindow(ctx, app, addon, scalingo.MaintenanceWindowParams{
76 WeekdayUTC: utils.IntPtr(int(weekdayUTC)),
77 StartingHourUTC: utils.IntPtr(startingHourUTC),

Callers 1

addons.goFile · 0.92

Calls 4

ScalingoClientFunction · 0.92
GetAddonUUIDFromTypeFunction · 0.92
IntPtrFunction · 0.92

Tested by

no test coverage detected