5
5
6
6
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
7
7
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8
- cockpit "github.com/scaleway/scaleway-sdk-go/api/cockpit/v1beta1 "
8
+ "github.com/scaleway/scaleway-sdk-go/api/cockpit/v1 "
9
9
"github.com/scaleway/scaleway-sdk-go/scw"
10
- "github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
11
10
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
12
11
)
13
12
@@ -17,12 +16,6 @@ func ResourceCockpit() *schema.Resource {
17
16
ReadContext : ResourceCockpitRead ,
18
17
UpdateContext : ResourceCockpitUpdate ,
19
18
DeleteContext : ResourceCockpitDelete ,
20
- Timeouts : & schema.ResourceTimeout {
21
- Create : schema .DefaultTimeout (DefaultCockpitTimeout ),
22
- Read : schema .DefaultTimeout (DefaultCockpitTimeout ),
23
- Delete : schema .DefaultTimeout (DefaultCockpitTimeout ),
24
- Default : schema .DefaultTimeout (DefaultCockpitTimeout ),
25
- },
26
19
Importer : & schema.ResourceImporter {
27
20
StateContext : schema .ImportStatePassthroughContext ,
28
21
},
@@ -37,11 +30,13 @@ func ResourceCockpit() *schema.Resource {
37
30
Type : schema .TypeString ,
38
31
Computed : true ,
39
32
Description : "The plan ID of the cockpit" ,
33
+ Deprecated : "Please use Name only" ,
40
34
},
41
35
"endpoints" : {
42
36
Type : schema .TypeList ,
43
37
Computed : true ,
44
38
Description : "Endpoints" ,
39
+ Deprecated : "Please use `scaleway_cockpit_source` instead" ,
45
40
Elem : & schema.Resource {
46
41
Schema : map [string ]* schema.Schema {
47
42
"metrics_url" : {
@@ -76,6 +71,7 @@ func ResourceCockpit() *schema.Resource {
76
71
Type : schema .TypeList ,
77
72
Computed : true ,
78
73
Description : "Push_url" ,
74
+ Deprecated : "Please use `scaleway_cockpit_source` instead" ,
79
75
Elem : & schema.Resource {
80
76
Schema : map [string ]* schema.Schema {
81
77
"push_metrics_url" : {
@@ -96,114 +92,135 @@ func ResourceCockpit() *schema.Resource {
96
92
}
97
93
98
94
func ResourceCockpitCreate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
99
- api , err := NewAPI (m )
95
+ api , err := NewGlobalAPI (m )
100
96
if err != nil {
101
97
return diag .FromErr (err )
102
98
}
103
99
104
100
projectID := d .Get ("project_id" ).(string )
105
-
106
- res , err := api .ActivateCockpit (& cockpit.ActivateCockpitRequest {
107
- ProjectID : projectID ,
108
- }, scw .WithContext (ctx ))
109
- if err != nil {
110
- return diag .FromErr (err )
111
- }
112
-
113
101
if targetPlanI , ok := d .GetOk ("plan" ); ok {
114
102
targetPlan := targetPlanI .(string )
115
103
116
- plans , err := api .ListPlans (& cockpit.ListPlansRequest {}, scw .WithContext (ctx ), scw .WithAllPages ())
104
+ plans , err := api .ListPlans (& cockpit.GlobalAPIListPlansRequest {}, scw .WithContext (ctx ), scw .WithAllPages ())
117
105
if err != nil {
118
106
return diag .FromErr (err )
119
107
}
120
108
121
- var planID string
109
+ var planName string
122
110
for _ , plan := range plans .Plans {
123
- if plan .Name .String () == targetPlan || plan . ID == targetPlan {
124
- planID = plan .ID
111
+ if plan .Name .String () == targetPlan {
112
+ planName = plan .Name . String ()
125
113
break
126
114
}
127
115
}
128
116
129
- if planID == "" {
117
+ if planName == "" {
130
118
return diag .Errorf ("plan %s not found" , targetPlan )
131
119
}
132
120
133
- _ , err = api .SelectPlan (& cockpit.SelectPlanRequest {
121
+ _ , err = api .SelectPlan (& cockpit.GlobalAPISelectPlanRequest {
134
122
ProjectID : projectID ,
135
- PlanID : planID ,
123
+ PlanName : cockpit . PlanName ( planName ) ,
136
124
}, scw .WithContext (ctx ))
137
125
if err != nil {
138
126
return diag .FromErr (err )
139
127
}
140
128
}
141
129
142
- d .SetId (res . ProjectID )
130
+ d .SetId (projectID )
143
131
return ResourceCockpitRead (ctx , d , m )
144
132
}
145
133
146
134
func ResourceCockpitRead (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
147
- api , err := NewAPI (m )
135
+ api , err := NewGlobalAPI (m )
148
136
if err != nil {
149
137
return diag .FromErr (err )
150
138
}
151
139
152
- res , err := waitForCockpit (ctx , api , d .Id (), d .Timeout (schema .TimeoutRead ))
140
+ regionalAPI , region , err := cockpitAPIWithRegion (d , m )
141
+ if err != nil {
142
+ return diag .FromErr (err )
143
+ }
144
+
145
+ res , err := api .GetCurrentPlan (& cockpit.GlobalAPIGetCurrentPlanRequest {
146
+ ProjectID : d .Get ("project_id" ).(string ),
147
+ }, scw .WithContext (ctx ))
148
+ if err != nil {
149
+ return diag .FromErr (err )
150
+ }
151
+ _ = d .Set ("project_id" , d .Get ("project_id" ).(string ))
152
+ _ = d .Set ("plan" , res .Name .String ())
153
+ _ = d .Set ("plan_id" , res .Name .String ())
154
+
155
+ dataSourcesRes , err := regionalAPI .ListDataSources (& cockpit.RegionalAPIListDataSourcesRequest {
156
+ Region : region ,
157
+ ProjectID : d .Get ("project_id" ).(string ),
158
+ Origin : "external" ,
159
+ }, scw .WithContext (ctx ), scw .WithAllPages ())
160
+ if err != nil {
161
+ return diag .FromErr (err )
162
+ }
163
+
164
+ grafana , err := api .GetGrafana (& cockpit.GlobalAPIGetGrafanaRequest {
165
+ ProjectID : d .Get ("project_id" ).(string ),
166
+ }, scw .WithContext (ctx ))
167
+ if err != nil {
168
+ return diag .FromErr (err )
169
+ }
170
+
171
+ alertManager , err := regionalAPI .GetAlertManager (& cockpit.RegionalAPIGetAlertManagerRequest {
172
+ ProjectID : d .Get ("project_id" ).(string ),
173
+ })
153
174
if err != nil {
154
- if httperrors .Is404 (err ) {
155
- d .SetId ("" )
156
- return nil
157
- }
158
175
return diag .FromErr (err )
159
176
}
177
+ alertManagerURL := ""
178
+ if alertManager .AlertManagerURL != nil {
179
+ alertManagerURL = * alertManager .AlertManagerURL
180
+ }
160
181
161
- _ = d . Set ( "project_id" , res . ProjectID )
162
- _ = d . Set ( "plan_id" , res . Plan . ID )
163
- _ = d .Set ("endpoints" , flattenCockpitEndpoints ( res . Endpoints ) )
164
- _ = d .Set ("push_url" , createCockpitPushURL (res . Endpoints ))
182
+ endpoints := flattenCockpitEndpoints ( dataSourcesRes . DataSources , grafana . GrafanaURL , alertManagerURL )
183
+
184
+ _ = d .Set ("endpoints" , endpoints )
185
+ _ = d .Set ("push_url" , createCockpitPushURL (endpoints ))
165
186
166
187
return nil
167
188
}
168
189
169
190
func ResourceCockpitUpdate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
170
- api , err := NewAPI (m )
191
+ api , err := NewGlobalAPI (m )
171
192
if err != nil {
172
193
return diag .FromErr (err )
173
194
}
174
195
175
196
projectID := d .Id ()
176
- _ , err = waitForCockpit (ctx , api , projectID , d .Timeout (schema .TimeoutDelete ))
177
- if err != nil {
178
- return diag .FromErr (err )
179
- }
180
197
181
198
if d .HasChange ("plan" ) {
182
199
targetPlan := cockpit .PlanNameFree .String ()
183
200
if targetPlanI , ok := d .GetOk ("plan" ); ok {
184
201
targetPlan = targetPlanI .(string )
185
202
}
186
203
187
- plans , err := api .ListPlans (& cockpit.ListPlansRequest {}, scw .WithContext (ctx ), scw .WithAllPages ())
204
+ plans , err := api .ListPlans (& cockpit.GlobalAPIListPlansRequest {}, scw .WithContext (ctx ), scw .WithAllPages ())
188
205
if err != nil {
189
206
return diag .FromErr (err )
190
207
}
191
208
192
- var planID string
209
+ var planName string
193
210
for _ , plan := range plans .Plans {
194
- if plan .Name .String () == targetPlan || plan . ID == targetPlan {
195
- planID = plan .ID
211
+ if plan .Name .String () == targetPlan {
212
+ planName = plan .Name . String ()
196
213
break
197
214
}
198
215
}
199
216
200
- if planID == "" {
217
+ if planName == "" {
201
218
return diag .Errorf ("plan %s not found" , targetPlan )
202
219
}
203
220
204
- _ , err = api .SelectPlan (& cockpit.SelectPlanRequest {
221
+ _ , err = api .SelectPlan (& cockpit.GlobalAPISelectPlanRequest {
205
222
ProjectID : projectID ,
206
- PlanID : planID ,
223
+ PlanName : cockpit . PlanName ( planName ) ,
207
224
}, scw .WithContext (ctx ))
208
225
if err != nil {
209
226
return diag .FromErr (err )
@@ -213,32 +230,6 @@ func ResourceCockpitUpdate(ctx context.Context, d *schema.ResourceData, m interf
213
230
return ResourceCockpitRead (ctx , d , m )
214
231
}
215
232
216
- func ResourceCockpitDelete (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
217
- api , err := NewAPI (m )
218
- if err != nil {
219
- return diag .FromErr (err )
220
- }
221
-
222
- _ , err = waitForCockpit (ctx , api , d .Id (), d .Timeout (schema .TimeoutDelete ))
223
- if err != nil {
224
- if httperrors .Is404 (err ) {
225
- d .SetId ("" )
226
- return nil
227
- }
228
- return diag .FromErr (err )
229
- }
230
-
231
- _ , err = api .DeactivateCockpit (& cockpit.DeactivateCockpitRequest {
232
- ProjectID : d .Id (),
233
- }, scw .WithContext (ctx ))
234
- if err != nil && ! httperrors .Is404 (err ) {
235
- return diag .FromErr (err )
236
- }
237
-
238
- _ , err = waitForCockpit (ctx , api , d .Id (), d .Timeout (schema .TimeoutDelete ))
239
- if err != nil && ! httperrors .Is404 (err ) {
240
- return diag .FromErr (err )
241
- }
242
-
233
+ func ResourceCockpitDelete (_ context.Context , _ * schema.ResourceData , _ interface {}) diag.Diagnostics {
243
234
return nil
244
235
}
0 commit comments