2025-03-04 22:49:26 +00:00

88 lines
2.5 KiB
Python

from dataclasses import dataclass, field, fields
from typing import List, Optional
@dataclass
class Env:
name: Optional[str] = None
value: Optional[str] = None
@dataclass
class TeamAccess:
AccessLevel: Optional[int] = None
TeamId: Optional[int] = None
@dataclass
class UserAccess:
AccessLevel: Optional[int] = None
UserId: Optional[int] = None
@dataclass
class ResourceControl:
AccessLevel: Optional[int] = None
AdministratorsOnly: Optional[bool] = None
Id: Optional[int] = None
OwnerId: Optional[int] = None
Public: Optional[bool] = None
ResourceId: Optional[str] = None
SubResourceIds: List[str] = field(default_factory=list)
System: Optional[bool] = None
TeamAccesses: List[TeamAccess] = field(default_factory=list)
Type: Optional[int] = None
UserAccesses: List[UserAccess] = field(default_factory=list)
@dataclass
class AutoUpdate:
forcePullImage: Optional[bool] = None
forceUpdate: Optional[bool] = None
interval: Optional[str] = None
jobID: Optional[str] = None
webhook: Optional[str] = None
@dataclass
class GitAuthentication:
gitCredentialID: Optional[int] = None
password: Optional[str] = None
username: Optional[str] = None
@dataclass
class GitConfig:
authentication: GitAuthentication = GitAuthentication()
configFilePath: Optional[str] = None
configHash: Optional[str] = None
referenceName: Optional[str] = None
tlsskipVerify: Optional[bool] = None
url: Optional[str] = None
@dataclass
class Option:
prune: Optional[bool] = None
@dataclass
class PortainerStack:
AdditionalFiles: List[str] = field(default_factory=list)
AutoUpdate: AutoUpdate = AutoUpdate()
EndpointId: Optional[int] = None
EntryPoint: Optional[str] = None
Env: List['Env'] = field(default_factory=list)
Id: Optional[int] = None
Name: Optional[str] = None
Option: Option = Option()
ResourceControl: ResourceControl = ResourceControl()
Status: Optional[int] = None
SwarmId: Optional[str] = None
Type: Optional[int] = None
createdBy: Optional[str] = None
creationDate: Optional[int] = None
fromAppTemplate: Optional[bool] = None
gitConfig: GitConfig = GitConfig()
namespace: Optional[str] = None
projectPath: Optional[str] = None
updateDate: Optional[int] = None
updatedBy: Optional[str] = None
def classFromArgs(className, argDict):
fieldSet = {f.name for f in fields(className) if f.init}
filteredArgDict = {k : v for k, v in argDict.items() if k in fieldSet}
return className(**filteredArgDict)