Skip to content

Commit 57a7305

Browse files
Gabriel MonroyMatthew Fisher
authored andcommitted
refactor(builder): improve build + config = release
- add release version as header on build and config creation - provide dynamic output on build/config CLI, including resulting release - add `deis push` CLI shortcut for builds:create
1 parent 64459a6 commit 57a7305

3 files changed

Lines changed: 20 additions & 8 deletions

File tree

api/tests/test_build.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def test_build(self):
6262
body = {'image': 'autotest/example'}
6363
response = self.client.post(url, json.dumps(body), content_type='application/json')
6464
self.assertEqual(response.status_code, 201)
65+
self.assertIn('x-deis-release', response._headers)
6566
build3 = response.data
6667
self.assertEqual(response.data['image'], body['image'])
6768
self.assertNotEqual(build2['uuid'], build3['uuid'])

api/tests/test_config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def test_config(self):
5151
body = {'values': json.dumps({'NEW_URL1': 'http://localhost:8080/'})}
5252
response = self.client.post(url, json.dumps(body), content_type='application/json')
5353
self.assertEqual(response.status_code, 201)
54+
self.assertIn('x-deis-release', response._headers)
5455
config2 = response.data
5556
self.assertNotEqual(config1['uuid'], config2['uuid'])
5657
self.assertIn('NEW_URL1', json.loads(response.data['values']))

api/views.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -345,11 +345,16 @@ class AppBuildViewSet(BaseAppViewSet):
345345
model = models.Build
346346
serializer_class = serializers.BuildSerializer
347347

348-
def post_save(self, obj, created=False):
348+
def post_save(self, build, created=False):
349349
if created:
350-
release = obj.app.release_set.latest()
351-
new_release = release.new(self.request.user, build=obj)
352-
obj.app.deploy(new_release)
350+
release = build.app.release_set.latest()
351+
self.release = release.new(self.request.user, build=build)
352+
build.app.deploy(self.release)
353+
354+
def get_success_headers(self, data):
355+
headers = super(AppBuildViewSet, self).get_success_headers(data)
356+
headers.update({'X-Deis-Release': self.release.version})
357+
return headers
353358

354359
def create(self, request, *args, **kwargs):
355360
app = get_object_or_404(models.App, id=self.kwargs['id'])
@@ -372,11 +377,16 @@ def get_object(self, *args, **kwargs):
372377
return app.release_set.latest().config
373378
raise PermissionDenied()
374379

375-
def post_save(self, obj, created=False):
380+
def post_save(self, config, created=False):
376381
if created:
377-
release = obj.app.release_set.latest()
378-
new_release = release.new(self.request.user, config=obj)
379-
obj.app.deploy(new_release)
382+
release = config.app.release_set.latest()
383+
self.release = release.new(self.request.user, config=config)
384+
config.app.deploy(self.release)
385+
386+
def get_success_headers(self, data):
387+
headers = super(AppConfigViewSet, self).get_success_headers(data)
388+
headers.update({'X-Deis-Release': self.release.version})
389+
return headers
380390

381391
def create(self, request, *args, **kwargs):
382392
request._data = request.DATA.copy()

0 commit comments

Comments
 (0)