apache / apache/cloudstack-terraform-provider

Add import support to cloudstack_domain (requires implementing the currently no-op Read)

Aperta
#304 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
improvement
Lingua principale
Go
Stelle
53
Fork
67
Merge medio
3g 14h
PR unite (30g)
15

Descrizione

### Summary

`cloudstack_domain` (cloudstack/resource_cloudstack_domain.go) currently declares no
`Importer`, so pre-existing domains cannot be brought under Terraform management. Since the
domain tree is typically created long before Terraform adoption, import support is essential
for brownfield adoption and for codifying an existing CloudStack environment.

### Current state

Two things block import today:

1. The resource schema declares no `schema.ResourceImporter`.
2. `resourceCloudStackDomainRead` is a stub that makes no API call:

func resourceCloudStackDomainRead(d *schema.ResourceData, meta interface{}) error {
return nil
}

Adding an importer alone would therefore import an empty state - a working `Read` is a
prerequisite. (The stub also means the resource never detects drift or out-of-band deletion
for domains it created, so implementing `Read` fixes refresh behavior as a side benefit.)

### Proposed change

1. Implement `resourceCloudStackDomainRead`:
- call `listDomains` with `id=d.Id()` (and `listall=true`),
- on `count: 0`, call `d.SetId("")` so Terraform drops the missing resource,
- populate the schema attributes from the response (`name`, `network_domain`,
`parent_domain_id` from `parentdomainid`, `domain_id`).
2. Add the importer, following the same pattern used by the other SDK-based resources in this
provider:

Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
},

The import id would be the domain UUID, consistent with the other resources.

Note that `listDomains` is an admin-scoped command, but that matches the resource itself -
only admins can create domains, so any credentials able to manage `cloudstack_domain` can
also read it.

### Environment

- Provider version: latest
- CloudStack version: latest

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia in cloudstack/resource_cloudstack_domain.go con resourceCloudStackDomainRead e lo schema della risorsa, quindi confronta il pattern dell’importer utilizzato dalle altre risorse basate su SDK. Traccia listDomains con un ID ed esegui i test pertinenti del provider; il lavoro è completato quando i domini importati valorizzano gli attributi elencati e i domini mancanti vengono rimossi dallo state.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
go, terraform
Ambito
cloud, infrastructure
Tipo di issue
Funzionalità
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Tranquilla
Chiarezza
Specificata chiaramente
Idoneità per principianti
74/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.