Skip to content

Commit 89e60fd

Browse files
Terraform Team Automationvarakali
authored andcommitted
Added support for subscription level limits
1 parent 95c3433 commit 89e60fd

15 files changed

+372
-26
lines changed

examples/limits/quota.tf renamed to examples/limits/quotas/quota.tf

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ variable "private_key_path" {
1818
variable "region" {
1919
}
2020

21-
variable "limit_definition_name" {
22-
default = "vm-standard2-8-count"
23-
}
24-
2521
provider "oci" {
2622
tenancy_ocid = var.tenancy_ocid
2723
user_ocid = var.user_ocid
File renamed without changes.
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {
5+
6+
}
7+
8+
variable "subscription_ocid" {
9+
10+
}
11+
12+
variable "user_ocid" {
13+
}
14+
15+
variable "fingerprint" {
16+
17+
}
18+
19+
variable "private_key_path" {
20+
}
21+
22+
variable "region" {
23+
}
24+
25+
variable "limit_definition_name" {
26+
default = "vm-standard2-8-count"
27+
}
28+
29+
provider "oci" {
30+
tenancy_ocid = var.tenancy_ocid
31+
user_ocid = var.user_ocid
32+
fingerprint = var.fingerprint
33+
private_key_path = var.private_key_path
34+
region = var.region
35+
}
36+
37+
data "oci_identity_availability_domain" "ad" {
38+
compartment_id = var.tenancy_ocid
39+
ad_number = 1
40+
}
41+
42+
data "oci_limits_services" "test_services" {
43+
#Required
44+
compartment_id = var.tenancy_ocid
45+
46+
filter {
47+
name = "name"
48+
values = ["compute"]
49+
}
50+
}
51+
52+
data "oci_limits_limit_definitions" "test_limit_definitions" {
53+
#Required
54+
compartment_id = var.tenancy_ocid
55+
56+
#Optional
57+
name = var.limit_definition_name
58+
service_name = data.oci_limits_services.test_services.services[0].name
59+
}
60+
61+
data "oci_limits_resource_availability" "test_resource_availability" {
62+
#Required
63+
compartment_id = var.tenancy_ocid
64+
limit_name = var.limit_definition_name
65+
service_name = data.oci_limits_services.test_services.services[0].name
66+
67+
#Optional
68+
#specify this parameter depending upon the limit and service
69+
availability_domain = data.oci_identity_availability_domain.ad.name
70+
}
71+
72+
data "oci_limits_limit_values" "test_limit_values" {
73+
#Required
74+
compartment_id = var.tenancy_ocid
75+
service_name = data.oci_limits_services.test_services.services[0].name
76+
77+
#Optional
78+
availability_domain = data.oci_identity_availability_domain.ad.name
79+
name = var.limit_definition_name
80+
scope_type = "AD"
81+
}
82+
83+
#### Subscription Param
84+
85+
data "oci_limits_services" "test_services_with_subscription" {
86+
#Required
87+
compartment_id = var.tenancy_ocid
88+
89+
#Optional
90+
subscription_id = var.subscription_ocid
91+
}
92+
93+
data "oci_limits_limit_definitions" "test_limit_definitions_with_subscription" {
94+
#Required
95+
compartment_id = var.tenancy_ocid
96+
97+
#Optional
98+
subscription_id = var.subscription_ocid
99+
}
100+
101+

internal/integrationtest/limits_limit_definition_test.go

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,18 @@ import (
1515
)
1616

1717
var (
18-
LimitsLimitsLimitDefinitionDataSourceRepresentation = map[string]interface{}{
18+
LimitsLimitDefinitionDataSourceRepresentation = map[string]interface{}{
1919
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.tenancy_ocid}`},
20-
"name": acctest.Representation{RepType: acctest.Optional, Create: `custom-image-count`},
21-
"service_name": acctest.Representation{RepType: acctest.Optional, Create: `${data.oci_limits_services.test_services.services.0.name}`},
20+
"name": acctest.Representation{RepType: acctest.Required, Create: `custom-image-count`},
21+
"service_name": acctest.Representation{RepType: acctest.Required, Create: `compute`},
2222
}
2323

24-
LimitsLimitDefinitionResourceConfig = acctest.GenerateDataSourceFromRepresentationMap("oci_limits_services", "test_services", acctest.Required, acctest.Create, LimitsLimitsServiceDataSourceRepresentation)
24+
LimitsLimitDefinitionDataSourceRepresentationForSubscription = map[string]interface{}{
25+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.tenancy_ocid}`},
26+
"name": acctest.Representation{RepType: acctest.Required, Create: subscriptionSupportedLimit},
27+
"service_name": acctest.Representation{RepType: acctest.Required, Create: subscriptionSupportedService},
28+
"subscription_id": acctest.Representation{RepType: acctest.Required, Create: `${var.subscription_ocid}`},
29+
}
2530
)
2631

2732
// issue-routing-tag: limits/default
@@ -34,6 +39,50 @@ func TestLimitsLimitDefinitionResource_basic(t *testing.T) {
3439
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
3540
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
3641
tenancyId := utils.GetEnvSettingWithBlankDefault("tenancy_ocid")
42+
//subscriptionId := utils.GetEnvSettingWithBlankDefault("subscription_ocid")
43+
//subscriptionIdVariableStr := fmt.Sprintf("variable \"subscription_ocid\" { default = \"%s\" }\n", subscriptionId)
44+
45+
datasourceName := "data.oci_limits_limit_definitions.test_limit_definitions"
46+
47+
acctest.SaveConfigContent("", "", "", t)
48+
49+
acctest.ResourceTest(t, nil, []resource.TestStep{
50+
// verify datasource
51+
{
52+
Config: config +
53+
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_limit_definitions", "test_limit_definitions", acctest.Required, acctest.Create, LimitsLimitDefinitionDataSourceRepresentation) +
54+
compartmentIdVariableStr,
55+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
56+
resource.TestCheckResourceAttr(datasourceName, "compartment_id", tenancyId),
57+
resource.TestCheckResourceAttr(datasourceName, "name", "custom-image-count"),
58+
resource.TestCheckResourceAttrSet(datasourceName, "service_name"),
59+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.#"),
60+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.are_quotas_supported"),
61+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.description"),
62+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.is_deprecated"),
63+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.is_dynamic"),
64+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.is_eligible_for_limit_increase"),
65+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.is_resource_availability_supported"),
66+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.name"),
67+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.scope_type"),
68+
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.service_name"),
69+
),
70+
},
71+
})
72+
}
73+
74+
func TestLimitsLimitDefinitionResource_subscription_support(t *testing.T) {
75+
httpreplay.SetScenario("TestLimitsLimitDefinitionResource_subscription_support")
76+
defer httpreplay.SaveScenario()
77+
78+
config := acctest.ProviderTestConfig()
79+
80+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
81+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
82+
tenancyId := utils.GetEnvSettingWithBlankDefault("tenancy_ocid")
83+
84+
subscriptionOcid := utils.GetEnvSettingWithBlankDefault("subscription_ocid")
85+
subscriptionOcidVariableStr := fmt.Sprintf("variable \"subscription_ocid\" { default = \"%s\" }\n", subscriptionOcid)
3786

3887
datasourceName := "data.oci_limits_limit_definitions.test_limit_definitions"
3988

@@ -43,10 +92,13 @@ func TestLimitsLimitDefinitionResource_basic(t *testing.T) {
4392
// verify datasource
4493
{
4594
Config: config +
46-
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_limit_definitions", "test_limit_definitions", acctest.Required, acctest.Create, LimitsLimitsLimitDefinitionDataSourceRepresentation) +
47-
compartmentIdVariableStr + LimitsLimitDefinitionResourceConfig,
95+
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_limit_definitions", "test_limit_definitions", acctest.Required, acctest.Create, LimitsLimitDefinitionDataSourceRepresentationForSubscription) +
96+
compartmentIdVariableStr + subscriptionOcidVariableStr,
4897
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
4998
resource.TestCheckResourceAttr(datasourceName, "compartment_id", tenancyId),
99+
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionSupportedLimit),
100+
resource.TestCheckResourceAttr(datasourceName, "service_name", subscriptionSupportedService),
101+
resource.TestCheckResourceAttr(datasourceName, "subscription_id", subscriptionOcid),
50102
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.#"),
51103
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.are_quotas_supported"),
52104
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.description"),
@@ -57,6 +109,7 @@ func TestLimitsLimitDefinitionResource_basic(t *testing.T) {
57109
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.name"),
58110
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.scope_type"),
59111
resource.TestCheckResourceAttrSet(datasourceName, "limit_definitions.0.service_name"),
112+
resource.TestCheckResourceAttr(datasourceName, "limit_definitions.0.supported_subscriptions.#", "1"),
60113
),
61114
},
62115
})

