""" # Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License" # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ from typing import Any, Dict, List, Optional from ..base import StorageConnector, StorageScheduler class MooncakeStorageScheduler(StorageScheduler): """ Mooncake storage scheduler for Scheduler process. Provides query operations for Mooncake distributed storage. """ def __init__(self, config: Optional[Dict[str, Any]] = None): """ Initialize Mooncake storage scheduler. Args: config: Configuration with keys: - server_addr: Mooncake server address - namespace: Storage namespace - timeout: Connection timeout """ super().__init__(config) self._client = None def connect(self) -> bool: """Connect to Mooncake storage.""" try: # Initialize Mooncake client # This would be implemented with actual Mooncake SDK # import mooncake # self._client = mooncake.Client(**self.config) self._connected = True return True except Exception: self._connected = False return False def disconnect(self) -> None: """Disconnect from Mooncake storage.""" self._client = None self._connected = False def exists(self, key: str) -> bool: """Check if key exists in Mooncake storage.""" if not self._connected or self._client is None: return False # Placeholder implementation # return self._client.exists(key) return False def query(self, keys: List[str]) -> Dict[str, bool]: """Query multiple keys for existence.""" if not self._connected or self._client is None: return {k: False for k in keys} # Placeholder implementation # return self._client.batch_exists(keys) return {k: False for k in keys} def get_metadata(self, key: str) -> Optional[Dict[str, Any]]: """Get metadata for a key.""" if not self._connected or self._client is None: return None # Placeholder implementation # return self._client.get_metadata(key) return None def list_keys(self, prefix: str = "") -> List[str]: """List keys with a given prefix.""" if not self._connected or self._client is None: return [] # Placeholder implementation # return self._client.list_keys(prefix) return [] class MooncakeStorageConnector(StorageConnector): """ Mooncake storage connector for Worker process. Provides data transfer operations for Mooncake distributed storage. """ def __init__(self, config: Optional[Dict[str, Any]] = None): """ Initialize Mooncake storage connector. Args: config: Configuration with keys: - server_addr: Mooncake server address - namespace: Storage namespace - transfer_timeout: Transfer timeout - buffer_size: Transfer buffer size """ super().__init__(config) self._client = None def connect(self) -> bool: """Connect to Mooncake storage.""" try: # Initialize Mooncake client # This would be implemented with actual Mooncake SDK self._connected = True return True except Exception: self._connected = False return False def disconnect(self) -> None: """Disconnect from Mooncake storage.""" self._client = None self._connected = False def get(self, key: str, dst_buffer: Any) -> bool: """Get data from Mooncake storage.""" if not self._connected or self._client is None: return False # Placeholder implementation # return self._client.get(key, dst_buffer) return False def set(self, key: str, src_buffer: Any, size: int) -> bool: """Set data in Mooncake storage.""" if not self._connected or self._client is None: return False # Placeholder implementation # return self._client.set(key, src_buffer, size) return False def delete(self, key: str) -> bool: """Delete data from Mooncake storage.""" if not self._connected or self._client is None: return False # Placeholder implementation # return self._client.delete(key) return False def clear(self, prefix: str = "") -> int: """Clear data from Mooncake storage.""" if not self._connected or self._client is None: return 0 # Placeholder implementation # return self._client.clear(prefix) return 0