Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

### Fastly Store Resources
- ✅ **`fastly_configstore`** - Config store resources
- ✅ **`fastly_configstore_entries`** - Config store key/value entries
- ✅ **`fastly_kvstore`** - Key-value store resources
- ✅ **`fastly_secretstore`** - Secret store resources

Expand Down
53 changes: 53 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,54 @@ func importConfigStores(client *fastly.Client, rootBody *hclwrite.Body) (int, er
return importCount, nil
}

// importConfigStoreEntries handles importing fastly_configstore_entries resources,
// one per Config Store, covering the key/value entries within each store.
func importConfigStoreEntries(client *fastly.Client, rootBody *hclwrite.Body) (int, error) {
fmt.Println("\nFetching Fastly Config Stores for entries import...")

configStores, err := client.ListConfigStores(context.Background(), &fastly.ListConfigStoresInput{})
if err != nil {
log.Printf("Error listing Config Stores: %v. Skipping Config Store Entries imports.", err)
return 0, err
}
Comment thread
BrooksCunningham marked this conversation as resolved.

importCount := 0
if len(configStores) == 0 {
fmt.Println("No Config Stores found for this account.")
} else {
fmt.Printf("Found %d Config Store(s). Adding entries imports to import.tf...\n", len(configStores))

for _, store := range configStores {
if store.StoreID == "" {
log.Printf("Skipping Config Store Entries with empty store ID (Name: %s)\n", store.Name)
continue
}

tfStoreResourceName := sanitizeForTerraformResourceName(store.Name, "configstore")
if store.Name == "" || tfStoreResourceName == "configstore_unnamed" || tfStoreResourceName == "configstore_sanitized_empty" {
sanitizedIDForName := sanitizeForTerraformResourceName(store.StoreID, "store")
tfStoreResourceName = fmt.Sprintf("configstore_%s", sanitizedIDForName)
}
Comment thread
BrooksCunningham marked this conversation as resolved.
tfEntriesResourceName := tfStoreResourceName + "_entries"

entriesImportBlock := rootBody.AppendNewBlock("import", nil)
entriesImportBody := entriesImportBlock.Body()
entriesImportBody.SetAttributeValue("id", cty.StringVal(fmt.Sprintf("%s/entries", store.StoreID)))

entriesImportBody.SetAttributeTraversal("to", hcl.Traversal{
hcl.TraverseRoot{Name: "fastly_configstore_entries"},
hcl.TraverseAttr{Name: tfEntriesResourceName},
})
rootBody.AppendNewline()
importCount++

fmt.Printf(" Added import for Config Store Entries: %s (ID: %s/entries) as fastly_configstore_entries.%s\n", store.Name, store.StoreID, tfEntriesResourceName)
}
}

return importCount, nil
}

// importKVStores handles importing Fastly KV Store resources
func importKVStores(client *fastly.Client, rootBody *hclwrite.Body) (int, error) {
fmt.Println("\nFetching Fastly KV Stores...")
Expand Down Expand Up @@ -1816,6 +1864,11 @@ func main() {
importCount += configStoreImportCount
}

configStoreEntriesImportCount, err := importConfigStoreEntries(client, rootBody)
if err == nil {
importCount += configStoreEntriesImportCount
}

kvStoreImportCount, err := importKVStores(client, rootBody)
if err == nil {
importCount += kvStoreImportCount
Expand Down
Loading