summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-01-07 18:41:02 +0000
committerGerrit Code Review <review@openstack.org>2015-01-07 18:41:02 +0000
commit5d53e0a4964ced211cf8d05186f8a90c2a22f7f1 (patch)
treecb6aec8e88940f6ec74ddc72461765c7384c18f0
parentd1e659b0fb688973d460055e3f301e8d9035ee76 (diff)
parent3f4b657f7a3dbd79ccad4558a85713a85d51c261 (diff)
downloadpython-ceilometerclient-5d53e0a4964ced211cf8d05186f8a90c2a22f7f1.tar.gz
Merge "Enable --os-insecure CLI option"
-rw-r--r--ceilometerclient/client.py4
-rw-r--r--ceilometerclient/tests/test_client.py2
-rw-r--r--ceilometerclient/tests/test_shell.py36
-rw-r--r--ceilometerclient/v2/client.py7
4 files changed, 46 insertions, 3 deletions
diff --git a/ceilometerclient/client.py b/ceilometerclient/client.py
index 620fe54..bffc2bf 100644
--- a/ceilometerclient/client.py
+++ b/ceilometerclient/client.py
@@ -15,6 +15,7 @@ from keystoneclient.auth.identity import v3 as v3_auth
from keystoneclient import discover
from keystoneclient import exceptions as ks_exc
from keystoneclient import session
+from oslo.utils import strutils
import six.moves.urllib.parse as urlparse
from ceilometerclient.common import utils
@@ -174,7 +175,8 @@ class AuthPlugin(auth.BaseAuthPlugin):
'cacert': self.opts.get('cacert'),
'cert': self.opts.get('cert'),
'key': self.opts.get('key'),
- 'insecure': self.opts.get('insecure'),
+ 'insecure': strutils.bool_from_string(
+ self.opts.get('insecure')),
'endpoint_type': self.opts.get('endpoint_type'),
}
diff --git a/ceilometerclient/tests/test_client.py b/ceilometerclient/tests/test_client.py
index b569ff3..a998d93 100644
--- a/ceilometerclient/tests/test_client.py
+++ b/ceilometerclient/tests/test_client.py
@@ -117,7 +117,7 @@ class ClientTest(utils.BaseTestCase):
'original_ip': None,
'http': None,
'region_name': None,
- 'verify': None,
+ 'verify': True,
'timings': None,
'keyring_saver': None,
'cert': None,
diff --git a/ceilometerclient/tests/test_shell.py b/ceilometerclient/tests/test_shell.py
index e7c0e98..f121d29 100644
--- a/ceilometerclient/tests/test_shell.py
+++ b/ceilometerclient/tests/test_shell.py
@@ -20,6 +20,7 @@ import six
from testtools import matchers
from ceilometerclient import exc
+from ceilometerclient.openstack.common.apiclient import client as api_client
from ceilometerclient import shell as ceilometer_shell
from ceilometerclient.tests import utils
from ceilometerclient.v2 import client as v2client
@@ -169,3 +170,38 @@ class ShellTimeoutTest(ShellTestBase):
expected_msg = ('ceilometer: error: argument --timeout: '
'0 must be greater than 0')
self._test_timeout('0', expected_msg)
+
+
+class ShellInsecureTest(ShellTestBase):
+
+ @mock.patch.object(api_client, 'HTTPClient')
+ def test_insecure_true_ceilometer(self, mocked_client):
+ self.make_env(FAKE_V2_ENV)
+ args = ['--debug', '--os-insecure', 'true', 'alarm-list']
+ self.assertIsNone(ceilometer_shell.main(args))
+ args, kwargs = mocked_client.call_args
+ self.assertEqual(False, kwargs.get('verify'))
+
+ @mock.patch.object(ks_session, 'Session')
+ def test_insecure_true_keystone(self, mocked_session):
+ mocked_session.side_effect = exc.HTTPUnauthorized("FAIL")
+ self.make_env(FAKE_V2_ENV)
+ args = ['--debug', '--os-insecure', 'true', 'alarm-list']
+ self.assertRaises(exc.CommandError, ceilometer_shell.main, args)
+ mocked_session.assert_called_with(verify=False, cert='')
+
+ @mock.patch.object(api_client, 'HTTPClient')
+ def test_insecure_false_ceilometer(self, mocked_client):
+ self.make_env(FAKE_V2_ENV)
+ args = ['--debug', '--os-insecure', 'false', 'alarm-list']
+ self.assertIsNone(ceilometer_shell.main(args))
+ args, kwargs = mocked_client.call_args
+ self.assertEqual(True, kwargs.get('verify'))
+
+ @mock.patch.object(ks_session, 'Session')
+ def test_insecure_false_keystone(self, mocked_session):
+ mocked_session.side_effect = exc.HTTPUnauthorized("FAIL")
+ self.make_env(FAKE_V2_ENV)
+ args = ['--debug', '--os-insecure', 'false', 'alarm-list']
+ self.assertRaises(exc.CommandError, ceilometer_shell.main, args)
+ mocked_session.assert_called_with(verify=True, cert='')
diff --git a/ceilometerclient/v2/client.py b/ceilometerclient/v2/client.py
index 85caf36..88616ba 100644
--- a/ceilometerclient/v2/client.py
+++ b/ceilometerclient/v2/client.py
@@ -15,6 +15,8 @@
# License for the specific language governing permissions and limitations
# under the License.
+from oslo.utils import strutils
+
from ceilometerclient import client as ceiloclient
from ceilometerclient.openstack.common.apiclient import client
from ceilometerclient.v2 import alarms
@@ -54,12 +56,15 @@ class Client(object):
if timeout <= 0:
timeout = None
+ insecure = strutils.bool_from_string(kwargs.get('insecure'))
+ verify = kwargs.get('verify', not insecure)
+
self.client = client.HTTPClient(
auth_plugin=self.auth_plugin,
region_name=kwargs.get('region_name'),
endpoint_type=kwargs.get('endpoint_type'),
original_ip=kwargs.get('original_ip'),
- verify=kwargs.get('verify'),
+ verify=verify,
cert=kwargs.get('cacert'),
timeout=timeout,
timings=kwargs.get('timings'),