Skip to content

Commit 195db64

Browse files
authored
feat: list of available service endpoints expanded/fixed (#409)
1 parent 76fa650 commit 195db64

File tree

6 files changed

+122
-35
lines changed

6 files changed

+122
-35
lines changed

examples/every-mt-vpe/main.tf

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,41 @@ module "vpes" {
3434
vpc_id = module.vpc.vpc_id
3535
#subnet_zone_list = module.vpc.subnet_zone_list
3636
resource_group_id = module.resource_group.resource_group_id
37-
cloud_services = ["account-management",
37+
cloud_services = [
38+
"account-management",
3839
"billing",
3940
"cloud-object-storage",
41+
"cloud-object-storage-config",
4042
"codeengine",
41-
#"container-registry", # to fix in https://github.com/terraform-ibm-modules/terraform-ibm-vpe-gateway/issues/390
43+
"container-registry",
44+
"containers-kubernetes",
45+
"context-based-restrictions",
4246
"directlink",
4347
"dns-svcs",
4448
"enterprise",
4549
"global-search-tagging",
4650
"globalcatalog",
4751
"hs-crypto",
52+
"hs-crypto-cert-mgr",
53+
"hs-crypto-ep11",
54+
"hs-crypto-ep11-az1",
55+
"hs-crypto-ep11-az2",
56+
"hs-crypto-ep11-az3",
57+
"hs-crypto-kmip",
58+
"hs-crypto-tke",
4859
"hyperp-dbaas-mongodb",
4960
"hyperp-dbaas-postgresql",
5061
"iam-svcs",
5162
"is",
5263
"kms",
64+
"messaging",
5365
"resource-controller",
66+
"support-center",
5467
"transit",
55-
"user-management"]
68+
"user-management",
69+
"vmware",
70+
"ntp",
71+
]
5672
}
5773

5874

main.tf

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
# VPE Locals
33
##############################################################################
44

5+
# NOTE: VPE Service Endpoint configuration can be found in service_endpoints.tf
6+
57
locals {
68
# List of Gateways to create
79
gateway_list = concat([
@@ -10,7 +12,7 @@ locals {
1012
{
1113
name = lookup(var.vpe_names, service, "${var.prefix}-${var.vpc_name}-${service}")
1214
service = service
13-
crn = null
15+
crn = local.service_to_endpoint_map[service]
1416
}
1517
],
1618
[
@@ -51,28 +53,6 @@ locals {
5153
(gateway.name) => gateway
5254
}
5355

54-
# Map of Services to endpoints
55-
service_to_endpoint_map = {
56-
account-management = "crn:v1:bluemix:public:account-management:global:::endpoint:${var.service_endpoints}.accounts.cloud.ibm.com"
57-
billing = "crn:v1:bluemix:public:billing:global:::endpoint:${var.service_endpoints}.billing.cloud.ibm.com"
58-
cloud-object-storage = "crn:v1:bluemix:public:cloud-object-storage:global:::endpoint:s3.direct.${var.region}.cloud-object-storage.appdomain.cloud"
59-
codeengine = "crn:v1:bluemix:public:codeengine:${var.region}:::endpoint:${var.service_endpoints}.${var.region}.codeengine.cloud.ibm.com"
60-
container-registry = "crn:v1:bluemix:public:container-registry:${var.region}:::endpoint:${var.region}.icr.io"
61-
directlink = "crn:v1:bluemix:public:directlink:global:::endpoint:${var.service_endpoints}.directlink.cloud.ibm.com"
62-
dns-svcs = "crn:v1:bluemix:public:dns-svcs:global::::"
63-
enterprise = "crn:v1:bluemix:public:enterprise:global:::endpoint:${var.service_endpoints}.enterprise.cloud.ibm.com"
64-
global-search-tagging = "crn:v1:bluemix:public:global-search-tagging:global:::endpoint:api.${var.service_endpoints}.global-search-tagging.cloud.ibm.com"
65-
globalcatalog = "crn:v1:bluemix:public:globalcatalog:global:::endpoint:${var.service_endpoints}.globalcatalog.cloud.ibm.com"
66-
hs-crypto = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:api.${var.service_endpoints}.${var.region}.hs-crypto.cloud.ibm.com"
67-
hyperp-dbaas-mongodb = "crn:v1:bluemix:public:hyperp-dbaas-mongodb:${var.region}:::endpoint:dbaas900-mongodb.${var.service_endpoints}.hyperp-dbaas.cloud.ibm.com"
68-
hyperp-dbaas-postgresql = "crn:v1:bluemix:public:hyperp-dbaas-postgresql:${var.region}:::endpoint:dbaas900-postgresql.${var.service_endpoints}.hyperp-dbaas.cloud.ibm.com"
69-
iam-svcs = "crn:v1:bluemix:public:iam-svcs:global:::endpoint:${var.service_endpoints}.iam.cloud.ibm.com"
70-
is = "crn:v1:bluemix:public:is:${var.region}:::endpoint:${var.region}.${var.service_endpoints}.iaas.cloud.ibm.com"
71-
kms = "crn:v1:bluemix:public:kms:${var.region}:::endpoint:${var.service_endpoints}.${var.region}.kms.cloud.ibm.com"
72-
resource-controller = "crn:v1:bluemix:public:resource-controller:global:::endpoint:${var.service_endpoints}.resource-controller.cloud.ibm.com"
73-
transit = "crn:v1:bluemix:public:transit:global:::endpoint:${var.service_endpoints}.transit.cloud.ibm.com"
74-
user-management = "crn:v1:bluemix:public:user-management:global:::endpoint:${var.service_endpoints}.user-management.cloud.ibm.com"
75-
}
7656
}
7757

7858
##############################################################################
@@ -105,9 +85,12 @@ resource "ibm_is_virtual_endpoint_gateway" "vpe" {
10585
vpc = var.vpc_id
10686
resource_group = var.resource_group_id
10787
security_groups = var.security_group_ids
88+
89+
# check if target is a CRN and handle accordingly
10890
target {
109-
crn = each.value.service == null ? each.value.crn : local.service_to_endpoint_map[each.value.service]
110-
resource_type = "provider_cloud_service"
91+
name = length(regexall("crn:v1:([^:]*:){6}", each.value.crn)) > 0 ? null : each.value.crn
92+
crn = length(regexall("crn:v1:([^:]*:){6}", each.value.crn)) > 0 ? each.value.crn : null
93+
resource_type = length(regexall("crn:v1:([^:]*:){6}", each.value.crn)) > 0 ? "provider_cloud_service" : "provider_infrastructure_service"
11194
}
11295
}
11396

module-metadata.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"default": [],
99
"pos": {
1010
"filename": "variables.tf",
11-
"line": 95
11+
"line": 109
1212
}
1313
},
1414
"cloud_services": {
@@ -82,7 +82,7 @@
8282
"default": "private",
8383
"pos": {
8484
"filename": "variables.tf",
85-
"line": 106
85+
"line": 120
8686
}
8787
},
8888
"subnet_zone_list": {
@@ -126,7 +126,7 @@
126126
"default": {},
127127
"pos": {
128128
"filename": "variables.tf",
129-
"line": 117
129+
"line": 131
130130
}
131131
}
132132
},
@@ -169,7 +169,7 @@
169169
},
170170
"pos": {
171171
"filename": "main.tf",
172-
"line": 84
172+
"line": 64
173173
}
174174
},
175175
"ibm_is_virtual_endpoint_gateway.vpe": {
@@ -186,7 +186,7 @@
186186
},
187187
"pos": {
188188
"filename": "main.tf",
189-
"line": 99
189+
"line": 79
190190
}
191191
},
192192
"ibm_is_virtual_endpoint_gateway_ip.endpoint_gateway_ip": {
@@ -198,7 +198,7 @@
198198
},
199199
"pos": {
200200
"filename": "main.tf",
201-
"line": 120
201+
"line": 103
202202
}
203203
}
204204
},
@@ -212,7 +212,7 @@
212212
},
213213
"pos": {
214214
"filename": "main.tf",
215-
"line": 136
215+
"line": 119
216216
}
217217
}
218218
},

