much cleanup
This commit is contained in:
96
src/traefik/traefikConfig.py
Normal file
96
src/traefik/traefikConfig.py
Normal file
@ -0,0 +1,96 @@
|
||||
import yaml
|
||||
|
||||
|
||||
class TraefikConfig:
|
||||
|
||||
def __init__(self, configFile) -> None:
|
||||
self.configFile = configFile
|
||||
with open(configFile, "r") as config:
|
||||
self.configYml = yaml.safe_load(config)
|
||||
|
||||
def isValid(self) -> bool:
|
||||
return "http" in self.configYml and "routers" in self.configYml["http"] and "services" in self.configYml["http"]
|
||||
|
||||
def getRouter(self, name):
|
||||
return self.configYml["http"]["routers"][name]
|
||||
|
||||
def getService(self, name):
|
||||
return self.configYml["http"]["services"][name]
|
||||
|
||||
def addRouter(self, name, domain, serviceHost):
|
||||
# Add router
|
||||
self.configYml["http"]["routers"][name] = {
|
||||
"entryPoints": ["https"],
|
||||
"rule": "Host(`%s`)" % domain,
|
||||
"middlewares": ["default-headers", "https-redirectscheme"],
|
||||
"tls": {},
|
||||
"service": name
|
||||
}
|
||||
|
||||
# Add service
|
||||
self.configYml["http"]["services"][name] = {
|
||||
"loadBalancer": {
|
||||
"servers": [
|
||||
{
|
||||
"url": serviceHost
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
def removeRouter(self, name):
|
||||
# Remove router
|
||||
del self.configYml["http"]["routers"][name]
|
||||
|
||||
# Remove service
|
||||
del self.configYml["http"]["services"][name]
|
||||
|
||||
def hasRouter(self, name):
|
||||
return name in self.configYml["http"]["routers"]
|
||||
|
||||
def addService(self, name, serviceHost):
|
||||
# Add service
|
||||
self.configYml["http"]["services"][name] = {
|
||||
"loadBalancer": {
|
||||
"servers": [
|
||||
{
|
||||
"url": serviceHost
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
def hasService(self, name):
|
||||
return name in self.configYml["http"]["services"]
|
||||
|
||||
def getRouters(self):
|
||||
return self.configYml["http"]["routers"]
|
||||
|
||||
def getServices(self):
|
||||
return self.configYml["http"]["services"]
|
||||
|
||||
def getAll(self):
|
||||
domains = {}
|
||||
|
||||
routers = self.getRouters()
|
||||
services = self.getServices()
|
||||
|
||||
# Loop through routers
|
||||
for name, router in routers.items():
|
||||
# Get domain
|
||||
domain = router["rule"].split("`")[1]
|
||||
|
||||
# Get service host
|
||||
serviceHost = services[name]["loadBalancer"]["servers"][0]["url"]
|
||||
|
||||
# Add to domains
|
||||
domains[name] = {
|
||||
"domain": domain,
|
||||
"serviceHost": serviceHost
|
||||
}
|
||||
|
||||
return domains
|
||||
|
||||
def save(self):
|
||||
with open(self.configFile, "w") as config:
|
||||
yaml.dump(self.configYml, config)
|
Reference in New Issue
Block a user