@@ -92,12 +92,12 @@ def manifest(self, name, resource_version=None):
9292class IPWhiteListMiddleware (BaseMiddleware ):
9393 name_suffix = "-ip-white-list"
9494
95- def manifest (self , name , allowlist , resource_version = None ):
95+ def manifest (self , name , allowlist = None , resource_version = None ):
9696 data = super ().manifest (name , resource_version )
9797 data .update ({
9898 "spec" : {
9999 "ipWhiteList" : {
100- "sourceRange" : allowlist
100+ "sourceRange" : allowlist if allowlist is not None else []
101101 }
102102 }
103103 })
@@ -124,42 +124,45 @@ class TraefikIngress(BaseIngress):
124124
125125 def __init__ (self , url , k8s_api_verify_tls = True ):
126126 super ().__init__ (url , k8s_api_verify_tls )
127- self .buffering = BufferingMiddleware (url , k8s_api_verify_tls )
128- self .ip_white_list = IPWhiteListMiddleware (url , k8s_api_verify_tls )
129- self .redirect_scheme = RedirectSchemeMiddleware (url , k8s_api_verify_tls )
127+ self .middlewares = {
128+ "buffering" : BufferingMiddleware (url , k8s_api_verify_tls ),
129+ "allowlist" : IPWhiteListMiddleware (url , k8s_api_verify_tls ),
130+ "ssl_redirect" : RedirectSchemeMiddleware (url , k8s_api_verify_tls ),
131+ }
130132
131133 def manifest (self , namespace , ingress , ** kwargs ):
132134 data = BaseIngress .manifest (self , namespace , ingress , ** kwargs )
133- middlewares = [f"{ namespace } -{ self .buffering .fullname (ingress )} @kubernetescrd" , ]
134- if "allowlist" in kwargs and kwargs ["allowlist" ]:
135- middlewares .append (
136- f"{ namespace } -{ self .ip_white_list .fullname (ingress )} @kubernetescrd" )
137- if "ssl_redirect" in kwargs and kwargs ["ssl_redirect" ]:
138- middlewares .append (
139- f"{ namespace } -{ self .redirect_scheme .fullname (ingress )} @kubernetescrd" )
135+ middlewares = []
136+ for middleware in self .middlewares .keys ():
137+ if middleware == "buffering" or (middleware in kwargs and kwargs [middleware ]):
138+ name = self .middlewares [middleware ].fullname (ingress )
139+ middlewares .append (f"{ namespace } -{ name } @kubernetescrd" )
140140 data ["metadata" ]["annotations" ].update ({
141141 "traefik.ingress.kubernetes.io/router.middlewares" : "," .join (middlewares )
142142 })
143143 return data
144144
145145 def create (self , namespace , ingress , ** kwargs ):
146146 response = super ().create (ingress , namespace , ** kwargs )
147- self .buffering .create (namespace , name = self .buffering .fullname (ingress ))
148- self .ip_white_list .create (
149- namespace , name = self .ip_white_list .fullname (ingress ), allowlist = [])
150- self .redirect_scheme .create (namespace , name = self .redirect_scheme .fullname (ingress ))
147+ for middleware in self .middlewares .keys ():
148+ name = self .middlewares [middleware ].fullname (ingress )
149+ self .middlewares [middleware ].create (namespace , name = name )
151150 return response
152151
153152 def put (self , namespace , ingress , version , ** kwargs ):
154153 response = super ().put (ingress , namespace , version , ** kwargs )
155154 if "allowlist" in kwargs :
156- self .ip_white_list .put (
157- namespace , self .ip_white_list .fullname (ingress ), allowlist = kwargs ["allowlist" ])
155+ name = self .middlewares ["allowlist" ].fullname (ingress )
156+ self .middlewares ["allowlist" ].put (
157+ namespace ,
158+ name ,
159+ allowlist = kwargs ["allowlist" ],
160+ )
158161 return response
159162
160163 def delete (self , namespace , ingress ):
161164 response = super ().delete (namespace , ingress )
162- self . buffering . delete ( namespace , self .buffering . fullname ( ingress ))
163- self . ip_white_list . delete ( namespace , self .ip_white_list .fullname (ingress ) )
164- self .redirect_scheme .delete (namespace , self . redirect_scheme . fullname ( ingress ) )
165+ for middleware in self .middlewares . keys ():
166+ name = self .middlewares [ middleware ] .fullname (ingress )
167+ self .middlewares [ middleware ] .delete (namespace , name )
165168 return response
0 commit comments