internal/integrationtest/limits_limit_value_test.go

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,21 @@ import (
1717
var (
1818
LimitsLimitsLimitValueDataSourceRepresentation = map[string]interface{}{
1919
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.tenancy_ocid}`},
20-
"service_name": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_limits_services.test_services.services.0.name}`},
20+
"service_name": acctest.Representation{RepType: acctest.Required, Create: `compute`},
2121
"availability_domain": acctest.Representation{RepType: acctest.Optional, Create: `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}`},
22-
"name": acctest.Representation{RepType: acctest.Optional, Create: `custom-image-count`},
22+
"name": acctest.Representation{RepType: acctest.Required, Create: `custom-image-count`},
2323
"scope_type": acctest.Representation{RepType: acctest.Optional, Create: `AD`},
2424
}
2525

2626
LimitsLimitValueResourceConfig = AvailabilityDomainConfig +
27-
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_services", "test_services", acctest.Required, acctest.Create, LimitsLimitsServiceDataSourceRepresentation)
27+
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_services", "test_services", acctest.Required, acctest.Create, LimitsServiceDataSourceRepresentation)
28+
29+
LimitsLimitsLimitValueDataSourceRepresentationForSubscriptionTest = map[string]interface{}{
30+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.tenancy_ocid}`},
31+
"service_name": acctest.Representation{RepType: acctest.Required, Create: subscriptionSupportedService},
32+
"name": acctest.Representation{RepType: acctest.Required, Create: subscriptionSupportedLimit},
33+
"subscription_id": acctest.Representation{RepType: acctest.Required, Create: `${var.subscription_ocid}`},
34+
}
2835
)
2936

3037
// issue-routing-tag: limits/default
@@ -50,8 +57,42 @@ func TestLimitsLimitValueResource_basic(t *testing.T) {
5057
compartmentIdVariableStr + LimitsLimitValueResourceConfig,
5158
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
5259
resource.TestCheckResourceAttr(datasourceName, "compartment_id", tenancyId),
53-
resource.TestCheckResourceAttrSet(datasourceName, "service_name"),
60+
resource.TestCheckResourceAttr(datasourceName, "name", "custom-image-count"),
61+
resource.TestCheckResourceAttr(datasourceName, "service_name", "compute"),
62+
resource.TestCheckResourceAttrSet(datasourceName, "limit_values.#"),
63+
),
64+
},
65+
})
66+
}
67+
68+
func TestLimitsLimitValueResource_subscription(t *testing.T) {
69+
httpreplay.SetScenario("TestLimitsLimitValueResource_subscription")
70+
defer httpreplay.SaveScenario()
71+
72+
config := acctest.ProviderTestConfig()
73+
74+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
75+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
76+
tenancyId := utils.GetEnvSettingWithBlankDefault("tenancy_ocid")
77+
78+
subscriptionOcid := utils.GetEnvSettingWithBlankDefault("subscription_ocid")
79+
subscriptionOcidVariableStr := fmt.Sprintf("variable \"subscription_ocid\" { default = \"%s\" }\n", subscriptionOcid)
80+
81+
datasourceName := "data.oci_limits_limit_values.test_limit_values"
82+
83+
acctest.SaveConfigContent("", "", "", t)
5484

85+
acctest.ResourceTest(t, nil, []resource.TestStep{
86+
// verify datasource
87+
{
88+
Config: config +
89+
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_limit_values", "test_limit_values", acctest.Required, acctest.Create, LimitsLimitsLimitValueDataSourceRepresentationForSubscriptionTest) +
90+
compartmentIdVariableStr + subscriptionOcidVariableStr,
91+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
92+
resource.TestCheckResourceAttr(datasourceName, "compartment_id", tenancyId),
93+
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionSupportedLimit),
94+
resource.TestCheckResourceAttr(datasourceName, "service_name", subscriptionSupportedService),
95+
resource.TestCheckResourceAttr(datasourceName, "subscription_id", subscriptionOcid),
5596
resource.TestCheckResourceAttrSet(datasourceName, "limit_values.#"),
5697
),
5798
},

internal/integrationtest/limits_resource_availability_test.go

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@ var (
2323
}
2424

2525
LimitsResourceAvailabilityResourceConfig = AvailabilityDomainConfig +
26-
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_services", "test_services", acctest.Required, acctest.Create, LimitsLimitsServiceDataSourceRepresentation)
26+
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_services", "test_services", acctest.Required, acctest.Create, LimitsServiceDataSourceRepresentation)
27+
LimitsLimitsResourceAvailabilitySingularDataSourceRepresentationForSubscriptionTest = map[string]interface{}{
28+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.tenancy_ocid}`},
29+
"service_name": acctest.Representation{RepType: acctest.Required, Create: subscriptionSupportedService},
30+
"limit_name": acctest.Representation{RepType: acctest.Required, Create: subscriptionSupportedLimit},
31+
"subscription_id": acctest.Representation{RepType: acctest.Required, Create: `${var.subscription_ocid}`},
32+
}
2733
)
2834

