diff --git a/config.yaml b/config.yaml index d34d87b..9cf81c8 100644 --- a/config.yaml +++ b/config.yaml @@ -50,3 +50,84 @@ options: description: | Password for the administrative user account specified in the '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" diff --git a/src/charm.py b/src/charm.py index 182c674..0934ac5 100755 --- a/src/charm.py +++ b/src/charm.py @@ -86,6 +86,9 @@ class ManilaNetappCharm(ops_openstack.core.OSBaseCharm): 'admin-password'] if self.options.driver_handles_share_servers: 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: required_configs.append('vserver-name') missing_configs = [] diff --git a/templates/queens/manila.conf b/templates/queens/manila.conf index 0475d67..2438051 100644 --- a/templates/queens/manila.conf +++ b/templates/queens/manila.conf @@ -3,25 +3,38 @@ share_backend_name = {{ options.share_backend_name }} share_driver = manila.share.drivers.netapp.common.NetAppDriver 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_server_hostname = {{ options.management_address }} netapp_login = {{ options.admin_name }} 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] username = {{ manila_plugin.authentication_data.username }} 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 }} -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_url = {{ manila_plugin.authentication_data.auth_url }} auth_type = {{ manila_plugin.authentication_data.auth_type }} {% endif %} +{%- else %} +netapp_vserver = {{ options.vserver_name }} +{%- endif %}