service_endpoints.tf

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
##############################################################################
2+
# MAPPING OF AVAILABLE MULTI-TENANT VPE SERVICE ENDPOINTS
3+
##############################################################################
4+
5+
locals {
6+
7+
endpoint_prefix = var.service_endpoints == "private" ? "private." : ""
8+
9+
service_to_endpoint_map = {
10+
account-management = "crn:v1:bluemix:public:account-management:global:::endpoint:${local.endpoint_prefix}accounts.cloud.ibm.com"
11+
billing = "crn:v1:bluemix:public:billing:global:::endpoint:${local.endpoint_prefix}billing.cloud.ibm.com"
12+
cloud-object-storage = "crn:v1:bluemix:public:cloud-object-storage:global:::endpoint:s3.direct.${var.region}.cloud-object-storage.appdomain.cloud"
13+
cloud-object-storage-config = "crn:v1:bluemix:public:cloud-object-storage:global:::endpoint:config.direct.cloud-object-storage.cloud.ibm.com"
14+
codeengine = "crn:v1:bluemix:public:codeengine:${var.region}:::endpoint:${local.endpoint_prefix}${var.region}.codeengine.cloud.ibm.com"
15+
container-registry = "crn:v1:bluemix:public:container-registry:${contains(keys(local.container_registry_region_domain_map), var.region) ? var.region : "us-east"}:::endpoint:${lookup(local.container_registry_region_domain_map, var.region, "icr.io")}" # default to global if not in mapping
16+
containers-kubernetes = "crn:v1:bluemix:public:containers-kubernetes:${var.region}:::endpoint:api.${var.region}.containers.cloud.ibm.com"
17+
context-based-restrictions = "crn:v1:bluemix:public:context-based-restrictions:global:::endpoint:${local.endpoint_prefix}cbr.cloud.ibm.com"
18+
directlink = "crn:v1:bluemix:public:directlink:global:::endpoint:${local.endpoint_prefix}directlink.cloud.ibm.com"
19+
dns-svcs = "crn:v1:bluemix:public:dns-svcs:global::::"
20+
enterprise = "crn:v1:bluemix:public:enterprise:global:::endpoint:${local.endpoint_prefix}enterprise.cloud.ibm.com"
21+
global-search-tagging = "crn:v1:bluemix:public:global-search-tagging:global:::endpoint:api.${local.endpoint_prefix}global-search-tagging.cloud.ibm.com"
22+
globalcatalog = "crn:v1:bluemix:public:globalcatalog:global:::endpoint:${local.endpoint_prefix}globalcatalog.cloud.ibm.com"
23+
hs-crypto = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:api.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
24+
hs-crypto-cert-mgr = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:cert-mgr.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
25+
hs-crypto-ep11 = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:ep11.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
26+
hs-crypto-ep11-az1 = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:ep11-az1.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
27+
hs-crypto-ep11-az2 = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:ep11-az2.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
28+
hs-crypto-ep11-az3 = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:ep11-az3.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
29+
hs-crypto-kmip = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:kmip.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
30+
hs-crypto-tke = "crn:v1:bluemix:public:hs-crypto:${var.region}:::endpoint:tke.${local.endpoint_prefix}${var.region}.hs-crypto.cloud.ibm.com"
31+
hyperp-dbaas-mongodb = "crn:v1:bluemix:public:hyperp-dbaas-mongodb:${var.region}:::endpoint:dbaas900-mongodb.${local.endpoint_prefix}hyperp-dbaas.cloud.ibm.com"
32+
hyperp-dbaas-postgresql = "crn:v1:bluemix:public:hyperp-dbaas-postgresql:${var.region}:::endpoint:dbaas900-postgresql.${local.endpoint_prefix}hyperp-dbaas.cloud.ibm.com"
33+
iam-svcs = "crn:v1:bluemix:public:iam-svcs:global:::endpoint:${local.endpoint_prefix}iam.cloud.ibm.com"
34+
is = "crn:v1:bluemix:public:is:${var.region}:::endpoint:${var.region}.${local.endpoint_prefix}iaas.cloud.ibm.com"
35+
kms = "crn:v1:bluemix:public:kms:${var.region}:::endpoint:${local.endpoint_prefix}${var.region}.kms.cloud.ibm.com"
36+
messaging = "crn:v1:bluemix:public:messaging:global:::endpoint:${local.endpoint_prefix}messaging.cloud.ibm.com"
37+
resource-controller = "crn:v1:bluemix:public:resource-controller:global:::endpoint:${local.endpoint_prefix}resource-controller.cloud.ibm.com"
38+
support-center = "crn:v1:bluemix:public:support:global:::endpoint:private.support-center.cloud.ibm.com"
39+
transit = "crn:v1:bluemix:public:transit:global:::endpoint:${local.endpoint_prefix}transit.cloud.ibm.com"
40+
user-management = "crn:v1:bluemix:public:user-management:global:::endpoint:${local.endpoint_prefix}user-management.cloud.ibm.com"
41+
vmware = "crn:v1:bluemix:public:vmware:${var.region}:::endpoint:api.${local.endpoint_prefix}${var.region}.vmware.cloud.ibm.com"
42+
ntp = "ibm-ntp-server"
43+
}
44+
45+
# CONTAINER-REGISTRY region-domain mappings
46+
# this cannot be pulled dynamically at this time, so hard-coding the region to registry domain mapping
47+
# Resource: https://cloud.ibm.com/docs/Registry?topic=Registry-registry_vpe&interface=ui#registry_vpe_endpoint_setup
48+
container_registry_region_domain_map = {
49+
"au-syd" = "au.icr.io" # ap-south
50+
"jp-osa" = "jp2.icr.io" # jp-osa
51+
"jp-tok" = "jp.icr.io" # ap-north
52+
"eu-de" = "de.icr.io" # eu-central
53+
"eu-gb" = "uk.icr.io" # uk-south
54+
"ca-tor" = "ca.icr.io" # ca-tor
55+
"br-sao" = "br.icr.io" # br-sao
56+
"us-south" = "us.icr.io" # us
57+
}
58+
59+
}

