diff --git a/doc/requirements.txt b/doc/requirements.txt index b7433592ca..b2b382d2c5 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -15,6 +15,7 @@ graphviz!=0.5.0,>=0.4 # MIT License openstackdocstheme>=1.18.1 # Apache-2.0 sadisplay>=0.4.8 # BSD reno>=2.5.0 # Apache-2.0 +sphinx-feature-classification>=0.2.0 # Apache-2.0 # This needs to be installed after above modules pydot>=1.2.4 # MIT License diff --git a/doc/source/conf.py b/doc/source/conf.py index 2bb3e863f6..e05c08e266 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -62,6 +62,7 @@ extensions = [ 'sphinxcontrib.seqdiag', 'sphinxcontrib.nwdiag', 'sphinx.ext.graphviz', + 'sphinx_feature_classification.support_matrix', 'openstackdocstheme', 'oslo_config.sphinxext', 'oslo_policy.sphinxpolicygen', diff --git a/doc/source/contributor/guides/providers.rst b/doc/source/contributor/guides/providers.rst index 16554681f6..4ed0a3141d 100644 --- a/doc/source/contributor/guides/providers.rst +++ b/doc/source/contributor/guides/providers.rst @@ -1957,3 +1957,77 @@ references to the failed record if available. self.stats_record = kwargs.pop('stats_record', None) super(UpdateStatisticsError, self).__init__(*args, **kwargs) + +Documenting the Driver +====================== + +Octavia provides two documents to let operators and users know about available +drivers and their features. + +Available Provider Drivers +-------------------------- + +The :doc:`../../admin/providers` document provides administrators with a +guide to the available Octavia provider drivers. Since provider drivers are +not included in the Octavia source repositories, this guide is an important +tool for administrators to find your provider driver. + +You can submit information for your provider driver by submitting a patch to +the Octavia documentation following the normal OpenStack process. + +See the +`OpenStack Contributor Guide `_ +for more information on submitting a patch to OpenStack. + +Octavia Provider Feature Matrix +------------------------------- + +The Octavia documentation includes a +:doc:`../../user/feature-classification/index` that informs users on which +Octavia features are supported by each provider driver. + +The feature matrices are built using the `Oslo sphinx-feature-classification +`_ library. +This allows a simple INI file format for describing the capabilities of an +Octavia provider driver. + +Each driver should define a [driver.] section and then add a line +to each feature specifying the level of support the provider driver provides +for the feature. + +For example, the Amphora driver support for "admin_state_up" would add the +following to the feature-matrix-lb.ini file. + +.. code-block:: INI + + [driver.amphora] + title=Amphora Provider + link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + + [operation.admin_state_up] + ... + driver.amphora=complete + +Valid driver feature support statuses are: + +``complete`` + Fully implemented, expected to work at all times. + +``partial`` + Implemented, but with caveats about when it will work. + +``missing`` + Not implemented at all. + +You can also optionally provide additional, provider driver specific, notes for +users by defining a "driver-notes.". + +.. code-block:: INI + + [operation.admin_state_up] + ... + driver.amphora=complete + driver-notes.amphora=The Amphora driver fully supports admin_state_up. + +Driver notes are highly recommended when a provider driver declares a +``partial`` status. diff --git a/doc/source/user/feature-classification/feature-matrix-healthmonitor.ini b/doc/source/user/feature-classification/feature-matrix-healthmonitor.ini new file mode 100644 index 0000000000..9c30e55c37 --- /dev/null +++ b/doc/source/user/feature-classification/feature-matrix-healthmonitor.ini @@ -0,0 +1,168 @@ +# Copyright (c) 2019 Red Hat, Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +[driver.amphora] +title=Amphora Provider +link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + +[driver.ovn] +title=OVN Provider +link=https://docs.openstack.org/networking-ovn/latest/admin/loadbalancer.html + +# Note: These should be in the order they appear in a create call. + +[operation.admin_state_up] +title=admin_state_up +status=mandatory +notes=Enables and disables the health monitor. +cli=openstack loadbalancer healthmonitor create [--enable | --disable] +driver.amphora=complete +driver.ovn=missing + +[operation.delay] +title=delay +status=mandatory +notes=The time, in seconds, between sending probes to members. +cli=openstack loadbalancer healthmonitor create --delay +driver.amphora=complete +driver.ovn=missing + +[operation.domain_name] +title=domain_name +status=optional +notes=The domain name, which be injected into the HTTP Host Header to the backend server for HTTP health check. +cli=openstack loadbalancer healthmonitor create [--domain-name ] +driver.amphora=complete +driver.ovn=missing + +[operation.expected_codes] +title=expected_codes +status=optional +notes=The list of HTTP status codes expected in response from the member to declare it healthy. +cli=openstack loadbalancer healthmonitor create [--expected-codes ] +driver.amphora=complete +driver.ovn=missing + +[operation.http_method] +title=http_method +status=optional +notes=The HTTP method that the health monitor uses for requests. +cli=openstack loadbalancer healthmonitor create [--http-method ] +driver.amphora=complete +driver.ovn=missing + +[operation.http_version] +title=http_version +status=optional +notes=The HTTP version to use for health checks. +cli=openstack loadbalancer healthmonitor create [[--http-version ]] +driver.amphora=complete +driver.ovn=missing + +[operation.name] +title=name +status=optional +notes=The name of the health monitor. Provided by the Octavia API service. +cli=openstack loadbalancer healthmonitor create [--name ] +driver.amphora=complete +driver.ovn=missing + +[operation.max_retries] +title=max_retries +status=mandatory +notes=The number of successful checks before changing the operating status of the member to ONLINE. +cli=openstack loadbalancer healthmonitor create --max-retries +driver.amphora=complete +driver.ovn=missing + +[operation.max_retries_down] +title=max_retries_down +status=optional +notes=The number of allowed check failures before changing the operating status of the member to ERROR. +cli=openstack loadbalancer healthmonitor create [--max-retries-down ] +driver.amphora=complete +driver.ovn=missing + +[operation.tags] +title=tags +status=optional +notes=The tags for the health monitor. Provided by the Octavia API service. +cli=openstack loadbalancer healthmonitor create [--tag ] +driver.amphora=complete +driver.ovn=missing + +[operation.timeout] +title=timeout +status=mandatory +notes=The maximum time, in seconds, that a monitor waits to connect before it times out. +cli=openstack loadbalancer healthmonitor create --timeout +driver.amphora=complete +driver.ovn=missing + +[operation.type.HTTP] +title=type - HTTP +status=optional +notes=Use HTTP for the health monitor. +cli=openstack loadbalancer healthmonitor create --type HTTP +driver.amphora=complete +driver.ovn=missing + +[operation.type.HTTPS] +title=type - HTTPS +status=optional +notes=Use HTTPS for the health monitor. +cli=openstack loadbalancer healthmonitor create --type HTTPS +driver.amphora=complete +driver.ovn=missing + +[operation.type.PING] +title=type - PING +status=optional +notes=Use PING for the health monitor. +cli=openstack loadbalancer healthmonitor create --type PING +driver.amphora=partial +driver-notes.amphora=CentOS 7 based amphora do not support PING health monitors. +driver.ovn=missing + +[operation.type.TCP] +title=type - TCP +status=optional +notes=Use TCP for the health monitor. +cli=openstack loadbalancer healthmonitor create --type TCP +driver.amphora=complete +driver.ovn=missing + +[operation.type.TLS-HELLO] +title=type - TLS-HELLO +status=optional +notes=Use TLS-HELLO handshake for the health monitor. +cli=openstack loadbalancer healthmonitor create --type TLS-HELLO +driver.amphora=complete +driver.ovn=missing + +[operation.type.UDP-CONNECT] +title=type - UDP-CONNECT +status=optional +notes=Use UDP-CONNECT for the health monitor. +cli=openstack loadbalancer healthmonitor create --type UDP-CONNECT +driver.amphora=complete +driver.ovn=missing + +[operation.url_path] +title=url_path +status=optional +notes=The HTTP URL path of the request sent by the monitor to test the health of a backend member. +cli=openstack loadbalancer healthmonitor create [--url-path ] +driver.amphora=complete +driver.ovn=missing diff --git a/doc/source/user/feature-classification/feature-matrix-l7policy.ini b/doc/source/user/feature-classification/feature-matrix-l7policy.ini new file mode 100644 index 0000000000..94ec965a8a --- /dev/null +++ b/doc/source/user/feature-classification/feature-matrix-l7policy.ini @@ -0,0 +1,127 @@ +# Copyright (c) 2019 Red Hat, Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +[driver.amphora] +title=Amphora Provider +link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + +[driver.ovn] +title=OVN Provider +link=https://docs.openstack.org/networking-ovn/latest/admin/loadbalancer.html + +# Note: These should be in the order they appear in a create call. + +[operation.action.REDIRECT_TO_POOL] +title=action - REDIRECT_TO_POOL +status=optional +notes=The L7 policy action REDIRECT_TO_POOL. +cli=openstack loadbalancer l7policy create --action REDIRECT_TO_POOL +driver.amphora=complete +driver.ovn=missing + +[operation.action.REDIRECT_TO_PREFIX] +title=action - REDIRECT_TO_PREFIX +status=optional +notes=The L7 policy action REDIRECT_TO_PREFIX. +cli=openstack loadbalancer l7policy create --action REDIRECT_TO_PREFIX +driver.amphora=complete +driver.ovn=missing + +[operation.action.REDIRECT_TO_URL] +title=action - REDIRECT_TO_URL +status=optional +notes=The L7 policy action REDIRECT_TO_URL. +cli=openstack loadbalancer l7policy create --action REDIRECT_TO_URL +driver.amphora=complete +driver.ovn=missing + +[operation.action.REJECT] +title=action - REJECT +status=optional +notes=The L7 policy action REJECT. +cli=openstack loadbalancer l7policy create --action REJECT +driver.amphora=complete +driver.ovn=missing + +[operation.admin_state_up] +title=admin_state_up +status=mandatory +notes=Enables and disables the L7 policy. +cli=openstack loadbalancer l7policy create [--enable | --disable] +driver.amphora=complete +driver.ovn=missing + +[operation.description] +title=description +status=optional +notes=The description of the L7 policy. Provided by the Octavia API service. +cli=openstack loadbalancer l7policy create [--description ] +driver.amphora=complete +driver.ovn=missing + +[operation.name] +title=name +status=optional +notes=The name of the L7 policy. Provided by the Octavia API service. +cli=openstack loadbalancer l7policy create [--name ] +driver.amphora=complete +driver.ovn=missing + +[operation.position] +title=position +status=optional +notes=The position of this policy on the listener. +cli=openstack loadbalancer l7policy create [--position ] +driver.amphora=complete +driver.ovn=missing + +[operation.redirect_http_code] +title=redirect_http_code +status=optional +notes=Requests matching this policy will be redirected to the specified URL or Prefix URL with the HTTP response code. +cli=openstack loadbalancer l7policy create [--redirect-http-code ] +driver.amphora=complete +driver.ovn=missing + +[operation.redirect_pool_id] +title=redirect_pool_id +status=optional +notes=Requests matching this policy will be redirected to the pool with this ID. +cli=openstack loadbalancer l7policy create [--redirect-pool ] +driver.amphora=complete +driver.ovn=missing + +[operation.redirect_prefix] +title=redirect_prefix +status=optional +notes=Requests matching this policy will be redirected to this Prefix URL. +cli=openstack loadbalancer l7policy create [--redirect-prefix ] +driver.amphora=complete +driver.ovn=missing + +[operation.redirect_url] +title=redirect_url +status=optional +notes=Requests matching this policy will be redirected to this URL. +cli=openstack loadbalancer l7policy create [--redirect-url ] +driver.amphora=complete +driver.ovn=missing + +[operation.tags] +title=tags +status=optional +notes=The tags for the L7 policy. Provided by the Octavia API service. +cli=openstack loadbalancer l7policy create [--tag ] +driver.amphora=complete +driver.ovn=missing diff --git a/doc/source/user/feature-classification/feature-matrix-l7rule.ini b/doc/source/user/feature-classification/feature-matrix-l7rule.ini new file mode 100644 index 0000000000..4ac64e665d --- /dev/null +++ b/doc/source/user/feature-classification/feature-matrix-l7rule.ini @@ -0,0 +1,167 @@ +# Copyright (c) 2019 Red Hat, Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +[driver.amphora] +title=Amphora Provider +link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + +[driver.ovn] +title=OVN Provider +link=https://docs.openstack.org/networking-ovn/latest/admin/loadbalancer.html + +# Note: These should be in the order they appear in a create call. + +[operation.admin_state_up] +title=admin_state_up +status=mandatory +notes=Enables and disables the L7 rule. +cli=openstack loadbalancer l7rule create [--enable | --disable] +driver.amphora=complete +driver.ovn=missing + +[operation.compare_type.CONTAINS] +title=compare_type - CONTAINS +status=mandatory +notes=The CONTAINS comparison type for the L7 rule. +cli=openstack loadbalancer l7rule create --compare-type CONTAINS +driver.amphora=complete +driver.ovn=missing + +[operation.compare_type.ENDS_WITH] +title=compare_type - ENDS_WITH +status=mandatory +notes=The ENDS_WITH comparison type for the L7 rule. +cli=openstack loadbalancer l7rule create --compare-type ENDS_WITH +driver.amphora=complete +driver.ovn=missing + +[operation.compare_type.EQUAL_TO] +title=compare_type - EQUAL_TO +status=mandatory +notes=The EQUAL_TO comparison type for the L7 rule. +cli=openstack loadbalancer l7rule create --compare-type EQUAL_TO +driver.amphora=complete +driver.ovn=missing + +[operation.compare_type.REGEX] +title=compare_type - REGEX +status=mandatory +notes=The REGEX comparison type for the L7 rule. +cli=openstack loadbalancer l7rule create --compare-type REGEX +driver.amphora=complete +driver.ovn=missing + +[operation.compare_type.STARTS_WITH] +title=compare_type - STARTS_WITH +status=mandatory +notes=The STARTS_WITH comparison type for the L7 rule. +cli=openstack loadbalancer l7rule create --compare-type STARTS_WITH +driver.amphora=complete +driver.ovn=missing + +[operation.invert] +title=invert +status=optional +notes=When true the logic of the rule is inverted. +cli=openstack loadbalancer l7rule create [--invert] +driver.amphora=complete +driver.ovn=missing + +[operation.key] +title=key +status=optional +notes=The key to use for the comparison. +cli=openstack loadbalancer l7rule create [--key ] +driver.amphora=complete +driver.ovn=missing + +[operation.tags] +title=tags +status=optional +notes=The tags for the L7 rule. Provided by the Octavia API service. +cli=openstack loadbalancer l7rule create [--tag ] +driver.amphora=complete +driver.ovn=missing + +[operation.type.COOKIE] +title=type - COOKIE +status=optional +notes=The COOKIE L7 rule type. +cli=openstack loadbalancer l7rule create --type COOKIE +driver.amphora=complete +driver.ovn=missing + +[operation.type.FILE_TYPE] +title=type - FILE_TYPE +status=optional +notes=The FILE_TYPE L7 rule type. +cli=openstack loadbalancer l7rule create --type FILE_TYPE +driver.amphora=complete +driver.ovn=missing + +[operation.type.HEADER] +title=type - HEADER +status=optional +notes=The HEADER L7 rule type. +cli=openstack loadbalancer l7rule create --type HEADER +driver.amphora=complete +driver.ovn=missing + +[operation.type.HOST_NAME] +title=type - HOST_NAME +status=optional +notes=The HOST_NAME L7 rule type. +cli=openstack loadbalancer l7rule create --type HOST_NAME +driver.amphora=complete +driver.ovn=missing + +[operation.type.PATH] +title=type - PATH +status=optional +notes=The PATH L7 rule type. +cli=openstack loadbalancer l7rule create --type PATH +driver.amphora=complete +driver.ovn=missing + +[operation.type.SSL_CONN_HAS_CERT] +title=type - SSL_CONN_HAS_CERT +status=optional +notes=The SSL_CONN_HAS_CERT L7 rule type. +cli=openstack loadbalancer l7rule create --type SSL_CONN_HAS_CERT +driver.amphora=complete +driver.ovn=missing + +[operation.type.SSL_VERIFY_RESULT] +title=type - SSL_VERIFY_RESULT +status=optional +notes=The SSL_VERIFY_RESULT L7 rule type. +cli=openstack loadbalancer l7rule create --type SSL_VERIFY_RESULT +driver.amphora=complete +driver.ovn=missing + +[operation.type.SSL_DN_FIELD] +title=type - SSL_DN_FIELD +status=optional +notes=The SSL_DN_FIELD L7 rule type. +cli=openstack loadbalancer l7rule create --type SSL_DN_FIELD +driver.amphora=complete +driver.ovn=missing + +[operation.value] +title=value +status=mandatory +notes=The value to use for the comparison. +cli=openstack loadbalancer l7rule create --value +driver.amphora=complete +driver.ovn=missing diff --git a/doc/source/user/feature-classification/feature-matrix-lb.ini b/doc/source/user/feature-classification/feature-matrix-lb.ini new file mode 100644 index 0000000000..ce338f34ee --- /dev/null +++ b/doc/source/user/feature-classification/feature-matrix-lb.ini @@ -0,0 +1,114 @@ +# Copyright (c) 2019 Red Hat, Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +[driver.amphora] +title=Amphora Provider +link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + +[driver.ovn] +title=OVN Provider +link=https://docs.openstack.org/networking-ovn/latest/admin/loadbalancer.html + +# Note: These should be in the order they appear in a create call. + +[operation.admin_state_up] +title=admin_state_up +status=mandatory +notes=Enables and disables the load balancer. +cli=openstack loadbalancer create [--enable | --disable] +driver.amphora=complete +driver.ovn=complete + +[operation.description] +title=description +status=optional +notes=The description of the load balancer. Provided by the Octavia API service. +cli=openstack loadbalancer create [--description ] +driver.amphora=complete +driver.ovn=complete + +[operation.flavor] +title=flavor +status=optional +notes=The flavor of the load balancer. +cli=openstack loadbalancer create [--flavor ] +driver.amphora=complete +driver.ovn=missing + +[operation.name] +title=name +status=optional +notes=The name of the load balancer. Provided by the Octavia API service. +cli=openstack loadbalancer create [--name ] +driver.amphora=complete +driver.ovn=complete + +[operation.stats] +title=Load Balancer statistics +status=mandatory +notes=The ability to show statistics for a load balancer. +cli=openstack loadbalancer stats show +driver.amphora=complete +driver.ovn=missing + +[operation.status] +title=Load Balancer status tree +status=mandatory +notes=The ability to show a status tree for the load balancer. +cli=openstack loadbalancer status show +driver.amphora=complete +driver.ovn=complete + +[operation.tags] +title=tags +status=optional +notes=The tags for the load balancer. Provided by the Octavia API service. +cli=openstack loadbalancer create [--tag ] +driver.amphora=complete +driver.ovn=complete + +[operation.vip_address] +title=vip_address +status=optional +cli=openstack loadbalancer create [--vip-address ] +driver.amphora=complete +driver.ovn=complete + +[operation.vip_network_id] +title=vip_network_id +status=optional +cli=openstack loadbalancer create [--vip-network-id ] +driver.amphora=complete +driver.ovn=complete + +[operation.vip_port_id] +title=vip_port_id +status=optional +cli=openstack loadbalancer create [--vip-port-id ] +driver.amphora=complete +driver.ovn=complete + +[operation.vip_qos_policy_id] +title=vip_qos_policy_id +status=optional +cli=openstack loadbalancer create [--vip-qos-policy-id ] +driver.amphora=complete +driver.ovn=complete + +[operation.vip_subnet_id] +title=vip_subnet_id +status=optional +cli=openstack loadbalancer create [--vip-subnet-id ] +driver.amphora=complete +driver.ovn=complete diff --git a/doc/source/user/feature-classification/feature-matrix-listener.ini b/doc/source/user/feature-classification/feature-matrix-listener.ini new file mode 100644 index 0000000000..6a4719499b --- /dev/null +++ b/doc/source/user/feature-classification/feature-matrix-listener.ini @@ -0,0 +1,279 @@ +# Copyright (c) 2019 Red Hat, Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +[driver.amphora] +title=Amphora Provider +link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + +[driver.ovn] +title=OVN Provider +link=https://docs.openstack.org/networking-ovn/latest/admin/loadbalancer.html + +# Note: These should be in the order they appear in a create call. + +[operation.admin_state_up] +title=admin_state_up +status=mandatory +notes=Enables and disables the listener. +cli=openstack loadbalancer listener create [--enable | --disable] +driver.amphora=complete +driver.ovn=complete + +[operation.client_authentication] +title=client_authentication +status=optional +notes=The TLS client authentication mode. +cli=openstack loadbalancer listener create [--client-authentication {NONE,OPTIONAL,MANDATORY}] +driver.amphora=complete +driver.ovn=missing + +[operation.client_ca_tls_container_ref] +title=client_ca_tls_container_ref +status=optional +notes=The ref of the key manager service secret containing a PEM format client CA certificate bundle for TERMINATED_TLS listeners. +cli=openstack loadbalancer listener create [--client-ca-tls-container-ref ] +driver.amphora=complete +driver.ovn=missing + +[operation.client_crl_container_ref] +title=client_crl_container_ref +status=optional +notes=The URI of the key manager service secret containing a PEM format CA revocation list file for TERMINATED_TLS listeners. +cli=openstack loadbalancer listener create [--client-crl-container-ref ] +driver.amphora=complete +driver.ovn=missing + +[operation.connection_limit] +title=connection_limit +status=optional +notes=The maximum number of connections permitted for this listener. +cli=openstack loadbalancer listener create [--connection-limit ] +driver.amphora=complete +driver.ovn=missing + +[operation.default_tls_container_ref] +title=default_tls_container_ref +status=optional +notes=The URI of the key manager service secret containing a PKCS12 format certificate/key bundle for TERMINATED_TLS listeners. +cli=openstack loadbalancer listener create [--default-tls-container-ref ] +driver.amphora=complete +driver.ovn=missing + +[operation.description] +title=description +status=optional +notes=The description of the listener. Provided by the Octavia API service. +cli=openstack loadbalancer listener create [--description ] +driver.amphora=complete +driver.ovn=complete + +[operation.insert_headers.X-Forwarded-For] +title=insert_headers - X-Forwarded-For +status=optional +notes=When “true” a X-Forwarded-For header is inserted into the request to the backend member that specifies the client IP address. +cli=openstack loadbalancer listener create [--insert-headers X-Forwarded-For=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-Forwarded-Port] +title=insert_headers - X-Forwarded-Port +status=optional +notes=When “true” a X-Forwarded-Port header is inserted into the request to the backend member that specifies the listener port. +cli=openstack loadbalancer listener create [--insert-headers X-Forwarded-Port=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-Forwarded-Proto] +title=insert_headers - X-Forwarded-Proto +status=optional +notes=When “true” a X-Forwarded-Proto header is inserted into the request to the backend member. +cli=openstack loadbalancer listener create [--insert-headers X-Forwarded-Proto=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Client-Verify] +title=insert_headers - X-SSL-Client-Verify +status=optional +notes=When “true” a X-SSL-Client-Verify header is inserted into the request to the backend member that contains 0 if the client authentication was successful, or an result error number greater than 0 that align to the openssl veryify error codes. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Client-Verify=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Client-Has-Cert] +title=insert_headers - X-SSL-Client-Has-Cert +status=optional +notes=When “true” a X-SSL-Client-Has-Cert header is inserted into the request to the backend member that is ‘’true’’ if a client authentication certificate was presented, and ‘’false’’ if not. Does not indicate validity. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Client-Has-Cert=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Client-DN] +title=insert_headers - X-SSL-Client-DN +status=optional +notes=When “true” a X-SSL-Client-DN header is inserted into the request to the backend member that contains the full Distinguished Name of the certificate presented by the client. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Client-DN=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Client-CN] +title=insert_headers - X-SSL-Client-CN +status=optional +notes=When “true” a X-SSL-Client-CN header is inserted into the request to the backend member that contains the Common Name from the full Distinguished Name of the certificate presented by the client. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Client-CN=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Issuer] +title=insert_headers - X-SSL-Issuer +status=optional +notes=When “true” a X-SSL-Issuer header is inserted into the request to the backend member that contains the full Distinguished Name of the client certificate issuer. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Issuer=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Client-SHA1] +title=insert_headers - X-SSL-Client-SHA1 +status=optional +notes=When “true” a X-SSL-Client-SHA1 header is inserted into the request to the backend member that contains the SHA-1 fingerprint of the certificate presented by the client in hex string format. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Client-SHA1=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Client-Not-Before] +title=insert_headers - X-SSL-Client-Not-Before +status=optional +notes=When “true” a X-SSL-Client-Not-Before header is inserted into the request to the backend member that contains the start date presented by the client as a formatted string YYMMDDhhmmss[Z]. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Client-Not-Before=true] +driver.amphora=complete +driver.ovn=missing + +[operation.insert_headers.X-SSL-Client-Not-After] +title=insert_headers - X-SSL-Client-Not-After +status=optional +notes=When “true” a X-SSL-Client-Not-After header is inserted into the request to the backend member that contains the end date presented by the client as a formatted string YYMMDDhhmmss[Z]. +cli=openstack loadbalancer listener create [--insert-headers X-SSL-Client-Not-Aftr=true] +driver.amphora=complete +driver.ovn=missing + +[operation.name] +title=name +status=optional +notes=The name of the load balancer listener. Provided by the Octavia API service. +cli=openstack loadbalancer listener create [--name ] +driver.amphora=complete +driver.ovn=complete + +[operation.protocol.HTTP] +title=protocol - HTTP +status=optional +notes=HTTP protocol support for the listener. +cli=openstack loadbalancer listener create --protocol HTTP +driver.amphora=complete +driver.ovn=missing + +[operation.protocol.HTTPS] +title=protocol - HTTPS +status=optional +notes=HTTPS protocol support for the listener. +cli=openstack loadbalancer listener create --protocol HTTPS +driver.amphora=complete +driver.ovn=missing + +[operation.protocol.TCP] +title=protocol - TCP +status=optional +notes=TCP protocol support for the listener. +cli=openstack loadbalancer listener create --protocol TCP +driver.amphora=complete +driver.ovn=complete + +[operation.protocol.TERMINATED_HTTPS] +title=protocol - TERMINATED_HTTPS +status=optional +notes=Terminated HTTPS protocol support for the listener. +cli=openstack loadbalancer listener create --protocol TERMINATED_HTTPS +driver.amphora=complete +driver.ovn=missing + +[operation.protocol.UDP] +title=protocol - UDP +status=optional +notes=UDP protocol support for the listener. +cli=openstack loadbalancer listener create --protocol UDP +driver.amphora=complete +driver.ovn=complete + +[operation.protocol_port] +title=protocol_port +status=mandatory +notes=The protocol port number for the listener. +cli=openstack loadbalancer listener create --protocol-port +driver.amphora=complete +driver.ovn=complete + +[operation.sni_container_refs] +title=sni_container_refs +status=optional +notes=A list of URIs to the key manager service secrets containing PKCS12 format certificate/key bundles for TERMINATED_TLS listeners. +cli=openstack loadbalancer listener create [--sni-container-refs [ [ ...]]] +driver.amphora=complete +driver.ovn=missing + +[operation.stats] +title=Listener statistics +status=mandatory +notes=The ability to show statistics for a listener. +cli=openstack loadbalancer listener stats show +driver.amphora=complete +driver.ovn=missing + +[operation.tags] +title=tags +status=optional +notes=The tags for the load balancer listener. Provided by the Octavia API service. +cli=openstack loadbalancer listener create [--tags ] +driver.amphora=complete +driver.ovn=complete + +[operation.timeout_client_data] +title=timeout_client_data +status=optional +notes=Frontend client inactivity timeout in milliseconds. +cli=openstack loadbalancer listener create [--timeout-client-data ] +driver.amphora=complete +driver.ovn=missing + +[operation.timeout_member_connect] +title=timeout_member_connect +status=optional +notes=Backend member connection timeout in milliseconds. +cli=openstack loadbalancer listener create [--timeout-member-connect ] +driver.amphora=complete +driver.ovn=missing + +[operation.timeout-member-data] +title=timeout-member-data +status=optional +notes=Backend member inactivity timeout in milliseconds. +cli=openstack loadbalancer listener create [--timeout-member-data ] +driver.amphora=complete +driver.ovn=missing + +[operation.timeout-tcp-inspect] +title=timeout-tcp-inspect +status=optional +notes=Time, in milliseconds, to wait for additional TCP packets for content inspection. +cli=openstack loadbalancer listener create [--timeout-tcp-inspect ] +driver.amphora=complete +driver.ovn=missing diff --git a/doc/source/user/feature-classification/feature-matrix-member.ini b/doc/source/user/feature-classification/feature-matrix-member.ini new file mode 100644 index 0000000000..84c18b71dc --- /dev/null +++ b/doc/source/user/feature-classification/feature-matrix-member.ini @@ -0,0 +1,111 @@ +# Copyright (c) 2019 Red Hat, Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +[driver.amphora] +title=Amphora Provider +link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + +[driver.ovn] +title=OVN Provider +link=https://docs.openstack.org/networking-ovn/latest/admin/loadbalancer.html + +# Note: These should be in the order they appear in a create call. + +[operation.admin_state_up] +title=admin_state_up +status=mandatory +notes=Enables and disables the member. +cli=openstack loadbalancer member create [--enable | --disable] +driver.amphora=complete +driver.ovn=complete + +[operation.address] +title=address +status=mandatory +notes=The IP address for the member. +cli=openstack loadbalancer member create --address +driver.amphora=complete +driver.ovn=complete + +[operation.backup] +title=backup +status=optional +notes=True if the member is a backup member server. +cli=openstack loadbalancer member create [--enable-backup] +driver.amphora=complete +driver.ovn=missing + +[operation.batch] +title=Batch update members +status=mandatory +notes=Ability to update the members of a pool in one API call. +driver.amphora=complete +driver.ovn=partial +driver-notes.ovn=The OVN provider does not support all of the member features. + +[operation.monitor_address] +title=monitor_address +status=optional +notes=An alternate IP address used for health monitoring a backend member. +cli=openstack loadbalancer member create [--monitor-address ] +driver.amphora=complete +driver.ovn=missing + +[operation.monitor_port] +title=monitor_port +status=optional +notes=An alternate protocol port used for health monitoring a backend member. +cli=openstack loadbalancer member create [--monitor-port ] +driver.amphora=complete +driver.ovn=missing + +[operation.name] +title=name +status=optional +notes=The name for the member. Provided by the Octavia API service. +cli=openstack loadbalancer member create [--name ] +driver.amphora=complete +driver.ovn=complete + +[operation.protocol_port] +title=protocol_port +status=mandatory +notes=The protocol port number to connect with on the member server. +cli=openstack loadbalancer member create --protocol_port +driver.amphora=complete +driver.ovn=complete + +[operation.subnet_id] +title=subnet_id +status=optional +notes=The subnet ID the member service is accessible from. +cli=openstack loadbalancer member create [--subnet-id ] +driver.amphora=complete +driver.ovn=complete + +[operation.tags] +title=tags +status=optional +notes=The tags for the member. Provided by the Octavia API service. +cli=openstack loadbalancer member create [--tag ] +driver.amphora=complete +driver.ovn=complete + +[operation.weight] +title=weight +status=optional +notes=The weight of a member determines the portion of requests or connections it services compared to the other members of the pool. +cli=openstack loadbalancer member create [--weight ] +driver.amphora=complete +driver.ovn=missing diff --git a/doc/source/user/feature-classification/feature-matrix-pool.ini b/doc/source/user/feature-classification/feature-matrix-pool.ini new file mode 100644 index 0000000000..9e90707ec7 --- /dev/null +++ b/doc/source/user/feature-classification/feature-matrix-pool.ini @@ -0,0 +1,196 @@ +# Copyright (c) 2019 Red Hat, Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +[driver.amphora] +title=Amphora Provider +link=https://developer.openstack.org/api-ref/load-balancer/v2/index.html + +[driver.ovn] +title=OVN Provider +link=https://docs.openstack.org/networking-ovn/latest/admin/loadbalancer.html + +# Note: These should be in the order they appear in a create call. + +[operation.admin_state_up] +title=admin_state_up +status=mandatory +notes=Enables and disables the pool. +cli=openstack loadbalancer pool create [--enable | --disable] --listener +driver.amphora=complete +driver.ovn=complete + +[operation.ca_tls_container_ref] +title=ca_tls_container_ref +status=optional +notes=The reference of the key manager service secret containing a PEM format CA certificate bundle for tls_enabled pools. +cli=openstack loadbalancer pool create [--ca-tls-container-ref ] --listener +driver.amphora=complete +driver.ovn=missing + +[operation.crl_container_ref] +title=crl_container_ref +status=optional +notes=The reference of the key manager service secret containing a PEM format CA revocation list file for tls_enabled pools. +cli=openstack loadbalancer pool create [--crl-container-ref ] --listener +driver.amphora=complete +driver.ovn=missing + +[operation.lb_algorithm.LEAST_CONNECTIONS] +title=lb_algorithm - LEAST_CONNECTIONS +notes=The pool will direct connections to the member server with the least connections in use. +cli=openstack loadbalancer pool create --lb-algorithm LEAST_CONNECTIONS --listener +driver.amphora=complete +driver.ovn=missing + +[operation.lb_algorithm.ROUND_ROBIN] +title=lb_algorithm - ROUND_ROBIN +notes=The pool will direct connections to the next member server, one after the other, rotating through the available memeber servers. +cli=openstack loadbalancer pool create --lb-algorithm ROUND_ROBIN --listener +driver.amphora=complete +driver.ovn=complete + +[operation.lb_algorithm.SOURCE_IP] +title=lb_algorithm - SOURCE_IP +notes=The pool will direct connections to the member server based on a has of the source IP. +cli=openstack loadbalancer pool create --lb-algorithm SOURCE_IP --listener +driver.amphora=complete +driver.ovn=missing + +[operation.description] +title=description +status=optional +notes=The description of the pool. Provided by the Octavia API service. +cli=openstack loadbalancer pool create [--description ] --listener +driver.amphora=complete +driver.ovn=complete + +[operation.name] +title=name +status=optional +notes=The name of the pool. Provided by the Octavia API service. +cli=openstack loadbalancer pool create [--name ] --listener +driver.amphora=complete +driver.ovn=complete + +[operation.protocol.HTTP] +title=protocol - HTTP +status=optional +notes=HTTP protocol support for the pool. +cli=openstack loadbalancer pool create --protocol HTTP --listener +driver.amphora=complete +driver.ovn=missing + +[operation.protocol.HTTPS] +title=protocol - HTTPS +status=optional +notes=HTTPS protocol support for the pool. +cli=openstack loadbalancer pool create --protocol HTTP --listener +driver.amphora=complete +driver.ovn=missing + +[operation.protocol.PROXY] +title=protocol - PROXY +status=optional +notes=PROXY protocol support for the pool. +cli=openstack loadbalancer pool create --protocol PROXY --listener +driver.amphora=complete +driver.ovn=missing + +[operation.protocol.TCP] +title=protocol - TCP +status=optional +notes=TCP protocol support for the pool. +cli=openstack loadbalancer pool create --protocol TCP --listener +driver.amphora=complete +driver.ovn=complete + +[operation.protocol.UDP] +title=protocol - UDP +status=optional +notes=UDP protocol support for the pool. +cli=openstack loadbalancer pool create --protocol UDP --listener +driver.amphora=complete +driver.ovn=complete + +[operation.session_persistence.APP_COOKIE] +title=session_persistence - APP_COOKIE +status=optional +notes=Session persistence using an application supplied cookie. +cli=openstack loadbalancer pool create --session-persistence type=APP_COOKIE --listener +driver.amphora=complete +driver.ovn=missing + +[operation.session_persistence.cookie_name] +title=session_persistence - cookie_name +status=optional +notes=The name of the application cookie to use for session persistence. +cli=openstack loadbalancer pool create --session-persistence cookie_name=chocolate --listener +driver.amphora=complete +driver.ovn=missing + +[operation.session_persistence.HTTP_COOKIE] +title=session_persistence - HTTP_COOKIE +status=optional +notes=Session persistence using a cookie created by the load balancer. +cli=openstack loadbalancer pool create --session-persistence type=HTTP_COOKIE --listener +driver.amphora=complete +driver.ovn=missing + +[operation.session_persistence.persistence_timeout] +title=session_persistence - persistence_timeout +status=optional +notes=The timeout, in seconds, after which a UDP flow may be rescheduled to a different member. +cli=openstack loadbalancer pool create --session-persistence persistence_timeout=360 --listener +driver.amphora=complete +driver.ovn=missing + +[operation.session_persistence.persistence_granularity] +title=session_persistence - persistence_granularity +status=optional +notes=The netmask used to determine UDP SOURCE_IP session persistence. +cli=openstack loadbalancer pool create --session-persistence persistence_granularity=255.255.255.255 --listener +driver.amphora=complete +driver.ovn=missing + +[operation.session_persistence.SOURCE_IP] +title=session_persistence - SOURCE_IP +status=optional +notes=Session persistence using the source IP address. +cli=openstack loadbalancer pool create --session-persistence type=SOURCE_IP --listener +driver.amphora=complete +driver.ovn=missing + +[operation.tags] +title=tags +status=optional +notes=The tags for the pool. Provided by the Octavia API service. +cli=openstack loadbalancer pool create [--tag ] --listener +driver.amphora=complete +driver.ovn=complete + +[operation.tls_enabled] +title=tls_enabled +status=optional +notes=When true connections to backend member servers will use TLS encryption. +cli=openstack loadbalancer pool create [--enable-tls] --listener +driver.amphora=complete +driver.ovn=missing + +[operation.tls_container_ref] +title=tls_container_ref +status=optional +notes=The reference to the key manager service secret containing a PKCS12 format certificate/key bundle for tls_enabled pools for TLS client authentication to the member servers. +cli=openstack loadbalancer pool create [--tls-container-ref ] --listener +driver.amphora=complete +driver.ovn=missing diff --git a/doc/source/user/feature-classification/index.rst b/doc/source/user/feature-classification/index.rst new file mode 100644 index 0000000000..869cafb9fc --- /dev/null +++ b/doc/source/user/feature-classification/index.rst @@ -0,0 +1,109 @@ +.. + Copyright (c) 2019 Red Hat, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may obtain + a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations + under the License. + +=============================== +Octavia Provider Feature Matrix +=============================== + +Load Balancer Features +====================== + +Provider feature support matrix for an Octavia load balancer. + +Load Balancer API Features +-------------------------- + +These features are documented in the Octavia API reference +`Create a Load Balancer `_ section. + +.. support_matrix:: feature-matrix-lb.ini + +Listener Features +================= + +Provider feature support matrix for an Octavia load balancer listener. + +Listener API Features +--------------------- + +These features are documented in the Octavia API reference +`Create a Listener `_ section. + +.. support_matrix:: feature-matrix-listener.ini + +Pool Features +============= + +Provider feature support matrix for an Octavia load balancer pool. + +Pool API Features +----------------- + +These features are documented in the Octavia API reference +`Create a Pool `_ section. + +.. support_matrix:: feature-matrix-pool.ini + +Member Features +=============== + +Provider feature support matrix for an Octavia load balancer member. + +Member API Features +------------------- + +These features are documented in the Octavia API reference +`Create a Member `_ section. + +.. support_matrix:: feature-matrix-member.ini + +Health Monitor Features +======================= + +Provider feature support matrix for an Octavia load balancer health monitor. + +Health Monitor API Features +--------------------------- + +These features are documented in the Octavia API reference +`Create a Health Monitor `_ section. + +.. support_matrix:: feature-matrix-healthmonitor.ini + +L7 Policy Features +================== + +Provider feature support matrix for an Octavia load balancer L7 Policies. + +L7 Policy API Features +---------------------- + +These features are documented in the Octavia API reference +`Create an L7 Policy `_ section. + +.. support_matrix:: feature-matrix-l7policy.ini + +L7 Rule Features +================ + +Provider feature support matrix for an Octavia load balancer L7 Rules. + +L7 Rule API Features +-------------------- + +These features are documented in the Octavia API reference +`Create an L7 Rule `_ section. + +.. support_matrix:: feature-matrix-l7rule.ini diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst index 3bc44ac383..f0df560832 100644 --- a/doc/source/user/index.rst +++ b/doc/source/user/index.rst @@ -18,6 +18,7 @@ Guides :maxdepth: 1 guides/l7 + feature-classification/index References ==========