chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
from typing import Dict, Optional
|
||||
|
||||
from ray._common.observability.internal_event import InternalEventBuilder
|
||||
from ray.core.generated.events_base_event_pb2 import RayEvent as RayEventProto
|
||||
from ray.core.generated.platform_event_pb2 import PlatformEvent, Source
|
||||
from ray.util.annotations import DeveloperAPI
|
||||
|
||||
|
||||
@DeveloperAPI
|
||||
class PlatformEventBuilder(InternalEventBuilder):
|
||||
"""Builder for creating infrastructure PlatformEvents (e.g., from Kubernetes)."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
event_uid: str,
|
||||
platform: int = Source.Platform.PLATFORM_UNSPECIFIED, # Source.Platform enum
|
||||
object_kind: str = "",
|
||||
object_name: str = "",
|
||||
reason: str = "",
|
||||
message: str = "",
|
||||
severity: int = RayEventProto.Severity.INFO,
|
||||
component: str = "",
|
||||
source_metadata: Optional[Dict[str, str]] = None,
|
||||
custom_fields: Optional[Dict[str, str]] = None,
|
||||
session_name: str = "",
|
||||
):
|
||||
super().__init__(
|
||||
source_type=RayEventProto.SourceType.CLUSTER_LIFECYCLE,
|
||||
event_type=RayEventProto.EventType.PLATFORM_EVENT,
|
||||
nested_event_field_number=RayEventProto.PLATFORM_EVENT_FIELD_NUMBER,
|
||||
severity=severity,
|
||||
message=message,
|
||||
session_name=session_name,
|
||||
)
|
||||
self._event_uid = event_uid
|
||||
self._platform = platform
|
||||
self._object_kind = object_kind
|
||||
self._object_name = object_name
|
||||
self._reason = reason
|
||||
self._component = component
|
||||
self._source_metadata = source_metadata
|
||||
self._custom_fields = custom_fields
|
||||
|
||||
def get_entity_id(self) -> str:
|
||||
return self._event_uid
|
||||
|
||||
def serialize_event_data(self) -> bytes:
|
||||
source_proto = Source(
|
||||
platform=self._platform,
|
||||
component=self._component,
|
||||
)
|
||||
if self._source_metadata:
|
||||
for k, v in self._source_metadata.items():
|
||||
source_proto.metadata[k] = v
|
||||
|
||||
event = PlatformEvent(
|
||||
source=source_proto,
|
||||
object_kind=self._object_kind,
|
||||
object_name=self._object_name,
|
||||
message=self._message,
|
||||
reason=self._reason,
|
||||
)
|
||||
if self._custom_fields:
|
||||
for k, v in self._custom_fields.items():
|
||||
event.custom_fields[k] = v
|
||||
|
||||
return event.SerializeToString()
|
||||
Reference in New Issue
Block a user