@@ -208,6 +208,9 @@ def _refresh_ingress(self, hosts, tls_map, ssl_redirect):
208208 def refresh_ingress_and_tls (self ):
209209 if not getattr (self , 'refresh_ingress_and_tls_enabled' , True ):
210210 return
211+ app_settings = self .appsettings_set .latest ()
212+ if not app_settings .routable :
213+ return
211214 ingress = self .id
212215 hosts , tls_map = [], {}
213216
@@ -298,21 +301,23 @@ def create(self, *args, **kwargs): # noqa
298301 raise ServiceUnavailable ('Could not delete the Namespace in Kubernetes' ) from e
299302
300303 raise ServiceUnavailable ('Kubernetes resources could not be created' ) from e
301- setattr (self , 'refresh_ingress_and_tls_enabled' , False ) # do not refresh
302304 try :
303- self .appsettings_set .latest ()
304- except AppSettings .DoesNotExist :
305- AppSettings .objects .create (owner = self .owner , app = self )
306- try :
307- self .tls_set .latest ()
308- except TLS .DoesNotExist :
309- TLS .objects .create (owner = self .owner , app = self )
310- # Attach the platform specific application sub domain to the k8s service
311- # Only attach it on first release in case a customer has remove the app domain
312- if rel .version == 1 and not Domain .objects .filter (domain = self .id ).exists ():
313- Domain .objects .create (owner = self .owner , app = self , domain = self .id )
314- # The default routable is true, so refresh ingress and tls
315- setattr (self , 'refresh_ingress_and_tls_enabled' , True )
305+ setattr (self , 'refresh_ingress_and_tls_enabled' , False ) # do not refresh
306+ try :
307+ self .appsettings_set .latest ()
308+ except AppSettings .DoesNotExist :
309+ AppSettings .objects .create (owner = self .owner , app = self )
310+ try :
311+ self .tls_set .latest ()
312+ except TLS .DoesNotExist :
313+ TLS .objects .create (owner = self .owner , app = self )
314+ # Attach the platform specific application sub domain to the k8s service
315+ # Only attach it on first release in case a customer has remove the app domain
316+ if rel .version == 1 and not Domain .objects .filter (domain = self .id ).exists ():
317+ Domain .objects .create (owner = self .owner , app = self , domain = self .id )
318+ # The default routable is true, so refresh ingress and tls
319+ finally :
320+ setattr (self , 'refresh_ingress_and_tls_enabled' , True )
316321 self .refresh_ingress_and_tls () # refresh
317322
318323 def delete (self , * args , ** kwargs ):
@@ -660,7 +665,8 @@ def _check_deployment_in_progress(self, deploys, force_deploy=False):
660665 if in_progress and not deploy_okay :
661666 raise AlreadyExists ('Deployment for {} is already in progress' .format (name ))
662667
663- def _default_structure (self , release ):
668+ @staticmethod
669+ def _default_structure (release ):
664670 """Scale to default structure based on release type"""
665671 # If web in procfile then honor it
666672 if release .build .procfile and 'web' in release .build .procfile :
@@ -940,23 +946,6 @@ def _build_env_vars(self, release):
940946 default_env .update (release .config .values )
941947 return default_env
942948
943- def maintenance_mode (self , mode ):
944- """
945- Turn application maintenance mode on/off
946- """
947- if mode :
948- namespace = ingress = self .id
949- try :
950- data = self ._scheduler .ingress .get (namespace , ingress ).json ()
951- for rule in data ["spec" ]["rules" ]:
952- for path in rule ["http" ]["paths" ]:
953- path ["backend" ]["serviceName" ] = "drycc-maintenance-proxy"
954- self ._scheduler .ingress .patch (ingress , namespace , data )
955- except KubeException :
956- self .log ("creating Ingress {}" .format (namespace ), level = logging .INFO )
957- else :
958- self .refresh_ingress_and_tls ()
959-
960949 def routable (self , routable ):
961950 """
962951 Turn on/off if an application is publically routable
0 commit comments