provider/provider.go (105 lines of code) (raw):
package provider
import (
"github.com/elastic/terraform-provider-elasticstack/internal/clients"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/cluster"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/enrich"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/index"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/ingest"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/logstash"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/security"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/transform"
"github.com/elastic/terraform-provider-elasticstack/internal/elasticsearch/watcher"
"github.com/elastic/terraform-provider-elasticstack/internal/kibana"
providerSchema "github.com/elastic/terraform-provider-elasticstack/internal/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
const esKeyName = "elasticsearch"
const kbKeyName = "kibana"
const fleetKeyName = "fleet"
func init() {
// Set descriptions to support markdown syntax, this will be used in document generation
// and the language server.
schema.DescriptionKind = schema.StringMarkdown
}
func New(version string) *schema.Provider {
p := &schema.Provider{
Schema: map[string]*schema.Schema{
esKeyName: providerSchema.GetEsConnectionSchema(esKeyName, true),
kbKeyName: providerSchema.GetKibanaConnectionSchema(),
fleetKeyName: providerSchema.GetFleetConnectionSchema(),
},
DataSourcesMap: map[string]*schema.Resource{
"elasticstack_elasticsearch_index_template": index.DataSourceTemplate(),
"elasticstack_elasticsearch_ingest_processor_append": ingest.DataSourceProcessorAppend(),
"elasticstack_elasticsearch_ingest_processor_bytes": ingest.DataSourceProcessorBytes(),
"elasticstack_elasticsearch_ingest_processor_circle": ingest.DataSourceProcessorCircle(),
"elasticstack_elasticsearch_ingest_processor_community_id": ingest.DataSourceProcessorCommunityId(),
"elasticstack_elasticsearch_ingest_processor_convert": ingest.DataSourceProcessorConvert(),
"elasticstack_elasticsearch_ingest_processor_csv": ingest.DataSourceProcessorCSV(),
"elasticstack_elasticsearch_ingest_processor_date": ingest.DataSourceProcessorDate(),
"elasticstack_elasticsearch_ingest_processor_date_index_name": ingest.DataSourceProcessorDateIndexName(),
"elasticstack_elasticsearch_ingest_processor_dissect": ingest.DataSourceProcessorDissect(),
"elasticstack_elasticsearch_ingest_processor_dot_expander": ingest.DataSourceProcessorDotExpander(),
"elasticstack_elasticsearch_ingest_processor_drop": ingest.DataSourceProcessorDrop(),
"elasticstack_elasticsearch_ingest_processor_enrich": ingest.DataSourceProcessorEnrich(),
"elasticstack_elasticsearch_ingest_processor_fail": ingest.DataSourceProcessorFail(),
"elasticstack_elasticsearch_ingest_processor_fingerprint": ingest.DataSourceProcessorFingerprint(),
"elasticstack_elasticsearch_ingest_processor_foreach": ingest.DataSourceProcessorForeach(),
"elasticstack_elasticsearch_ingest_processor_geoip": ingest.DataSourceProcessorGeoip(),
"elasticstack_elasticsearch_ingest_processor_grok": ingest.DataSourceProcessorGrok(),
"elasticstack_elasticsearch_ingest_processor_gsub": ingest.DataSourceProcessorGsub(),
"elasticstack_elasticsearch_ingest_processor_html_strip": ingest.DataSourceProcessorHtmlStrip(),
"elasticstack_elasticsearch_ingest_processor_join": ingest.DataSourceProcessorJoin(),
"elasticstack_elasticsearch_ingest_processor_json": ingest.DataSourceProcessorJson(),
"elasticstack_elasticsearch_ingest_processor_kv": ingest.DataSourceProcessorKV(),
"elasticstack_elasticsearch_ingest_processor_lowercase": ingest.DataSourceProcessorLowercase(),
"elasticstack_elasticsearch_ingest_processor_network_direction": ingest.DataSourceProcessorNetworkDirection(),
"elasticstack_elasticsearch_ingest_processor_pipeline": ingest.DataSourceProcessorPipeline(),
"elasticstack_elasticsearch_ingest_processor_registered_domain": ingest.DataSourceProcessorRegisteredDomain(),
"elasticstack_elasticsearch_ingest_processor_remove": ingest.DataSourceProcessorRemove(),
"elasticstack_elasticsearch_ingest_processor_rename": ingest.DataSourceProcessorRename(),
"elasticstack_elasticsearch_ingest_processor_script": ingest.DataSourceProcessorScript(),
"elasticstack_elasticsearch_ingest_processor_set": ingest.DataSourceProcessorSet(),
"elasticstack_elasticsearch_ingest_processor_set_security_user": ingest.DataSourceProcessorSetSecurityUser(),
"elasticstack_elasticsearch_ingest_processor_sort": ingest.DataSourceProcessorSort(),
"elasticstack_elasticsearch_ingest_processor_split": ingest.DataSourceProcessorSplit(),
"elasticstack_elasticsearch_ingest_processor_trim": ingest.DataSourceProcessorTrim(),
"elasticstack_elasticsearch_ingest_processor_uppercase": ingest.DataSourceProcessorUppercase(),
"elasticstack_elasticsearch_ingest_processor_urldecode": ingest.DataSourceProcessorUrldecode(),
"elasticstack_elasticsearch_ingest_processor_uri_parts": ingest.DataSourceProcessorUriParts(),
"elasticstack_elasticsearch_ingest_processor_user_agent": ingest.DataSourceProcessorUserAgent(),
"elasticstack_elasticsearch_security_role": security.DataSourceRole(),
"elasticstack_elasticsearch_security_role_mapping": security.DataSourceRoleMapping(),
"elasticstack_elasticsearch_security_user": security.DataSourceUser(),
"elasticstack_elasticsearch_snapshot_repository": cluster.DataSourceSnapshotRespository(),
"elasticstack_elasticsearch_info": cluster.DataSourceClusterInfo(),
"elasticstack_elasticsearch_enrich_policy": enrich.DataSourceEnrichPolicy(),
"elasticstack_kibana_action_connector": kibana.DataSourceConnector(),
"elasticstack_kibana_security_role": kibana.DataSourceRole(),
},
ResourcesMap: map[string]*schema.Resource{
"elasticstack_elasticsearch_cluster_settings": cluster.ResourceSettings(),
"elasticstack_elasticsearch_component_template": index.ResourceComponentTemplate(),
"elasticstack_elasticsearch_data_stream": index.ResourceDataStream(),
"elasticstack_elasticsearch_index_lifecycle": index.ResourceIlm(),
"elasticstack_elasticsearch_index_template": index.ResourceTemplate(),
"elasticstack_elasticsearch_ingest_pipeline": ingest.ResourceIngestPipeline(),
"elasticstack_elasticsearch_logstash_pipeline": logstash.ResourceLogstashPipeline(),
"elasticstack_elasticsearch_security_role": security.ResourceRole(),
"elasticstack_elasticsearch_security_role_mapping": security.ResourceRoleMapping(),
"elasticstack_elasticsearch_security_user": security.ResourceUser(),
"elasticstack_elasticsearch_security_system_user": security.ResourceSystemUser(),
"elasticstack_elasticsearch_snapshot_lifecycle": cluster.ResourceSlm(),
"elasticstack_elasticsearch_snapshot_repository": cluster.ResourceSnapshotRepository(),
"elasticstack_elasticsearch_script": cluster.ResourceScript(),
"elasticstack_elasticsearch_enrich_policy": enrich.ResourceEnrichPolicy(),
"elasticstack_elasticsearch_transform": transform.ResourceTransform(),
"elasticstack_elasticsearch_watch": watcher.ResourceWatch(),
"elasticstack_kibana_alerting_rule": kibana.ResourceAlertingRule(),
"elasticstack_kibana_space": kibana.ResourceSpace(),
"elasticstack_kibana_action_connector": kibana.ResourceActionConnector(),
"elasticstack_kibana_security_role": kibana.ResourceRole(),
"elasticstack_kibana_slo": kibana.ResourceSlo(),
},
}
p.ConfigureContextFunc = clients.NewApiClientFuncFromSDK(version)
return p
}