@@ -156,11 +156,6 @@ def delete(self, *args, **kwargs):
156156 return super (Certificate , self ).delete (* args , ** kwargs )
157157
158158 def attach (self , * args , ** kwargs ):
159- data = {
160- 'cert' : self .certificate ,
161- 'key' : self .key
162- }
163-
164159 # add the certificate to the domain
165160 domain = get_object_or_404 (Domain , domain = kwargs ['domain' ])
166161 if domain .certificate is not None :
@@ -169,14 +164,30 @@ def attach(self, *args, **kwargs):
169164 domain .certificate = self
170165 domain .save ()
171166
172- name = '%s-cert' % self .name
173- app = domain .app
174- # only create if it exists
167+ # create in kubernetes
168+ self .attach_in_kubernetes (domain )
169+
170+ def attach_in_kubernetes (self , domain ):
171+ """Creates the certificate as a kubernetes secret"""
172+ # only create if it exists - We raise an exception when a secret doesn't exist
175173 try :
176- # We raise an exception when a secret doesn't exist
177- self ._scheduler ._get_secret (app , name )
174+ name = '%s-cert' % self .name
175+ app = domain .app
176+ data = {
177+ 'tls.crt' : self .certificate ,
178+ 'tls.key' : self .key
179+ }
180+
181+ secret = self ._scheduler ._get_secret (app , name ).json ()['data' ]
178182 except KubeHTTPException :
179183 self ._scheduler ._create_secret (app , name , data )
184+ else :
185+ # update cert secret to the TLS Ingress format if required
186+ if secret != data :
187+ try :
188+ self ._scheduler ._update_secret (app , name , data )
189+ except KubeHTTPException :
190+ raise
180191
181192 # get config for the service
182193 config = self ._load_service_config (app , 'router' )
0 commit comments