Exemple #1
0
    def get_actions_list(self,
                         firewall,  # type: Firewall
                         status=None,  # type: Optional[List[str]]
                         sort=None,  # type: Optional[List[str]]
                         page=None,  # type: Optional[int]
                         per_page=None  # type: Optional[int]
                         ):
        # type: (...) -> PageResults[List[BoundAction], Meta]
        """Returns all action objects for a Firewall.

        :param firewall: :class:`BoundFirewall <hcloud.firewalls.client.BoundFirewall>` or  :class:`Firewall <hcloud.firewalls.domain.Firewall>`
        :param status: List[str] (optional)
               Response will have only actions with specified statuses. Choices: `running` `success` `error`
        :param sort: List[str] (optional)
               Specify how the results are sorted. Choices: `id` `id:asc` `id:desc` `command` `command:asc` `command:desc` `status` `status:asc` `status:desc` `progress` `progress:asc` `progress:desc` `started` `started:asc` `started:desc` `finished` `finished:asc` `finished:desc`
        :param page: int (optional)
               Specifies the page to fetch
        :param per_page: int (optional)
               Specifies how many results are returned by page
        :return: (List[:class:`BoundAction <hcloud.actions.client.BoundAction>`], :class:`Meta <hcloud.core.domain.Meta>`)
        """
        params = {}
        if status is not None:
            params["status"] = status
        if sort is not None:
            params["sort"] = sort
        if page is not None:
            params["page"] = page
        if per_page is not None:
            params["per_page"] = per_page
        response = self._client.request(
            url="/firewalls/{firewall_id}/actions".format(firewall_id=firewall.id), method="GET",
            params=params)
        actions = [BoundAction(self._client.actions, action_data) for action_data in response['actions']]
        return add_meta_to_result(actions, response, 'actions')
Exemple #2
0
    def get_actions_list(
            self,
            image,  # type: Image
            sort=None,  # type: Optional[List[str]]
            page=None,  # type: Optional[int]
            per_page=None  # type: Optional[int]
    ):
        # type: (...) -> PageResults[List[BoundAction], Meta]
        """Returns a list of action objects for an image.

        :param image: :class:`BoundImage <hcloud.images.client.BoundImage>` or :class:`Image <hcloud.images.domain.Image>`
        :param sort: List[str] (optional)
               Specify how the results are sorted. Choices: `id` `id:asc` `id:desc` `command` `command:asc` `command:desc` `status` `status:asc` `status:desc` `progress` `progress:asc` `progress:desc` `started` `started:asc` `started:desc` `finished` `finished:asc` `finished:desc`
        :param page: int (optional)
               Specifies the page to fetch
        :param per_page: int (optional)
               Specifies how many results are returned by page
        :return: (List[:class:`BoundAction <hcloud.actions.client.BoundAction>`], :class:`Meta <hcloud.core.domain.Meta>`)
        """
        params = {}
        if sort is not None:
            params["sort"] = sort
        if page is not None:
            params["page"] = page
        if per_page is not None:
            params["per_page"] = per_page
        response = self._client.request(
            url="/images/{image_id}/actions".format(image_id=image.id),
            method="GET",
            params=params)
        actions = [
            BoundAction(self._client.actions, action_data)
            for action_data in response['actions']
        ]
        return add_meta_to_result(actions, response, 'actions')
Exemple #3
0
    def get_actions_list(self, volume, status=None, sort=None, page=None, per_page=None):
        # type: (Volume, Optional[List[str]], Optional[List[str]], Optional[int], Optional[int]) -> PageResults[List[BoundAction], Meta]
        """Returns all action objects for a volume.

        :param volume: :class:`BoundVolume <hcloud.volumes.client.BoundVolume>` or :class:`Volume <hcloud.volumes.domain.Volume>`
        :param status: List[str] (optional)
               Response will have only actions with specified statuses. Choices: `running` `success` `error`
        :param sort: List[str] (optional)
               Specify how the results are sorted. Choices: `id` `id:asc` `id:desc` `command` `command:asc` `command:desc` `status` `status:asc` `status:desc` `progress` `progress:asc` `progress:desc` `started` `started:asc` `started:desc` `finished` `finished:asc` `finished:desc`
        :param page: int (optional)
               Specifies the page to fetch
        :param per_page: int (optional)
               Specifies how many results are returned by page
        :return: (List[:class:`BoundAction <hcloud.actions.client.BoundAction>`], :class:`Meta <hcloud.core.domain.Meta>`)
        """
        params = {} # type: Dict[str, Any]
        if status is not None:
            params["status"] = status
        if sort is not None:
            params["sort"] = sort
        if page is not None:
            params["page"] = page
        if per_page is not None:
            params["per_page"] = per_page

        response = self._client.request(url="/volumes/{volume_id}/actions".format(volume_id=volume.id), method="GET",
                                        params=params)
        actions = [BoundAction(self._client.actions, action_data) for action_data in response['actions']]
        return add_meta_to_result(actions, response, 'actions')
Exemple #4
0
 def _add_meta_to_result(
         self,
         results,  # type: List[BoundModelBase]
         response  # type: json
 ):
     # type: (...) -> PageResult
     self._is_list_attribute_implemented()
     return add_meta_to_result(results, response,
                               self.results_list_attribute_name)
 def test_add_meta_to_result(self):
     json_content = {
         "meta": {
             "pagination": {
                 "page": 2,
                 "per_page": 10,
                 "previous_page": 1,
                 "next_page": 3,
                 "last_page": 10,
                 "total_entries": 100
             }
         }
     }
     result = add_meta_to_result([1, 2, 3], json_content, "id_list")
     assert result.id_list == [1, 2, 3]
     assert result.meta.pagination.page == 2
     assert result.meta.pagination.per_page == 10
     assert result.meta.pagination.next_page == 3
     assert result.meta.pagination.last_page == 10
     assert result.meta.pagination.total_entries == 100
 def get_actions_list(self, status, page=None, per_page=None):
     json_content = json_content_function(page)
     results = [(r, page, status, per_page)
                for r in json_content['actions']]
     return add_meta_to_result(results, json_content, 'actions')