diff --git a/tacker/api/api_common.py b/tacker/api/api_common.py index 55141a2cb..d2bdad419 100644 --- a/tacker/api/api_common.py +++ b/tacker/api/api_common.py @@ -13,9 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. -import urllib - from oslo_config import cfg +from six.moves.urllib import parse as urllib_parse from webob import exc from tacker.common import constants @@ -57,7 +56,7 @@ def get_previous_link(request, items, id_key): marker = items[0][id_key] params['marker'] = marker params['page_reverse'] = True - return "%s?%s" % (request.path_url, urllib.urlencode(params)) + return "%s?%s" % (request.path_url, urllib_parse.urlencode(params)) def get_next_link(request, items, id_key): @@ -67,7 +66,7 @@ def get_next_link(request, items, id_key): marker = items[-1][id_key] params['marker'] = marker params.pop('page_reverse', None) - return "%s?%s" % (request.path_url, urllib.urlencode(params)) + return "%s?%s" % (request.path_url, urllib_parse.urlencode(params)) def get_limit_and_marker(request): diff --git a/tacker/openstack/common/policy.py b/tacker/openstack/common/policy.py index fb09b16ca..9c8714f64 100644 --- a/tacker/openstack/common/policy.py +++ b/tacker/openstack/common/policy.py @@ -58,10 +58,11 @@ as it allows particular rules to be explicitly disabled. import abc import re -import urllib import six -import urllib2 + +from six.moves.urllib import parse as urllib_parse +from six.moves.urllib import request as urlrequest from tacker.openstack.common.gettextutils import _ from tacker.openstack.common import jsonutils @@ -756,8 +757,8 @@ class HttpCheck(Check): url = ('http:' + self.match) % target data = {'target': jsonutils.dumps(target), 'credentials': jsonutils.dumps(creds)} - post_data = urllib.urlencode(data) - f = urllib2.urlopen(url, post_data) + post_data = urllib_parse.urlencode(data) + f = urlrequest.urlopen(url, post_data) return f.read() == "True" diff --git a/tacker/tests/unit/test_policy.py b/tacker/tests/unit/test_policy.py index 2d8741232..81c1c2c4b 100644 --- a/tacker/tests/unit/test_policy.py +++ b/tacker/tests/unit/test_policy.py @@ -15,12 +15,12 @@ """Test of Policy Engine For Tacker""" -import urllib2 - import fixtures import mock import six +from six.moves.urllib import request as urlrequest + import tacker from tacker.api.v1 import attributes from tacker.common import exceptions @@ -126,7 +126,7 @@ class PolicyTestCase(base.BaseTestCase): def fakeurlopen(url, post_data): return six.StringIO("True") - with mock.patch.object(urllib2, 'urlopen', new=fakeurlopen): + with mock.patch.object(urlrequest, 'urlopen', new=fakeurlopen): action = "example:get_http" target = {} result = policy.enforce(self.context, action, target) @@ -137,7 +137,7 @@ class PolicyTestCase(base.BaseTestCase): def fakeurlopen(url, post_data): return six.StringIO("False") - with mock.patch.object(urllib2, 'urlopen', new=fakeurlopen): + with mock.patch.object(urlrequest, 'urlopen', new=fakeurlopen): action = "example:get_http" target = {} self.assertRaises(exceptions.PolicyNotAuthorized, policy.enforce, diff --git a/tacker/tests/unit/vm/monitor_drivers/http_ping/test_http_ping.py b/tacker/tests/unit/vm/monitor_drivers/http_ping/test_http_ping.py index 400c8ca74..f0f930ab2 100644 --- a/tacker/tests/unit/vm/monitor_drivers/http_ping/test_http_ping.py +++ b/tacker/tests/unit/vm/monitor_drivers/http_ping/test_http_ping.py @@ -12,9 +12,8 @@ # under the License. # -import urllib2 - import mock +import six.moves.urllib.error as urlerr import testtools from tacker.vm.monitor_drivers.http_ping import http_ping @@ -26,7 +25,7 @@ class TestVNFMonitorHTTPPing(testtools.TestCase): super(TestVNFMonitorHTTPPing, self).setUp() self.monitor_http_ping = http_ping.VNFMonitorHTTPPing() - @mock.patch('urllib2.urlopen') + @mock.patch('six.moves.urllib.request.urlopen') def test_monitor_call_for_success(self, mock_urlopen): test_device = {} test_kwargs = { @@ -36,9 +35,9 @@ class TestVNFMonitorHTTPPing(testtools.TestCase): test_kwargs) mock_urlopen.assert_called_once_with('http://a.b.c.d:80', timeout=5) - @mock.patch('urllib2.urlopen') + @mock.patch('six.moves.urllib.request.urlopen') def test_monitor_call_for_failure(self, mock_urlopen): - mock_urlopen.side_effect = urllib2.URLError("MOCK Error") + mock_urlopen.side_effect = urlerr.URLError("MOCK Error") test_device = {} test_kwargs = { 'mgmt_ip': 'a.b.c.d' diff --git a/tacker/vm/monitor_drivers/http_ping/http_ping.py b/tacker/vm/monitor_drivers/http_ping/http_ping.py index ff678383a..3a04af6aa 100644 --- a/tacker/vm/monitor_drivers/http_ping/http_ping.py +++ b/tacker/vm/monitor_drivers/http_ping/http_ping.py @@ -12,9 +12,9 @@ # under the License. # -import urllib2 - from oslo_config import cfg +import six.moves.urllib.error as urlerr +import six.moves.urllib.request as urlreq from tacker.common import log from tacker.i18n import _LW @@ -49,7 +49,7 @@ class VNFMonitorHTTPPing(abstract_driver.VNFMonitorAbstractDriver): return device.get('monitor_url', '') def _is_pingable(self, mgmt_ip='', retry=5, timeout=5, port=80, **kwargs): - """Checks whether the server is reachable by using urllib2. + """Checks whether the server is reachable by using urllib. Waits for connectivity for `timeout` seconds, and if connection refused, it will retry `retry` @@ -63,9 +63,9 @@ class VNFMonitorHTTPPing(abstract_driver.VNFMonitorAbstractDriver): url = 'http://' + mgmt_ip + ':' + str(port) for retry_index in range(int(retry)): try: - urllib2.urlopen(url, timeout=timeout) + urlreq.urlopen(url, timeout=timeout) return True - except urllib2.URLError: + except urlerr.URLError: LOG.warning(_LW('Unable to reach to the url %s'), url) return 'failure' diff --git a/test-requirements.txt b/test-requirements.txt index 051a6d442..27c3121b0 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -14,6 +14,7 @@ hacking<0.11,>=0.10.2 mock>=1.2 # BSD python-subunit>=0.0.18 # Apache-2.0/BSD ordereddict # MIT +six>=1.9.0 # MIT sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD oslotest>=1.10.0 # Apache-2.0 tempest-lib>=0.14.0 # Apache-2.0