Skip to content

Commit 930779f

Browse files
feat(controller): Deprecate X prefixed headers
1 parent ba950c2 commit 930779f

10 files changed

Lines changed: 1337 additions & 25 deletions

File tree

client/deis.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
__version__ = '1.7.0-dev'
7878

7979
# what version of the API is this client compatible with?
80-
__api_version__ = '1.3'
80+
__api_version__ = '1.4'
8181

8282

8383
locale.setlocale(locale.LC_ALL, '')
@@ -396,7 +396,7 @@ def check_connection(self, controller, ssl_verify):
396396

397397
if response.status_code != 401:
398398
raise EnvironmentError(error_message)
399-
self.check_api_version(response.headers.get('X_DEIS_API_VERSION'))
399+
self.check_api_version(response.headers.get('DEIS_API_VERSION'))
400400

401401
def check_api_version(self, server_api_version):
402402
"""
@@ -997,7 +997,7 @@ def builds_create(self, args):
997997
progress.cancel()
998998
progress.join()
999999
if response.status_code == requests.codes.created:
1000-
version = response.headers['x-deis-release']
1000+
version = response.headers['Deis-Release']
10011001
self._logger.info("done, v{}".format(version))
10021002
else:
10031003
raise ResponseError(response)
@@ -1242,7 +1242,7 @@ def _config_set(self, app, values):
12421242
progress.cancel()
12431243
progress.join()
12441244
if response.status_code == requests.codes.created:
1245-
version = response.headers['x-deis-release']
1245+
version = response.headers['Deis-Release']
12461246
self._logger.info("done, v{}\n".format(version))
12471247
config = response.json()
12481248
values = config['values']
@@ -1288,7 +1288,7 @@ def config_unset(self, args):
12881288
progress.cancel()
12891289
progress.join()
12901290
if response.status_code == requests.codes.created:
1291-
version = response.headers['x-deis-release']
1291+
version = response.headers['Deis-Release']
12921292
self._logger.info("done, v{}\n".format(version))
12931293
config = response.json()
12941294
values = config['values']
@@ -1636,7 +1636,7 @@ def limits_set(self, args):
16361636
progress.cancel()
16371637
progress.join()
16381638
if response.status_code == requests.codes.created:
1639-
version = response.headers['x-deis-release']
1639+
version = response.headers['Deis-Release']
16401640
self._logger.info("done, v{}\n".format(version))
16411641

16421642
self._print_limits(app, response.json())
@@ -1682,7 +1682,7 @@ def limits_unset(self, args):
16821682
progress.cancel()
16831683
progress.join()
16841684
if response.status_code == requests.codes.created:
1685-
version = response.headers['x-deis-release']
1685+
version = response.headers['Deis-Release']
16861686
self._logger.info("done, v{}\n".format(version))
16871687
self._print_limits(app, response.json())
16881688
else:
@@ -1907,7 +1907,7 @@ def tags_set(self, args):
19071907
progress.cancel()
19081908
progress.join()
19091909
if response.status_code == requests.codes.created:
1910-
version = response.headers['x-deis-release']
1910+
version = response.headers['Deis-Release']
19111911
self._logger.info("done, v{}\n".format(version))
19121912

19131913
self._print_tags(app, response.json())
@@ -1945,7 +1945,7 @@ def tags_unset(self, args):
19451945
progress.cancel()
19461946
progress.join()
19471947
if response.status_code == requests.codes.created:
1948-
version = response.headers['x-deis-release']
1948+
version = response.headers['Deis-Release']
19491949
self._logger.info("done, v{}\n".format(version))
19501950
self._print_tags(app, response.json())
19511951
else:

controller/api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
The **api** Django app presents a RESTful web API for interacting with the **deis** system.
33
"""
44

5-
__version__ = '1.3.0'
5+
__version__ = '1.4.0'

