Add skip_if_not_implemented to the service client

This patch adds a decorator that wraps the service client methods adding
the ability to raise a skipException if a call to the API returns a
NotImplementedError or UnsupportedOptionError exception.

This is useful for running the tests against provider drivers that do
not support all of the Octavia API features.

Change-Id: I17d4be65130fadf97d6170d22fb07c72672b7573
diff --git a/octavia_tempest_plugin/config.py b/octavia_tempest_plugin/config.py
index fc04c33..8dd0403 100644
--- a/octavia_tempest_plugin/config.py
+++ b/octavia_tempest_plugin/config.py
@@ -209,6 +209,12 @@
 lb_feature_enabled_group = cfg.OptGroup(name='loadbalancer-feature-enabled',
                                         title='Enabled/Disabled LB features')
 LBFeatureEnabledGroup = [
+    cfg.BoolOpt('not_implemented_is_error',
+                default=True,
+                help="When True, not-implemented responses from the API are "
+                     "considered an error and test failure. This should be "
+                     "used when a driver should support all of the Octavia "
+                     "API features, such as the reference driver."),
     cfg.BoolOpt('health_monitor_enabled',
                 default=True,
                 help="Whether Health Monitor is available with provider "