From adfa470bd479c444241e525253d85e0ba28f700d Mon Sep 17 00:00:00 2001 From: nutcas3 Date: Fri, 17 Apr 2026 17:38:09 +0300 Subject: [PATCH] feat: Add Terraform provider main entry point with schema definition and resource/data source registration - Add main function with plugin.Serve to initialize Terraform provider plugin - Add Provider function returning schema.Provider with api_url and api_key configuration - Add api_url schema with TELECOM_API_URL environment variable fallback to http://localhost:8000 - Add api_key schema with TELECOM_API_KEY environment variable, marked as sensitive and optional - Register resources: telecom_subscriber and --- terraform/provider/main.go | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 terraform/provider/main.go diff --git a/terraform/provider/main.go b/terraform/provider/main.go new file mode 100644 index 0000000..ccc1be6 --- /dev/null +++ b/terraform/provider/main.go @@ -0,0 +1,41 @@ +package main + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/plugin" +) + +func main() { + plugin.Serve(&plugin.ServeOpts{ + ProviderFunc: Provider, + }) +} + +func Provider() *schema.Provider { + return &schema.Provider{ + Schema: map[string]*schema.Schema{ + "api_url": { + Type: schema.TypeString, + Required: true, + DefaultFunc: schema.EnvDefaultFunc("TELECOM_API_URL", "http://localhost:8000"), + Description: "The base URL of the Telecom API server.", + }, + "api_key": { + Type: schema.TypeString, + Optional: true, + Sensitive: true, + DefaultFunc: schema.EnvDefaultFunc("TELECOM_API_KEY", nil), + Description: "API key for authenticating with the Telecom API.", + }, + }, + ResourcesMap: map[string]*schema.Resource{ + "telecom_subscriber": resourceSubscriber(), + "telecom_rating_plan": resourceRatingPlan(), + }, + DataSourcesMap: map[string]*schema.Resource{ + "telecom_subscriber": dataSourceSubscriber(), + "telecom_system_stats": dataSourceSystemStats(), + }, + ConfigureContextFunc: providerConfigure, + } +}