Skip to content

Commit 6f5f405

Browse files
committed
chore(scale): prohibit scale when there is a running pipeline
1 parent 6b592cb commit 6f5f405

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

rootfs/api/models/app.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,15 +221,14 @@ def restart(self, **kwargs): # noqa
221221

222222
def scale(self, user, structure):
223223
err_msg = None
224-
if (PROCFILE_TYPE_RUN in structure or
225-
self.release_set.filter(failed=False).latest().build is None):
224+
release = self.release_set.filter(failed=False).latest()
225+
if (PROCFILE_TYPE_RUN in structure or release.build is None):
226226
if PROCFILE_TYPE_RUN in structure:
227227
err_msg = 'Cannot set scale for reserved types, procfile type is: run'
228228
else:
229229
err_msg = 'No build associated with this release'
230230
self.log(err_msg, logging.WARNING)
231231
raise DryccException(err_msg)
232-
release = self.release_set.filter(failed=False).latest()
233232
app_settings = self.appsettings_set.latest()
234233
if release.canary:
235234
self._scale(

rootfs/api/views.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,10 @@ def list(self, request, *args, **kwargs):
253253
return Response(serializer.data)
254254

255255
def scale(self, request, **kwargs):
256+
app = self.get_object()
257+
release = app.release_set.filter(failed=False).latest()
258+
if release.build is not None and release.state == "created":
259+
raise DryccException('There is an executing pipeline, please wait')
256260
scale_app.delay(self.get_object(), request.user, request.data)
257261
return Response(status=status.HTTP_204_NO_CONTENT)
258262

@@ -358,6 +362,8 @@ def post_save(self, config):
358362
self.request.user, config=config, build=release.build, canary=release.canary)
359363
# It's possible to set config values before a build
360364
if release.build is not None:
365+
if release.state == "created":
366+
raise DryccException('There is an executing pipeline, please wait')
361367
config.app.deploy(release)
362368
release.state = "succeed"
363369
release.save()

0 commit comments

Comments
 (0)