Skip to content

Commit 49871de

Browse files
authored
chore: Update use cases for migration to BTP CF provider (#266)
* chore: Update DC mission 4327 * chore: udpate usecases * chore: Update usecases for migration to the BTP CF provider * chore: Update usecases for migration to the BTP CF provider * chore: fix terraform fmt errors * chore: update CF provider version
1 parent 22d58c3 commit 49871de

File tree

9 files changed

+181
-66
lines changed

9 files changed

+181
-66
lines changed

released/modules/btp-cf/btp-cf-org-space/btp_cf_org_space.tf

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ terraform {
99
}
1010
cloudfoundry = {
1111
source = "SAP/cloudfoundry"
12-
version = "0.2.1-beta"
12+
version = "1.0.0-rc1"
1313
}
1414
}
1515
}
@@ -110,7 +110,6 @@ resource "cloudfoundry_space_role" "manager" {
110110
depends_on = [cloudfoundry_org_role.manager_role]
111111
}
112112

113-
114113
resource "cloudfoundry_space_role" "developer" {
115114
for_each = var.cf_space_developers
116115
username = each.value

released/modules/btp-cf/btp-cf-org-space/btp_cf_org_space_outputs.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,9 @@ output "cf_org_id" {
1111
output "cf_api_endpoint" {
1212
value = lookup(jsondecode(btp_subaccount_environment_instance.cf.labels), "API Endpoint", "not found")
1313
description = "API endpoint of the Cloud Foundry environment."
14+
}
15+
16+
output "cf_space_id" {
17+
value = cloudfoundry_space.space.id
18+
description = "ID of the new space"
1419
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# ------------------------------------------------------------------------------------------------------
2+
# Define the required providers for this module
3+
# ------------------------------------------------------------------------------------------------------
4+
terraform {
5+
required_providers {
6+
cloudfoundry = {
7+
source = "SAP/cloudfoundry"
8+
version = "1.0.0-rc1"
9+
}
10+
}
11+
}
12+
13+
# ------------------------------------------------------------------------------------------------------
14+
# Fetch the technical ID of the service plan
15+
# ------------------------------------------------------------------------------------------------------
16+
data "cloudfoundry_service" "service" {
17+
name = var.service_name
18+
}
19+
20+
21+
# ------------------------------------------------------------------------------------------------------
22+
# Create the service instance
23+
# ------------------------------------------------------------------------------------------------------
24+
resource "cloudfoundry_service_instance" "service" {
25+
name = var.service_name
26+
space = var.cf_space_id
27+
service_plan = data.cloudfoundry_service.service.service_plans["${var.plan_name}"]
28+
type = var.type
29+
parameters = var.parameters
30+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
output "id" {
2+
value = cloudfoundry_service_instance.service.id
3+
description = "The ID of the created service instance."
4+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
variable "service_name" {
2+
type = string
3+
description = "The name of the service"
4+
}
5+
6+
variable "service_instance_name" {
7+
type = string
8+
description = "The name of the service instance"
9+
}
10+
11+
variable "plan_name" {
12+
type = string
13+
description = "The name of the service plan"
14+
}
15+
16+
variable "type" {
17+
description = "Type of the service instance"
18+
type = string
19+
}
20+
21+
variable "parameters" {
22+
type = string
23+
description = "The values for the service instance parameters (JSON string)"
24+
}
25+
26+
variable "cf_space_id" {
27+
type = string
28+
description = "The ID of the Cloudfoundry space"
29+
}

released/modules/environment/cloudfoundry/space_cf/space_cf_variables.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ variable "cf_org_id" {
22
type = string
33
description = "The ID of the Cloud Foundry org."
44
}
5-
65
variable "name" {
76
type = string
87
description = "The name of the Cloud Foundry space."

released/usecases/resillient_apps/main.tf

Lines changed: 77 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -42,28 +42,22 @@ resource "btp_subaccount_role_collection_assignment" "subaccount-service-admins"
4242
# Creation of Cloud Foundry environment
4343
######################################################################
4444
module "cloudfoundry_environment" {
45-
source = "../../modules/environment/cloudfoundry/envinstance_cf"
45+
source = "../../modules/btp-cf/btp-cf-org-space"
4646
subaccount_id = btp_subaccount.project.id
4747
instance_name = local.project_subaccount_cf_org
4848
plan_name = "standard"
4949
cf_org_name = local.project_subaccount_cf_org
50-
cf_org_auditors = []
50+
cf_org_admins = var.cf_org_admins
51+
cf_org_managers = var.cf_org_admins
5152
cf_org_billing_managers = []
52-
cf_org_managers = []
53-
}
54-
55-
######################################################################
56-
# Creation of Cloud Foundry space
57-
######################################################################
58-
module "cloudfoundry_space" {
59-
source = "../../modules/environment/cloudfoundry/space_cf"
60-
cf_org_id = module.cloudfoundry_environment.cf_org_id
61-
name = var.cf_space_name
62-
cf_space_managers = var.cf_space_managers
63-
cf_space_developers = var.cf_space_developers
64-
cf_space_auditors = var.cf_space_auditors
53+
cf_org_auditors = []
54+
space_name = var.space_name
55+
cf_org_id = module.cloudfoundry_environment.cf_org_id
56+
cf_space_managers = var.cf_space_managers
57+
cf_space_developers = var.cf_space_developers
58+
cf_space_auditors = var.cf_space_auditors
59+
origin = var.origin
6560
}
66-
6761
######################################################################
6862
# Entitlement of all services and apps
6963
######################################################################
@@ -90,50 +84,54 @@ resource "time_sleep" "wait_a_few_seconds" {
9084
######################################################################
9185
# connectivitiy
9286
module "create_cf_service_instance_connectivity" {
93-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
94-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
95-
cf_space_id = module.cloudfoundry_space.id
87+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
88+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
89+
cf_space_id = module.cloudfoundry_environment.cf_space_id
9690
service_name = "connectivity"
9791
service_instance_name = "resapp-connectivity"
9892
plan_name = "lite"
93+
type = "managed"
9994
parameters = null
10095
}
10196

10297
# destination
10398
module "create_cf_service_instance_destination" {
104-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
105-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
106-
cf_space_id = module.cloudfoundry_space.id
99+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
100+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
101+
cf_space_id = module.cloudfoundry_environment.cf_space_id
107102
service_name = "destination"
108103
service_instance_name = "resapp-destination"
109104
plan_name = "lite"
105+
type = "managed"
110106
parameters = null
111107
}
112108

113109
# html5-apps-repo
114110
module "create_cf_service_instance_html5_repo" {
115-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
116-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
117-
cf_space_id = module.cloudfoundry_space.id
111+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
112+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
113+
cf_space_id = module.cloudfoundry_environment.cf_space_id
118114
service_name = "html5-apps-repo"
119115
service_instance_name = "resapp-html5-apps-repo"
120116
plan_name = "app-host"
117+
type = "managed"
121118
parameters = null
122119
}
123120

124121
# enterprise-messaging
125122
module "create_cf_service_instance_ems" {
126-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
127-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
128-
cf_space_id = module.cloudfoundry_space.id
123+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
124+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
125+
cf_space_id = module.cloudfoundry_environment.cf_space_id
129126
service_name = "enterprise-messaging"
130127
service_instance_name = "resapp-enterprise-messaging"
131128
plan_name = "default"
129+
type = "managed"
132130
parameters = jsonencode(
133131
{
134132
"emname" : "tfe",
135133
"namespace" : "tfe/bpem/em",
136-
"version" : "~> 1.4.0",
134+
"version" : "1.1.0",
137135
"resources" : {
138136
"units" : "10"
139137
},
@@ -148,66 +146,84 @@ module "create_cf_service_instance_ems" {
148146
}
149147
)
150148
}
151-
# Create service key for Cloudfoundry service instance of enterprise-messaging
152-
resource "cloudfoundry_service_key" "key_enterprise-messaging" {
153-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
154-
name = "key_enterprise-messaging"
155-
service_instance = module.create_cf_service_instance_ems.id
156-
}
157149

158-
# application-logs
150+
#application-logs
159151
module "create_cf_service_instance_applog" {
160-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
161-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
162-
cf_space_id = module.cloudfoundry_space.id
152+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
153+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
154+
cf_space_id = module.cloudfoundry_environment.cf_space_id
163155
service_name = "application-logs"
164156
service_instance_name = "resapp-application-logs"
165157
plan_name = "lite"
158+
type = "managed"
166159
parameters = null
167160
}
168161

169162
# xsuaa
170163
module "create_cf_service_instance_xsuaa" {
171-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
172-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
173-
cf_space_id = module.cloudfoundry_space.id
164+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
165+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
166+
cf_space_id = module.cloudfoundry_environment.cf_space_id
174167
service_name = "xsuaa"
175168
service_instance_name = "resapp-xsuaa"
176169
plan_name = "application"
170+
type = "managed"
177171
parameters = null
178172
}
179173

180174
# hana-cloud
181175
module "create_cf_service_instance_hana_cloud" {
182-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
183-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
184-
cf_space_id = module.cloudfoundry_space.id
176+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
177+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
178+
cf_space_id = module.cloudfoundry_environment.cf_space_id
185179
service_name = "hana-cloud"
186180
service_instance_name = "resapp-hana-cloud"
187181
plan_name = "hana"
188-
parameters = jsonencode({ "data" : { "memory" : 30, "edition" : "cloud", "systempassword" : "Abcd1234", "whitelistIPs" : ["0.0.0.0/0"] } })
182+
type = "managed"
183+
parameters = jsonencode(
184+
{
185+
"data" : {
186+
"memory" : 32,
187+
"edition" : "cloud",
188+
"systempassword" : "Abcd1234",
189+
"additionalWorkers" : 0,
190+
"disasterRecoveryMode" : "no_disaster_recovery",
191+
"enabledservices" : {
192+
"docstore" : false,
193+
"dpserver" : true,
194+
"scriptserver" : false
195+
},
196+
"requestedOperation" : {},
197+
"serviceStopped" : false,
198+
"slaLevel" : "standard",
199+
"storage" : 120,
200+
"vcpu" : 2,
201+
"whitelistIPs" : ["0.0.0.0/0"]
202+
}
203+
})
189204
}
190205

191-
192206
# hana
193207
module "create_cf_service_instance_hdishared" {
194-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space, module.create_cf_service_instance_hana_cloud]
195-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
196-
cf_space_id = module.cloudfoundry_space.id
208+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment, module.create_cf_service_instance_hana_cloud]
209+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
210+
cf_space_id = module.cloudfoundry_environment.cf_space_id
197211
service_name = "hana"
198212
service_instance_name = "resapp-hana"
199213
plan_name = "hdi-shared"
214+
type = "managed"
200215
parameters = null
201216
}
202217

203218
# autoscaler
204219
module "create_cf_service_instance_autoscaler" {
205-
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_space]
206-
source = "../../modules/environment/cloudfoundry/serviceinstance_cf"
207-
cf_space_id = module.cloudfoundry_space.id
220+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
221+
source = "../../modules/btp-cf/serviceinstance_btp_cf"
222+
cf_space_id = module.cloudfoundry_environment.cf_space_id
208223
service_name = "autoscaler"
209224
service_instance_name = "resapp-autoscaler"
210225
plan_name = "standard"
226+
type = "managed"
211227
parameters = null
212228
}
213229

@@ -225,3 +241,11 @@ resource "btp_subaccount_subscription" "app" {
225241
plan_name = each.value.plan_name
226242
depends_on = [btp_subaccount_entitlement.name]
227243
}
244+
245+
# # Create service key for Cloudfoundry service instance of enterprise-messaging
246+
resource "cloudfoundry_service_credential_binding" "key_enterprise-messaging" {
247+
depends_on = [time_sleep.wait_a_few_seconds, module.cloudfoundry_environment]
248+
name = "key_enterprise-messaging"
249+
type = "key"
250+
service_instance = module.create_cf_service_instance_ems.id
251+
}

released/usecases/resillient_apps/provider.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ terraform {
66
version = "~> 1.4.0"
77
}
88
cloudfoundry = {
9-
source = "cloudfoundry-community/cloudfoundry"
10-
version = "~>0.53.1"
9+
source = "SAP/cloudfoundry"
10+
version = "1.0.0-rc1"
1111
}
1212
}
1313
}
@@ -26,5 +26,5 @@ module "cloudfoundry_api" {
2626

2727
// Configuration is described in https://registry.terraform.io/providers/cloudfoundry-community/cloudfoundry/latest/docs
2828
provider "cloudfoundry" {
29-
api_url = module.cloudfoundry_api.api_url
29+
api_url = "https://api.cf.${var.region}.hana.ondemand.com"
3030
}

0 commit comments

Comments
 (0)