@@ -623,7 +623,10 @@ def get_network_groups_by_organization(self, **kwargs):
623623
624624 :param str kwargs: filter results by any supported query param
625625 """
626- params = dict ()
626+ params = {
627+ 'size' : 1000 ,
628+ 'page' : 0
629+ }
627630 for param in kwargs .keys ():
628631 params [param ] = kwargs [param ]
629632 try :
@@ -642,10 +645,10 @@ def get_network_groups_by_organization(self, **kwargs):
642645
643646 if response_code == STATUS_CODES .codes .OK : # HTTP 200
644647 try :
645- network_groups = json . loads ( response .text )[ '_embedded' ][ 'organizations' ]
646- except ValueError as e :
648+ response_object = response .json ()
649+ except ValueError :
647650 logging .error ('failed loading list of network groups as object' )
648- raise ( e )
651+ raise ValueError ( "response is not JSON" )
649652 else :
650653 raise Exception (
651654 'ERROR: got unexpected HTTP code {:s} ({:d}) and response {:s}' .format (
@@ -654,6 +657,50 @@ def get_network_groups_by_organization(self, **kwargs):
654657 response .text
655658 )
656659 )
660+
661+ total_pages = response_object ['page' ]['totalPages' ]
662+ total_elements = response_object ['page' ]['totalElements' ]
663+ # if there are no resources
664+ if total_elements == 0 :
665+ return ([])
666+ else :
667+ network_groups = response_object ['_embedded' ][RESOURCES ['network-groups' ]['embedded' ]]
668+
669+ # if there is one page of resources
670+ if total_pages == 1 :
671+ return network_groups
672+ # if there are multiple pages of resources
673+ else :
674+ # append the remaining pages of resources
675+ for page in range (1 ,total_pages + 1 ): # +1 to work around 1-base bug in MOP-17890
676+ try :
677+ params ["page" ] = page
678+ response = http .get (
679+ self .audience + 'rest/v1/network-groups' ,
680+ proxies = self .proxies ,
681+ verify = self .verify ,
682+ headers = headers ,
683+ params = params
684+ )
685+ response_code = response .status_code
686+ except :
687+ raise
688+ if response_code == STATUS_CODES .codes .OK : # HTTP 200
689+ try :
690+ response_object = response .json ()
691+ network_groups .extend (response_object ['_embedded' ][RESOURCES ['network-groups' ]['embedded' ]])
692+ except ValueError :
693+ logging .error ('failed loading list of network groups as object' )
694+ raise ValueError ("response is not JSON" )
695+ else :
696+ raise Exception (
697+ 'ERROR: got unexpected HTTP code {:s} ({:d}) and response {:s}' .format (
698+ STATUS_CODES ._codes [response_code ][0 ].upper (),
699+ response_code ,
700+ response .text
701+ )
702+ )
703+
657704 return (network_groups )
658705
659706 network_groups = get_network_groups_by_organization
0 commit comments