mirror of
https://github.com/bunkerity/bunkerized-nginx
synced 2023-12-13 21:30:18 +01:00
autoconf - init work on _get_static_services method
This commit is contained in:
parent
a18d77aeee
commit
b2758cea76
4 changed files with 78 additions and 1 deletions
|
@ -58,11 +58,17 @@ class Controller(ABC) :
|
|||
def _to_services(self, controller_service) :
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def _get_static_services(self) :
|
||||
pass
|
||||
|
||||
def get_services(self) :
|
||||
services = []
|
||||
for controller_service in self._get_controller_services() :
|
||||
for service in self._to_services(controller_service) :
|
||||
services.append(service)
|
||||
for static_service in self._get_static_services() :
|
||||
services.append(static_service)
|
||||
return services
|
||||
|
||||
@abstractmethod
|
||||
|
|
|
@ -3,6 +3,7 @@ import traceback
|
|||
from docker import DockerClient
|
||||
|
||||
from Controller import Controller
|
||||
from ConfigCaller import ConfigCaller
|
||||
from logger import log
|
||||
|
||||
class DockerController(Controller, ConfigCaller) :
|
||||
|
@ -41,6 +42,28 @@ class DockerController(Controller, ConfigCaller) :
|
|||
service[real_variable] = value
|
||||
return [service]
|
||||
|
||||
def _get_static_services(self) :
|
||||
services = []
|
||||
variables = {}
|
||||
for instance in self.__client.containers.list(filters={"label" : "bunkerweb.AUTOCONF"}) :
|
||||
for env in instance.attrs["Config"]["Env"] :
|
||||
variable = env.split("=")[0]
|
||||
value = env.replace(variable + "=", "", 1)
|
||||
variables[variable] = value
|
||||
server_names = []
|
||||
if "SERVER_NAME" in variables and variables["SERVER_NAME"] != "" :
|
||||
server_names = variables["SERVER_NAME"].split(" ")
|
||||
for server_name in server_names :
|
||||
service = {}
|
||||
service["SERVER_NAME"] = server_name
|
||||
for variable, value in variables.items() :
|
||||
prefix = variable.split("_")[0]
|
||||
real_variable = variable.replace(prefix + "_", "", 1)
|
||||
if prefix == server_name and self._is_multisite_setting(real_variable) :
|
||||
service[real_variable] = value
|
||||
services.append(service)
|
||||
return services
|
||||
|
||||
def get_configs(self) :
|
||||
raise("get_configs is not supported with DockerController")
|
||||
|
||||
|
|
|
@ -110,6 +110,31 @@ class IngressController(Controller, ConfigCaller) :
|
|||
service[variable] = value
|
||||
return services
|
||||
|
||||
def _get_static_services(self) :
|
||||
services = []
|
||||
variables = {}
|
||||
for instance in self.__corev1.list_pod_for_all_namespaces(watch=False).items :
|
||||
if instance.metadata.annotations is None or not "bunkerweb.io/AUTOCONF" in instance.metadata.annotations :
|
||||
continue
|
||||
for env in instance.spec.containers[0].env :
|
||||
if env.value is None :
|
||||
variables[env.name] = ""
|
||||
else :
|
||||
variables[env.name] = env.value
|
||||
server_names = []
|
||||
if "SERVER_NAME" in variables and variables["SERVER_NAME"] != "" :
|
||||
server_names = variables["SERVER_NAME"].split(" ")
|
||||
for server_name in server_names :
|
||||
service = {}
|
||||
service["SERVER_NAME"] = server_name
|
||||
for variable, value in variables.items() :
|
||||
prefix = variable.split("_")[0]
|
||||
real_variable = variable.replace(prefix + "_", "", 1)
|
||||
if prefix == server_name and self._is_multisite_setting(real_variable) :
|
||||
service[real_variable] = value
|
||||
services.append(service)
|
||||
return services
|
||||
|
||||
def get_configs(self) :
|
||||
configs = {}
|
||||
supported_config_types = ["http", "stream", "server-http", "server-stream", "default-server-http", "modsec", "modsec-crs"]
|
||||
|
|
|
@ -5,6 +5,7 @@ from logger import log
|
|||
from base64 import b64decode
|
||||
|
||||
from Controller import Controller
|
||||
from ConfigCaller import ConfigCaller
|
||||
|
||||
class SwarmController(Controller, ConfigCaller) :
|
||||
|
||||
|
@ -47,6 +48,28 @@ class SwarmController(Controller, ConfigCaller) :
|
|||
service[real_variable] = value
|
||||
return [service]
|
||||
|
||||
def _get_static_services(self) :
|
||||
services = []
|
||||
variables = {}
|
||||
for instance in self.__client.services.list(filters={"label" : "bunkerweb.AUTOCONF"}) :
|
||||
for env in instance.attrs["Spec"]["TaskTemplate"]["ContainerSpec"]["Env"] :
|
||||
variable = env.split("=")[0]
|
||||
value = env.replace(variable + "=", "", 1)
|
||||
variables[variable] = value
|
||||
server_names = []
|
||||
if "SERVER_NAME" in variables and variables["SERVER_NAME"] != "" :
|
||||
server_names = variables["SERVER_NAME"].split(" ")
|
||||
for server_name in server_names :
|
||||
service = {}
|
||||
service["SERVER_NAME"] = server_name
|
||||
for variable, value in variables.items() :
|
||||
prefix = variable.split("_")[0]
|
||||
real_variable = variable.replace(prefix + "_", "", 1)
|
||||
if prefix == server_name and self._is_multisite_setting(real_variable) :
|
||||
service[real_variable] = value
|
||||
services.append(service)
|
||||
return services
|
||||
|
||||
def get_configs(self) :
|
||||
configs = {}
|
||||
for config_type in self._supported_config_types :
|
||||
|
|
Loading…
Reference in a new issue