diff --git a/README.md b/README.md
index 26e436923..d00b67106 100644
--- a/README.md
+++ b/README.md
@@ -186,6 +186,11 @@ Documentation is auto-generated by the [tfplugindocs CLI](https://github.com/has
$ make docs
```
+or
+```shell
+go generate main.go
+```
+
## 🤝 Contributions
Contributions are welcome! :heart: Please read our [Contributing Guide](CONTRIBUTING.md) for information about how to get involved in this project.
diff --git a/docs/data-sources/tenants.md b/docs/data-sources/tenants.md
index 46a4cf5aa..28d093d17 100644
--- a/docs/data-sources/tenants.md
+++ b/docs/data-sources/tenants.md
@@ -42,16 +42,7 @@ Read-Only:
- `description` (String) The description of this tenant.
- `id` (String) The unique ID for this resource.
- `name` (String) The name of this resource.
-- `project_environment` (Set of Object) (see [below for nested schema](#nestedatt--tenants--project_environment))
- `space_id` (String) The space ID associated with this resource.
- `tenant_tags` (List of String) A list of tenant tags associated with this resource.
-
-### Nested Schema for `tenants.project_environment`
-
-Read-Only:
-
-- `environments` (List of String)
-- `project_id` (String)
-
diff --git a/docs/resources/tenant.md b/docs/resources/tenant.md
index 60a2793f8..ba3ce6aa6 100644
--- a/docs/resources/tenant.md
+++ b/docs/resources/tenant.md
@@ -1,5 +1,4 @@
---
-# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "octopusdeploy_tenant Resource - terraform-provider-octopusdeploy"
subcategory: ""
description: |-
@@ -10,8 +9,6 @@ description: |-
This resource manages tenants in Octopus Deploy.
-
-
## Schema
@@ -24,16 +21,7 @@ This resource manages tenants in Octopus Deploy.
- `cloned_from_tenant_id` (String) The ID of the tenant from which this tenant was cloned.
- `description` (String) The description of this tenant.
- `id` (String) The unique ID for this resource.
-- `project_environment` (Block Set) (see [below for nested schema](#nestedblock--project_environment))
- `space_id` (String) The space ID associated with this resource.
- `tenant_tags` (List of String) A list of tenant tags associated with this resource.
-
-### Nested Schema for `project_environment`
-
-Required:
-
-- `environments` (List of String) A list of environment IDs associated with this tenant through a project.
-- `project_id` (String) The project ID associated with this tenant.
-
-
+~> **NOTE property `project_environment` deprecated:** The `project_environment` property has been replaced by the `octopusdeploy_tenant_project` resource to allow more advanced provisioning scenarioes.
\ No newline at end of file
diff --git a/docs/resources/tenant_project.md b/docs/resources/tenant_project.md
new file mode 100644
index 000000000..f537e8fcc
--- /dev/null
+++ b/docs/resources/tenant_project.md
@@ -0,0 +1,32 @@
+---
+# generated by https://github.com/hashicorp/terraform-plugin-docs
+page_title: "octopusdeploy_tenant_project Resource - terraform-provider-octopusdeploy"
+subcategory: ""
+description: |-
+ This resource represents the connection between tenants and projects.
+---
+
+# octopusdeploy_tenant_project (Resource)
+
+This resource represents the connection between tenants and projects.
+
+
+
+
+## Schema
+
+### Required
+
+- `project_id` (String) The project ID associated with this tenant.
+- `tenant_id` (String) The tenant ID associated with this tenant.
+
+### Optional
+
+- `environment_ids` (List of String) The environment ID associated with this tenant.
+- `space_id` (String) The space ID associated with this resource.
+
+### Read-Only
+
+- `id` (String) The ID of this resource.
+
+
diff --git a/go.mod b/go.mod
index affa1f49d..f9bdcfde4 100644
--- a/go.mod
+++ b/go.mod
@@ -4,7 +4,7 @@ go 1.21
require (
github.com/OctopusDeploy/go-octopusdeploy/v2 v2.43.0
- github.com/OctopusSolutionsEngineering/OctopusTerraformTestFramework v0.0.0-20240718055636-f42871b46363
+ github.com/OctopusSolutionsEngineering/OctopusTerraformTestFramework v0.0.0-20240725054341-2848f54d101e
github.com/google/uuid v1.6.0
github.com/gruntwork-io/terratest v0.41.11
github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637
diff --git a/go.sum b/go.sum
index c4124620a..d50b01763 100644
--- a/go.sum
+++ b/go.sum
@@ -40,8 +40,8 @@ github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exY
github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU=
github.com/OctopusDeploy/go-octopusdeploy/v2 v2.43.0 h1:fYwGBqG88xy3qHp5j1ySCztdqfw2NLfg2yp0N3XcBYg=
github.com/OctopusDeploy/go-octopusdeploy/v2 v2.43.0/go.mod h1:GZmFu6LmN8Yg0tEoZx3ytk9FnaH+84cWm7u5TdWZC6E=
-github.com/OctopusSolutionsEngineering/OctopusTerraformTestFramework v0.0.0-20240718055636-f42871b46363 h1:dBe8x8+XwanocHxpPEukOEBt/ubpvnCaobbRqpDGLOw=
-github.com/OctopusSolutionsEngineering/OctopusTerraformTestFramework v0.0.0-20240718055636-f42871b46363/go.mod h1:Oq9KbiRNDBB5jFmrwnrgLX0urIqR/1ptY18TzkqXm7M=
+github.com/OctopusSolutionsEngineering/OctopusTerraformTestFramework v0.0.0-20240725054341-2848f54d101e h1:FIvWa8wNg8IBG5uVhqkKvcBhaxx4TgN7T8/5Ed4VQUE=
+github.com/OctopusSolutionsEngineering/OctopusTerraformTestFramework v0.0.0-20240725054341-2848f54d101e/go.mod h1:Oq9KbiRNDBB5jFmrwnrgLX0urIqR/1ptY18TzkqXm7M=
github.com/ProtonMail/go-crypto v1.1.0-alpha.2 h1:bkyFVUP+ROOARdgCiJzNQo2V2kiB97LyUpzH9P6Hrlg=
github.com/ProtonMail/go-crypto v1.1.0-alpha.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
diff --git a/octopusdeploy/provider.go b/octopusdeploy/provider.go
index e26c7a93b..a8fe7131c 100644
--- a/octopusdeploy/provider.go
+++ b/octopusdeploy/provider.go
@@ -2,6 +2,7 @@ package octopusdeploy
import (
"context"
+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
@@ -96,6 +97,7 @@ func Provider() *schema.Provider {
"octopusdeploy_tag_set": resourceTagSet(),
"octopusdeploy_team": resourceTeam(),
"octopusdeploy_tenant": resourceTenant(),
+ "octopusdeploy_tenant_project": resourceTenantProject(),
"octopusdeploy_tenant_common_variable": resourceTenantCommonVariable(),
"octopusdeploy_tenant_project_variable": resourceTenantProjectVariable(),
"octopusdeploy_tentacle_certificate": resourceTentacleCertificate(),
diff --git a/octopusdeploy/resource_tenant project.go b/octopusdeploy/resource_tenant project.go
new file mode 100644
index 000000000..b04d2f6c6
--- /dev/null
+++ b/octopusdeploy/resource_tenant project.go
@@ -0,0 +1,158 @@
+package octopusdeploy
+
+import (
+ "context"
+ "log"
+ "net/http"
+ "strings"
+
+ "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client"
+ "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/core"
+ "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/tenants"
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
+)
+
+func resourceTenantProject() *schema.Resource {
+ return &schema.Resource{
+ CreateContext: resourceTenantProjectCreate,
+ DeleteContext: resourceTenantProjectDelete,
+ Description: "This resource represents the connection between tenants and projects.",
+ Importer: getImporter(),
+ ReadContext: resourceTenantProjectRead,
+ UpdateContext: resourceTenantProjectUpdate,
+ Schema: getTenantProjectSchema(),
+ }
+}
+
+func resourceTenantProjectUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
+ mutex.Lock()
+ defer mutex.Unlock()
+
+ client := m.(*client.Client)
+ k := extractRelationship(d, client)
+
+ log.Printf("[INFO] updating tenant (%#v) connection to project (%#v)", k.tenantID, k.projectID)
+
+ tenant, err := tenants.GetByID(client, k.spaceID, k.tenantID)
+ if err != nil {
+ return diag.FromErr(err)
+ }
+
+ tenant.ProjectEnvironments[k.projectID] = k.environmentIDs
+
+ _, err = tenants.Update(client, tenant)
+ if err != nil {
+ return diag.FromErr(err)
+ }
+
+ log.Printf("[INFO] updated tenant (%s) connection to project (%#v)", k.tenantID, k.projectID)
+ return nil
+}
+
+func resourceTenantProjectCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
+ mutex.Lock()
+ defer mutex.Unlock()
+
+ client := m.(*client.Client)
+ k := extractRelationship(d, client)
+
+ log.Printf("[INFO] connecting tenant (%#v) to project (%#v)", k.tenantID, k.projectID)
+
+ tenant, err := tenants.GetByID(client, k.spaceID, k.tenantID)
+ if err != nil {
+ return diag.FromErr(err)
+ }
+
+ tenant.ProjectEnvironments[k.projectID] = k.environmentIDs
+
+ _, err = tenants.Update(client, tenant)
+ if err != nil {
+ return diag.FromErr(err)
+ }
+
+ id := k.spaceID + ":" + k.tenantID + ":" + k.projectID
+ d.SetId(id)
+
+ log.Printf("[INFO] tenant (%s) connected to project (%#v)", k.tenantID, k.projectID)
+ return nil
+}
+
+func resourceTenantProjectDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
+ mutex.Lock()
+ defer mutex.Unlock()
+
+ client := m.(*client.Client)
+ k := extractRelationship(d, client)
+
+ log.Printf("[INFO] removing tenant (%#v) from project (%#v)", k.tenantID, k.projectID)
+
+ tenant, err := tenants.GetByID(client, k.spaceID, k.tenantID)
+ if err != nil {
+ apiError := err.(*core.APIError)
+ if apiError.StatusCode == http.StatusNotFound {
+ log.Printf("[INFO] tenant (%#v) no longer exists", k.tenantID)
+ d.SetId("")
+ return nil
+ }
+
+ return diag.FromErr(err)
+ }
+
+ delete(tenant.ProjectEnvironments, k.projectID)
+
+ _, err = tenants.Update(client, tenant)
+ if err != nil {
+ return diag.FromErr(err)
+ }
+
+ log.Printf("[INFO] tenant (%#v) disconnected from project (%#v)", k.tenantID, k.projectID)
+ d.SetId("")
+ return nil
+}
+
+func resourceTenantProjectRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
+ client := m.(*client.Client)
+
+ bits := strings.Split(d.Id(), ":")
+ spaceID := bits[0]
+ tenantID := bits[1]
+ projectID := bits[2]
+
+ tenant, err := tenants.GetByID(client, spaceID, tenantID)
+ if err != nil {
+ apiError := err.(*core.APIError)
+ if apiError.StatusCode != http.StatusNotFound {
+ return diag.FromErr(err)
+ }
+ }
+
+ d.Set("environment_ids", tenant.ProjectEnvironments[projectID])
+
+ return nil
+}
+
+func extractRelationship(d *schema.ResourceData, client *client.Client) person {
+ tenantID := d.Get("tenant_id").(string)
+ projectID := d.Get("project_id").(string)
+
+ environmentIDs := []string{}
+ if attr, ok := d.GetOk("environment_ids"); ok {
+ environmentIDs = getSliceFromTerraformTypeList(attr)
+ }
+
+ spaceID := client.GetSpaceID()
+ if v, ok := d.GetOk("space_id"); ok {
+ spaceID = v.(string)
+ }
+
+ n := person{tenantID: tenantID, projectID: projectID, environmentIDs: environmentIDs, spaceID: spaceID}
+ return n
+}
+
+type person struct {
+ tenantID string
+ projectID string
+ environmentIDs []string
+ spaceID string
+}
diff --git a/octopusdeploy/resource_tenant.go b/octopusdeploy/resource_tenant.go
index c4792434d..49ae9808f 100644
--- a/octopusdeploy/resource_tenant.go
+++ b/octopusdeploy/resource_tenant.go
@@ -24,6 +24,9 @@ func resourceTenant() *schema.Resource {
}
func resourceTenantCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
+ mutex.Lock()
+ defer mutex.Unlock()
+
tenant := expandTenant(d)
log.Printf("[INFO] creating tenant: %#v", tenant)
@@ -45,6 +48,9 @@ func resourceTenantCreate(ctx context.Context, d *schema.ResourceData, m interfa
}
func resourceTenantDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
+ mutex.Lock()
+ defer mutex.Unlock()
+
log.Printf("[INFO] deleting tenant (%s)", d.Id())
client := m.(*client.Client)
@@ -75,6 +81,9 @@ func resourceTenantRead(ctx context.Context, d *schema.ResourceData, m interface
}
func resourceTenantUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
+ mutex.Lock()
+ defer mutex.Unlock()
+
log.Printf("[INFO] updating tenant (%s)", d.Id())
tenant := expandTenant(d)
diff --git a/octopusdeploy/schema_project_environment.go b/octopusdeploy/schema_project_environment.go
deleted file mode 100644
index 2995b486b..000000000
--- a/octopusdeploy/schema_project_environment.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package octopusdeploy
-
-import (
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-)
-
-func expandProjectEnvironments(value interface{}) map[string][]string {
- expandedProjectEnvironments := map[string][]string{}
-
- set := value.(*schema.Set)
- for _, item := range set.List() {
- projectEnvironment := item.(map[string]interface{})
- projectID := projectEnvironment["project_id"].(string)
- environments := []string{}
- for _, e := range projectEnvironment["environments"].([]interface{}) {
- environments = append(environments, e.(string))
- }
-
- expandedProjectEnvironments[projectID] = environments
- }
-
- return expandedProjectEnvironments
-}
-
-func flattenProjectEnvironments(projectEnvironments map[string][]string) []interface{} {
- if projectEnvironments == nil {
- return nil
- }
-
- flattenedProjectEnvironments := []interface{}{}
- for projectID, enviroments := range projectEnvironments {
- rawProjectEnvironment := map[string]interface{}{
- "project_id": projectID,
- "environments": enviroments,
- }
- flattenedProjectEnvironments = append(flattenedProjectEnvironments, rawProjectEnvironment)
- }
-
- return flattenedProjectEnvironments
-}
diff --git a/octopusdeploy/schema_tenant.go b/octopusdeploy/schema_tenant.go
index a72a4af63..6045f5981 100644
--- a/octopusdeploy/schema_tenant.go
+++ b/octopusdeploy/schema_tenant.go
@@ -22,10 +22,6 @@ func expandTenant(d *schema.ResourceData) *tenants.Tenant {
tenant.Description = v.(string)
}
- if v, ok := d.GetOk("project_environment"); ok {
- tenant.ProjectEnvironments = expandProjectEnvironments(v)
- }
-
if v, ok := d.GetOk("space_id"); ok {
tenant.SpaceID = v.(string)
}
@@ -47,7 +43,6 @@ func flattenTenant(tenant *tenants.Tenant) map[string]interface{} {
"description": tenant.Description,
"id": tenant.GetID(),
"name": tenant.Name,
- "project_environment": flattenProjectEnvironments(tenant.ProjectEnvironments),
"space_id": tenant.SpaceID,
"tenant_tags": tenant.TenantTags,
}
@@ -89,25 +84,6 @@ func getTenantSchema() map[string]*schema.Schema {
"description": getDescriptionSchema("tenant"),
"id": getIDSchema(),
"name": getNameSchema(true),
- "project_environment": {
- Optional: true,
- Elem: &schema.Resource{
- Schema: map[string]*schema.Schema{
- "environments": {
- Description: "A list of environment IDs associated with this tenant through a project.",
- Elem: &schema.Schema{Type: schema.TypeString},
- Required: true,
- Type: schema.TypeList,
- },
- "project_id": {
- Description: "The project ID associated with this tenant.",
- Required: true,
- Type: schema.TypeString,
- },
- },
- },
- Type: schema.TypeSet,
- },
"space_id": getSpaceIDSchema(),
"tenant_tags": getTenantTagsSchema(),
}
@@ -118,11 +94,6 @@ func setTenant(ctx context.Context, d *schema.ResourceData, tenant *tenants.Tena
d.Set("description", tenant.Description)
d.Set("id", tenant.GetID())
d.Set("name", tenant.Name)
-
- if err := d.Set("project_environment", flattenProjectEnvironments(tenant.ProjectEnvironments)); err != nil {
- return fmt.Errorf("error setting project_environment: %s", err)
- }
-
d.Set("space_id", tenant.SpaceID)
if err := d.Set("tenant_tags", tenant.TenantTags); err != nil {
diff --git a/octopusdeploy/schema_tenant_project_environment.go b/octopusdeploy/schema_tenant_project_environment.go
new file mode 100644
index 000000000..0cab0481f
--- /dev/null
+++ b/octopusdeploy/schema_tenant_project_environment.go
@@ -0,0 +1,28 @@
+package octopusdeploy
+
+import "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
+
+func getTenantProjectSchema() map[string]*schema.Schema {
+ return map[string]*schema.Schema{
+ "tenant_id": {
+ Description: "The tenant ID associated with this tenant.",
+ Required: true,
+ Type: schema.TypeString,
+ ForceNew: true,
+ },
+ "project_id": {
+ Description: "The project ID associated with this tenant.",
+ Required: true,
+ Type: schema.TypeString,
+ ForceNew: true,
+ },
+ "environment_ids": {
+ Description: "The environment ID associated with this tenant.",
+ Elem: &schema.Schema{Type: schema.TypeString},
+ Optional: true,
+ Type: schema.TypeList,
+ Required: false,
+ },
+ "space_id": getSpaceIDSchema(),
+ }
+}
diff --git a/octopusdeploy/schema_tenant_test.go b/octopusdeploy/schema_tenant_test.go
index 76016001e..0a1d00d18 100644
--- a/octopusdeploy/schema_tenant_test.go
+++ b/octopusdeploy/schema_tenant_test.go
@@ -31,7 +31,6 @@ func TestFlattenTenant(t *testing.T) {
"description": description,
"id": id,
"name": name,
- "project_environment": flattenProjectEnvironments(projectEnvironments),
"space_id": spaceID,
"tenant_tags": tenantTags,
}
diff --git a/templates/resources/tenant.md.tmpl b/templates/resources/tenant.md.tmpl
new file mode 100644
index 000000000..d144e1f7c
--- /dev/null
+++ b/templates/resources/tenant.md.tmpl
@@ -0,0 +1,14 @@
+---
+page_title: "{{.Name}} {{.Type}} - {{.ProviderName}}"
+subcategory: ""
+description: |-
+{{ .Description | plainmarkdown | trimspace | prefixlines " " }}
+---
+
+# {{.Name}} ({{.Type}})
+
+{{ .Description | trimspace }}
+
+{{ .SchemaMarkdown | trimspace }}
+
+~> **NOTE property `project_environment` deprecated:** The `project_environment` property has been replaced by the `octopusdeploy_tenant_project` resource to allow more advanced provisioning scenarioes.
\ No newline at end of file
diff --git a/terraform/24-tenants/tenant.tf b/terraform/24-tenants/tenant.tf
index 5637e1def..609dcca2d 100644
--- a/terraform/24-tenants/tenant.tf
+++ b/terraform/24-tenants/tenant.tf
@@ -3,9 +3,11 @@ resource "octopusdeploy_tenant" "tenant_team_a" {
description = "Test tenant"
tenant_tags = ["tag1/a", "tag1/b"]
depends_on = [octopusdeploy_tag.tag_a, octopusdeploy_tag.tag_b]
-
- project_environment {
- environments = [octopusdeploy_environment.test_environment.id, octopusdeploy_environment.development_environment.id, octopusdeploy_environment.production_environment.id]
- project_id = octopusdeploy_project.deploy_frontend_project.id
- }
}
+
+
+resource "octopusdeploy_tenant_project" "team_a_frontend" {
+ tenant_id = octopusdeploy_tenant.tenant_team_a.id
+ project_id = octopusdeploy_project.deploy_frontend_project.id
+ environment_ids = [octopusdeploy_environment.test_environment.id, octopusdeploy_environment.development_environment.id, octopusdeploy_environment.production_environment.id]
+}
\ No newline at end of file
diff --git a/terraform/25-certificates/tenant.tf b/terraform/25-certificates/tenant.tf
index 5637e1def..e88cc53e4 100644
--- a/terraform/25-certificates/tenant.tf
+++ b/terraform/25-certificates/tenant.tf
@@ -3,9 +3,10 @@ resource "octopusdeploy_tenant" "tenant_team_a" {
description = "Test tenant"
tenant_tags = ["tag1/a", "tag1/b"]
depends_on = [octopusdeploy_tag.tag_a, octopusdeploy_tag.tag_b]
-
- project_environment {
- environments = [octopusdeploy_environment.test_environment.id, octopusdeploy_environment.development_environment.id, octopusdeploy_environment.production_environment.id]
- project_id = octopusdeploy_project.deploy_frontend_project.id
- }
}
+
+resource "octopusdeploy_tenant_project" "team_a_frontend" {
+ tenant_id = octopusdeploy_tenant.tenant_team_a.id
+ project_id = octopusdeploy_project.deploy_frontend_project.id
+ environment_ids = [octopusdeploy_environment.test_environment.id, octopusdeploy_environment.development_environment.id, octopusdeploy_environment.production_environment.id]
+}
\ No newline at end of file
diff --git a/terraform/26-tenant_variables/tenant.tf b/terraform/26-tenant_variables/tenant.tf
index 610f519df..14dde35ec 100644
--- a/terraform/26-tenant_variables/tenant.tf
+++ b/terraform/26-tenant_variables/tenant.tf
@@ -1,9 +1,10 @@
resource "octopusdeploy_tenant" "tenant_team_a" {
name = "Team A"
description = "Test tenant"
-
- project_environment {
- environments = [octopusdeploy_environment.test_environment.id, octopusdeploy_environment.development_environment.id, octopusdeploy_environment.production_environment.id]
- project_id = octopusdeploy_project.deploy_frontend_project.id
- }
}
+
+resource "octopusdeploy_tenant_project" "team_a_frontend" {
+ tenant_id = octopusdeploy_tenant.tenant_team_a.id
+ project_id = octopusdeploy_project.deploy_frontend_project.id
+ environment_ids = [octopusdeploy_environment.test_environment.id, octopusdeploy_environment.development_environment.id, octopusdeploy_environment.production_environment.id]
+}
\ No newline at end of file
diff --git a/terraform/26-tenant_variables/tenant_variables.tf b/terraform/26-tenant_variables/tenant_variables.tf
index 28dcd1106..060b4e235 100644
--- a/terraform/26-tenant_variables/tenant_variables.tf
+++ b/terraform/26-tenant_variables/tenant_variables.tf
@@ -4,6 +4,7 @@ resource "octopusdeploy_tenant_project_variable" "tenantprojectvariable6_team_a"
template_id = "${octopusdeploy_project.deploy_frontend_project.template[0].id}"
tenant_id = "${octopusdeploy_tenant.tenant_team_a.id}"
value = "my value"
+ depends_on = [ octopusdeploy_tenant_project.team_a_frontend ]
}
resource "octopusdeploy_tenant_common_variable" "tenantcommonvariable1_team_a" {
@@ -11,4 +12,5 @@ resource "octopusdeploy_tenant_common_variable" "tenantcommonvariable1_team_a" {
template_id = "${octopusdeploy_library_variable_set.library_variable_set_octopus_variables.template[0].id}"
tenant_id = "${octopusdeploy_tenant.tenant_team_a.id}"
value = "my value"
+ depends_on = [ octopusdeploy_tenant_project.team_a_frontend ]
}
diff --git a/terraform/53-scheduledprojecttrigger/Tenanted.tf b/terraform/53-scheduledprojecttrigger/Tenanted.tf
index 601353db9..34bc8b512 100644
--- a/terraform/53-scheduledprojecttrigger/Tenanted.tf
+++ b/terraform/53-scheduledprojecttrigger/Tenanted.tf
@@ -119,11 +119,13 @@ resource "octopusdeploy_tenant" "tenant_team_a" {
space_id = var.octopus_space_id
depends_on = [octopusdeploy_tag.tag_a, octopusdeploy_tag.tag_b]
+}
- project_environment {
- environments = [octopusdeploy_environment.env_1.id, octopusdeploy_environment.env_2.id]
- project_id = octopusdeploy_project.tenanted.id
- }
+resource "octopusdeploy_tenant_project" "team_a_tenanted" {
+ tenant_id = octopusdeploy_tenant.tenant_team_a.id
+ project_id = octopusdeploy_project.tenanted.id
+ environment_ids = [octopusdeploy_environment.env_1.id, octopusdeploy_environment.env_2.id]
+ space_id = var.octopus_space_id
}
resource "octopusdeploy_tenant" "tenant_team_b" {
@@ -132,11 +134,13 @@ resource "octopusdeploy_tenant" "tenant_team_b" {
tenant_tags = ["tag1/a", "tag1/b"]
space_id = var.octopus_space_id
depends_on = [octopusdeploy_tag.tag_a, octopusdeploy_tag.tag_b]
+}
- project_environment {
- environments = [octopusdeploy_environment.env_1.id, octopusdeploy_environment.env_2.id]
- project_id = octopusdeploy_project.tenanted.id
- }
+resource "octopusdeploy_tenant_project" "team_b_tenanted" {
+ tenant_id = octopusdeploy_tenant.tenant_team_b.id
+ project_id = octopusdeploy_project.tenanted.id
+ environment_ids = [octopusdeploy_environment.env_1.id, octopusdeploy_environment.env_2.id]
+ space_id = var.octopus_space_id
}
resource "octopusdeploy_project_scheduled_trigger" "tenanted_trigger" {