66
77class BaseManifest (object ):
88
9- def manifest (self , ingress , ingress_class , namespace , ** kwargs ):
9+ def manifest (self , api_version , ingress , ingress_class , namespace , ** kwargs ):
1010 path = "/*" if ingress_class in ("gce" , "alb" ) else "/"
1111 hosts , tls = kwargs .pop ("hosts" , None ), kwargs .pop ("tls" , None )
1212 version = kwargs .pop ("version" , None )
1313 data = {
1414 "kind" : "Ingress" ,
15- "apiVersion" : "extensions/v1beta1" ,
15+ "apiVersion" : api_version ,
1616 "metadata" : {
1717 "name" : ingress ,
1818 "annotations" : {
1919 "kubernetes.io/tls-acme" : "true" ,
2020 }
2121 },
22- "spec" : {}
23- }
22+ "spec" : {} }
2423 if hosts :
2524 data ["spec" ]["rules" ] = [{
2625 "host" : host ,
@@ -49,9 +48,9 @@ def manifest(self, ingress, ingress_class, namespace, **kwargs):
4948
5049class NginxManifest (BaseManifest ):
5150
52- def manifest (self , ingress , ingress_class , namespace , ** kwargs ):
51+ def manifest (self , api_version , ingress , ingress_class , namespace , ** kwargs ):
5352 data = BaseManifest .manifest (
54- self , ingress , ingress_class , namespace , ** kwargs )
53+ self , api_version , ingress , ingress_class , namespace , ** kwargs )
5554 if "whitelist" in kwargs :
5655 whitelist = ", " .join (kwargs .pop ("whitelist" ))
5756 data ["metadata" ]["annotations" ].update ({
@@ -70,9 +69,9 @@ def manifest(self, ingress, ingress_class, namespace, **kwargs):
7069
7170class TraefikManifest (BaseManifest ):
7271
73- def manifest (self , ingress , ingress_class , namespace , ** kwargs ):
72+ def manifest (self , api_version , ingress , ingress_class , namespace , ** kwargs ):
7473 data = BaseManifest .manifest (
75- self , ingress , ingress_class , namespace , ** kwargs )
74+ self , api_version , ingress , ingress_class , namespace , ** kwargs )
7675 if "whitelist" in kwargs :
7776 whitelist = ", " .join (kwargs .pop ("whitelist" ))
7877 data ["metadata" ]["annotations" ].update ({
@@ -91,22 +90,25 @@ def manifest(self, ingress, ingress_class, namespace, **kwargs):
9190
9291
9392class Ingress (Resource ):
93+
94+ api_version = 'networking.k8s.io/v1beta1'
95+ api_prefix = 'apis'
9496 short_name = 'ingress'
9597
96- def manifest (self , ingress , ingress_class , namespace , ** kwargs ):
98+ def manifest (self , api_version , ingress , ingress_class , namespace , ** kwargs ):
9799 return MANIFEAT_CLASSES .get (ingress_class , BaseManifest )().manifest (
98- ingress , ingress_class , namespace , ** kwargs
100+ api_version , ingress , ingress_class , namespace , ** kwargs
99101 )
100102
101- def get (self , namespace , name = None , ** kwargs ):
103+ def get (self , namespace , ingress = None , ** kwargs ):
102104 """
103105 Fetch a single Ingress or a list of Ingresses
104106 """
105- if name is not None :
106- url = "/apis/extensions/v1beta1/ namespaces/%s /ingresses/%s" % ( namespace , name )
107- message = 'get Ingress ' + name
107+ if ingress is not None :
108+ url = self . api ( "/ namespaces/{} /ingresses/{}" , namespace , ingress )
109+ message = 'get Ingress ' + ingress
108110 else :
109- url = "/apis/extensions/v1beta1/ namespaces/%s /ingresses" % namespace
111+ url = self . api ( "/ namespaces/{} /ingresses", namespace )
110112 message = 'get Ingresses'
111113
112114 response = self .http_get (url , params = self .query_params (** kwargs ))
@@ -116,8 +118,8 @@ def get(self, namespace, name=None, **kwargs):
116118 return response
117119
118120 def create (self , ingress , ingress_class , namespace , ** kwargs ):
119- url = "/apis/extensions/v1beta1/ namespaces/%s /ingresses" % namespace
120- data = self .manifest (ingress , ingress_class , namespace , ** kwargs )
121+ url = self . api ( "/ namespaces/{} /ingresses", namespace )
122+ data = self .manifest (self . api_version , ingress , ingress_class , namespace , ** kwargs )
121123 response = self .http_post (url , json = data )
122124
123125 if not response .status_code == 201 :
@@ -126,9 +128,9 @@ def create(self, ingress, ingress_class, namespace, **kwargs):
126128 return response
127129
128130 def put (self , ingress , ingress_class , namespace , version , ** kwargs ):
129- url = "/apis/extensions/v1beta1/ namespaces/%s /ingresses/%s" % ( namespace , ingress )
131+ url = self . api ( "/ namespaces/{} /ingresses/{}" , namespace , ingress )
130132 kwargs ["version" ] = version
131- data = self .manifest (ingress , ingress_class , namespace , ** kwargs )
133+ data = self .manifest (self . api_version , ingress , ingress_class , namespace , ** kwargs )
132134 response = self .http_put (url , json = data )
133135
134136 if self .unhealthy (response .status_code ):
@@ -137,7 +139,7 @@ def put(self, ingress, ingress_class, namespace, version, **kwargs):
137139 return response
138140
139141 def delete (self , namespace , ingress ):
140- url = "/apis/extensions/v1beta1/ namespaces/%s /ingresses/%s" % ( namespace , ingress )
142+ url = self . api ( "/ namespaces/{} /ingresses/{}" , namespace , ingress )
141143 response = self .http_delete (url )
142144 if self .unhealthy (response .status_code ):
143145 raise KubeHTTPException (response , 'delete Ingress "{}"' , namespace )
0 commit comments