Skip to content

Commit 78f05d4

Browse files
mboersmaMatthew Fisher
authored andcommitted
fix(app): restored apps:rollback functionality
Fixes #704.
1 parent af7a177 commit 78f05d4

2 files changed

Lines changed: 8 additions & 14 deletions

File tree

controller/api/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ class Meta:
402402
def __str__(self):
403403
return "{0}-v{1}".format(self.app.id, self.version)
404404

405-
def new(self, user, config=None, build=None):
405+
def new(self, user, config=None, build=None, summary=None):
406406
"""
407407
Create a new application release using the provided Build and Config
408408
on behalf of a user.
@@ -420,7 +420,7 @@ def new(self, user, config=None, build=None):
420420
# create new release and auto-increment version
421421
release = Release.objects.create(
422422
owner=user, app=self.app, config=config,
423-
build=build, version=new_version, image=image)
423+
build=build, version=new_version, image=image, summary=summary)
424424
# publish release to registry as new docker image
425425
repository_path = "{}/{}".format(user.username, self.app.id)
426426
publish_release(repository_path, config.values, tag)

controller/api/views.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
from django.contrib.auth.models import AnonymousUser
1010
from django.contrib.auth.models import User
11-
from django.db import transaction
1211
from django.utils import timezone
1312
from guardian.shortcuts import assign_perm
1413
from guardian.shortcuts import get_objects_for_user
@@ -23,7 +22,6 @@
2322
from rest_framework.response import Response
2423

2524
from api import models, serializers
26-
from registry import publish_release
2725
from .exceptions import UserRegistrationException
2826

2927
from django.conf import settings
@@ -421,20 +419,16 @@ def rollback(self, request, *args, **kwargs):
421419
config vars of a previous release.
422420
"""
423421
app = get_object_or_404(models.App, id=self.kwargs['id'])
424-
last_version = app.release_set.latest().version
422+
release = app.release_set.latest()
423+
last_version = release.version
425424
version = int(request.DATA.get('version', last_version - 1))
426425
if version < 1:
427426
return Response(status=status.HTTP_404_NOT_FOUND)
427+
summary = "{} rolled back to v{}".format(request.user, version)
428428
prev = app.release_set.get(version=version)
429-
with transaction.atomic():
430-
summary = "{} rolled back to v{}".format(request.user, version)
431-
app.release_set.create(owner=request.user, version=last_version + 1,
432-
build=prev.build, config=prev.config,
433-
summary=summary)
434-
# publish release to registry as new docker image
435-
repository_path = "{}/{}".format(app.owner.username, app.id)
436-
tag = 'v{}'.format(last_version + 1)
437-
publish_release(repository_path, prev.config.values, tag)
429+
new_release = release.new(
430+
request.user, build=prev.build, config=prev.config, summary=summary)
431+
app.deploy(new_release)
438432
msg = "Rolled back to v{}".format(version)
439433
return Response(msg, status=status.HTTP_201_CREATED)
440434

0 commit comments

Comments
 (0)