Skip to content

Commit

Permalink
Updated deployment target resource and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jbristowe committed Dec 24, 2020
1 parent caa7f02 commit 6e0fde2
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 2 deletions.
1 change: 1 addition & 0 deletions octopusdeploy/provider.go
Expand Up @@ -52,6 +52,7 @@ func Provider() *schema.Provider {
"octopusdeploy_channel": resourceChannel(),
"octopusdeploy_cloud_region_deployment_target": resourceCloudRegionDeploymentTarget(),
"octopusdeploy_deployment_process": resourceDeploymentProcess(),
"octopusdeploy_deployment_target": resourceDeploymentTarget(),
"octopusdeploy_environment": resourceEnvironment(),
"octopusdeploy_feed": resourceFeed(),
"octopusdeploy_kubernetes_cluster_deployment_target": resourceKubernetesClusterDeploymentTarget(),
Expand Down
17 changes: 17 additions & 0 deletions octopusdeploy/resource_deployment_target.go
Expand Up @@ -2,6 +2,7 @@ package octopusdeploy

import (
"context"
"log"

"github.com/OctopusDeploy/go-octopusdeploy/octopusdeploy"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
Expand All @@ -23,39 +24,53 @@ func resourceDeploymentTargetCreate(ctx context.Context, d *schema.ResourceData,
deploymentTarget := expandDeploymentTarget(d)
deploymentTarget.Status = "Unknown"

log.Printf("[INFO] creating deployment target: %#v", deploymentTarget)

client := m.(*octopusdeploy.Client)
createdDeploymentTarget, err := client.Machines.Add(deploymentTarget)
if err != nil {
return diag.FromErr(err)
}

setDeploymentTarget(ctx, d, createdDeploymentTarget)

log.Printf("[INFO] deployment target created (%s)", d.Id())
return nil
}

func resourceDeploymentTargetDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Printf("[INFO] deleting deployment target (%s)", d.Id())

client := m.(*octopusdeploy.Client)
err := client.Machines.DeleteByID(d.Id())
if err != nil {
return diag.FromErr(err)
}

d.SetId("")

log.Printf("[INFO] deployment target deleted")
return nil
}

func resourceDeploymentTargetRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Printf("[INFO] reading deployment target (%s)", d.Id())

client := m.(*octopusdeploy.Client)
deploymentTarget, err := client.Machines.GetByID(d.Id())
if err != nil {
return diag.FromErr(err)
}

setDeploymentTarget(ctx, d, deploymentTarget)

log.Printf("[INFO] deployment target read (%s)", d.Id())
return nil
}

func resourceDeploymentTargetUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Printf("[INFO] updating deployment target (%s)", d.Id())

deploymentTarget := expandDeploymentTarget(d)

client := m.(*octopusdeploy.Client)
Expand All @@ -65,5 +80,7 @@ func resourceDeploymentTargetUpdate(ctx context.Context, d *schema.ResourceData,
}

setDeploymentTarget(ctx, d, updatedDeploymentTarget)

log.Printf("[INFO] deployment target updated (%s)", d.Id())
return nil
}
2 changes: 1 addition & 1 deletion octopusdeploy/resource_deployment_target_test.go
Expand Up @@ -82,7 +82,7 @@ func testAccDeploymentTargetBasic(localName string, name string) string {
resource "octopusdeploy_deployment_target" "%s" {
environments = ["${octopusdeploy_environment.%s.id}"]
is_disabled = true
machine_policy_id = "${data.octopusdeploy_machine_policies.default.id}"
machine_policy_id = "${data.octopusdeploy_machine_policies.default.machine_policies[0].id}"
name = "%s"
roles = ["Prod"]
tenanted_deployment_participation = "Untenanted"
Expand Down
22 changes: 21 additions & 1 deletion octopusdeploy/schema_deployment_target.go
Expand Up @@ -10,13 +10,14 @@ import (

func expandDeploymentTarget(d *schema.ResourceData) *octopusdeploy.DeploymentTarget {
deploymentMode := octopusdeploy.TenantedDeploymentMode(d.Get("tenanted_deployment_participation").(string))
endpoint := expandEndpoint(d.Get("endpoint"))
environments := getSliceFromTerraformTypeList(d.Get("environments"))
name := d.Get("name").(string)
roles := getSliceFromTerraformTypeList(d.Get("roles"))
tenantIDs := getSliceFromTerraformTypeList(d.Get("tenants"))
tenantTags := getSliceFromTerraformTypeList(d.Get("tenant_tags"))

deploymentTarget := octopusdeploy.NewDeploymentTarget(name, nil, environments, roles)
deploymentTarget := octopusdeploy.NewDeploymentTarget(name, endpoint, environments, roles)
deploymentTarget.ID = d.Id()
deploymentTarget.TenantedDeploymentMode = deploymentMode
deploymentTarget.TenantIDs = tenantIDs
Expand Down Expand Up @@ -46,7 +47,10 @@ func flattenDeploymentTarget(deploymentTarget *octopusdeploy.DeploymentTarget) m
return nil
}

endpointResource, _ := octopusdeploy.ToEndpointResource(deploymentTarget.Endpoint)

return map[string]interface{}{
"endpoint": flattenEndpoint(endpointResource),
"environments": deploymentTarget.EnvironmentIDs,
"has_latest_calamari": deploymentTarget.HasLatestCalamari,
"health_status": deploymentTarget.HealthStatus,
Expand Down Expand Up @@ -102,6 +106,13 @@ func getDeploymentTargetDataSchema() map[string]*schema.Schema {

func getDeploymentTargetSchema() map[string]*schema.Schema {
return map[string]*schema.Schema{
"endpoint": {
Computed: true,
Elem: &schema.Resource{Schema: getEndpointSchema()},
MinItems: 1,
Optional: true,
Type: schema.TypeList,
},
"environments": getEnvironmentsSchema(),
"has_latest_calamari": {
Computed: true,
Expand Down Expand Up @@ -181,6 +192,15 @@ func setDeploymentTarget(ctx context.Context, d *schema.ResourceData, deployment
d.Set("thumbprint", deploymentTarget.Thumbprint)
d.Set("uri", deploymentTarget.URI)

endpointResource, err := octopusdeploy.ToEndpointResource(deploymentTarget.Endpoint)
if err != nil {
return fmt.Errorf("error setting endpoint: %s", err)
}

if err := d.Set("endpoint", flattenEndpoint(endpointResource)); err != nil {
return fmt.Errorf("error setting endpoint: %s", err)
}

if err := d.Set("environments", deploymentTarget.EnvironmentIDs); err != nil {
return fmt.Errorf("error setting environments: %s", err)
}
Expand Down

0 comments on commit 6e0fde2

Please sign in to comment.