in internal/schema/connection.go [240:379]
func GetEsConnectionSchema(keyName string, isProviderConfiguration bool) *schema.Schema {
usernamePath := makePathRef(keyName, "username")
passwordPath := makePathRef(keyName, "password")
apiKeyPath := makePathRef(keyName, "api_key")
bearerTokenPath := makePathRef(keyName, "bearer_token")
caFilePath := makePathRef(keyName, "ca_file")
caDataPath := makePathRef(keyName, "ca_data")
certFilePath := makePathRef(keyName, "cert_file")
certDataPath := makePathRef(keyName, "cert_data")
keyFilePath := makePathRef(keyName, "key_file")
keyDataPath := makePathRef(keyName, "key_data")
usernameRequiredWithValidation := []string{passwordPath}
passwordRequiredWithValidation := []string{usernamePath}
withEnvDefault := func(key string, dv interface{}) schema.SchemaDefaultFunc { return nil }
if isProviderConfiguration {
withEnvDefault = func(key string, dv interface{}) schema.SchemaDefaultFunc { return schema.EnvDefaultFunc(key, dv) }
// RequireWith validation isn't compatible when used in conjunction with DefaultFunc
usernameRequiredWithValidation = nil
passwordRequiredWithValidation = nil
}
return &schema.Schema{
Description: fmt.Sprintf("Elasticsearch connection configuration block. %s", getDeprecationMessage(isProviderConfiguration)),
Deprecated: getDeprecationMessage(isProviderConfiguration),
Type: schema.TypeList,
MaxItems: 1,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"username": {
Description: "Username to use for API authentication to Elasticsearch.",
Type: schema.TypeString,
Optional: true,
DefaultFunc: withEnvDefault("ELASTICSEARCH_USERNAME", nil),
RequiredWith: usernameRequiredWithValidation,
},
"password": {
Description: "Password to use for API authentication to Elasticsearch.",
Type: schema.TypeString,
Optional: true,
Sensitive: true,
DefaultFunc: withEnvDefault("ELASTICSEARCH_PASSWORD", nil),
RequiredWith: passwordRequiredWithValidation,
},
"api_key": {
Description: "API Key to use for authentication to Elasticsearch",
Type: schema.TypeString,
Optional: true,
Sensitive: true,
DefaultFunc: withEnvDefault("ELASTICSEARCH_API_KEY", nil),
ConflictsWith: []string{usernamePath, passwordPath, bearerTokenPath},
},
"bearer_token": {
Description: "Bearer Token to use for authentication to Elasticsearch",
Type: schema.TypeString,
Optional: true,
Sensitive: true,
DefaultFunc: withEnvDefault("ELASTICSEARCH_BEARER_TOKEN", nil),
ConflictsWith: []string{usernamePath, passwordPath, apiKeyPath},
},
"es_client_authentication": {
Description: "ES Client Authentication field to be used with the JWT token",
Type: schema.TypeString,
Optional: true,
Sensitive: true,
DefaultFunc: withEnvDefault("ELASTICSEARCH_ES_CLIENT_AUTHENTICATION", nil),
},
"endpoints": {
Description: "A list of endpoints where the terraform provider will point to, this must include the http(s) schema and port number.",
Type: schema.TypeList,
Optional: true,
Sensitive: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"headers": {
Description: "A list of headers to be sent with each request to Elasticsearch.",
Type: schema.TypeMap,
Optional: true,
Sensitive: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"insecure": {
Description: "Disable TLS certificate validation",
Type: schema.TypeBool,
Optional: true,
DefaultFunc: withEnvDefault("ELASTICSEARCH_INSECURE", false),
},
"ca_file": {
Description: "Path to a custom Certificate Authority certificate",
Type: schema.TypeString,
Optional: true,
ConflictsWith: []string{caDataPath},
},
"ca_data": {
Description: "PEM-encoded custom Certificate Authority certificate",
Type: schema.TypeString,
Optional: true,
ConflictsWith: []string{caFilePath},
},
"cert_file": {
Description: "Path to a file containing the PEM encoded certificate for client auth",
Type: schema.TypeString,
Optional: true,
RequiredWith: []string{keyFilePath},
ConflictsWith: []string{certDataPath, keyDataPath},
},
"key_file": {
Description: "Path to a file containing the PEM encoded private key for client auth",
Type: schema.TypeString,
Optional: true,
RequiredWith: []string{certFilePath},
ConflictsWith: []string{certDataPath, keyDataPath},
},
"cert_data": {
Description: "PEM encoded certificate for client auth",
Type: schema.TypeString,
Optional: true,
RequiredWith: []string{keyDataPath},
ConflictsWith: []string{certFilePath, keyFilePath},
},
"key_data": {
Description: "PEM encoded private key for client auth",
Type: schema.TypeString,
Optional: true,
Sensitive: true,
RequiredWith: []string{certDataPath},
ConflictsWith: []string{certFilePath, keyFilePath},
},
},
},
}
}