Пример #1
0
def _get_okta_groups(api_client):
    """
    Get groups from Okta server
    :param api_client: Okta api client
    :return: Array of group information
    """
    group_list = []
    next_url = None

    # SDK Bug
    # get_paged_groups returns User object instead of UserGroup

    while True:
        # https://developer.okta.com/docs/reference/api/groups/#list-groups
        if next_url:
            paged_response = api_client.get(next_url)
        else:
            params = {
                'limit': 10000,
            }
            paged_response = api_client.get_path('/', params)

        paged_results = PagedResults(paged_response, UserGroup)

        group_list.extend(paged_results.result)

        if not is_last_page(paged_response):
            next_url = paged_response.links.get("next").get("url")
        else:
            break

    return group_list
Пример #2
0
    def get_paged_groups(self,
                         limit=None,
                         filter_string=None,
                         after=None,
                         url=None):
        """Get a paged list of UserGroups

        :param limit: maximum number of groups to return
        :type limit: int or None
        :param filter_string: Filter expression for groups
        :type filter_string: str or None
        :param after: group id that filtering will resume after
        :type after: str
        :param url: url that returns a list of UserGroup
        :type url: str
        :rtype: PagedResults of UserGroup
        """
        if url:
            response = self.get(url)

        else:
            params = {'limit': limit, 'filter': filter_string, 'after': after}
            response = self.get_path('/', params=params)

        return PagedResults(response, UserGroup)
Пример #3
0
    def get_paged_users(self,
                        limit=None,
                        filter_string=None,
                        search_string=None,
                        after=None,
                        url=None):
        """Get a paged list of Users

        :param limit: maximum number of users to return
        :type limit: int or None
        :param filter_string: string to filter users
        :type filter_string: str or None
        :param search_string: string to search users
        :type search_string: str or None
        :param after: user id that filtering will resume after
        :type after: str
        :param url: url that returns a list of User
        :type url: str
        :rtype: PagedResults of User
        """
        if url:
            response = ApiClient.get(self, url)

        else:
            params = {
                'limit': limit,
                'after': after,
                'filter': filter_string,
                'search': search_string
            }
            response = ApiClient.get_path(self, '/', params=params)

        return PagedResults(response, self.user_model)
Пример #4
0
    def get_paged_events(self,
                         limit=None,
                         start_date=None,
                         after=None,
                         filter_string=None,
                         url=None):
        """Get a paged list of Events

        :param limit: maximum number of events to return
        :type limit: int or None
        :param filter_string: string to filter events
        :type filter_string: str or None
        :param after: event id that filtering will resume after
        :type after: str or None
        :param url: url that returns a list of Event
        :type url: str or None
        :rtype: PagedResults of Event
        """
        if url:
            response = ApiClient.get(self, url)

        else:
            params = {
                'limit': limit,
                'startDate': start_date,
                'after': after,
                'filter': filter_string
            }
            response = ApiClient.get_path(self, '/', params=params)

        return PagedResults(response, Event)
Пример #5
0
    def get_paged_app_instances(self,
                                limit=None,
                                filter_string=None,
                                after=None,
                                url=None):
        """Get a paged list of AppInstances

        :param limit: maximum number of apps to return
        :type limit: int or None
        :param filter_string: string to filter apps
        :type filter_string: str or None
        :param after: app id that filtering will resume after
        :type after: str
        :param url: url that returns a list of AppInstance
        :type url: str
        :rtype: PagedResults of AppInstance
        """
        if url:
            response = ApiClient.get(self, url)

        else:
            params = {'limit': limit, 'after': after, 'filter': filter_string}
            response = ApiClient.get_path(self, '/', params=params)

        return PagedResults(response, AppInstance)
Пример #6
0
    def get_paged_apps_assigned_to_group(self,
                                         gid,
                                         url=None,
                                         limit=None,
                                         after=None):
        if url:
            response = self.get(url)

        else:
            params = {'limit': limit, 'after': after}
            response = self.get_path('/{0}/apps'.format(gid), params=params)
        return PagedResults(response, AppInstance)
