Skip to content

assets

arodonata.core.models.assets

Gateway, cluster, VSX, and management server asset models (Asset).

Asset

Bases: BaseModel

Canonical Check Point gateway, cluster, cluster member, VSX, or server asset model.

from_cp_dict classmethod

from_cp_dict(mgmt_name: str, domain_name: str, data: dict[str, Any]) -> Asset

Construct an Asset from a raw Check Point gateway/server dictionary.

Source code in src/arodonata/core/models/assets.py
@classmethod
def from_cp_dict(cls, mgmt_name: str, domain_name: str, data: dict[str, Any]) -> Asset:
    """Construct an `Asset` from a raw Check Point gateway/server dictionary."""
    uid = str(data.get("uid") or "")
    name = str(data.get("name") or "")
    asset_type = str(data.get("type") or "gateway")
    interfaces_raw = data.get("interfaces")
    interfaces: list[dict[str, Any]] = []
    if isinstance(interfaces_raw, list):
        interfaces = [item for item in interfaces_raw if isinstance(item, dict)]
    elif isinstance(interfaces_raw, dict):
        objs = interfaces_raw.get("objects")
        if isinstance(objs, list):
            interfaces = [item for item in objs if isinstance(item, dict)]

    return cls(
        id=f"{mgmt_name}:{domain_name}:{uid}",
        asset_id=f"{mgmt_name}:{domain_name}:{name}",
        uid=uid,
        name=name,
        type=asset_type,
        mgmt_name=mgmt_name,
        domain_name=domain_name,
        ipv4_address=data.get("ipv4-address") or data.get("ipv4_address"),
        ipv6_address=data.get("ipv6-address") or data.get("ipv6_address"),
        version=data.get("version"),
        os_name=data.get("os-name") or data.get("os_name"),
        hardware=data.get("hardware"),
        sic_status=data.get("sic-status") or data.get("sic_status"),
        parent_uid=data.get("parent_uid"),
        parent_name=data.get("parent_name"),
        parent_id=data.get("parent_id"),
        parent_asset_id=data.get("parent_asset_id"),
        member_uids=list(data.get("member_uids") or []),
        member_asset_ids=list(data.get("member_asset_ids") or []),
        virtual_system_uids=list(data.get("virtual_system_uids") or []),
        virtual_system_asset_ids=list(data.get("virtual_system_asset_ids") or []),
        interfaces=interfaces,
        network_security_blades=data.get("network-security-blades") or data.get("network_security_blades") or {},
        comments=str(data.get("comments") or ""),
        color=data.get("color"),
        raw_data=dict(data),
    )