ec/ecdatasource/privatelinkdatasource/gcp_datasource.go (44 lines of code) (raw):
// Licensed to Elasticsearch B.V. under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Elasticsearch B.V. licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package privatelinkdatasource
import (
"context"
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
)
func GcpDataSource() datasource.DataSource {
return &gcpDataSource{
privateLinkDataSource: privateLinkDataSource[v0GcpModel]{
csp: "gcp",
privateLinkName: "private_service_connect",
},
}
}
type gcpDataSource struct {
privateLinkDataSource[v0GcpModel]
}
func (d *gcpDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) {
resp.Schema = schema.Schema{
Description: "Use this data source to retrieve information about the GCP Private Service Connect configuration for a given region. Further documentation on how to establish a PrivateLink connection can be found in the ESS [documentation](https://www.elastic.co/guide/en/cloud/current/ec-traffic-filtering-psc.html).",
Attributes: map[string]schema.Attribute{
"region": schema.StringAttribute{
Description: "Region to retrieve the Prive Link configuration for.",
Required: true,
},
// Computed
"service_attachment_uri": schema.StringAttribute{
Description: "The service attachment URI to attach the PSC endpoint to.",
Computed: true,
},
"domain_name": schema.StringAttribute{
Description: "The domain name to point towards the PSC endpoint.",
Computed: true,
},
},
}
}
type v0GcpModel struct {
RegionField string `tfsdk:"region"`
ServiceAttachmentUri *string `tfsdk:"service_attachment_uri"`
DomainName *string `tfsdk:"domain_name"`
}
func (m v0GcpModel) Region() string {
return m.RegionField
}