@@ -18,6 +18,7 @@ func ResourceCockpitSource() *schema.Resource {
18
18
return & schema.Resource {
19
19
CreateContext : ResourceCockpitSourceCreate ,
20
20
ReadContext : ResourceCockpitSourceRead ,
21
+ UpdateContext : ResourceCockpitSourceUpdate ,
21
22
DeleteContext : ResourceCockpitSourceDelete ,
22
23
Timeouts : & schema.ResourceTimeout {
23
24
Create : schema .DefaultTimeout (DefaultCockpitTimeout ),
@@ -46,7 +47,6 @@ func ResourceCockpitSource() *schema.Resource {
46
47
Type : schema .TypeInt ,
47
48
Optional : true ,
48
49
Default : 6 ,
49
- ForceNew : true ,
50
50
Description : "The number of days to retain data, must be between 1 and 365." ,
51
51
},
52
52
// computed
@@ -93,6 +93,9 @@ func ResourceCockpitSourceCreate(ctx context.Context, d *schema.ResourceData, me
93
93
}
94
94
95
95
retentionDays := uint32 (d .Get ("retention_days" ).(int ))
96
+ if retentionDays == 0 {
97
+ retentionDays = 6
98
+ }
96
99
97
100
res , err := api .CreateDataSource (& cockpit.RegionalAPICreateDataSourceRequest {
98
101
Region : region ,
@@ -101,7 +104,6 @@ func ResourceCockpitSourceCreate(ctx context.Context, d *schema.ResourceData, me
101
104
Type : cockpit .DataSourceType (d .Get ("type" ).(string )),
102
105
RetentionDays : & retentionDays ,
103
106
}, scw .WithContext (ctx ))
104
-
105
107
if err != nil {
106
108
return diag .FromErr (err )
107
109
}
@@ -143,7 +145,38 @@ func ResourceCockpitSourceRead(ctx context.Context, d *schema.ResourceData, meta
143
145
_ = d .Set ("updated_at" , types .FlattenTime (res .UpdatedAt ))
144
146
_ = d .Set ("project_id" , res .ProjectID )
145
147
_ = d .Set ("push_url" , pushURL )
146
- _ = d .Set ("retention_days" , res .RetentionDays )
148
+ _ = d .Set ("retention_days" , int (res .RetentionDays ))
149
+
150
+ return nil
151
+ }
152
+
153
+ func ResourceCockpitSourceUpdate (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
154
+ api , region , id , err := NewAPIWithRegionAndID (meta , d .Id ())
155
+ if err != nil {
156
+ return diag .FromErr (err )
157
+ }
158
+
159
+ updateRequest := & cockpit.RegionalAPIUpdateDataSourceRequest {
160
+ DataSourceID : id ,
161
+ Region : region ,
162
+ }
163
+
164
+ if d .HasChange ("name" ) {
165
+ name := d .Get ("name" ).(string )
166
+ updateRequest .Name = & name
167
+ }
168
+
169
+ if d .HasChange ("retention_days" ) {
170
+ retentionDays := uint32 (d .Get ("retention_days" ).(int ))
171
+ updateRequest .RetentionDays = & retentionDays
172
+ }
173
+
174
+ if updateRequest .Name != nil || updateRequest .RetentionDays != nil {
175
+ _ , err = api .UpdateDataSource (updateRequest , scw .WithContext (ctx ))
176
+ if err != nil {
177
+ return diag .FromErr (err )
178
+ }
179
+ }
147
180
148
181
return nil
149
182
}
0 commit comments