Skip to content

Commit

Permalink
Saimon/list search zones (#162)
Browse files Browse the repository at this point in the history
* Support listing and searching for zones
  • Loading branch information
saimonation committed Aug 3, 2022
1 parent 4f59800 commit 26d2ac8
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 10 deletions.
1 change: 1 addition & 0 deletions cterasdk/client/cteraclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ def _ctera_exec(self, baseurl, path, exec_type, name, param):
obj.type = exec_type
obj.name = name
obj.param = param
print(toxmlstr(obj))
function = Command(HTTPClient.post, self.http_client, geturi(baseurl, path), ContentType.textplain, toxmlstr(obj))
return self._execute(function)

Expand Down
12 changes: 6 additions & 6 deletions cterasdk/core/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
from ..convert import tojsonstr


def query(CTERAHost, path, param):
response = CTERAHost.db(path, 'query', param)
def query(CTERAHost, path, name, param):
response = CTERAHost.execute(path, name, param) if name is not None else CTERAHost.db(path, 'query', param)
return (response.hasMore, response.objects)


def show(CTERAHost, path, param):
hasMore, objects = query(CTERAHost, path, param)
def show(CTERAHost, path, name, param):
hasMore, objects = query(CTERAHost, path, name, param)
print(tojsonstr(objects, no_log=False))
return hasMore


def iterator(CTERAHost, path, param):
function = Command(query, CTERAHost, path)
def iterator(CTERAHost, path, param, name=None):
function = Command(query, CTERAHost, path, name)
return Iterator(function, param)


Expand Down
29 changes: 29 additions & 0 deletions cterasdk/core/zones.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ class Zones(BaseCommand):
Portal Zones APIs
"""

name_attr = 'name'

def get(self, name):
"""
Get zone by name
Expand All @@ -39,6 +41,33 @@ def get(self, name):
logging.getLogger().info('Zone found. %s', {'name': name, 'id': zone.zoneId})
return zone

def list_zones(self, filters=None):
"""
List Zones
:param list[],optional filters: List of additional filters, defaults to None
:return: Iterator for all Zones
:rtype: cterasdk.lib.iterator.Iterator
"""
builder = query.QueryParamBuilder().include_classname().startFrom(0).countLimit(25)
filters = filters or []
for query_filter in filters:
builder.addFilter(query_filter)
builder.orFilter((len(filters) > 1))
param = builder.build()
return query.iterator(self._portal, '', param, 'getZonesDisplayInfo')

def search(self, name):
"""
Search for Zones by name
:param str name: Search query
:return: Iterator for all matching Zones
:rtype: cterasdk.lib.iterator.Iterator
"""
filters = [query.FilterBuilder(Zones.name_attr).like(name)]
return self.list_zones(filters)

def add(self, name, policy_type=enum.PolicyType.SELECT, description=None):
"""
Add a new zone
Expand Down
8 changes: 4 additions & 4 deletions cterasdk/object/Portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,12 +156,12 @@ def put(self, path, value, use_file_url=False):
return super().put(path, value, use_file_url=use_file_url)

@authenticated
def query(self, path, param):
return query.query(self, path, param)
def query(self, path, name, param):
return query.query(self, path, name, param)

@authenticated
def show_query(self, path, param):
return query.show(self, path, param)
def show_query(self, path, name, param):
return query.show(self, path, name, param)

def iterator(self, path, param):
return query.iterator(self, path, param)
Expand Down
19 changes: 19 additions & 0 deletions docs/source/user_guides/Portal/GlobalAdmin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -960,6 +960,25 @@ Retrieve a Zone
zone = admin.zones.get('ZN-001')
List & Search Zones
^^^^^^^^^^^^^^^^^^^

.. automethod:: cterasdk.core.zones.Zones.list_zones
:noindex:

.. code:: python
for zone in admin.zones.list_zones():
print(zone)
.. automethod:: cterasdk.core.zones.Zones.search
:noindex:

.. code:: python
for zone in admin.zones.search('ZN'):
print(zone)
Create a Zone
^^^^^^^^^^^^^
.. automethod:: cterasdk.core.zones.Zones.add
Expand Down

0 comments on commit 26d2ac8

Please sign in to comment.