From 72ef8d1035f290dd6ab5d9038c4e1a61a37a6552 Mon Sep 17 00:00:00 2001 From: Claudia Watson Date: Mon, 13 Jul 2026 16:54:53 +0100 Subject: [PATCH] add sharetype and sharetype_access resource support --- manila.tf | 23 ++++++++++++++++++++++ variables.tf | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/manila.tf b/manila.tf index 5058b7f..37f54e7 100644 --- a/manila.tf +++ b/manila.tf @@ -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 } \ No newline at end of file diff --git a/variables.tf b/variables.tf index a115cba..d0adca3 100644 --- a/variables.tf +++ b/variables.tf @@ -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}