2935
// issue-routing-tag: limits/default
@@ -59,3 +65,39 @@ func TestLimitsResourceAvailabilityResource_basic(t *testing.T) {
5965
},
6066
})
6167
}
68+
69+
func TestLimitsResourceAvailabilityResource_subscription(t *testing.T) {
70+
httpreplay.SetScenario("TestLimitsResourceAvailabilityResource_subscription")
71+
defer httpreplay.SaveScenario()
72+
73+
config := acctest.ProviderTestConfig()
74+
75+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
76+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
77+
tenancyId := utils.GetEnvSettingWithBlankDefault("tenancy_ocid")
78+
subscriptionOcid := utils.GetEnvSettingWithBlankDefault("subscription_ocid")
79+
subscriptionOcidVariableStr := fmt.Sprintf("variable \"subscription_ocid\" { default = \"%s\" }\n", subscriptionOcid)
80+
81+
singularDatasourceName := "data.oci_limits_resource_availability.test_resource_availability"
82+
83+
acctest.SaveConfigContent("", "", "", t)
84+
85+
acctest.ResourceTest(t, nil, []resource.TestStep{
86+
// verify singular datasource
87+
{
88+
Config: config +
89+
acctest.GenerateDataSourceFromRepresentationMap("oci_limits_resource_availability", "test_resource_availability", acctest.Required, acctest.Create, LimitsLimitsResourceAvailabilitySingularDataSourceRepresentationForSubscriptionTest) +
90+
compartmentIdVariableStr + LimitsResourceAvailabilityResourceConfig + subscriptionOcidVariableStr,
91+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
92+
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", tenancyId),
93+
resource.TestCheckResourceAttr(singularDatasourceName, "limit_name", subscriptionSupportedLimit),
94+
resource.TestCheckResourceAttr(singularDatasourceName, "service_name", subscriptionSupportedService),
95+
resource.TestCheckResourceAttr(singularDatasourceName, "subscription_id", subscriptionOcid),
96+
resource.TestCheckResourceAttrSet(singularDatasourceName, "available"),
97+
resource.TestCheckResourceAttrSet(singularDatasourceName, "fractional_availability"),
98+
resource.TestCheckResourceAttrSet(singularDatasourceName, "fractional_usage"),
99+
resource.TestCheckResourceAttrSet(singularDatasourceName, "used"),
100+
),
101+
},
102+
})
103+
}

0 commit comments

Comments
 (0)