1+ import logging
2+
13from django .db import models
24from django .conf import settings
35
4- from api .models import AuditedModel
6+ from api .models import AuditedModel , UuidAuditedModel , AlreadyExists , DeisException , ServiceUnavailable
7+ from scheduler import KubeException
8+
9+ logger = logging .getLogger (__name__ )
510
611class Service (AuditedModel ):
712 owner = models .ForeignKey (settings .AUTH_USER_MODEL , on_delete = models .PROTECT )
@@ -25,8 +30,9 @@ def as_dict(self):
2530
2631 def create (self , * args , ** kwargs ): # noqa
2732 # create required minimum service in k8s for the application
33+
2834 namespace = self .app .id
29- svc_name = "{}-{}" .format (self . id , self .procfile_type )
35+ svc_name = "{}-{}" .format (namespace , self .procfile_type )
3036 self .log ('creating Service: {}' .format (svc_name ), level = logging .DEBUG )
3137 try :
3238 try :
@@ -42,12 +48,14 @@ def create(self, *args, **kwargs): # noqa
4248
4349 def save (self , * args , ** kwargs ):
4450 service = super (Service , self ).save (* args , ** kwargs )
51+
4552 self .create ()
53+
4654 return service
4755
4856 def delete (self , * args , ** kwargs ):
4957 namespace = self .app .id
50- svc_name = "{}-{}" .format (self . id , self .procfile_type )
58+ svc_name = "{}-{}" .format (namespace , self .procfile_type )
5159 self .log ('deleting Service: {}' .format (svc_name ), level = logging .DEBUG )
5260 try :
5361 self ._scheduler .svc .delete (namespace , svc_name )
@@ -59,6 +67,16 @@ def delete(self, *args, **kwargs):
5967 # Delete from DB
6068 return super (Service , self ).delete (* args , ** kwargs )
6169
70+ def log (self , message , level = logging .INFO ):
71+ """Logs a message in the context of this service.
72+
73+ This prefixes log messages with an application "tag" that the customized deis-logspout will
74+ be on the lookout for. When it's seen, the message-- usually an application event of some
75+ sort like releasing or scaling, will be considered as "belonging" to the application
76+ instead of the controller and will be handled accordingly.
77+ """
78+ logger .log (level , "[{}]: {}" .format (self .id , message ))
79+
6280 def _gather_settings (self ):
6381 app_settings = self .app .appsettings_set .latest ()
6482 return {
0 commit comments