Пример #7
0
    def get_paged_groups(self, limit=None, after=None, url=None):
        """Get a paged list of UserGroups

        :param limit: maximum number of groups to return
        :type limit: int or None
        :param after: group id that filtering will resume after
        :type after: str
        :param url: url that returns a list of UserGroup
        :type url: str
        :rtype: PagedResults of UserGroup
        """
        if url:
            response = ApiClient.get(self, url)

        else:
            params = {'limit': limit, 'after': after}
            response = ApiClient.get_path(self, '/', params=params)

        return PagedResults(response, User)
Пример #8
0
    def get_paged_group_members(self, gid, url=None, limit=None, after=None):
        """Get a paged list of users from a group

        :param gid: the group id
        :type gid: str
        :param limit: maximum number of users to return
        :type limit: int or None
        :param after: user id that filtering will resume after
        :type after: str
        :param url: url that returns a list of User
        :type url: str
        :rtype: PagedResults of User
        """
        if url:
            response = self.get(url)

        else:
            params = {'limit': limit, 'after': after}
            response = self.get_path('/{0}/users'.format(gid), params=params)
        return PagedResults(response, User)
Пример #9
0
    def get_paged_group_targets_for_user_admin(self, uid, rid, url=None, limit=None):
        """Get a paged list of group targets for an USER_ADMIN role assignment

        :param uid: the user id
        :type uid: str
        :param rid: the USER_ADMIN role id
        :type rid: str
        :param url: url that returns a list of group targets
        :type url: str
        :param limit: maximum number of Group to return
        :type limit: int or None
        :rtype: Array of UserGroup
        """
        if url:
            response = ApiClient.get(self, url)

        else:
            params = {
                'limit': limit
            }
            url_path = '/{0}/roles/{1}/targets/groups'.format(uid, rid)
            response = ApiClient.get_path(self, url_path, params=params)

        return PagedResults(response, UserGroup)
Пример #10
0
    def get_paged_app_targets_for_app_admin(self, uid, rid, url=None, limit=None):
        """Get a paged list of app targets for an APP_ADMIN role assignment

        :param uid: the user id
        :type uid: str
        :param rid: the APP_ADMIN role id
        :type rid: str
        :param url: url that returns a list of app targets
        :type url: str
        :param limit: maximum number of Apps to return
        :type limit: int or None
        :rtype: Array of CatalogApp
        """
        if url:
            response = ApiClient.get(self, url)

        else:
            params = {
                'limit': limit
            }
            url_path = '/{0}/roles/{1}/targets/catalog/apps'.format(uid, rid)
            response = ApiClient.get_path(self, url_path, params=params)
        # TODO: create Catalog App Model
        return PagedResults(response, AppInstance)
Пример #11
0
    def get_paged_log_events(self, since=None, until=None, q=None, filter=None, limit=None, url=None):
        """Get a paged list of log events

        :param since: filters the lower time bound of the log events published property
        :type since: datetime or None
        :param until: filters the upper time bound of the log events published property
        :type until: datetime or None
        :param filter: filter expression that filters the results
        :type filter: str or None
        :param q: filters the log events results by one or more exact keywords
        :type q: str or None
        :rtype: list of dictionaries representing log events
        :param limit: The number of results returned in the response
        :type limit: int or None
        :param url: url that returns a list of log events
        :type url: str
        :rtype: PagedResults of log events in JSON format
        """
        if url:  # pragma: no cover
            assert since is None
            assert until is None
            assert q is None
            assert filter is None
            assert limit is None
            warnings.warn("Don't pass `url`, use `get_next_page` method instead", DeprecationWarning)
            return self.get_next_page(url)

        params = {
            'since': since,
            'until': until,
            'q': q,
            'filter': filter,
            'limit': limit,
        }
        response = self.get_path('/', params=params)
        return PagedResults(response)
Пример #12
0
 def get_next_page(self, url):
     return PagedResults(self.get(url))