Source code for tenable.io.scanner_groups
'''
scanner_groups
==============
The following methods allow for interaction into the Tenable.io
:devportal:`scanner-groups <scanner-groups>` API endpoints.
Methods available on ``tio.scanner_groups``:
.. rst-class:: hide-signature
.. autoclass:: ScannerGroupsAPI
.. automethod:: add_scanner
.. automethod:: create
.. automethod:: delete
.. automethod:: delete_scanner
.. automethod:: details
.. automethod:: edit
.. automethod:: list
.. automethod:: list_scanners
'''
from .base import TIOEndpoint
[docs]class ScannerGroupsAPI(TIOEndpoint):
[docs] def add_scanner(self, group_id, scanner_id):
'''
Add a scanner to a scanner group.
:devportal:`scanner-groups: add-scanner <scanner-groups-add-scanner>`
Args:
group_id (int):
The unique identifier of the scanner group.
scanner_id (int):
The unique identifier of the scanner.
Returns:
:obj:`None`:
Scanner successfully added to the scanner group.
Examples:
>>> tio.scanner_groups.add_scanner(1, 1)
'''
self._api.post('scanner-groups/{}/scanners/{}'.format(
self._check('group_id', group_id, int),
self._check('scanner_id', scanner_id, int)
))
[docs] def create(self, name, group_type=None):
'''
Create a scanner group.
:devportal:`scanner-groups: create <scanner-groups-create>`
Args:
name (str): The name of the scanner group to create
group_type (str, optional):
The type of scanner group to create. Currently the only
supported type is "load_balancing"
Returns:
:obj:`dict`:
The scanner group resource record for the created group.
Example:
>>> group = tio.scanner_groups.create('Scanner Group')
'''
return self._api.post('scanner-groups', json={
'name': self._check('name', name, str),
'type': self._check('group_type', group_type, str,
default='load_balancing', choices=['load_balancing'])
}).json()
[docs] def delete(self, id):
'''
Deletes a scanner group.
:devportal:`scanner-groups: delete <scanner-groups-delete>`
Args:
id (int): The unique identifier for the scanner group to delete.
Returns:
:obj:`None`:
The scanner group has been successfully deleted.
Examples:
>>> tio.scanner_groups.delete(1)
'''
self._api.delete('scanner-groups/{}'.format(self._check('id', id, int)))
[docs] def delete_scanner(self, group_id, scanner_id):
'''
Removes a scanner from a scanner group.
:devportal:`scanner-groups: delete-scanner <scanner-groups-delete-scanner>`
Args:
group_id (int):
The unique identifier of the scanner group.
scanner_id (int):
The unique identifier of the scanner to remove from the
requested scanner group.
Returns:
:obj:`None`:
The scanner was successfully removed from the scanner group.
Examples:
>>> tio.scanner_groups.delete_scanner(1, 1)
'''
self._api.delete('scanner-groups/{}/scanners/{}'.format(
self._check('group_id', group_id, int),
self._check('scanner_id', scanner_id, int)
))
[docs] def details(self, id):
'''
Retrieves the details about a scanner group.
:devportal:`scanner-groups: details <scanner-groups-details>`
Args:
id (int): The unique identifier for the scanner group.
Returns:
:obj:`dict`:
The scanner group resource record.
Examples:
>>> group = tio.scanner_groups.details(1)
>>> pprint(group)
'''
return self._api.get('scanner-groups/{}'.format(
self._check('id', id, int))).json()
[docs] def edit(self, id, name):
'''
Modifies a scanner group.
:devportal:`scanner-groups: edit <scanner-groups-edit>`
Args:
id (int): The unique identifier for the scanner group.
name (str): The new name for the scanner group.
Returns:
:obj:`None`:
The scanner group has been successfully updated.
Examples:
>>> tio.scanner_groups.edit(1, 'New Group Name')
'''
self._api.put('scanner-groups/{}'.format(
self._check('id', id, int)), json={
'name': self._check('name', name, str)
})
[docs] def list(self):
'''
Lists the configured scanner groups.
:devportal:`scanner-groups: list <scanner-groups-list>`
Returns:
:obj:`list`:
List of scanner group resource records.
Examples:
>>> for group in tio.scanner_groups.list():
... pprint(group)
'''
return self._api.get('scanner-groups').json()['scanner_pools']
[docs] def list_scanners(self, id):
'''
List the scanners within a specific scanner group.
:devportal:`scanner-groups: list-scanners scanner-groups-list-scanners>`
Args:
id (int): The unique identifier of the scanner group.
Returns:
:obj:`list`:
List of scanner resource records associated to the scanner group.
Examples:
>>> for scanner in tio.scanner_groups.list_scanners(1):
... pprint(scanner)
'''
return self._api.get('scanner-groups/{}/scanners'.format(
self._check('id', id, int))).json()['scanners']