@@ -28,6 +28,10 @@ import (
28
28
type CertificateServiceIface interface {
29
29
UploadCustomCertificate (p * UploadCustomCertificateParams ) (* UploadCustomCertificateResponse , error )
30
30
NewUploadCustomCertificateParams (certificate string , domainsuffix string ) * UploadCustomCertificateParams
31
+ ListCAProviders (p * ListCAProvidersParams ) (* ListCAProvidersResponse , error )
32
+ NewListCAProvidersParams () * ListCAProvidersParams
33
+ ProvisionCertificate (p * ProvisionCertificateParams ) (* ProvisionCertificateResponse , error )
34
+ NewProvisionCertificateParams (hostid string ) * ProvisionCertificateParams
31
35
}
32
36
33
37
type UploadCustomCertificateParams struct {
@@ -213,3 +217,205 @@ type UploadCustomCertificateResponse struct {
213
217
Jobstatus int `json:"jobstatus"`
214
218
Message string `json:"message"`
215
219
}
220
+
221
+ type ListCAProvidersParams struct {
222
+ p map [string ]interface {}
223
+ }
224
+
225
+ func (p * ListCAProvidersParams ) toURLValues () url.Values {
226
+ u := url.Values {}
227
+ if p .p == nil {
228
+ return u
229
+ }
230
+ if v , found := p .p ["name" ]; found {
231
+ u .Set ("name" , v .(string ))
232
+ }
233
+ return u
234
+ }
235
+
236
+ func (p * ListCAProvidersParams ) SetName (v string ) {
237
+ if p .p == nil {
238
+ p .p = make (map [string ]interface {})
239
+ }
240
+ p .p ["name" ] = v
241
+ }
242
+
243
+ func (p * ListCAProvidersParams ) ResetName () {
244
+ if p .p != nil && p .p ["name" ] != nil {
245
+ delete (p .p , "name" )
246
+ }
247
+ }
248
+
249
+ func (p * ListCAProvidersParams ) GetName () (string , bool ) {
250
+ if p .p == nil {
251
+ p .p = make (map [string ]interface {})
252
+ }
253
+ value , ok := p .p ["name" ].(string )
254
+ return value , ok
255
+ }
256
+
257
+ // You should always use this function to get a new ListCAProvidersParams instance,
258
+ // as then you are sure you have configured all required params
259
+ func (s * CertificateService ) NewListCAProvidersParams () * ListCAProvidersParams {
260
+ p := & ListCAProvidersParams {}
261
+ p .p = make (map [string ]interface {})
262
+ return p
263
+ }
264
+
265
+ // Lists available certificate authority providers in CloudStack
266
+ func (s * CertificateService ) ListCAProviders (p * ListCAProvidersParams ) (* ListCAProvidersResponse , error ) {
267
+ resp , err := s .cs .newRequest ("listCAProviders" , p .toURLValues ())
268
+ if err != nil {
269
+ return nil , err
270
+ }
271
+
272
+ var r ListCAProvidersResponse
273
+ if err := json .Unmarshal (resp , & r ); err != nil {
274
+ return nil , err
275
+ }
276
+
277
+ return & r , nil
278
+ }
279
+
280
+ type ListCAProvidersResponse struct {
281
+ Count int `json:"count"`
282
+ CAProviders []* CAProvider `json:"caprovider"`
283
+ }
284
+
285
+ type CAProvider struct {
286
+ Description string `json:"description"`
287
+ JobID string `json:"jobid"`
288
+ Jobstatus int `json:"jobstatus"`
289
+ Name string `json:"name"`
290
+ }
291
+
292
+ type ProvisionCertificateParams struct {
293
+ p map [string ]interface {}
294
+ }
295
+
296
+ func (p * ProvisionCertificateParams ) toURLValues () url.Values {
297
+ u := url.Values {}
298
+ if p .p == nil {
299
+ return u
300
+ }
301
+ if v , found := p .p ["hostid" ]; found {
302
+ u .Set ("hostid" , v .(string ))
303
+ }
304
+ if v , found := p .p ["provider" ]; found {
305
+ u .Set ("provider" , v .(string ))
306
+ }
307
+ if v , found := p .p ["reconnect" ]; found {
308
+ vv := strconv .FormatBool (v .(bool ))
309
+ u .Set ("reconnect" , vv )
310
+ }
311
+ return u
312
+ }
313
+
314
+ func (p * ProvisionCertificateParams ) SetHostid (v string ) {
315
+ if p .p == nil {
316
+ p .p = make (map [string ]interface {})
317
+ }
318
+ p .p ["hostid" ] = v
319
+ }
320
+
321
+ func (p * ProvisionCertificateParams ) ResetHostid () {
322
+ if p .p != nil && p .p ["hostid" ] != nil {
323
+ delete (p .p , "hostid" )
324
+ }
325
+ }
326
+
327
+ func (p * ProvisionCertificateParams ) GetHostid () (string , bool ) {
328
+ if p .p == nil {
329
+ p .p = make (map [string ]interface {})
330
+ }
331
+ value , ok := p .p ["hostid" ].(string )
332
+ return value , ok
333
+ }
334
+
335
+ func (p * ProvisionCertificateParams ) SetProvider (v string ) {
336
+ if p .p == nil {
337
+ p .p = make (map [string ]interface {})
338
+ }
339
+ p .p ["provider" ] = v
340
+ }
341
+
342
+ func (p * ProvisionCertificateParams ) ResetProvider () {
343
+ if p .p != nil && p .p ["provider" ] != nil {
344
+ delete (p .p , "provider" )
345
+ }
346
+ }
347
+
348
+ func (p * ProvisionCertificateParams ) GetProvider () (string , bool ) {
349
+ if p .p == nil {
350
+ p .p = make (map [string ]interface {})
351
+ }
352
+ value , ok := p .p ["provider" ].(string )
353
+ return value , ok
354
+ }
355
+
356
+ func (p * ProvisionCertificateParams ) SetReconnect (v bool ) {
357
+ if p .p == nil {
358
+ p .p = make (map [string ]interface {})
359
+ }
360
+ p .p ["reconnect" ] = v
361
+ }
362
+
363
+ func (p * ProvisionCertificateParams ) ResetReconnect () {
364
+ if p .p != nil && p .p ["reconnect" ] != nil {
365
+ delete (p .p , "reconnect" )
366
+ }
367
+ }
368
+
369
+ func (p * ProvisionCertificateParams ) GetReconnect () (bool , bool ) {
370
+ if p .p == nil {
371
+ p .p = make (map [string ]interface {})
372
+ }
373
+ value , ok := p .p ["reconnect" ].(bool )
374
+ return value , ok
375
+ }
376
+
377
+ // You should always use this function to get a new ProvisionCertificateParams instance,
378
+ // as then you are sure you have configured all required params
379
+ func (s * CertificateService ) NewProvisionCertificateParams (hostid string ) * ProvisionCertificateParams {
380
+ p := & ProvisionCertificateParams {}
381
+ p .p = make (map [string ]interface {})
382
+ p .p ["hostid" ] = hostid
383
+ return p
384
+ }
385
+
386
+ // Issues and propagates client certificate on a connected host/agent using configured CA plugin
387
+ func (s * CertificateService ) ProvisionCertificate (p * ProvisionCertificateParams ) (* ProvisionCertificateResponse , error ) {
388
+ resp , err := s .cs .newRequest ("provisionCertificate" , p .toURLValues ())
389
+ if err != nil {
390
+ return nil , err
391
+ }
392
+
393
+ var r ProvisionCertificateResponse
394
+ if err := json .Unmarshal (resp , & r ); err != nil {
395
+ return nil , err
396
+ }
397
+
398
+ // If we have a async client, we need to wait for the async result
399
+ if s .cs .async {
400
+ b , err := s .cs .GetAsyncJobResult (r .JobID , s .cs .timeout )
401
+ if err != nil {
402
+ if err == AsyncTimeoutErr {
403
+ return & r , err
404
+ }
405
+ return nil , err
406
+ }
407
+
408
+ if err := json .Unmarshal (b , & r ); err != nil {
409
+ return nil , err
410
+ }
411
+ }
412
+
413
+ return & r , nil
414
+ }
415
+
416
+ type ProvisionCertificateResponse struct {
417
+ Displaytext string `json:"displaytext"`
418
+ JobID string `json:"jobid"`
419
+ Jobstatus int `json:"jobstatus"`
420
+ Success bool `json:"success"`
421
+ }
0 commit comments