Use updated search api path for version 3 & up

Change-Id: Ibf1c1fc918998f6002e445ad53e32b2c5c54ac1c
This commit is contained in:
asarfaty
2019-12-24 10:06:41 +02:00
committed by Adit Sarfaty
parent 6ff0c58910
commit 76efdcadb8
4 changed files with 60 additions and 16 deletions

View File

@@ -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):

View File

@@ -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):

View File

@@ -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

View File

@@ -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,