Files

84 lines
2.2 KiB
Go
Raw Permalink Normal View History

2024-07-25 14:33:38 +03:00
package client
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
2025-01-21 12:16:49 +03:00
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker"
2024-07-25 14:33:38 +03:00
)
2025-01-21 12:16:49 +03:00
type Client struct {
Provider any
}
func DataSource(ctx context.Context, req *datasource.ConfigureRequest, resp *datasource.ConfigureResponse) *Client {
2024-07-25 14:33:38 +03:00
if req.ProviderData == nil {
tflog.Error(ctx, "Provider Configure is nill")
return nil
}
2025-01-21 12:16:49 +03:00
res := Client{}
if decort, ok := req.ProviderData.(*decort.DecortClient); ok {
res.Provider = decort
return &res
}
if bvs, ok := req.ProviderData.(*decort.BVSDecortClient); ok {
res.Provider = bvs
return &res
2024-07-25 14:33:38 +03:00
}
2025-01-21 12:16:49 +03:00
resp.Diagnostics.AddError(
"Unexpected Data Source Configure Type",
fmt.Sprintf("Expected *decort.DecortClient or *decort.BVSDecortClient, got: %T. Please report this issue to the provider developers.", req.ProviderData),
)
return nil
2024-07-25 14:33:38 +03:00
}
2025-01-21 12:16:49 +03:00
func Resource(ctx context.Context, req *resource.ConfigureRequest, resp *resource.ConfigureResponse) *Client {
2024-07-25 14:33:38 +03:00
if req.ProviderData == nil {
tflog.Error(ctx, "Provider Configure is nill")
return nil
}
2025-01-21 12:16:49 +03:00
res := Client{}
if decort, ok := req.ProviderData.(*decort.DecortClient); ok {
res.Provider = decort
return &res
}
if bvs, ok := req.ProviderData.(*decort.BVSDecortClient); ok {
res.Provider = bvs
return &res
}
resp.Diagnostics.AddError(
"Unexpected Data Source Configure Type",
fmt.Sprintf("Expected *decort.DecortClient or *decort.BVSDecortClient, got: %T. Please report this issue to the provider developers.", req.ProviderData),
)
return nil
}
func (c *Client) CloudAPI() *cloudapi.CloudAPI {
if decort, ok := c.Provider.(*decort.DecortClient); ok {
return decort.CloudAPI()
}
if bvs, ok := c.Provider.(*decort.BVSDecortClient); ok {
return bvs.CloudAPI()
}
return nil
}
func (c *Client) CloudBroker() *cloudbroker.CloudBroker {
if decort, ok := c.Provider.(*decort.DecortClient); ok {
return decort.CloudBroker()
}
if bvs, ok := c.Provider.(*decort.BVSDecortClient); ok {
return bvs.CloudBroker()
2024-07-25 14:33:38 +03:00
}
2025-01-21 12:16:49 +03:00
return nil
2024-07-25 14:33:38 +03:00
}