-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproject.tf
More file actions
58 lines (50 loc) · 3.1 KB
/
project.tf
File metadata and controls
58 lines (50 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
resource "openstack_identity_project_v3" "project" {
for_each = var.projects
name = each.key
description = each.value.description
}
resource "openstack_blockstorage_quotaset_v3" "project" {
# Skip projects where quotas has no blockstorage keys, else fails with
# {"code": 400, "message": "Invalid input for field/attribute quota_set. Value: {}. {} does not have enough properties"}
for_each = {for name, proj in var.projects: name => proj if contains(keys(proj), "blockstorage_quota")}
project_id = openstack_identity_project_v3.project[each.key].id
# so need to set these to null if not required
volumes = lookup(each.value.blockstorage_quota, "volumes", null)
snapshots = lookup(each.value.blockstorage_quota, "snapshots", null)
gigabytes = lookup(each.value.blockstorage_quota, "gigabytes", null)
per_volume_gigabytes = lookup(each.value.blockstorage_quota, "per_volume_gigabytes", null)
backups = lookup(each.value.blockstorage_quota, "backups", null)
backup_gigabytes = lookup(each.value.blockstorage_quota, "backup_gigabytes", null)
groups = lookup(each.value.blockstorage_quota, "groups", null)
volume_type_quota = lookup(each.value.blockstorage_quota, "volume_type_quota", null)
# in above $TYPE is presumably result of `openstack volume type list -c Name`:
# volumes_$TYPE = 30
# gigabytes_$TYPE = 500
# snapshots_$TYPE = 10
# }
}
resource "openstack_compute_quotaset_v2" "project" {
for_each = {for name, proj in var.projects: name => proj if contains(keys(proj), "compute_quota")}
project_id = openstack_identity_project_v3.project[each.key].id
key_pairs = lookup(each.value.compute_quota, "key_pairs", null)
ram = lookup(each.value.compute_quota, "ram", null)
cores = lookup(each.value.compute_quota, "cores", null)
instances = lookup(each.value.compute_quota, "instances", null)
server_groups = lookup(each.value.compute_quota, "server_groups", null)
server_group_members = lookup(each.value.compute_quota, "server_group_members", null)
}
resource "openstack_networking_quota_v2" "project" {
for_each = {for name, proj in var.projects: name => proj if contains(keys(proj), "network_quota")}
project_id = openstack_identity_project_v3.project[each.key].id
floatingip = lookup(each.value.network_quota, "floatingip", null)
network = lookup(each.value.network_quota, "network", null)
port = lookup(each.value.network_quota, "port", null)
rbac_policy = lookup(each.value.network_quota, "rbac_policy", null)
router = lookup(each.value.network_quota, "router", null)
security_group = lookup(each.value.network_quota, "security_group", null)
security_group_rule = lookup(each.value.network_quota, "security_group_rule", null)
subnet = lookup(each.value.network_quota, "subnet", null)
subnetpool = lookup(each.value.network_quota, "subnetpool", null)
}
# TODO: add network
# TODO: What about manila? doens't appear to be a quota for that