diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 2fab52d1e..756efd6ea 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -55,6 +55,7 @@ nav: - Reference: - reference/index.md - Clan Modules: + - reference/clanModules/admin.md - reference/clanModules/borgbackup-static.md - reference/clanModules/borgbackup.md - reference/clanModules/deltachat.md diff --git a/pkgs/clan-cli/clan_cli/inventory/classes.py b/pkgs/clan-cli/clan_cli/inventory/classes.py index 60c9107b9..7501a3e74 100644 --- a/pkgs/clan-cli/clan_cli/inventory/classes.py +++ b/pkgs/clan-cli/clan_cli/inventory/classes.py @@ -30,6 +30,45 @@ class Meta: icon: None | str = field(default = None) +@dataclass +class AdminConfig: + allowedKeys: list[str] = field(default_factory = list) + + +@dataclass +class ServiceAdminMachine: + config: AdminConfig = field(default_factory = AdminConfig) + imports: list[str] = field(default_factory = list) + + +@dataclass +class ServiceMeta: + name: str + description: None | str = field(default = None) + icon: None | str = field(default = None) + + +@dataclass +class ServiceAdminRoleDefault: + config: AdminConfig = field(default_factory = AdminConfig) + imports: list[str] = field(default_factory = list) + machines: list[str] = field(default_factory = list) + tags: list[str] = field(default_factory = list) + + +@dataclass +class ServiceAdminRole: + default: ServiceAdminRoleDefault + + +@dataclass +class ServiceAdmin: + meta: ServiceMeta + roles: ServiceAdminRole + config: AdminConfig = field(default_factory = AdminConfig) + machines: dict[str, ServiceAdminMachine] = field(default_factory = dict) + + @dataclass class BorgbackupConfigDestination: name: str @@ -48,13 +87,6 @@ class ServiceBorgbackupMachine: imports: list[str] = field(default_factory = list) -@dataclass -class ServiceMeta: - name: str - description: None | str = field(default = None) - icon: None | str = field(default = None) - - @dataclass class ServiceBorgbackupRoleClient: config: BorgbackupConfig = field(default_factory = BorgbackupConfig) @@ -151,6 +183,7 @@ class ServiceSingleDisk: @dataclass class Service: + admin: dict[str, ServiceAdmin] = field(default_factory = dict) borgbackup: dict[str, ServiceBorgbackup] = field(default_factory = dict) packages: dict[str, ServicePackage] = field(default_factory = dict) single_disk: dict[str, ServiceSingleDisk] = field(default_factory = dict, metadata = {"alias": "single-disk"})