@@ -46,9 +46,17 @@ def tearDown(self):
4646 """
4747 return
4848
49+ # announcer helpers
50+
51+ def _log_skipped_announcer (self , action , name ):
52+ """
53+ Logs a message stating that this operation doesn't require an announcer
54+ """
55+ print "-- skipping announcer {} for {}" .format (action , name )
56+
4957 # job api
5058
51- def create (self , name , image , command = '' , template = None ):
59+ def create (self , name , image , command = '' , template = None , use_announcer = True ):
5260 """
5361 Create a new job
5462 """
@@ -57,11 +65,10 @@ def create(self, name, image, command='', template=None):
5765 self ._create_container (name , image , command , template or CONTAINER_TEMPLATE , env )
5866 self ._create_log (name , image , command , LOG_TEMPLATE , env )
5967
60- # only announce web and cmd processes
61- if command .lower () in ['start web' , '' ]:
68+ if use_announcer :
6269 self ._create_announcer (name , image , command , ANNOUNCE_TEMPLATE , env )
6370 else :
64- print "-- skipping announcer for {} - cmd type is {}" . format ( name , command )
71+ self . _log_skipped_announcer ( 'create' , name )
6572
6673 def _create_container (self , name , image , command , template , env ):
6774 l = locals ().copy ()
@@ -87,16 +94,20 @@ def _create_log(self, name, image, command, template, env):
8794 return subprocess .check_call ('fleetctl.sh submit {name}-log.service' .format (** locals ()), # noqa
8895 shell = True , env = env )
8996
90- def start (self , name ):
97+ def start (self , name , use_announcer = True ):
9198 """
9299 Start an idle job
93100 """
94101 print 'Starting {name}' .format (** locals ())
95102 env = self .env .copy ()
96103 self ._start_container (name , env )
97104 self ._start_log (name , env )
98- self ._start_announcer (name , env )
99- self ._wait_for_announcer (name , env )
105+
106+ if use_announcer :
107+ self ._start_announcer (name , env )
108+ self ._wait_for_announcer (name , env )
109+ else :
110+ self ._log_skipped_announcer ('start' , name )
100111
101112 def _start_log (self , name , env ):
102113 subprocess .check_call (
@@ -125,13 +136,18 @@ def _wait_for_announcer(self, name, env):
125136 else :
126137 raise RuntimeError ('Container failed to start' )
127138
128- def stop (self , name ):
139+ def stop (self , name , use_announcer = True ):
129140 """
130141 Stop a running job
131142 """
132143 print 'Stopping {name}' .format (** locals ())
133144 env = self .env .copy ()
134- self ._stop_announcer (name , env )
145+
146+ if use_announcer :
147+ self ._stop_announcer (name , env )
148+ else :
149+ self ._log_skipped_announcer ('stop' , name )
150+
135151 self ._stop_container (name , env )
136152 self ._stop_log (name , env )
137153
@@ -150,13 +166,18 @@ def _stop_log(self, name, env):
150166 'fleetctl.sh stop -block-attempts=600 {name}-log.service' .format (** locals ()),
151167 shell = True , env = env )
152168
153- def destroy (self , name ):
169+ def destroy (self , name , use_announcer = True ):
154170 """
155171 Destroy an existing job
156172 """
157173 print 'Destroying {name}' .format (** locals ())
158174 env = self .env .copy ()
159- self ._destroy_announcer (name , env )
175+
176+ if use_announcer :
177+ self ._destroy_announcer (name , env )
178+ else :
179+ self ._log_skipped_announcer ('destroy' , name )
180+
160181 self ._destroy_container (name , env )
161182 self ._destroy_log (name , env )
162183
0 commit comments