@@ -47,8 +47,6 @@ type MaintenanceWindowScheduleRecurring struct {
4747/* CREATE */
4848
4949func (model MaintenanceWindowModel ) toAPICreateRequest (ctx context.Context ) (kbapi.PostMaintenanceWindowJSONRequestBody , diag.Diagnostics ) {
50- var diags = diag.Diagnostics {}
51-
5250 body := kbapi.PostMaintenanceWindowJSONRequestBody {
5351 Enabled : model .Enabled .ValueBoolPointer (),
5452 Title : model .Title .ValueString (),
@@ -61,65 +59,9 @@ func (model MaintenanceWindowModel) toAPICreateRequest(ctx context.Context) (kba
6159 body .Schedule .Custom .Timezone = model .CustomSchedule .Timezone .ValueStringPointer ()
6260 }
6361
64- if model .CustomSchedule .Recurring != nil {
65-
66- body .Schedule .Custom .Recurring = & struct {
67- End * string `json:"end,omitempty"`
68- Every * string `json:"every,omitempty"`
69- Occurrences * float32 `json:"occurrences,omitempty"`
70- OnMonth * []float32 `json:"onMonth,omitempty"`
71- OnMonthDay * []float32 `json:"onMonthDay,omitempty"`
72- OnWeekDay * []string `json:"onWeekDay,omitempty"`
73- }{
74- End : model .CustomSchedule .Recurring .End .ValueStringPointer (),
75- Every : model .CustomSchedule .Recurring .Every .ValueStringPointer (),
76- }
77-
78- if utils .IsKnown (model .CustomSchedule .Recurring .Occurrences ) {
79- occurrences := float32 (model .CustomSchedule .Recurring .Occurrences .ValueInt32 ())
80- body .Schedule .Custom .Recurring .Occurrences = & occurrences
81- }
82-
83- if utils .IsKnown (model .CustomSchedule .Recurring .OnWeekDay ) {
84- var onWeekDay []string
85- diags .Append (model .CustomSchedule .Recurring .OnWeekDay .ElementsAs (ctx , & onWeekDay , true )... )
86- body .Schedule .Custom .Recurring .OnWeekDay = & onWeekDay
87- }
88-
89- if utils .IsKnown (model .CustomSchedule .Recurring .OnMonth ) {
90- var onMonth []float32
91- diags .Append (model .CustomSchedule .Recurring .OnMonth .ElementsAs (ctx , & onMonth , true )... )
92- body .Schedule .Custom .Recurring .OnMonth = & onMonth
93- }
94-
95- if utils .IsKnown (model .CustomSchedule .Recurring .OnMonthDay ) {
96- var onMonthDay []float32
97- diags .Append (model .CustomSchedule .Recurring .OnMonthDay .ElementsAs (ctx , & onMonthDay , true )... )
98- body .Schedule .Custom .Recurring .OnMonthDay = & onMonthDay
99- }
100- }
101-
102- if model .Scope != nil {
103- body .Scope = & struct {
104- Alerting struct {
105- Query struct {
106- Kql string `json:"kql"`
107- } `json:"query"`
108- } `json:"alerting"`
109- }{
110- Alerting : struct {
111- Query struct {
112- Kql string `json:"kql"`
113- } `json:"query"`
114- }{
115- Query : struct {
116- Kql string `json:"kql"`
117- }{
118- Kql : model .Scope .Alerting .Kql .ValueString (),
119- },
120- },
121- }
122- }
62+ customRecurring , diags := model .CustomSchedule .Recurring .toAPIRequest (ctx )
63+ body .Schedule .Custom .Recurring = customRecurring
64+ body .Scope = model .Scope .toAPIRequest ()
12365
12466 return body , diags
12567}
@@ -161,14 +103,12 @@ func (model *MaintenanceWindowModel) fromAPIReadResponse(ctx context.Context, da
161103/* UPDATE */
162104
163105func (model MaintenanceWindowModel ) toAPIUpdateRequest (ctx context.Context ) (kbapi.PatchMaintenanceWindowIdJSONRequestBody , diag.Diagnostics ) {
164- var diags = diag.Diagnostics {}
165-
166106 body := kbapi.PatchMaintenanceWindowIdJSONRequestBody {
167107 Enabled : model .Enabled .ValueBoolPointer (),
168108 Title : model .Title .ValueStringPointer (),
169109 }
170110
171- schedule := struct {
111+ body . Schedule = & struct {
172112 Custom struct {
173113 Duration string `json:"duration"`
174114 Recurring * struct {
@@ -201,76 +141,13 @@ func (model MaintenanceWindowModel) toAPIUpdateRequest(ctx context.Context) (kba
201141 },
202142 }
203143
204- body .Schedule = & schedule
205-
206144 if utils .IsKnown (model .CustomSchedule .Timezone ) {
207145 body .Schedule .Custom .Timezone = model .CustomSchedule .Timezone .ValueStringPointer ()
208146 }
209147
210- if model .CustomSchedule .Recurring != nil {
211-
212- body .Schedule .Custom .Recurring = & struct {
213- End * string `json:"end,omitempty"`
214- Every * string `json:"every,omitempty"`
215- Occurrences * float32 `json:"occurrences,omitempty"`
216- OnMonth * []float32 `json:"onMonth,omitempty"`
217- OnMonthDay * []float32 `json:"onMonthDay,omitempty"`
218- OnWeekDay * []string `json:"onWeekDay,omitempty"`
219- }{}
220-
221- if ! model .CustomSchedule .Recurring .End .IsNull () {
222- body .Schedule .Custom .Recurring .End = model .CustomSchedule .Recurring .End .ValueStringPointer ()
223- }
224-
225- if ! model .CustomSchedule .Recurring .Every .IsNull () {
226- body .Schedule .Custom .Recurring .Every = model .CustomSchedule .Recurring .Every .ValueStringPointer ()
227- }
228-
229- if ! model .CustomSchedule .Recurring .Occurrences .IsNull () && ! model .CustomSchedule .Recurring .Occurrences .IsUnknown () && model .CustomSchedule .Recurring .Occurrences .ValueInt32 () > 0 {
230- occurrences := float32 (model .CustomSchedule .Recurring .Occurrences .ValueInt32 ())
231- body .Schedule .Custom .Recurring .Occurrences = & occurrences
232- }
233-
234- if ! model .CustomSchedule .Recurring .OnWeekDay .IsNull () && ! model .CustomSchedule .Recurring .OnWeekDay .IsUnknown () {
235- var onWeekDay []string
236- diags .Append (model .CustomSchedule .Recurring .OnWeekDay .ElementsAs (ctx , & onWeekDay , true )... )
237- body .Schedule .Custom .Recurring .OnWeekDay = & onWeekDay
238- }
239-
240- if ! model .CustomSchedule .Recurring .OnMonth .IsNull () && ! model .CustomSchedule .Recurring .OnMonth .IsUnknown () {
241- var onMonth []float32
242- diags .Append (model .CustomSchedule .Recurring .OnMonth .ElementsAs (ctx , & onMonth , true )... )
243- body .Schedule .Custom .Recurring .OnMonth = & onMonth
244- }
245-
246- if ! model .CustomSchedule .Recurring .OnMonthDay .IsNull () && ! model .CustomSchedule .Recurring .OnMonthDay .IsUnknown () {
247- var onMonthDay []float32
248- diags .Append (model .CustomSchedule .Recurring .OnMonthDay .ElementsAs (ctx , & onMonthDay , true )... )
249- body .Schedule .Custom .Recurring .OnMonthDay = & onMonthDay
250- }
251- }
252-
253- if model .Scope != nil {
254- body .Scope = & struct {
255- Alerting struct {
256- Query struct {
257- Kql string `json:"kql"`
258- } `json:"query"`
259- } `json:"alerting"`
260- }{
261- Alerting : struct {
262- Query struct {
263- Kql string `json:"kql"`
264- } `json:"query"`
265- }{
266- Query : struct {
267- Kql string `json:"kql"`
268- }{
269- Kql : model .Scope .Alerting .Kql .ValueString (),
270- },
271- },
272- }
273- }
148+ customRecurring , diags := model .CustomSchedule .Recurring .toAPIRequest (ctx )
149+ body .Schedule .Custom .Recurring = customRecurring
150+ body .Scope = model .Scope .toAPIRequest ()
274151
275152 return body , diags
276153}
@@ -382,3 +259,93 @@ func (model *MaintenanceWindowModel) _fromAPIResponse(ctx context.Context, respo
382259
383260 return diags
384261}
262+
263+ /* HELPERS */
264+
265+ func (model * MaintenanceWindowScope ) toAPIRequest () * struct {
266+ Alerting struct {
267+ Query struct {
268+ Kql string `json:"kql"`
269+ } `json:"query"`
270+ } `json:"alerting"`
271+ } {
272+ if model == nil {
273+ return nil
274+ }
275+
276+ return & struct {
277+ Alerting struct {
278+ Query struct {
279+ Kql string `json:"kql"`
280+ } `json:"query"`
281+ } `json:"alerting"`
282+ }{
283+ Alerting : struct {
284+ Query struct {
285+ Kql string `json:"kql"`
286+ } `json:"query"`
287+ }{
288+ Query : struct {
289+ Kql string `json:"kql"`
290+ }{
291+ Kql : model .Alerting .Kql .ValueString (),
292+ },
293+ },
294+ }
295+ }
296+
297+ func (model * MaintenanceWindowScheduleRecurring ) toAPIRequest (ctx context.Context ) (* struct {
298+ End * string `json:"end,omitempty"`
299+ Every * string `json:"every,omitempty"`
300+ Occurrences * float32 `json:"occurrences,omitempty"`
301+ OnMonth * []float32 `json:"onMonth,omitempty"`
302+ OnMonthDay * []float32 `json:"onMonthDay,omitempty"`
303+ OnWeekDay * []string `json:"onWeekDay,omitempty"`
304+ }, diag.Diagnostics ) {
305+ if model == nil {
306+ return nil , nil
307+ }
308+
309+ var diags diag.Diagnostics
310+ result := & struct {
311+ End * string `json:"end,omitempty"`
312+ Every * string `json:"every,omitempty"`
313+ Occurrences * float32 `json:"occurrences,omitempty"`
314+ OnMonth * []float32 `json:"onMonth,omitempty"`
315+ OnMonthDay * []float32 `json:"onMonthDay,omitempty"`
316+ OnWeekDay * []string `json:"onWeekDay,omitempty"`
317+ }{}
318+
319+ if utils .IsKnown (model .End ) {
320+ result .End = model .End .ValueStringPointer ()
321+ }
322+
323+ if utils .IsKnown (model .Every ) {
324+ result .Every = model .Every .ValueStringPointer ()
325+ }
326+
327+ if utils .IsKnown (model .Occurrences ) {
328+ occurrences := float32 (model .Occurrences .ValueInt32 ())
329+ result .Occurrences = & occurrences
330+ }
331+
332+ if utils .IsKnown (model .OnWeekDay ) {
333+ var onWeekDay []string
334+ diags .Append (model .OnWeekDay .ElementsAs (ctx , & onWeekDay , true )... )
335+ result .OnWeekDay = & onWeekDay
336+ }
337+
338+ if utils .IsKnown (model .OnMonth ) {
339+ var onMonth []float32
340+ diags .Append (model .OnMonth .ElementsAs (ctx , & onMonth , true )... )
341+ result .OnMonth = & onMonth
342+ }
343+
344+ if utils .IsKnown (model .OnMonthDay ) {
345+ var onMonthDay []float32
346+ diags .Append (model .OnMonthDay .ElementsAs (ctx , & onMonthDay , true )... )
347+ result .OnMonthDay = & onMonthDay
348+ }
349+
350+ return result , diags
351+ }
0 commit comments