88 lines
2.5 KiB
Python
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)
|
|
|