{"library":"pycadf","title":"PyCADF Library","description":"The pycadf library provides an auditing data model based on the Cloud Auditing Data Federation (CADF) specification. It is primarily used within the OpenStack ecosystem to establish strict expectations for auditors regarding audit notifications and event structures. The library is actively maintained by the OpenStack project and is currently at version 4.0.1.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install pycadf"],"cli":null},"imports":["from pycadf.events import Event","from pycadf.resource import Resource","from pycadf.cadftype import CADF_VERSION_1_0_0"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import json\nfrom pycadf.events import Event\nfrom pycadf.resource import Resource\nfrom pycadf.cadftype import CADF_VERSION_1_0_0\n\n# Define initiator resource\ninitiator = Resource(\n    typeURI=CADF_VERSION_1_0_0 + 'security/account/user',\n    id='example-user-id',\n    name='example_auditor',\n    domainId='example-domain'\n)\n\n# Define target resource\ntarget = Resource(\n    typeURI=CADF_VERSION_1_0_0 + 'compute/instance',\n    id='example-instance-id',\n    name='my_vm',\n    host=Resource(\n        typeURI=CADF_VERSION_1_0_0 + 'compute/host',\n        id='example-host-id',\n        name='compute-host-1'\n    )\n)\n\n# Create a CADF event\nevent = Event(\n    eventType='activity',\n    outcome='success',\n    action='create',\n    initiator=initiator,\n    target=target,\n    eventTime='2026-04-16T15:00:00.000Z', # ISO 8601 format\n    id='example-event-id'\n)\n\n# Serialize the event to a dictionary and print as JSON\nprint(json.dumps(event.as_dict(), indent=2))","lang":"python","description":"This quickstart demonstrates how to create a basic CADF audit event by defining an initiator (user), a target (VM instance), and then constructing an Event object. The event is then serialized to a JSON string for auditing purposes.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"4.0.1","pypi_latest":"4.0.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4.5,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"42.6M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":4.3,"import_time_s":null,"mem_mb":null,"disk_size":"44M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"46.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":4.3,"import_time_s":null,"mem_mb":null,"disk_size":"48M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"47.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":4.4,"import_time_s":null,"mem_mb":null,"disk_size":"49M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"46.9M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":4.3,"import_time_s":null,"mem_mb":null,"disk_size":"48M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"44.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pycadf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":5.2,"import_time_s":null,"mem_mb":null,"disk_size":"46M"}]}}