Skip to content

Commit

Permalink
azuread_synchronization_job_provision_on_demand: fix parsing bugs for…
Browse files Browse the repository at this point in the history
… `service_principal_id` and `synchronization_job_id`
  • Loading branch information
manicminer committed Sep 27, 2024
1 parent e1c1777 commit 690fd5e
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,15 @@ func synchronizationJobProvisionOnDemandResource() *schema.Resource {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: validation.IsUUID,
ValidateFunc: stable.ValidateServicePrincipalID,
},

"synchronization_job_id": {
Description: "The identifier for the synchronization jop.",
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "The identifier for the synchronization jop.",
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: stable.ValidateServicePrincipalIdSynchronizationJobID,
},

"parameter": {
Expand Down Expand Up @@ -105,12 +106,15 @@ func synchronizationProvisionOnDemandResourceCreate(ctx context.Context, d *sche
client := meta.(*clients.Client).ServicePrincipals.SynchronizationJobClient
servicePrincipalClient := meta.(*clients.Client).ServicePrincipals.ServicePrincipalClient

servicePrincipalId := stable.NewServicePrincipalID(d.Get("service_principal_id").(string))
servicePrincipalId, err := stable.ParseServicePrincipalID(d.Get("service_principal_id").(string))
if err != nil {
return tf.ErrorDiagPathF(err, "service_principal_id", "Parsing `service_principal_id`")
}

tf.LockByName(servicePrincipalResourceName, servicePrincipalId.ServicePrincipalId)
defer tf.UnlockByName(servicePrincipalResourceName, servicePrincipalId.ServicePrincipalId)

servicePrincipalResp, err := servicePrincipalClient.GetServicePrincipal(ctx, servicePrincipalId, serviceprincipal.DefaultGetServicePrincipalOperationOptions())
servicePrincipalResp, err := servicePrincipalClient.GetServicePrincipal(ctx, *servicePrincipalId, serviceprincipal.DefaultGetServicePrincipalOperationOptions())
if err != nil {
if response.WasNotFound(servicePrincipalResp.HttpResponse) {
return tf.ErrorDiagPathF(nil, "service_principal_id", "%s was not found", servicePrincipalId)
Expand All @@ -126,9 +130,12 @@ func synchronizationProvisionOnDemandResourceCreate(ctx context.Context, d *sche
return tf.ErrorDiagF(errors.New("model has nil ID"), "Retrieving %s", servicePrincipalId)
}

jobId := stable.NewServicePrincipalIdSynchronizationJobID(servicePrincipalId.ServicePrincipalId, d.Get("synchronization_job_id").(string))
jobId, err := stable.ParseServicePrincipalIdSynchronizationJobID(d.Get("synchronization_job_id").(string))
if err != nil {
return tf.ErrorDiagPathF(err, "synchronization_job_id", "Parsing `synchronization_job_id`")
}

jobResp, err := client.GetSynchronizationJob(ctx, jobId, synchronizationjob.GetSynchronizationJobOperationOptions{RetryFunc: synchronizationRetryFunc()})
jobResp, err := client.GetSynchronizationJob(ctx, *jobId, synchronizationjob.GetSynchronizationJobOperationOptions{RetryFunc: synchronizationRetryFunc()})
if err != nil {
if response.WasNotFound(jobResp.HttpResponse) {
return tf.ErrorDiagPathF(nil, "synchronization_job_id", "%s was not found", jobId)
Expand All @@ -148,7 +155,7 @@ func synchronizationProvisionOnDemandResourceCreate(ctx context.Context, d *sche
Parameters: expandSynchronizationJobApplicationParameters(d.Get("parameter").([]interface{})),
}

if _, err = client.ProvisionSynchronizationJobOnDemand(ctx, jobId, properties, synchronizationjob.DefaultProvisionSynchronizationJobOnDemandOperationOptions()); err != nil {
if _, err = client.ProvisionSynchronizationJobOnDemand(ctx, *jobId, properties, synchronizationjob.DefaultProvisionSynchronizationJobOnDemandOperationOptions()); err != nil {
return tf.ErrorDiagF(err, "Provisioning %s", jobId)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,12 @@ resource "azuread_application_from_template" "test" {
template_id = data.azuread_application_template.test.template_id
}
data "azuread_service_principal" "test" {
object_id = azuread_application_from_template.test.service_principal_object_id
}
resource "azuread_synchronization_job" "test" {
service_principal_id = azuread_application_from_template.test.service_principal_object_id
service_principal_id = data.azuread_service_principal.test.id
template_id = "dataBricks"
}
Expand All @@ -67,8 +71,8 @@ func (r SynchronizationJobProvisionOnDemandResource) basic(data acceptance.TestD
%[1]s
resource "azuread_synchronization_job_provision_on_demand" "test" {
service_principal_id = azuread_application_from_template.test.service_principal_object_id
synchronization_job_id = trimprefix(azuread_synchronization_job.test.id, "${azuread_application_from_template.test.service_principal_object_id}/job/")
service_principal_id = azuread_synchronization_job.test.service_principal_id
synchronization_job_id = azuread_synchronization_job.test.id
parameter {
rule_id = "03f7d90d-bf71-41b1-bda6-aaf0ddbee5d8" // appears to be a global value
Expand Down

0 comments on commit 690fd5e

Please sign in to comment.