Enable a standalone network for shares

The patch adds config options and template changes to enable a single
standalone network for serving shares from a NetApp appliance.

Closes-Bug: #1989216
Change-Id: I807edb61b6171cfd2260d1eba581019a130090c0
This commit is contained in:
Alex Kavanagh 2022-11-01 16:46:06 +01:00
parent f64d041ca2
commit 29af821ce4
3 changed files with 106 additions and 9 deletions

View File

@ -50,3 +50,84 @@ options:
description: | description: |
Password for the administrative user account specified in the Password for the administrative user account specified in the
'admin-name' option. 'admin-name' option.
transport-type:
type: string
description: |
Transport protocol for communicating with the storage system or proxy
server. Valid options include http and https.
default: http
netapp-server-port:
type: string
description: |
The TCP port to use for communication with the storage system or proxy
server. If not specified, ONTAP drivers will use 80 for HTTP and 443 for HTTPS.
default: ''
backend-availability-zone:
type: string
description: |
Zone where backend shared server would be created.
default: 'nova'
root-volume-name:
type: string
description: |
This option specifies name of the root volume that will be created when
a new SVM is created to correspond to a Manila share server.
default: 'root'
aggregate-name-search-pattern:
type: string
description: |
This option specifies a regular expression that is applied against all
available aggregates related to the SVM specified in the netapp_vserver
option. This filtered list will be reported to the Manila scheduler as
valid pools for provisioning new shares.
default: '(.*)'
standalone-network:
type: boolean
description: |
Standalone Network Plugin Use this plugin in stand-alone deployments of
OpenStack Manila
default: False
standalone-network-network-type:
type: string
description: |
Specify the network type as one of flat or vlan. If unspecified, the
driver assumes the network is non-segmented. If using vlan, specify
the standalone_network_plugin_segmentation_id option as well.
default: flat
standalone-network-segmentation-id:
type: string
description: |
Specify the segmentation ID that should be assigned to data LIFs through
which shares can be exported. This option is not necessary if the
standalone_network_plugin_network_type is set to flat
default: ''
standalone-network-mtu:
type: string
description: |
Maximum Transmission unit (MTU) value of the network.
default: '1500'
standalone-network-allowed-ip-ranges:
type: string
description: |
Specify the range of IP addresses that can be used on data LIFs through
which shares can be exported. An example of a valid range would be
10.0.0.10-10.0.0.254. If this value is not specified, the entire range
of IP addresses within the network computed by applying the value of
standalone_network_plugin_mask to the value of
standalone_network_plugin_gateway. In this case, the broadcast,
network, and gateway addresses are automatically excluded.
default: ''
standalone-network-mask:
type: string
description: |
Specify the subnet mask that should be configured on the data LIF through
which the share is exported. You can specify the CIDR suffix (without the
slash, e.g. 24) or the full netmask (e.g. 255.255.255.0).
default: "24"
standalone-network-gateway:
type: string
description: |
Specify the gateway IP address that should be configured on the data
LIF through which the share is exported. A Vserver static route is
configured using this gateway.
default: "172.16.31.1"

View File

@ -86,6 +86,9 @@ class ManilaNetappCharm(ops_openstack.core.OSBaseCharm):
'admin-password'] 'admin-password']
if self.options.driver_handles_share_servers: if self.options.driver_handles_share_servers:
required_configs.append('root-volume-aggregate-name') required_configs.append('root-volume-aggregate-name')
if self.options.standalone_network:
required_configs.append('standalone-network-gateway')
required_configs.append('standalone-network-mask')
else: else:
required_configs.append('vserver-name') required_configs.append('vserver-name')
missing_configs = [] missing_configs = []

View File

@ -3,25 +3,38 @@
share_backend_name = {{ options.share_backend_name }} share_backend_name = {{ options.share_backend_name }}
share_driver = manila.share.drivers.netapp.common.NetAppDriver share_driver = manila.share.drivers.netapp.common.NetAppDriver
driver_handles_share_servers = {{ options.driver_handles_share_servers }} driver_handles_share_servers = {{ options.driver_handles_share_servers }}
{%- if options.driver_handles_share_servers %}
netapp_root_volume_aggregate = {{ options.root_volume_aggregate_name }}
netapp_enabled_share_protocols = {{ options.enabled_share_protocols }}
{%- else %}
netapp_vserver = {{ options.vserver_name }}
{%- endif %}
netapp_storage_family = ontap_cluster netapp_storage_family = ontap_cluster
netapp_server_hostname = {{ options.management_address }} netapp_server_hostname = {{ options.management_address }}
netapp_login = {{ options.admin_name }} netapp_login = {{ options.admin_name }}
netapp_password = {{ options.admin_password }} netapp_password = {{ options.admin_password }}
netapp_transport_type = {{ options.transport_type }}
netapp_server_port = {{ options.netapp_server_port }}
backend_availability_zone = {{ options.backend_availability_zone }}
netapp_aggregate_name_search_pattern = {{ options.aggregate_name_search_pattern }}
{% if options.driver_handles_share_servers %} {%- if options.driver_handles_share_servers %}
netapp_root_volume_aggregate = {{ options.root_volume_aggregate_name }}
netapp_root_volume_name = {{ options.root_volume_name }}
netapp_enabled_share_protocols = {{ options.enabled_share_protocols }}
{% if options.standalone_network %}
network_api_class = manila.network.standalone_network_plugin.StandaloneNetworkPlugin
standalone_network_plugin_gateway = {{ options.standalone_network_gateway }}
standalone_network_plugin_mask = {{ options.standalone_network_mask }}
standalone_network_plugin_network_type = {{ options.standalone_network_network_type }}
standalone_network_plugin_segmentation_id = {{ options.standalone_network_segmentation_id }}
standalone_network_plugin_mtu = {{ options.standalone_network_mtu }}
standalone_network_plugin_allowed_ip_ranges = {{ options.standalone_network_allowed_ip_ranges }}
{% else %}
[neutron] [neutron]
username = {{ manila_plugin.authentication_data.username }} username = {{ manila_plugin.authentication_data.username }}
password = {{ manila_plugin.authentication_data.password }} password = {{ manila_plugin.authentication_data.password }}
project_domain_id = {{ manila_plugin.authentication_data.project_domain_id }} project_domain_name = {{ manila_plugin.authentication_data.project_domain_name }}
project_name = {{ manila_plugin.authentication_data.project_name }} project_name = {{ manila_plugin.authentication_data.project_name }}
user_domain_id = {{ manila_plugin.authentication_data.user_domain_id }} user_domain_name = {{ manila_plugin.authentication_data.user_domain_name }}
auth_uri = {{ manila_plugin.authentication_data.auth_uri }} auth_uri = {{ manila_plugin.authentication_data.auth_uri }}
auth_url = {{ manila_plugin.authentication_data.auth_url }} auth_url = {{ manila_plugin.authentication_data.auth_url }}
auth_type = {{ manila_plugin.authentication_data.auth_type }} auth_type = {{ manila_plugin.authentication_data.auth_type }}
{% endif %} {% endif %}
{%- else %}
netapp_vserver = {{ options.vserver_name }}
{%- endif %}