@@ -18,6 +18,7 @@ func ResourceCockpitSource() *schema.Resource {
1818 return & schema.Resource {
1919 CreateContext : ResourceCockpitSourceCreate ,
2020 ReadContext : ResourceCockpitSourceRead ,
21+ UpdateContext : ResourceCockpitSourceUpdate ,
2122 DeleteContext : ResourceCockpitSourceDelete ,
2223 Timeouts : & schema.ResourceTimeout {
2324 Create : schema .DefaultTimeout (DefaultCockpitTimeout ),
@@ -46,7 +47,6 @@ func ResourceCockpitSource() *schema.Resource {
4647 Type : schema .TypeInt ,
4748 Optional : true ,
4849 Default : 6 ,
49- ForceNew : true ,
5050 Description : "The number of days to retain data, must be between 1 and 365." ,
5151 },
5252 // computed
@@ -93,6 +93,9 @@ func ResourceCockpitSourceCreate(ctx context.Context, d *schema.ResourceData, me
9393 }
9494
9595 retentionDays := uint32 (d .Get ("retention_days" ).(int ))
96+ if retentionDays == 0 {
97+ retentionDays = 6
98+ }
9699
97100 res , err := api .CreateDataSource (& cockpit.RegionalAPICreateDataSourceRequest {
98101 Region : region ,
@@ -101,7 +104,6 @@ func ResourceCockpitSourceCreate(ctx context.Context, d *schema.ResourceData, me
101104 Type : cockpit .DataSourceType (d .Get ("type" ).(string )),
102105 RetentionDays : & retentionDays ,
103106 }, scw .WithContext (ctx ))
104-
105107 if err != nil {
106108 return diag .FromErr (err )
107109 }
@@ -143,7 +145,38 @@ func ResourceCockpitSourceRead(ctx context.Context, d *schema.ResourceData, meta
143145 _ = d .Set ("updated_at" , types .FlattenTime (res .UpdatedAt ))
144146 _ = d .Set ("project_id" , res .ProjectID )
145147 _ = 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+ }
147180
148181 return nil
149182}
0 commit comments