Alertmanager module.

exception spicerack.alertmanager.AlertmanagerError(message: str, response: Optional[requests.models.Response] = None)[source]

Bases: spicerack.exceptions.SpicerackError

Custom exception class for errors of this module.

Initializes an AlertmanagerError instance with the API response instance.

  • message (str) -- the actual exception message.

  • response (requests.Response, optional) -- the requests response object, if present.

class spicerack.alertmanager.AlertmanagerHosts(target_hosts: spicerack.typing.TypeHosts, *, verbatim_hosts: bool = False, dry_run: bool = True)[source]

Bases: object

Operate on Alertmanager via its APIs.

Initialize the instance.

  • target_hosts (spicerack.typing.TypeHosts) -- the target hosts either as a NodeSet instance or a sequence of strings.

  • verbatim_hosts (bool, optional) -- if True use the hosts passed verbatim as is, if instead False, the default, consider the given target hosts as FQDNs and extract their hostnames to be used in Alertmanager.

  • dry_run (bool, optional) -- set to False to cause writes to Alertmanager occur.

When using Alertmanager in high availability (cluster) make sure to pass all hosts in your cluster as alertmanager_urls.

downtime(reason: spicerack.administrative.Reason, *, duration: datetime.timedelta = datetime.timedelta(seconds=14400)) str[source]

Issue a new downtime.


the downtime ID.

Return type



AlertmanagerError -- if none of the alertmanager_urls API returned a success.

downtimed(reason: spicerack.administrative.Reason, *, duration: datetime.timedelta = datetime.timedelta(seconds=14400), remove_on_error: bool = False) Iterator[None][source]

Context manager to perform actions while the hosts are downtimed on Alertmanager.

  • reason (spicerack.administrative.Reason) -- the reason to set for the downtime on Alertmanager.

  • duration (datetime.timedelta, optional) -- the length of the downtime period.

  • remove_on_error -- should the downtime be removed even if an exception was raised.


None -- it just yields control to the caller once Alertmanager has received the downtime and deletes the downtime once getting back the control.

remove_downtime(downtime_id: str) None[source]

Remove a downtime.


downtime_id (str) -- the downtime ID to remove.


AlertmanagerError -- if none of the alertmanager_urls API returned a success.