Coverage for /usr/local/lib/python3.10/site-packages/opal_common-0.0.0-py3.10.egg/opal_common/schemas/policy.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 11:54 +0000

1from pathlib import Path 

2from typing import List, Optional 

3 

4from pydantic import BaseModel, Field 

5 

6 

7class BaseSchema(BaseModel): 

8 class Config: 

9 orm_mode = True 

10 

11 

12class DataModule(BaseSchema): 

13 path: str = Field( 

14 ..., description="where to place the data module relative to opa data root" 

15 ) 

16 data: str = Field(..., description="data module file contents (json)") 

17 

18 

19class RegoModule(BaseSchema): 

20 path: str = Field( 

21 ..., 

22 description="path of policy module on disk, will be used to generate policy id", 

23 ) 

24 package_name: str = Field(..., description="opa module package name") 

25 rego: str = Field(..., description="rego module file contents (text)") 

26 

27 

28class DeletedFiles(BaseSchema): 

29 data_modules: List[Path] = [] 

30 policy_modules: List[Path] = [] 

31 

32 

33class PolicyBundle(BaseSchema): 

34 manifest: List[str] 

35 hash: str = Field(..., description="commit hash (debug version)") 

36 old_hash: Optional[str] = Field( 

37 None, description="old commit hash (in diff bundles)" 

38 ) 

39 data_modules: List[DataModule] 

40 policy_modules: List[RegoModule] 

41 deleted_files: Optional[DeletedFiles] 

42 

43 

44class PolicyUpdateMessage(BaseSchema): 

45 old_policy_hash: str 

46 new_policy_hash: str 

47 changed_directories: List[str] 

48 

49 

50class PolicyUpdateMessageNotification(BaseSchema): 

51 update: PolicyUpdateMessage 

52 topics: List[str]