Skip to content

Settings

GSO settings.

Ensuring that the required parameters are set correctly. An example file oss-params-example.json is present in the GSO package itself.

EnvironmentEnum

Bases: strEnum

The different environments in which the GSO system can run.

Source code in gso/settings.py
class EnvironmentEnum(strEnum):
    """The different environments in which the GSO system can run."""

    DEVELOPMENT = "development"
    """A local development environment."""
    TEST = "test"
    """The test environment."""
    UAT = "uat"
    """The user acceptance environment."""
    PRODUCTION = "production"
    """The production environment."""

DEVELOPMENT = 'development' class-attribute instance-attribute

A local development environment.

TEST = 'test' class-attribute instance-attribute

The test environment.

UAT = 'uat' class-attribute instance-attribute

The user acceptance environment.

PRODUCTION = 'production' class-attribute instance-attribute

The production environment.

GeneralParams

Bases: BaseSettings

General parameters for a GSO configuration file.

Source code in gso/settings.py
class GeneralParams(BaseSettings):
    """General parameters for a GSO configuration file."""

    public_hostname: str
    """The hostname that GSO is publicly served at, used for building callback URLs for public use."""
    internal_hostname: str
    """The hostname of GSO that is for internal use, such as the provisioning proxy."""
    isis_high_metric: int
    environment: EnvironmentEnum

public_hostname instance-attribute

The hostname that GSO is publicly served at, used for building callback URLs for public use.

internal_hostname instance-attribute

The hostname of GSO that is for internal use, such as the provisioning proxy.

CelerySettings

Bases: BaseSettings

Parameters for Celery.

Source code in gso/settings.py
class CelerySettings(BaseSettings):
    """Parameters for Celery."""

    broker_url: str = "redis://localhost:6379/0"
    result_backend: str = "rpc://localhost:6379/0"
    result_expires: int = 3600

    class Config:
        """The prefix for the environment variables."""

        env_prefix = "CELERY_"

Config

The prefix for the environment variables.

Source code in gso/settings.py
class Config:
    """The prefix for the environment variables."""

    env_prefix = "CELERY_"

InfoBloxParams

Bases: BaseSettings

Parameters related to InfoBlox.

Source code in gso/settings.py
class InfoBloxParams(BaseSettings):
    """Parameters related to InfoBlox."""

    scheme: str
    wapi_version: str
    host: str
    username: str
    password: str

V4NetworkParams

Bases: BaseSettings

A set of parameters that describe an IPv4 network in InfoBlox.

Source code in gso/settings.py
class V4NetworkParams(BaseSettings):
    """A set of parameters that describe an IPv4 network in InfoBlox."""

    containers: list[ipaddress.IPv4Network]
    networks: list[ipaddress.IPv4Network]
    mask: IPv4Netmask

V6NetworkParams

Bases: BaseSettings

A set of parameters that describe an IPv6 network in InfoBlox.

Source code in gso/settings.py
class V6NetworkParams(BaseSettings):
    """A set of parameters that describe an IPv6 network in InfoBlox."""

    containers: list[ipaddress.IPv6Network]
    networks: list[ipaddress.IPv6Network]
    mask: IPv6Netmask

ServiceNetworkParams

Bases: BaseSettings

Parameters for InfoBlox.

The parameters describe IPv4 and v6 networks, and the corresponding domain name that should be used as a suffix.

Source code in gso/settings.py
class ServiceNetworkParams(BaseSettings):
    """Parameters for InfoBlox.

    The parameters describe IPv4 and v6 networks, and the corresponding domain name that should be used as a suffix.
    """

    V4: V4NetworkParams
    V6: V6NetworkParams
    domain_name: str
    dns_view: str
    network_view: str

IPAMParams

Bases: BaseSettings

A set of parameters related to IPAM.

Source code in gso/settings.py
class IPAMParams(BaseSettings):
    """A set of parameters related to IPAM."""

    INFOBLOX: InfoBloxParams
    LO: ServiceNetworkParams
    TRUNK: ServiceNetworkParams
    GEANT_IP: ServiceNetworkParams
    SI: ServiceNetworkParams
    LT_IAS: ServiceNetworkParams
    LAN_SWITCH_INTERCONNECT: ServiceNetworkParams

MonitoringSNMPV2Params

Bases: BaseSettings

Parameters related to SNMPv2.

Source code in gso/settings.py
class MonitoringSNMPV2Params(BaseSettings):
    """Parameters related to SNMPv2."""

    community: str

MonitoringSNMPV3Params

Bases: BaseSettings

Parameters related to SNMPv3.

Source code in gso/settings.py
class MonitoringSNMPV3Params(BaseSettings):
    """Parameters related to SNMPv3."""

    authlevel: str
    authname: str
    authpass: str
    authalgo: str
    cryptopass: str
    cryptoalgo: str

