Skip to content

Alarms

Baze(user=None, password=None, api_key=DEFAULT_API_KEY, **kwargs)

Top level class used to connect to Bazefield. It will create the connection to Bazefield and then allow for all the APIs to be called by it's attributes.

By default no arguments needs to be provided as the package will use the default API key to connect to Bazefield, but it can be overridden. The following methods of login can be used:

  • user and password: To use it, user and password must be provided and api_key must be set to None.
  • api_key: To use it, pass the desired api_key or don't pass this argument to use the default one.

Parameters:

  • user

    (str | None, default: None ) –

    Name of Bazefield user. If is None api_key must be provided. By default None

  • password

    (str | None, default: None ) –

    Bazefield user password. If is None api_key must be provided. By default None

  • api_key

    (str | None, default: DEFAULT_API_KEY ) –

    API key used to connect. If is not None it will be preferred as user and password login. If None, user and password must be provided. By default None

Other Parameters:

  • conn_timeout (int) –

    Connection timeout in seconds. By default 30

  • request_timeout (int) –

    Request timeout in seconds. By default 300

  • max_retries (int) –

    Number of retries that will be attempted when doing queries. Will be used in stop parameter of tenacity.stop_after_attempt, by default 8

  • max_conn_retries (int) –

    Number of retries that will be attempted when reconnecting. Will be used in stop parameter of tenacity.stop_after_attempt, by default 3

  • retry_wait_time (float) –

    Max time to wait between retries when reconnecting or doing queries. Will be used in max parameter of tenacity.wait_exponential, by default 30

  • exponential_min_retry_wait_time

    Min time to wait between retries when reconnecting or doing queries. Will be used in min parameter of tenacity.wait_exponential, by default 1

  • exponential_multiplier

    Multiplier to use when calculating wait time between retries when reconnecting or doing queries. Will be used in multiplier parameter of tenacity.wait_exponential, by default 1

Source code in echo_baze/baze.py
def __init__(
    self,
    user: str | None = None,
    password: str | None = None,
    api_key: str | None = DEFAULT_API_KEY,
    **kwargs,
) -> None:
    """
    Top level class used to connect to Bazefield. It will create the connection to Bazefield and then allow for all the APIs to be called by it's attributes.

    By default no arguments needs to be provided as the package will use the default API key to connect to Bazefield, but it can be overridden. The following methods of login can be used:

    - user and password: To use it, user and password must be provided and api_key must be set to None.
    - api_key: To use it, pass the desired api_key or don't pass this argument to use the default one.

    Parameters
    ----------
    user : str | None, optional
        Name of Bazefield user. If is None api_key must be provided. By default None
    password : str | None, optional
        Bazefield user password. If is None api_key must be provided. By default None
    api_key : str | None, optional
        API key used to connect. If is not None it will be preferred as user and password login. If None, user and password must be provided. By default None

    Other Parameters
    ----------------
    conn_timeout : int, optional
        Connection timeout in seconds. By default 30
    request_timeout : int, optional
        Request timeout in seconds. By default 300
    max_retries : int, optional
        Number of retries that will be attempted when doing queries. Will be used in `stop` parameter of tenacity.stop_after_attempt, by default 8
    max_conn_retries : int, optional
        Number of retries that will be attempted when reconnecting. Will be used in `stop` parameter of tenacity.stop_after_attempt, by default 3
    retry_wait_time : float, optional
        Max time to wait between retries when reconnecting or doing queries. Will be used in `max` parameter of tenacity.wait_exponential, by default 30
    exponential_min_retry_wait_time: float, optional
        Min time to wait between retries when reconnecting or doing queries. Will be used in `min` parameter of tenacity.wait_exponential, by default 1
    exponential_multiplier: float, optional
        Multiplier to use when calculating wait time between retries when reconnecting or doing queries. Will be used in `multiplier` parameter of tenacity.wait_exponential, by default 1

    """
    # checking input
    if (
        not isinstance(user, str | type(None))
        and not isinstance(password, str | type(None))
        and not isinstance(api_key, str | type(None))
    ):
        raise TypeError("user, password and api_key must be strings or None")
    if api_key is None and (user is None or password is None):
        raise ValueError("If api_key is None, user and password must be provided")

    # creating connection properties to be used by the handler
    conn_props = HttpConnProperties(
        host=BASE_URL,
        user=user,
        password=password,
        api_key=api_key if (not user and not password) else None,
        conn_timeout=kwargs.get("conn_timeout", 30),
        request_timeout=kwargs.get("request_timeout", 300),
    )

    # creating connection handler
    self.conn = BazeHttpHandler(
        connection_properties=conn_props,
        max_retries=kwargs.get("max_retries", 8),
        max_conn_retries=kwargs.get("max_conn_retries", 3),
        retry_wait_time=kwargs.get("retry_wait_time", 30),
        exponential_min_retry_wait_time=kwargs.get("exponential_min_retry_wait_time", 1),
        exponential_multiplier=kwargs.get("exponential_multiplier", 1),
    )

    # * subclasses

    from .alarms import Alarms
    from .allocations import Allocations
    from .curves import Curves
    from .devices import Devices
    from .emails import Emails
    from .jobs import Jobs
    from .kpis import Kpis
    from .links import Links
    from .objects import Objects
    from .points import Points
    from .roles import Roles
    from .users import Users

    self.alarms = Alarms(baze=self)
    self.allocations = Allocations(baze=self)
    self.curves = Curves(baze=self)
    self.devices = Devices(baze=self)
    self.emails = Emails(baze=self)
    self.jobs = Jobs(baze=self)
    self.kpis = Kpis(baze=self)
    self.links = Links(baze=self)
    self.objects = Objects(baze=self)
    self.points = Points(baze=self)
    self.roles = Roles(baze=self)
    self.users = Users(baze=self)