Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

switch automation sdk to hashicorp/go-azure-sdk #20568

Merged
merged 11 commits into from
Feb 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions internal/services/automation/automation_account_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func resourceAutomationAccountCreate(d *pluginsdk.ResourceData, meta interface{}
if identityVal.Type != identity.TypeNone {
parameters.Identity = identityVal
}
if tagsVal := expandTags(d.Get("tags").(map[string]interface{})); tagsVal != nil {
if tagsVal := expandStringInterfaceMap(d.Get("tags").(map[string]interface{})); tagsVal != nil {
parameters.Tags = &tagsVal
}

Expand Down Expand Up @@ -244,7 +244,7 @@ func resourceAutomationAccountUpdate(d *pluginsdk.ResourceData, meta interface{}
parameters.Properties.Encryption = enc
}

if tagsVal := expandTags(d.Get("tags").(map[string]interface{})); tagsVal != nil {
if tagsVal := expandStringInterfaceMap(d.Get("tags").(map[string]interface{})); tagsVal != nil {
parameters.Tags = &tagsVal
}

Expand Down
57 changes: 29 additions & 28 deletions internal/services/automation/automation_certificate_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@ import (
"log"
"time"

"github.com/Azure/azure-sdk-for-go/services/preview/automation/mgmt/2020-01-13-preview/automation" // nolint: staticcheck
"github.com/hashicorp/go-azure-helpers/lang/response"
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
"github.com/hashicorp/go-azure-sdk/resource-manager/automation/2020-01-13-preview/certificate"
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/automation/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/validation"
"github.com/hashicorp/terraform-provider-azurerm/internal/timeouts"
"github.com/hashicorp/terraform-provider-azurerm/utils"
)

func resourceAutomationCertificate() *pluginsdk.Resource {
Expand All @@ -24,7 +23,7 @@ func resourceAutomationCertificate() *pluginsdk.Resource {
Delete: resourceAutomationCertificateDelete,

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.CertificateID(id)
_, err := certificate.ParseCertificateID(id)
return err
}),

Expand Down Expand Up @@ -81,43 +80,43 @@ func resourceAutomationCertificate() *pluginsdk.Resource {

func resourceAutomationCertificateCreateUpdate(d *pluginsdk.ResourceData, meta interface{}) error {
client := meta.(*clients.Client).Automation.CertificateClient
subscriptionId := meta.(*clients.Client).Account.SubscriptionId
ctx, cancel := timeouts.ForCreateUpdate(meta.(*clients.Client).StopContext, d)
defer cancel()

log.Printf("[INFO] preparing arguments for AzureRM Automation Certificate creation.")

id := parse.NewCertificateID(client.SubscriptionID, d.Get("resource_group_name").(string), d.Get("automation_account_name").(string), d.Get("name").(string))
id := certificate.NewCertificateID(subscriptionId, d.Get("resource_group_name").(string), d.Get("automation_account_name").(string), d.Get("name").(string))
exportable := d.Get("exportable").(bool)

if d.IsNewResource() {
existing, err := client.Get(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
existing, err := client.Get(ctx, id)
if err != nil {
if !utils.ResponseWasNotFound(existing.Response) {
if !response.WasNotFound(existing.HttpResponse) {
return fmt.Errorf("checking for presence of existing %s: %s", id, err)
}
}

if !utils.ResponseWasNotFound(existing.Response) {
if !response.WasNotFound(existing.HttpResponse) {
return tf.ImportAsExistsError("azurerm_automation_certificate", id.ID())
}
}

description := d.Get("description").(string)

parameters := automation.CertificateCreateOrUpdateParameters{
Name: &id.Name,
CertificateCreateOrUpdateProperties: &automation.CertificateCreateOrUpdateProperties{
parameters := certificate.CertificateCreateOrUpdateParameters{
Name: id.CertificateName,
Properties: certificate.CertificateCreateOrUpdateProperties{
Description: &description,
IsExportable: &exportable,
},
}

if v, ok := d.GetOk("base64"); ok {
base64 := v.(string)
parameters.CertificateCreateOrUpdateProperties.Base64Value = &base64
parameters.Properties.Base64Value = v.(string)
}

if _, err := client.CreateOrUpdate(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name, parameters); err != nil {
if _, err := client.CreateOrUpdate(ctx, id, parameters); err != nil {
return fmt.Errorf("creating/updating %s: %+v", id, err)
}

Expand All @@ -131,29 +130,31 @@ func resourceAutomationCertificateRead(d *pluginsdk.ResourceData, meta interface
ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.CertificateID(d.Id())
id, err := certificate.ParseCertificateID(d.Id())
if err != nil {
return err
}

resp, err := client.Get(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
resp, err := client.Get(ctx, *id)
if err != nil {
if utils.ResponseWasNotFound(resp.Response) {
if response.WasNotFound(resp.HttpResponse) {
d.SetId("")
return nil
}

return fmt.Errorf("retrieving Certificate %q (Automation Account %q / Resource Group %q): %+v", id.Name, id.AutomationAccountName, id.ResourceGroup, err)
return fmt.Errorf("retrieving %s: %+v", *id, err)
}

d.Set("name", id.Name)
d.Set("resource_group_name", id.ResourceGroup)
d.Set("name", id.CertificateName)
d.Set("resource_group_name", id.ResourceGroupName)
d.Set("automation_account_name", id.AutomationAccountName)

if props := resp.CertificateProperties; props != nil {
d.Set("exportable", props.IsExportable)
d.Set("thumbprint", props.Thumbprint)
d.Set("description", props.Description)
if model := resp.Model; model != nil {
if props := model.Properties; props != nil {
d.Set("exportable", props.IsExportable)
d.Set("thumbprint", props.Thumbprint)
d.Set("description", props.Description)
}
}

return nil
Expand All @@ -164,15 +165,15 @@ func resourceAutomationCertificateDelete(d *pluginsdk.ResourceData, meta interfa
ctx, cancel := timeouts.ForDelete(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.CertificateID(d.Id())
id, err := certificate.ParseCertificateID(d.Id())
if err != nil {
return err
}

resp, err := client.Delete(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
resp, err := client.Delete(ctx, *id)
if err != nil {
if !utils.ResponseWasNotFound(resp) {
return fmt.Errorf("deleting Certificate %q (Automation Account %q / Resource Group %q): %+v", id.Name, id.AutomationAccountName, id.ResourceGroup, err)
if !response.WasNotFound(resp.HttpResponse) {
return fmt.Errorf("deleting %s: %+v", *id, err)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import (
"strings"
"testing"

"github.com/hashicorp/go-azure-helpers/lang/pointer"
"github.com/hashicorp/go-azure-sdk/resource-manager/automation/2020-01-13-preview/certificate"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/automation/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
"github.com/hashicorp/terraform-provider-azurerm/utils"
)

type AutomationCertificateResource struct{}
Expand Down Expand Up @@ -99,17 +99,17 @@ func TestAccAutomationCertificate_update(t *testing.T) {
}

func (t AutomationCertificateResource) Exists(ctx context.Context, clients *clients.Client, state *pluginsdk.InstanceState) (*bool, error) {
id, err := parse.CertificateID(state.ID)
id, err := certificate.ParseCertificateID(state.ID)
if err != nil {
return nil, err
}

resp, err := clients.Automation.CertificateClient.Get(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
resp, err := clients.Automation.CertificateClient.Get(ctx, *id)
if err != nil {
return nil, fmt.Errorf("retrieving Automation Certificate %q (resource group: %q): %+v", id.Name, id.ResourceGroup, err)
return nil, fmt.Errorf("retrieving %s: %+v", *id, err)
}

return utils.Bool(resp.CertificateProperties != nil), nil
return pointer.To(resp.Model != nil), nil
}

func (AutomationCertificateResource) basic(data acceptance.TestData) string {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import (
"log"
"time"

"github.com/Azure/azure-sdk-for-go/services/preview/automation/mgmt/2020-01-13-preview/automation" // nolint: staticcheck
"github.com/hashicorp/go-azure-helpers/lang/response"
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
"github.com/hashicorp/go-azure-sdk/resource-manager/automation/2020-01-13-preview/connection"
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/automation/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/automation/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/validation"
Expand All @@ -25,7 +25,7 @@ func resourceAutomationConnectionCertificate() *pluginsdk.Resource {
Delete: resourceAutomationConnectionCertificateDelete,

Importer: pluginsdk.ImporterValidatingResourceIdThen(func(id string) error {
_, err := parse.ConnectionID(id)
_, err := connection.ParseConnectionID(id)
return err
}, importAutomationConnection("Azure")),

Expand Down Expand Up @@ -75,41 +75,44 @@ func resourceAutomationConnectionCertificate() *pluginsdk.Resource {

func resourceAutomationConnectionCertificateCreateUpdate(d *pluginsdk.ResourceData, meta interface{}) error {
client := meta.(*clients.Client).Automation.ConnectionClient
subscriptionId := meta.(*clients.Client).Account.SubscriptionId
ctx, cancel := timeouts.ForCreateUpdate(meta.(*clients.Client).StopContext, d)
defer cancel()

log.Printf("[INFO] preparing arguments for AzureRM Automation Connection creation.")

id := parse.NewConnectionID(client.SubscriptionID, d.Get("resource_group_name").(string), d.Get("automation_account_name").(string), d.Get("name").(string))
id := connection.NewConnectionID(subscriptionId, d.Get("resource_group_name").(string), d.Get("automation_account_name").(string), d.Get("name").(string))

if d.IsNewResource() {
existing, err := client.Get(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
existing, err := client.Get(ctx, id)
if err != nil {
if !utils.ResponseWasNotFound(existing.Response) {
if !response.WasNotFound(existing.HttpResponse) {
return fmt.Errorf("checking for presence of existing %s: %s", id, err)
}
}

if !utils.ResponseWasNotFound(existing.Response) {
if !response.WasNotFound(existing.HttpResponse) {
return tf.ImportAsExistsError("azurerm_automation_connection_certificate", id.ID())
}
}

parameters := automation.ConnectionCreateOrUpdateParameters{
Name: &id.Name,
ConnectionCreateOrUpdateProperties: &automation.ConnectionCreateOrUpdateProperties{
fieldDefinitionValues := map[string]string{
"AutomationCertificateName": d.Get("automation_certificate_name").(string),
"SubscriptionID": d.Get("subscription_id").(string),
}

parameters := connection.ConnectionCreateOrUpdateParameters{
Name: id.ConnectionName,
Properties: connection.ConnectionCreateOrUpdateProperties{
Description: utils.String(d.Get("description").(string)),
ConnectionType: &automation.ConnectionTypeAssociationProperty{
ConnectionType: connection.ConnectionTypeAssociationProperty{
Name: utils.String("Azure"),
},
FieldDefinitionValues: map[string]*string{
"AutomationCertificateName": utils.String(d.Get("automation_certificate_name").(string)),
"SubscriptionID": utils.String(d.Get("subscription_id").(string)),
},
FieldDefinitionValues: &fieldDefinitionValues,
},
}

if _, err := client.CreateOrUpdate(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name, parameters); err != nil {
if _, err := client.CreateOrUpdate(ctx, id, parameters); err != nil {
return err
}

Expand All @@ -123,35 +126,39 @@ func resourceAutomationConnectionCertificateRead(d *pluginsdk.ResourceData, meta
ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.ConnectionID(d.Id())
id, err := connection.ParseConnectionID(d.Id())
if err != nil {
return err
}

resp, err := client.Get(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
resp, err := client.Get(ctx, *id)
if err != nil {
if utils.ResponseWasNotFound(resp.Response) {
if response.WasNotFound(resp.HttpResponse) {
d.SetId("")
return nil
}

return fmt.Errorf("Read request on AzureRM Automation Connection '%s': %+v", id.Name, err)
return fmt.Errorf("read request on %s: %+v", *id, err)
}

d.Set("name", resp.Name)
d.Set("resource_group_name", id.ResourceGroup)
d.Set("name", id.ConnectionName)
d.Set("resource_group_name", id.ResourceGroupName)
d.Set("automation_account_name", id.AutomationAccountName)
d.Set("description", resp.Description)

if props := resp.ConnectionProperties; props != nil {
if v, ok := props.FieldDefinitionValues["AutomationCertificateName"]; ok {
d.Set("automation_certificate_name", v)
}
if v, ok := props.FieldDefinitionValues["SubscriptionID"]; ok {
d.Set("subscription_id", v)
if model := resp.Model; model != nil {
if props := model.Properties; props != nil {
if props.FieldDefinitionValues != nil {
fieldDefinitionValues := *props.FieldDefinitionValues
if v, ok := fieldDefinitionValues["AutomationCertificateName"]; ok {
d.Set("automation_certificate_name", v)
}
if v, ok := fieldDefinitionValues["SubscriptionID"]; ok {
d.Set("subscription_id", v)
}
}
d.Set("description", props.Description)
}
}

return nil
}

Expand All @@ -160,19 +167,18 @@ func resourceAutomationConnectionCertificateDelete(d *pluginsdk.ResourceData, me
ctx, cancel := timeouts.ForDelete(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.ConnectionID(d.Id())
id, err := connection.ParseConnectionID(d.Id())
if err != nil {
return err
}

resp, err := client.Delete(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
resp, err := client.Delete(ctx, *id)
if err != nil {
if utils.ResponseWasNotFound(resp) {
if response.WasNotFound(resp.HttpResponse) {
return nil
}

return fmt.Errorf("deleting Automation Connection '%s': %+v", id.Name, err)
return fmt.Errorf("deleting %s: %+v", *id, err)
}

return nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import (
"fmt"
"testing"

"github.com/hashicorp/go-azure-helpers/lang/pointer"
"github.com/hashicorp/go-azure-sdk/resource-manager/automation/2020-01-13-preview/connection"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/automation/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
"github.com/hashicorp/terraform-provider-azurerm/utils"
)

type AutomationConnectionCertificateResource struct{}
Expand Down Expand Up @@ -90,17 +90,17 @@ func TestAccAutomationConnectionCertificate_update(t *testing.T) {
}

func (t AutomationConnectionCertificateResource) Exists(ctx context.Context, clients *clients.Client, state *pluginsdk.InstanceState) (*bool, error) {
id, err := parse.ConnectionID(state.ID)
id, err := connection.ParseConnectionID(state.ID)
if err != nil {
return nil, err
}

resp, err := clients.Automation.ConnectionClient.Get(ctx, id.ResourceGroup, id.AutomationAccountName, id.Name)
resp, err := clients.Automation.ConnectionClient.Get(ctx, *id)
if err != nil {
return nil, fmt.Errorf("retrieving Automation Connection (Certificate) %q (resource group: %q): %+v", id.Name, id.ResourceGroup, err)
return nil, fmt.Errorf("retrieving %s: %+v", *id, err)
}

return utils.Bool(resp.ConnectionProperties != nil), nil
return pointer.To(resp.Model != nil), nil
}

func (AutomationConnectionCertificateResource) basic(data acceptance.TestData) string {
Expand Down
Loading