MonitoringLibreNMSParams

Bases: BaseSettings

Parameters related to LibreNMS.

Source code in gso/settings.py
class MonitoringLibreNMSParams(BaseSettings):
    """Parameters related to LibreNMS."""

    base_url: str
    token: str

SNMPParams

Bases: BaseSettings

Parameters for SNMP in LibreNMS.

Source code in gso/settings.py
class SNMPParams(BaseSettings):
    """Parameters for SNMP in LibreNMS."""

    v2c: MonitoringSNMPV2Params
    v3: MonitoringSNMPV3Params | None = None
    """
    !!! example "Optional parameter"

        Support for SNMP v3 will get added in a later version of GSO. Parameters are optional for now.
    """

v3 = None class-attribute instance-attribute

Optional parameter

Support for SNMP v3 will get added in a later version of GSO. Parameters are optional for now.

MonitoringParams

Bases: BaseSettings

Parameters related to the monitoring.

Source code in gso/settings.py
class MonitoringParams(BaseSettings):
    """Parameters related to the monitoring."""

    LIBRENMS: MonitoringLibreNMSParams
    SNMP: SNMPParams

ProvisioningProxyParams

Bases: BaseSettings

Parameters for the provisioning proxy.

Source code in gso/settings.py
class ProvisioningProxyParams(BaseSettings):
    """Parameters for the provisioning proxy."""

    scheme: str
    api_base: str
    api_version: int

NetBoxParams

Bases: BaseSettings

Parameters for NetBox.

Source code in gso/settings.py
class NetBoxParams(BaseSettings):
    """Parameters for NetBox."""

    token: str
    api: str

EmailParams

Bases: BaseSettings

Parameters for the email service.

Attributes:

Name Type Description
notification_email_destinations str

List of email addresses that should receive notifications when validation of a subscription fails. Can be a comma-separated list of multiple addresses.

Source code in gso/settings.py
class EmailParams(BaseSettings):
    """Parameters for the email service.

    Attributes:
        notification_email_destinations: List of email addresses that should receive notifications when validation of a
            subscription fails. Can be a comma-separated list of multiple addresses.
    """

    from_address: EmailStr
    smtp_host: str
    smtp_port: PortNumber
    starttls_enabled: bool
    smtp_username: str | None = None
    smtp_password: str | None = None
    notification_email_destinations: str

SharepointParams

Bases: BaseSettings

Settings for different Sharepoint sites.

Source code in gso/settings.py
class SharepointParams(BaseSettings):
    """Settings for different Sharepoint sites."""

    client_id: UUIDstr
    tenant_id: UUIDstr
    certificate_path: str
    certificate_password: str
    site_id: UUIDstr
    list_ids: dict[str, UUIDstr]
    scopes: list[str]

KentikParams

Bases: BaseSettings

Settings for accessing Kentik's API.

Source code in gso/settings.py
class KentikParams(BaseSettings):
    """Settings for accessing Kentik's API."""

    api_base: str
    user_email: str
    api_key: str
    device_type: str
    minimize_snmp: bool
    placeholder_license_key: str
    archive_license_key: str
    sample_rate: int
    bgp_type: str
    bgp_lookup_strategy: str
    ASN: int
    snmp_community: str
    md5_password: str

SentryParams

Bases: BaseSettings

Settings for Sentry.

Source code in gso/settings.py
class SentryParams(BaseSettings):
    """Settings for Sentry."""

    DSN: str

MoodiParams

Bases: BaseSettings

Settings for Moodi.

Source code in gso/settings.py
class MoodiParams(BaseSettings):
    """Settings for Moodi."""

    host: str
    moodi_enabled: bool = False

OSSParams

Bases: BaseSettings

The set of parameters required for running GSO.

Source code in gso/settings.py
class OSSParams(BaseSettings):
    """The set of parameters required for running GSO."""

    GENERAL: GeneralParams
    IPAM: IPAMParams
    NETBOX: NetBoxParams
    MONITORING: MonitoringParams
    PROVISIONING_PROXY: ProvisioningProxyParams
    THIRD_PARTY_API_KEYS: dict[str, str]
    EMAIL: EmailParams
    SHAREPOINT: SharepointParams
    KENTIK: KentikParams
    SENTRY: SentryParams | None = None
    MOODI: MoodiParams

load_oss_params()

Look for OSS_PARAMS_FILENAME in the environment and load the parameters from that file.

Source code in gso/settings.py
def load_oss_params() -> OSSParams:
    """Look for ``OSS_PARAMS_FILENAME`` in the environment and load the parameters from that file."""
    with Path(os.environ["OSS_PARAMS_FILENAME"]).open(encoding="utf-8") as file:
        return OSSParams(**json.loads(file.read()))