Skip to content

Commit 5e55005

Browse files
committed
Fix bugs in ~6 files.
Issues: Fixes #<issueid> Problem: Analysis: Tests:
1 parent da8071d commit 5e55005

6 files changed

Lines changed: 60 additions & 9 deletions

File tree

f5/bigip/tm/cm/device_group.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def __init__(self, cm):
3737
super(Device_Groups, self).__init__(cm)
3838
self._meta_data['allowed_lazy_attributes'] = [Device_Group]
3939
self._meta_data['attribute_registry'] =\
40-
{'tm:cm:device:device-groupstate': Device_Group}
40+
{'tm:cm:device-group:device-groupstate': Device_Group}
4141

4242

4343
class Device_Group(Resource):

f5/bigip/tm/ltm/persistence.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@
2929

3030

3131
from f5.bigip.resource import Collection
32+
from f5.bigip.resource import OrganizingCollection
3233
from f5.bigip.resource import Resource
3334

3435

35-
class Persistences(Collection):
36+
class Persistences(OrganizingCollection):
3637
'''A Collection concrete subclass docstring.'''
3738
def __init__(self, ltm):
3839
'''Auto generated constructor.'''

f5/bigip/tm/net/fdb.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@
2929

3030

3131
from f5.bigip.resource import Collection
32+
from f5.bigip.resource import OrganizingCollection
3233
from f5.bigip.resource import Resource
3334

3435

35-
class Fdbs(Collection):
36+
class Fdbs(OrganizingCollection):
3637
'''A Collection concrete subclass docstring.'''
3738
def __init__(self, net):
3839
'''Auto generated constructor.'''

f5/bigip/tm/net/tunnels.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@
2828
"""
2929

3030
from f5.bigip.resource import Collection
31+
from f5.bigip.resource import OrganizingCollection
3132
from f5.bigip.resource import Resource
3233

3334

34-
class Tunnels_s(Collection):
35+
class Tunnels_s(OrganizingCollection):
3536
"""BIG-IP® network tunnels collection"""
3637
def __init__(self, net):
3738
super(Tunnels_s, self).__init__(net)

f5/bigip/tm/sys/application.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@
2828
"""
2929

3030
from f5.bigip.resource import Collection
31+
from f5.bigip.resource import OrganizingCollection
3132
from f5.bigip.resource import KindTypeMismatch
3233
from f5.bigip.resource import Resource
3334

3435
from requests import HTTPError
3536

3637

37-
class Applications(Collection):
38+
class Applications(OrganizingCollection):
3839
"""BIG-IP® iApp collection."""
3940
def __init__(self, sys):
4041
super(Applications, self).__init__(sys)

f5/utils/testutils/registrytools.py

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
# limitations under the License.
1414
#
1515

16+
import logging
17+
from pprint import pprint as pp
18+
19+
from f5.bigip.mixins import UnsupportedTmosVersion
20+
from f5.bigip.resource import OrganizingCollection
21+
from f5.bigip.resource import Collection
1622

1723
def register_collection_atoms(collection):
1824
'''Given a collection return a registry of all of its atoms (elements).
@@ -21,8 +27,17 @@ def register_collection_atoms(collection):
2127
A registry provides a snapshot of all resources of a type on the device.
2228
'''
2329
resource_registry = {}
24-
for resource in collection.get_collection():
25-
resource_registry[resource.selfLink] = resource
30+
try:
31+
resources = collection.get_collection()
32+
except Exception as ex:
33+
logging.debug(ex)
34+
return resource_registry
35+
for resource in resources:
36+
try:
37+
resource_registry[resource.selfLink] = resource
38+
except KeyError as ex:
39+
pp(resource.raw)
40+
raise ex
2641
return resource_registry
2742

2843

@@ -35,6 +50,38 @@ def register_OC_atoms(organizing_collection):
3550
OC_atoms_registry = {}
3651
OC_types = organizing_collection._meta_data['allowed_lazy_attributes']
3752
for OC_type in OC_types:
38-
collection = getattr(organizing_collection, OC_type.__name__.lower())
39-
OC_atoms_registry.update(register_collection_atoms(collection))
53+
try:
54+
lazy_instance =\
55+
getattr(organizing_collection, OC_type.__name__.lower())
56+
except UnsupportedTmosVersion as ex:
57+
logging.debug(ex)
58+
continue
59+
if isinstance(lazy_instance, Collection):
60+
OC_atoms_registry.update(register_collection_atoms(lazy_instance))
61+
elif isinstance(lazy_instance, OrganizingCollection):
62+
OC_atoms_registry.update(register_OC_atoms(lazy_instance))
63+
#else:
64+
# OC_atoms_registry.update({lazy_instance.selfLink: lazy_instance})
4065
return OC_atoms_registry
66+
67+
68+
def register_loadbalancer_elements(mgmt_rt):
69+
monitor_registry = register_OC_atoms(mgmt_rt.tm.ltm.monitor)
70+
pool_registry = register_collection_atoms(mgmt_rt.tm.ltm.pools)
71+
snat_registry = register_collection_atoms(mgmt_rt.tm.ltm.snats)
72+
virtual_registry = register_collection_atoms(mgmt_rt.tm.ltm.virtuals)
73+
virtual_address_s_registry =\
74+
register_collection_atoms(mgmt_rt.tm.ltm.virtual_address_s)
75+
member_registry = {}
76+
for pool in pool_registry.values():
77+
mc = pool.members_s
78+
member_registry.update(reqister_collection_atoms(mc))
79+
folder_registry = register_collection_atoms(mgmt_rt.tm.sys.folders)
80+
registries = {'monitor_registry': monitor_registry,
81+
'pool_registry': pool_registry,
82+
'snat_registry': snat_registry,
83+
'virtual_registry': virtual_registry,
84+
'virtual_address_s_registry': virtual_address_s_registry,
85+
'member_registry': member_registry,
86+
'folder_registry': folder_registry}
87+
return registries

0 commit comments

Comments
 (0)