fix: adapt event_type to be fetched from descriptop by simeongelovski · Pull Request #109 · SAP/cloud-sdk-python · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
21 changes: 7 additions & 14 deletions src/sap_cloud_sdk/core/auditlog_ng/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,14 +152,12 @@ def __init__(
def send(
self,
event: Message,
event_type: Optional[str] = None,
format: str = "protobuf-binary",
) -> str:
"""Send an audit log event.

Args:
event: Protobuf message (audit event).
event_type: Event type name (defaults to message type name).
format: Serialization format (``"protobuf-binary"`` or ``"json"``).

Returns:
Expand Down Expand Up @@ -193,16 +191,11 @@ def send(

event_id = str(uuid.uuid4())

if event_type is None:
descriptor = getattr(event, "DESCRIPTOR", None)
descriptor_name = getattr(descriptor, "name", None)
if not isinstance(descriptor_name, str) or not descriptor_name:
raise ValueError(
"Could not determine event type from message descriptor"
)
event_type = descriptor_name

event_type = f"sap.als.AuditEvent.{event_type}.v2"
descriptor = getattr(event, "DESCRIPTOR", None)
descriptor_full_name = getattr(descriptor, "full_name", None)
if not isinstance(descriptor_full_name, str) or not descriptor_full_name:
raise ValueError("Could not determine event type from message descriptor")
event_type = descriptor_full_name

if format == "json":
mime_type = "application/json"
Expand All @@ -226,9 +219,9 @@ def send(

return event_id

def send_json(self, event: Message, event_type: Optional[str] = None) -> str:
def send_json(self, event: Message) -> str:
"""Send event in JSON format."""
return self.send(event, event_type, format="json")
return self.send(event, format="json")
Comment thread
simeongelovski marked this conversation as resolved.

def flush(self) -> None:
"""Flush pending events (for batch mode)."""
Expand Down
9 changes: 4 additions & 5 deletions src/sap_cloud_sdk/core/auditlog_ng/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,17 +125,16 @@ event.object_id = "resource-001"
**Binary protobuf:**

```python
event_id = client.send(event, "DataAccess")
event_id = client.send(event)
print(f"Sent event with ID: {event_id}")
```

**JSON format:**

```python
event_id = client.send_json(event, "DataAccess")
event_id = client.send_json(event)
```

> The `event_type` argument is optional. If omitted, the client derives it from the protobuf descriptor name (e.g., `"sap.als.AuditEvent.DataAccess.v2"`).

### Step 5: Close the Client

Expand Down Expand Up @@ -177,7 +176,7 @@ class AgentAuditLogger:
event.object_type = "resource"
event.object_id = resource

event_id = self.client.send(event, "DataAccess")
event_id = self.client.send(event)
return event_id

def shutdown(self):
Expand Down Expand Up @@ -213,7 +212,7 @@ with create_client(
cert_file="/path/to/cert.pem",
key_file="/path/to/key.pem",
) as client:
event_id = client.send(event, "DataAccess")
event_id = client.send(event)
```

---
Expand Down
22 changes: 11 additions & 11 deletions tests/core/unit/auditlog_ng/unit/test_client.py
Loading