controller/api/middleware.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def process_request(self, request):
2424
doesn't match this controller's REST API major version (currently "1").
2525
"""
2626
try:
27-
client_version = request.META['HTTP_X_DEIS_VERSION']
27+
client_version = request.META['HTTP_DEIS_VERSION']
2828
server_version = __version__.rsplit('.', 2)[0]
2929
if client_version != server_version:
3030
message = {
@@ -46,5 +46,6 @@ def process_response(self, request, response):
4646
a response header.
4747
"""
4848
# clients shouldn't care about the patch release
49-
response['X_DEIS_API_VERSION'] = __version__.rsplit('.', 1)[0]
49+
response['DEIS_API_VERSION'] = __version__.rsplit('.', 1)[0]
50+
response['X_DEIS_API_VERSION'] = response['DEIS_API_VERSION'] # DEPRECATED
5051
return response

controller/api/tests/test_api_middleware.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,31 @@ def setUp(self):
2222
self.user = User.objects.get(username='autotest')
2323
self.token = Token.objects.get(user=self.user).key
2424

25-
def test_x_deis_version_header_good(self):
25+
def test_deis_version_header_good(self):
2626
"""
2727
Test that when the version header is sent, the request is accepted.
2828
"""
2929
response = self.client.get(
3030
'/v1/apps',
31-
HTTP_X_DEIS_VERSION=__version__.rsplit('.', 2)[0],
31+
HTTP_DEIS_VERSION=__version__.rsplit('.', 2)[0],
3232
HTTP_AUTHORIZATION='token {}'.format(self.token),
3333
)
3434
self.assertEqual(response.status_code, 200)
35-
self.assertEqual(response.has_header('X_DEIS_API_VERSION'), True)
36-
self.assertEqual(response['X_DEIS_API_VERSION'], __version__.rsplit('.', 1)[0])
35+
self.assertEqual(response.has_header('DEIS_API_VERSION'), True)
36+
self.assertEqual(response['DEIS_API_VERSION'], __version__.rsplit('.', 1)[0])
3737

38-
def test_x_deis_version_header_bad(self):
38+
def test_deis_version_header_bad(self):
3939
"""
4040
Test that when an improper version header is sent, the request is declined.
4141
"""
4242
response = self.client.get(
4343
'/v1/apps',
44-
HTTP_X_DEIS_VERSION='1234.5678',
44+
HTTP_DEIS_VERSION='1234.5678',
4545
HTTP_AUTHORIZATION='token {}'.format(self.token),
4646
)
4747
self.assertEqual(response.status_code, 405)
4848

49-
def test_x_deis_version_header_not_present(self):
49+
def test_deis_version_header_not_present(self):
5050
"""
5151
Test that when the version header is not present, the request is accepted.
5252
"""

controller/api/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ def get_object(self):
9999

100100
def get_success_headers(self, data, **kwargs):
101101
headers = super(ReleasableViewSet, self).get_success_headers(data)
102-
headers.update({'X-Deis-Release': self.release.version})
102+
headers.update({'Deis-Release': self.release.version})
103+
headers.update({'X-Deis-Release': self.release.version}) # DEPRECATED
103104
return headers
104105

105106

controller/deis/middleware.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
class PlatformVersionMiddleware:
55

66
def process_response(self, request, response):
7-
response['X_DEIS_PLATFORM_VERSION'] = __version__
7+
response['DEIS_PLATFORM_VERSION'] = __version__
8+
response['X_DEIS_PLATFORM_VERSION'] = __version__ # DEPRECATED
89
return response

controller/deis/settings.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,12 @@
178178
)
179179

180180
CORS_EXPOSE_HEADERS = (
181-
'X_DEIS_API_VERSION',
182-
'X_DEIS_PLATFORM_VERSION',
181+
'X_DEIS_API_VERSION', # DEPRECATED
182+
'X_DEIS_PLATFORM_VERSION', # DEPRECATED
183+
'X-Deis-Release', # DEPRECATED
184+
'DEIS_API_VERSION',
185+
'DEIS_PLATFORM_VERSION',
186+
'Deis-Release',
183187
)
184188

185189
REST_FRAMEWORK = {

docs/reference/api-v1.3.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
:title: Controller API v1.3
22
:description: The v1.3 REST API for Deis' Controller
33

4-
.. _controller_api_v1:
5-
64
Controller API v1.3
75
===================
86

0 commit comments

Comments
 (0)