Rename DSA credentials to credential (#76)

* Rename in LogMe

* Rename in other DSA

* Rename examples

* Rename folder names

* Rename in error messages
This commit is contained in:
João Palet 2023-10-11 09:54:08 +02:00 committed by GitHub
parent bd286d3c2d
commit fee47a6400
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
59 changed files with 561 additions and 544 deletions

View file

@ -18,26 +18,26 @@ import (
// Ensure the implementation satisfies the expected interfaces.
var (
_ datasource.DataSource = &credentialsDataSource{}
_ datasource.DataSource = &credentialDataSource{}
)
// NewCredentialsDataSource is a helper function to simplify the provider implementation.
func NewCredentialsDataSource() datasource.DataSource {
return &credentialsDataSource{}
// NewCredentialDataSource is a helper function to simplify the provider implementation.
func NewCredentialDataSource() datasource.DataSource {
return &credentialDataSource{}
}
// credentialsDataSource is the data source implementation.
type credentialsDataSource struct {
// credentialDataSource is the data source implementation.
type credentialDataSource struct {
client *postgresql.APIClient
}
// Metadata returns the data source type name.
func (r *credentialsDataSource) Metadata(_ context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) {
resp.TypeName = req.ProviderTypeName + "_postgresql_credentials"
func (r *credentialDataSource) Metadata(_ context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) {
resp.TypeName = req.ProviderTypeName + "_postgresql_credential"
}
// Configure adds the provider configured client to the data source.
func (r *credentialsDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
func (r *credentialDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
// Prevent panic if the provider has not been configured.
if req.ProviderData == nil {
return
@ -73,9 +73,9 @@ func (r *credentialsDataSource) Configure(ctx context.Context, req datasource.Co
}
// Schema defines the schema for the data source.
func (r *credentialsDataSource) Schema(_ context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) {
func (r *credentialDataSource) Schema(_ context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) {
descriptions := map[string]string{
"main": "PostgreSQL credentials data source schema.",
"main": "PostgreSQL credential data source schema.",
"id": "Terraform's internal data source. identifier. It is structured as \"`project_id`,`instance_id`,`credentials_id`\".",
"credentials_id": "The credentials ID.",
"instance_id": "ID of the PostgreSQL instance.",
@ -144,7 +144,7 @@ func (r *credentialsDataSource) Schema(_ context.Context, _ datasource.SchemaReq
}
// Read refreshes the Terraform state with the latest data.
func (r *credentialsDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { // nolint:gocritic // function signature required by Terraform
func (r *credentialDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { // nolint:gocritic // function signature required by Terraform
var model Model
diags := req.Config.Get(ctx, &model)
resp.Diagnostics.Append(diags...)
@ -160,14 +160,14 @@ func (r *credentialsDataSource) Read(ctx context.Context, req datasource.ReadReq
recordSetResp, err := r.client.GetCredentials(ctx, projectId, instanceId, credentialsId).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credentials", fmt.Sprintf("Calling API: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Calling API: %v", err))
return
}
// Map response body to schema
err = mapFields(recordSetResp, &model)
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credentials", fmt.Sprintf("Processing API payload: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Processing API payload: %v", err))
return
}

View file

@ -26,9 +26,9 @@ import (
// Ensure the implementation satisfies the expected interfaces.
var (
_ resource.Resource = &credentialsResource{}
_ resource.ResourceWithConfigure = &credentialsResource{}
_ resource.ResourceWithImportState = &credentialsResource{}
_ resource.Resource = &credentialResource{}
_ resource.ResourceWithConfigure = &credentialResource{}
_ resource.ResourceWithImportState = &credentialResource{}
)
type Model struct {
@ -46,23 +46,23 @@ type Model struct {
Username types.String `tfsdk:"username"`
}
// NewCredentialsResource is a helper function to simplify the provider implementation.
func NewCredentialsResource() resource.Resource {
return &credentialsResource{}
// NewCredentialResource is a helper function to simplify the provider implementation.
func NewCredentialResource() resource.Resource {
return &credentialResource{}
}
// credentialsResource is the resource implementation.
type credentialsResource struct {
// credentialResource is the resource implementation.
type credentialResource struct {
client *postgresql.APIClient
}
// Metadata returns the resource type name.
func (r *credentialsResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
resp.TypeName = req.ProviderTypeName + "_postgresql_credentials"
func (r *credentialResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
resp.TypeName = req.ProviderTypeName + "_postgresql_credential"
}
// Configure adds the provider configured client to the resource.
func (r *credentialsResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) {
func (r *credentialResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) {
// Prevent panic if the provider has not been configured.
if req.ProviderData == nil {
return
@ -98,9 +98,9 @@ func (r *credentialsResource) Configure(ctx context.Context, req resource.Config
}
// Schema defines the schema for the resource.
func (r *credentialsResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) {
func (r *credentialResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) {
descriptions := map[string]string{
"main": "PostgreSQL credentials resource schema.",
"main": "PostgreSQL credential resource schema.",
"id": "Terraform's internal resource identifier. It is structured as \"`project_id`,`instance_id`,`credentials_id`\".",
"credentials_id": "The credentials ID.",
"instance_id": "ID of the PostgreSQL instance.",
@ -183,7 +183,7 @@ func (r *credentialsResource) Schema(_ context.Context, _ resource.SchemaRequest
}
// Create creates the resource and sets the initial Terraform state.
func (r *credentialsResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { // nolint:gocritic // function signature required by Terraform
func (r *credentialResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { // nolint:gocritic // function signature required by Terraform
var model Model
diags := req.Plan.Get(ctx, &model)
resp.Diagnostics.Append(diags...)
@ -198,11 +198,11 @@ func (r *credentialsResource) Create(ctx context.Context, req resource.CreateReq
// Create new recordset
credentialsResp, err := r.client.CreateCredentials(ctx, projectId, instanceId).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credentials", fmt.Sprintf("Calling API: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Calling API: %v", err))
return
}
if credentialsResp.Id == nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credentials", "Got empty credentials id")
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", "Got empty credentials id")
return
}
credentialsId := *credentialsResp.Id
@ -210,19 +210,19 @@ func (r *credentialsResource) Create(ctx context.Context, req resource.CreateReq
wr, err := wait.CreateCredentialsWaitHandler(ctx, r.client, projectId, instanceId, credentialsId).SetTimeout(1 * time.Minute).WaitWithContext(ctx)
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credentials", fmt.Sprintf("Instance creation waiting: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Instance creation waiting: %v", err))
return
}
got, ok := wr.(*postgresql.CredentialsResponse)
if !ok {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credentials", fmt.Sprintf("Wait result conversion, got %+v", wr))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Wait result conversion, got %+v", wr))
return
}
// Map response body to schema
err = mapFields(got, &model)
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credentials", fmt.Sprintf("Processing API payload: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating credential", fmt.Sprintf("Processing API payload: %v", err))
return
}
diags = resp.State.Set(ctx, model)
@ -234,7 +234,7 @@ func (r *credentialsResource) Create(ctx context.Context, req resource.CreateReq
}
// Read refreshes the Terraform state with the latest data.
func (r *credentialsResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { // nolint:gocritic // function signature required by Terraform
func (r *credentialResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { // nolint:gocritic // function signature required by Terraform
var model Model
diags := req.State.Get(ctx, &model)
resp.Diagnostics.Append(diags...)
@ -250,14 +250,14 @@ func (r *credentialsResource) Read(ctx context.Context, req resource.ReadRequest
recordSetResp, err := r.client.GetCredentials(ctx, projectId, instanceId, credentialsId).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credentials", fmt.Sprintf("Calling API: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Calling API: %v", err))
return
}
// Map response body to schema
err = mapFields(recordSetResp, &model)
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credentials", fmt.Sprintf("Processing API payload: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading credential", fmt.Sprintf("Processing API payload: %v", err))
return
}
@ -271,13 +271,13 @@ func (r *credentialsResource) Read(ctx context.Context, req resource.ReadRequest
}
// Update updates the resource and sets the updated Terraform state on success.
func (r *credentialsResource) Update(ctx context.Context, _ resource.UpdateRequest, resp *resource.UpdateResponse) { // nolint:gocritic // function signature required by Terraform
func (r *credentialResource) Update(ctx context.Context, _ resource.UpdateRequest, resp *resource.UpdateResponse) { // nolint:gocritic // function signature required by Terraform
// Update shouldn't be called
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating credentials", "Credentials can't be updated")
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating credential", "Credential can't be updated")
}
// Delete deletes the resource and removes the Terraform state on success.
func (r *credentialsResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { // nolint:gocritic // function signature required by Terraform
func (r *credentialResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { // nolint:gocritic // function signature required by Terraform
var model Model
diags := req.State.Get(ctx, &model)
resp.Diagnostics.Append(diags...)
@ -295,11 +295,11 @@ func (r *credentialsResource) Delete(ctx context.Context, req resource.DeleteReq
// Delete existing record set
err := r.client.DeleteCredentials(ctx, projectId, instanceId, credentialsId).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credentials", fmt.Sprintf("Calling API: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Calling API: %v", err))
}
_, err = wait.DeleteCredentialsWaitHandler(ctx, r.client, projectId, instanceId, credentialsId).SetTimeout(1 * time.Minute).WaitWithContext(ctx)
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credentials", fmt.Sprintf("Instance deletion waiting: %v", err))
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting credential", fmt.Sprintf("Instance deletion waiting: %v", err))
return
}
tflog.Info(ctx, "PostgreSQL credentials deleted")
@ -307,11 +307,11 @@ func (r *credentialsResource) Delete(ctx context.Context, req resource.DeleteReq
// ImportState imports a resource into the Terraform state on success.
// The expected format of the resource import identifier is: project_id,instance_id,credentials_id
func (r *credentialsResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
func (r *credentialResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
idParts := strings.Split(req.ID, core.Separator)
if len(idParts) != 3 || idParts[0] == "" || idParts[1] == "" || idParts[2] == "" {
core.LogAndAddError(ctx, &resp.Diagnostics,
"Error importing credentials",
"Error importing credential",
fmt.Sprintf("Expected import identifier with format [project_id],[instance_id],[credentials_id], got %q", req.ID),
)
return

View file

@ -124,7 +124,7 @@ func TestMapFields(t *testing.T) {
false,
},
{
"nil_raw_credentials",
"nil_raw_credential",
&postgresql.CredentialsResponse{
Id: utils.Ptr("cid"),
},

View file

@ -47,7 +47,7 @@ func resourceConfig(acls, frequency, plugins string) string {
}
}
resource "stackit_postgresql_credentials" "credentials" {
resource "stackit_postgresql_credential" "credentials" {
project_id = stackit_postgresql_instance.instance.project_id
instance_id = stackit_postgresql_instance.instance.instance_id
}
@ -83,15 +83,15 @@ func TestAccPostgreSQLResource(t *testing.T) {
// Credentials data
resource.TestCheckResourceAttrPair(
"stackit_postgresql_credentials.credentials", "project_id",
"stackit_postgresql_credential.credentials", "project_id",
"stackit_postgresql_instance.instance", "project_id",
),
resource.TestCheckResourceAttrPair(
"stackit_postgresql_credentials.credentials", "instance_id",
"stackit_postgresql_credential.credentials", "instance_id",
"stackit_postgresql_instance.instance", "instance_id",
),
resource.TestCheckResourceAttrSet("stackit_postgresql_credentials.credentials", "credentials_id"),
resource.TestCheckResourceAttrSet("stackit_postgresql_credentials.credentials", "host"),
resource.TestCheckResourceAttrSet("stackit_postgresql_credential.credentials", "credentials_id"),
resource.TestCheckResourceAttrSet("stackit_postgresql_credential.credentials", "host"),
),
},
{ // Data source
@ -103,10 +103,10 @@ func TestAccPostgreSQLResource(t *testing.T) {
instance_id = stackit_postgresql_instance.instance.instance_id
}
data "stackit_postgresql_credentials" "credentials" {
project_id = stackit_postgresql_credentials.credentials.project_id
instance_id = stackit_postgresql_credentials.credentials.instance_id
credentials_id = stackit_postgresql_credentials.credentials.credentials_id
data "stackit_postgresql_credential" "credentials" {
project_id = stackit_postgresql_credential.credentials.project_id
instance_id = stackit_postgresql_credential.credentials.instance_id
credentials_id = stackit_postgresql_credential.credentials.credentials_id
}`,
resourceConfig(instanceResource["sgw_acl"], instanceResource["metrics_frequency"], instanceResource["plugins"]),
),
@ -115,8 +115,8 @@ func TestAccPostgreSQLResource(t *testing.T) {
resource.TestCheckResourceAttr("data.stackit_postgresql_instance.instance", "project_id", instanceResource["project_id"]),
resource.TestCheckResourceAttrPair("stackit_postgresql_instance.instance", "instance_id",
"data.stackit_postgresql_instance.instance", "instance_id"),
resource.TestCheckResourceAttrPair("stackit_postgresql_credentials.credentials", "credentials_id",
"data.stackit_postgresql_credentials.credentials", "credentials_id"),
resource.TestCheckResourceAttrPair("stackit_postgresql_credential.credentials", "credentials_id",
"data.stackit_postgresql_credential.credentials", "credentials_id"),
resource.TestCheckResourceAttr("data.stackit_postgresql_instance.instance", "plan_id", instanceResource["plan_id"]),
resource.TestCheckResourceAttr("data.stackit_postgresql_instance.instance", "name", instanceResource["name"]),
resource.TestCheckResourceAttr("data.stackit_postgresql_instance.instance", "parameters.sgw_acl", instanceResource["sgw_acl"]),
@ -124,11 +124,11 @@ func TestAccPostgreSQLResource(t *testing.T) {
resource.TestCheckResourceAttr("data.stackit_postgresql_instance.instance", "parameters.plugins.0", instanceResource["plugins"]),
// Credentials data
resource.TestCheckResourceAttr("data.stackit_postgresql_credentials.credentials", "project_id", instanceResource["project_id"]),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credentials.credentials", "credentials_id"),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credentials.credentials", "host"),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credentials.credentials", "port"),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credentials.credentials", "uri"),
resource.TestCheckResourceAttr("data.stackit_postgresql_credential.credentials", "project_id", instanceResource["project_id"]),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credential.credentials", "credentials_id"),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credential.credentials", "host"),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credential.credentials", "port"),
resource.TestCheckResourceAttrSet("data.stackit_postgresql_credential.credentials", "uri"),
),
},
// Import
@ -149,11 +149,11 @@ func TestAccPostgreSQLResource(t *testing.T) {
ImportStateVerify: true,
},
{
ResourceName: "stackit_postgresql_credentials.credentials",
ResourceName: "stackit_postgresql_credential.credentials",
ImportStateIdFunc: func(s *terraform.State) (string, error) {
r, ok := s.RootModule().Resources["stackit_postgresql_credentials.credentials"]
r, ok := s.RootModule().Resources["stackit_postgresql_credential.credentials"]
if !ok {
return "", fmt.Errorf("couldn't find resource stackit_postgresql_credentials.credentials")
return "", fmt.Errorf("couldn't find resource stackit_postgresql_credential.credentials")
}
instanceId, ok := r.Primary.Attributes["instance_id"]
if !ok {