tests/pr_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,36 @@ func setupOptions(t *testing.T, prefix string, dir string) *testhelper.TestOptio
2222
"account-management",
2323
"billing",
2424
"cloud-object-storage",
25+
//"cloud-object-storage-config",
2526
"codeengine",
27+
//"container-registry",
28+
//"containers-kubernetes",
29+
//"context-based-restrictions",
2630
"directlink",
2731
"dns-svcs",
2832
"enterprise",
2933
"global-search-tagging",
3034
"globalcatalog",
3135
"hs-crypto",
36+
//"hs-crypto-cert-mgr",
37+
//"hs-crypto-ep11",
38+
//"hs-crypto-ep11-az1",
39+
//"hs-crypto-ep11-az2",
40+
//"hs-crypto-ep11-az3",
41+
//"hs-crypto-kmip",
42+
//"hs-crypto-tke",
3243
"hyperp-dbaas-mongodb",
3344
"hyperp-dbaas-postgresql",
3445
"iam-svcs",
3546
"is",
3647
"kms",
48+
//"messaging",
3749
"resource-controller",
50+
//"support-center",
3851
"transit",
3952
"user-management",
53+
//"vmware",
54+
//"ntp",
4055
}
4156

4257
vpeNames := map[string]string{

variables.tf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,36 @@ variable "cloud_services" {
7171
"account-management",
7272
"billing",
7373
"cloud-object-storage",
74+
"cloud-object-storage-config",
7475
"codeengine",
7576
"container-registry",
77+
"containers-kubernetes",
78+
"context-based-restrictions",
7679
"directlink",
7780
"dns-svcs",
7881
"enterprise",
7982
"global-search-tagging",
8083
"globalcatalog",
8184
"hs-crypto",
85+
"hs-crypto-cert-mgr",
86+
"hs-crypto-ep11",
87+
"hs-crypto-ep11-az1",
88+
"hs-crypto-ep11-az2",
89+
"hs-crypto-ep11-az3",
90+
"hs-crypto-kmip",
91+
"hs-crypto-tke",
8292
"hyperp-dbaas-mongodb",
8393
"hyperp-dbaas-postgresql",
8494
"iam-svcs",
8595
"is",
8696
"kms",
97+
"messaging",
8798
"resource-controller",
99+
"support-center",
88100
"transit",
89101
"user-management",
102+
"vmware",
103+
"ntp"
90104
], service)
91105
]) == 0
92106
}

0 commit comments

Comments
 (0)