Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions manila.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,27 @@ resource "openstack_sharedfilesystem_share_v2" "shares" {
metadata = lookup(each.value, "metadata", null)
share_network_id = lookup(each.value, "share_network_id", null)
availability_zone = lookup(each.value, "availability_zone", null)
}

resource "openstack_sharedfilesystem_sharetype_v2" "sharetypes" {
for_each = var.sharetypes

name = each.key

description = lookup(each.value, "description", null)
is_public = lookup(each.value, "is_public", true)

extra_specs = {
driver_handles_share_servers = each.value.extra_specs.driver_handles_share_servers
snapshot_support = each.value.extra_specs.snapshot_support == null ? null : each.value.extra_specs.snapshot_support
share_backend_name = each.value.extra_specs.share_backend_name
"vast:vippoolname" = each.value.extra_specs.vippoolname != null ? var.vippools[each.value.extra_specs.vippoolname].name : null
}
}

resource "openstack_sharedfilesystem_sharetype_access_v2" "sharetypes_access" {
for_each = var.sharetypes_access

share_type_id = each.value.sharetype_name != null ? openstack_sharedfilesystem_sharetype_v2.sharetypes[each.value.sharetype_name].id : each.value.share_type_id
project_id = each.value.project != null ? openstack_identity_project_v3.project[each.value.project].id : each.value.project_id
}
55 changes: 55 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,61 @@ variable "shares"{
default = {}
}

variable "sharetypes" {

type = map(
object({
description = optional(string)
is_public = optional(bool, true)

extra_specs = optional(
object({
driver_handles_share_servers = bool
snapshot_support = optional(bool, null)
share_backend_name = optional(string, null)
vippoolname = string
})
)
})
)
default = {}
}

variable "sharetypes_access" {
type = map(
object({
sharetype_name = optional(string)
share_type_id = optional(string)
project = optional(string)
project_id = optional(string)
})
)
default = {}
}

variable "vippools" {
type = map(
object({

name = optional(string)
network = optional(string)
vlan = optional(number)
role = optional(string)
subnet_cidr = optional(number)
tenant_id = optional(string)
project = optional(string)
# may need renaming
vip_ranges = optional(list(object({
subnet = string
start = number
end = number
})), [])
ip_ranges = optional(list(list(string)), [])
})
)
default = {}
}

# TODO: more outputs?
output "projects" {
#value = {for k, v in openstack_identity_project_v3.project: k => v.id}
Expand Down