Use updated search api path for version 3 & up
Change-Id: Ibf1c1fc918998f6002e445ad53e32b2c5c54ac1c
This commit is contained in:
@@ -5519,6 +5519,10 @@ class TestPolicyTier0PrefixList(NsxPolicyLibTestCase):
|
||||
|
||||
class TestNsxSearch(NsxPolicyLibTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestNsxSearch, self).setUp()
|
||||
self.search_path = 'search/query?query=%s'
|
||||
|
||||
def test_nsx_search_by_realization(self):
|
||||
"""Test search of resources with the specified tag."""
|
||||
with mock.patch.object(self.policy_lib.client, 'url_get') as search:
|
||||
@@ -5529,7 +5533,7 @@ class TestNsxSearch(NsxPolicyLibTestCase):
|
||||
'entity_type:%s' % (realized_id, realized_type))
|
||||
self.policy_lib.search_resource_by_realized_id(
|
||||
realized_id, realized_type)
|
||||
search.assert_called_with('search?query=%s' % query)
|
||||
search.assert_called_with(self.search_path % query)
|
||||
|
||||
|
||||
class TestPolicyGlobalConfig(NsxPolicyLibTestCase):
|
||||
|
||||
@@ -1750,13 +1750,27 @@ class IpPoolTestCase(BaseTestResource):
|
||||
|
||||
class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestNsxSearch, self).setUp()
|
||||
self.search_path = 'search?query=%s'
|
||||
self.mock = mock.patch("vmware_nsxlib.v3.NsxLib.get_version",
|
||||
return_value=self.get_nsxlib_version())
|
||||
self.mock.start()
|
||||
|
||||
def tearDown(self):
|
||||
self.mock.stop()
|
||||
|
||||
@staticmethod
|
||||
def get_nsxlib_version():
|
||||
return '2.5.0'
|
||||
|
||||
def test_nsx_search_tags(self):
|
||||
"""Test search of resources with the specified tag."""
|
||||
with mock.patch.object(self.nsxlib.client, 'url_get') as search:
|
||||
user_tags = [{'scope': 'user', 'tag': 'k8s'}]
|
||||
query = self.nsxlib._build_query(tags=user_tags)
|
||||
self.nsxlib.search_by_tags(tags=user_tags)
|
||||
search.assert_called_with('search?query=%s' % query)
|
||||
search.assert_called_with(self.search_path % query)
|
||||
|
||||
def test_nsx_search_tags_scope_only(self):
|
||||
"""Test search of resources with the specified tag."""
|
||||
@@ -1764,7 +1778,7 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
user_tags = [{'scope': 'user'}]
|
||||
query = self.nsxlib._build_query(tags=user_tags)
|
||||
self.nsxlib.search_by_tags(tags=user_tags)
|
||||
search.assert_called_with('search?query=%s' % query)
|
||||
search.assert_called_with(self.search_path % query)
|
||||
|
||||
def test_nsx_search_tags_tag_only(self):
|
||||
"""Test search of resources with the specified tag."""
|
||||
@@ -1772,7 +1786,7 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
user_tags = [{'tag': 'k8s'}]
|
||||
query = self.nsxlib._build_query(tags=user_tags)
|
||||
self.nsxlib.search_by_tags(tags=user_tags)
|
||||
search.assert_called_with('search?query=%s' % query)
|
||||
search.assert_called_with(self.search_path % query)
|
||||
|
||||
def test_nsx_search_by_resouce_type_and_attributes(self):
|
||||
with mock.patch.object(self.nsxlib.client, 'url_get') as search:
|
||||
@@ -1783,7 +1797,7 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
exp_query = 'resource_type:%s AND color:%s' % (
|
||||
resource_type, attributes['color'])
|
||||
search.assert_called_with(
|
||||
'search?query=%s' % exp_query)
|
||||
self.search_path % exp_query)
|
||||
|
||||
def test_nsx_search_by_resouce_type_only(self):
|
||||
with mock.patch.object(self.nsxlib.client, 'url_get') as search:
|
||||
@@ -1791,7 +1805,7 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
self.nsxlib.search_resource_by_attributes(resource_type)
|
||||
exp_query = 'resource_type:%s' % resource_type
|
||||
search.assert_called_with(
|
||||
'search?query=%s' % exp_query)
|
||||
self.search_path % exp_query)
|
||||
|
||||
def test_nsx_search_no_resource_type_fails(self):
|
||||
self.assertRaises(exceptions.NsxSearchInvalidQuery,
|
||||
@@ -1807,7 +1821,7 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
exp_query = 'resource_type:%s AND color:%s' % (
|
||||
resource_type, attributes['color'])
|
||||
search.assert_called_with(
|
||||
'search?query=%s&cursor=50&page_size=100' % exp_query)
|
||||
(self.search_path + '&cursor=50&page_size=100') % exp_query)
|
||||
|
||||
def test_nsx_search_tags_tag_and_scope(self):
|
||||
"""Test search of resources with the specified tag."""
|
||||
@@ -1815,7 +1829,7 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
user_tags = [{'tag': 'k8s'}, {'scope': 'user'}]
|
||||
query = self.nsxlib._build_query(tags=user_tags)
|
||||
self.nsxlib.search_by_tags(tags=user_tags)
|
||||
search.assert_called_with('search?query=%s' % query)
|
||||
search.assert_called_with(self.search_path % query)
|
||||
|
||||
def test_nsx_search_tags_and_resource_type(self):
|
||||
"""Test search of specified resource with the specified tag."""
|
||||
@@ -1826,7 +1840,7 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
# Add resource_type to the query
|
||||
query = "resource_type:%s AND %s" % (res_type, query)
|
||||
self.nsxlib.search_by_tags(tags=user_tags, resource_type=res_type)
|
||||
search.assert_called_with('search?query=%s' % query)
|
||||
search.assert_called_with(self.search_path % query)
|
||||
|
||||
def test_nsx_search_tags_and_cursor(self):
|
||||
"""Test search of resources with the specified tag and cursor."""
|
||||
@@ -1834,7 +1848,8 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
user_tags = [{'scope': 'user', 'tag': 'k8s'}]
|
||||
query = self.nsxlib._build_query(tags=user_tags)
|
||||
self.nsxlib.search_by_tags(tags=user_tags, cursor=50)
|
||||
search.assert_called_with('search?query=%s&cursor=50' % query)
|
||||
search.assert_called_with(
|
||||
(self.search_path + '&cursor=50') % query)
|
||||
|
||||
def test_nsx_search_tags_and_page_size(self):
|
||||
"""Test search of resources with the specified tag and page size."""
|
||||
@@ -1842,7 +1857,8 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
user_tags = [{'scope': 'user', 'tag': 'k8s'}]
|
||||
query = self.nsxlib._build_query(tags=user_tags)
|
||||
self.nsxlib.search_by_tags(tags=user_tags, page_size=100)
|
||||
search.assert_called_with('search?query=%s&page_size=100' % query)
|
||||
search.assert_called_with(
|
||||
(self.search_path + '&page_size=100') % query)
|
||||
|
||||
def test_nsx_search_invalid_query_fail(self):
|
||||
"""Test search query failure for missing tag argument."""
|
||||
@@ -1872,8 +1888,8 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
query = self.nsxlib._build_query(tags=user_tags)
|
||||
results = self.nsxlib.search_all_by_tags(tags=user_tags)
|
||||
search.assert_has_calls([
|
||||
mock.call('search?query=%s' % query),
|
||||
mock.call('search?query=%s&cursor=2' % query)])
|
||||
mock.call(self.search_path % query),
|
||||
mock.call((self.search_path + '&cursor=2') % query)])
|
||||
self.assertEqual(3, len(results))
|
||||
|
||||
def test_get_id_by_resource_and_tag(self):
|
||||
@@ -1911,6 +1927,18 @@ class TestNsxSearch(nsxlib_testcase.NsxClientTestCase):
|
||||
res_type, scope, tag, alert_multiple=True)
|
||||
|
||||
|
||||
class TestNsxSearchNew(TestNsxSearch):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
super(TestNsxSearchNew, self).setUp()
|
||||
self.search_path = 'search/query?query=%s'
|
||||
|
||||
@staticmethod
|
||||
def get_nsxlib_version():
|
||||
return '3.0.0'
|
||||
|
||||
|
||||
class TransportZone(BaseTestResource):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
|
||||
import abc
|
||||
from distutils import version
|
||||
|
||||
from oslo_log import log
|
||||
import six
|
||||
@@ -22,6 +23,7 @@ from vmware_nsxlib._i18n import _
|
||||
from vmware_nsxlib.v3 import client
|
||||
from vmware_nsxlib.v3 import cluster
|
||||
from vmware_nsxlib.v3 import exceptions
|
||||
from vmware_nsxlib.v3 import nsx_constants
|
||||
from vmware_nsxlib.v3 import utils
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
@@ -96,6 +98,10 @@ class NsxLibBase(object):
|
||||
def feature_supported(self, feature):
|
||||
pass
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_version(self):
|
||||
pass
|
||||
|
||||
def build_v3_api_version_tag(self):
|
||||
return self.general_apis.build_v3_api_version_tag()
|
||||
|
||||
@@ -123,6 +129,12 @@ class NsxLibBase(object):
|
||||
url += "&page_size=%d" % page_size
|
||||
return url
|
||||
|
||||
def _get_search_url(self):
|
||||
if (version.LooseVersion(self.get_version()) >=
|
||||
version.LooseVersion(nsx_constants.NSX_VERSION_3_0_0)):
|
||||
return "search/query?query=%s"
|
||||
return "search?query=%s"
|
||||
|
||||
# TODO(abhiraut): Revisit this method to generate complex boolean
|
||||
# queries to search resources.
|
||||
def search_by_tags(self, tags, resource_type=None, cursor=None,
|
||||
@@ -149,7 +161,7 @@ class NsxLibBase(object):
|
||||
query += " AND %s" % query_tags
|
||||
else:
|
||||
query = query_tags
|
||||
url = self._add_pagination_parameters("search?query=%s" % query,
|
||||
url = self._add_pagination_parameters(self._get_search_url() % query,
|
||||
cursor, page_size)
|
||||
|
||||
# Retry the search in case of error
|
||||
@@ -186,7 +198,7 @@ class NsxLibBase(object):
|
||||
in attributes.items()])
|
||||
query = 'resource_type:%s' % resource_type + (
|
||||
" AND %s" % attributes_query if attributes_query else "")
|
||||
url = self._add_pagination_parameters("search?query=%s" % query,
|
||||
url = self._add_pagination_parameters(self._get_search_url() % query,
|
||||
cursor, page_size)
|
||||
|
||||
# Retry the search in case of error
|
||||
|
||||
@@ -213,7 +213,7 @@ class NsxPolicyLib(lib.NsxLibBase):
|
||||
query = ('resource_type:GenericPolicyRealizedResource AND '
|
||||
'realization_specific_identifier:%s AND '
|
||||
'entity_type:%s' % (realized_id, realized_type))
|
||||
url = "search?query=%s" % query
|
||||
url = self._get_search_url() % query
|
||||
|
||||
# Retry the search on case of error
|
||||
@lib_utils.retry_upon_exception(exceptions.NsxSearchError,
|
||||
|
||||
Reference in New Issue
Block a user