Skip to content

Commit 9901c88

Browse files
author
lijianguo
committed
chore(controller):replace whitelist with allowlist
1 parent f34cea8 commit 9901c88

11 files changed

Lines changed: 78 additions & 78 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22
# Drycc Controller
33

4-
[![Build Status](https://travis-ci.org/drycc/controller.svg?branch=master)](https://travis-ci.org/drycc/controller)
5-
[![codecov.io](https://codecov.io/github/drycc/controller/coverage.svg?branch=master)](https://codecov.io/github/drycc/controller?branch=master)
4+
[![Build Status](https://travis-ci.org/drycc/controller.svg?branch=main)](https://travis-ci.org/drycc/controller)
5+
[![codecov.io](https://codecov.io/github/drycc/controller/coverage.svg?branch=main)](https://codecov.io/github/drycc/controller?branch=main)
66

77
Drycc (pronounced DAY-iss) Workflow is an open source Platform as a Service (PaaS) that adds a developer-friendly layer to any [Kubernetes](http://kubernetes.io) cluster, making it easy to deploy and manage applications on your own servers.
88

codecov.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
comment:
33
layout: header, diff
44
coverage:
5+
branch: main
56
status:
67
project:
78
default:

rootfs/api/migrations/0001_initial.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class Migration(migrations.Migration):
4747
('created', models.DateTimeField(auto_now_add=True)),
4848
('updated', models.DateTimeField(auto_now=True)),
4949
('routable', models.NullBooleanField(default=None)),
50-
('whitelist', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=50), default=None, size=None)),
50+
('allowlist', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=50), default=None, size=None)),
5151
('autoscale', jsonfield.fields.JSONField(blank=True, default={})),
5252
('label', jsonfield.fields.JSONField(blank=True, default={})),
5353
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.App')),

rootfs/api/models/app.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,9 @@ def _refresh_ingress(self, hosts, tls_map, ssl_redirect):
189189
"tls": [{"secretName": k, "hosts": v} for k, v in tls_map.items()],
190190
"ssl_redirect": ssl_redirect
191191
}
192-
whitelist = self.appsettings_set.latest().whitelist
193-
if whitelist:
194-
kwargs.update({"whitelist": whitelist})
192+
allowlist = self.appsettings_set.latest().allowlist
193+
if allowlist:
194+
kwargs.update({"allowlist": allowlist})
195195
try:
196196
# In order to create an ingress, we must first have a namespace.
197197
if ingress == "":

rootfs/api/models/appsettings.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ class AppSettings(UuidAuditedModel):
1919
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
2020
app = models.ForeignKey('App', on_delete=models.CASCADE)
2121
routable = models.NullBooleanField(default=None)
22-
# the default values is None to differentiate from user sending an empty whitelist
22+
# the default values is None to differentiate from user sending an empty allowlist
2323
# and user just updating other fields meaning the values needs to be copied from prev release
24-
whitelist = ArrayField(models.CharField(max_length=50), default=None)
24+
allowlist = ArrayField(models.CharField(max_length=50), default=None)
2525
autoscale = JSONField(default={}, blank=True)
2626
label = JSONField(default={}, blank=True)
2727

@@ -37,14 +37,14 @@ def __init__(self, *args, **kwargs):
3737
def __str__(self):
3838
return "{}-{}".format(self.app.id, str(self.uuid)[:7])
3939

40-
def new(self, user, whitelist):
40+
def new(self, user, allowlist):
4141
"""
42-
Create a new application appSettings using the provided whitelist
42+
Create a new application appSettings using the provided allowlist
4343
on behalf of a user.
4444
"""
4545

4646
app_settings = AppSettings.objects.create(
47-
owner=user, app=self.app, whitelist=whitelist)
47+
owner=user, app=self.app, allowlist=allowlist)
4848

4949
return app_settings
5050

@@ -62,16 +62,16 @@ def _update_routable(self, previous_settings):
6262
self.app.routable(new)
6363
self.summary += ["{} changed routablity from {} to {}".format(self.owner, old, new)]
6464

65-
def _update_whitelist(self, previous_settings):
65+
def _update_allowlist(self, previous_settings):
6666
# If no previous settings then assume it is the first record and set as empty
6767
# to prevent from database constraint violation
6868
if not previous_settings:
69-
setattr(self, 'whitelist', [])
70-
old = getattr(previous_settings, 'whitelist', [])
71-
new = getattr(self, 'whitelist', None)
69+
setattr(self, 'allowlist', [])
70+
old = getattr(previous_settings, 'allowlist', [])
71+
new = getattr(self, 'allowlist', None)
7272
# if nothing changed copy the settings from previous
7373
if new is None and old is not None:
74-
setattr(self, 'whitelist', old)
74+
setattr(self, 'allowlist', old)
7575
elif set(old) != set(new):
7676
added = ', '.join(k for k in set(new)-set(old))
7777
added = 'added ' + added if added else ''
@@ -165,7 +165,7 @@ def save(self, *args, **kwargs):
165165

166166
try:
167167
self._update_routable(previous_settings)
168-
self._update_whitelist(previous_settings)
168+
self._update_allowlist(previous_settings)
169169
self._update_autoscale(previous_settings)
170170
self._update_label(previous_settings)
171171
except (UnprocessableEntity, NotFound):

rootfs/api/serializers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ class Meta:
594594
fields = '__all__'
595595

596596
@staticmethod
597-
def validate_whitelist(data):
597+
def validate_allowlist(data):
598598
for address in data:
599599
try:
600600
ipaddress.ip_address(address)

rootfs/api/tests/test_app_settings.py

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -41,85 +41,85 @@ def test_settings_routable(self, mock_requests):
4141
self.assertEqual(response.status_code, 201, response.data)
4242
self.assertFalse(app.appsettings_set.latest().routable)
4343

44-
def test_settings_whitelist(self, mock_requests):
44+
def test_settings_allowlist(self, mock_requests):
4545
"""
46-
Test that addresses can be added/deleted to whitelist
46+
Test that addresses can be added/deleted to allowlist
4747
"""
4848
app_id = self.create_app()
4949
app = App.objects.get(id=app_id)
50-
# add addresses to empty whitelist
50+
# add addresses to empty allowlist
5151
addresses = ["0.0.0.0/0"]
52-
whitelist = {'addresses': addresses}
52+
allowlist = {'addresses': addresses}
5353
response = self.client.post(
54-
'/v2/apps/{app_id}/whitelist'.format(**locals()),
55-
whitelist)
54+
'/v2/apps/{app_id}/allowlist'.format(**locals()),
55+
allowlist)
5656
self.assertEqual(response.status_code, 201, response.data)
5757
self.assertEqual(set(response.data['addresses']),
58-
set(app.appsettings_set.latest().whitelist), response.data)
58+
set(app.appsettings_set.latest().allowlist), response.data)
5959
self.assertEqual(set(response.data['addresses']), set(addresses), response.data)
6060

61-
# get the whitelist
62-
response = self.client.get('/v2/apps/{app_id}/whitelist'.format(**locals()))
61+
# get the allowlist
62+
response = self.client.get('/v2/apps/{app_id}/allowlist'.format(**locals()))
6363
self.assertEqual(response.status_code, 200, response.data)
6464
self.assertEqual(set(response.data['addresses']),
65-
set(app.appsettings_set.latest().whitelist), response.data)
65+
set(app.appsettings_set.latest().allowlist), response.data)
6666
self.assertEqual(set(response.data['addresses']), set(addresses), response.data)
6767

68-
# delete an address from whitelist
69-
whitelist = {'addresses': ["0.0.0.0/0"]}
68+
# delete an address from allowlist
69+
allowlist = {'addresses': ["0.0.0.0/0"]}
7070
addresses.remove("0.0.0.0/0")
7171
response = self.client.delete(
72-
'/v2/apps/{app_id}/whitelist'.format(**locals()),
73-
whitelist)
72+
'/v2/apps/{app_id}/allowlist'.format(**locals()),
73+
allowlist)
7474
self.assertEqual(response.status_code, 204, response.data)
75-
self.assertEqual(set(addresses), set(app.appsettings_set.latest().whitelist))
75+
self.assertEqual(set(addresses), set(app.appsettings_set.latest().allowlist))
7676

77-
# add addresses to empty whitelist
77+
# add addresses to empty allowlist
7878
addresses = ["0.0.0.0/0"]
79-
whitelist = {'addresses': addresses}
79+
allowlist = {'addresses': addresses}
8080
response = self.client.post(
81-
'/v2/apps/{app_id}/whitelist'.format(**locals()),
82-
whitelist)
81+
'/v2/apps/{app_id}/allowlist'.format(**locals()),
82+
allowlist)
8383
self.assertEqual(response.status_code, 201, response.data)
8484
self.assertEqual(set(response.data['addresses']),
85-
set(app.appsettings_set.latest().whitelist), response.data)
85+
set(app.appsettings_set.latest().allowlist), response.data)
8686
self.assertEqual(set(response.data['addresses']), set(addresses), response.data)
8787

88-
# add addresses to non-empty whitelist
89-
whitelist = {'addresses': ["2.3.4.5"]}
88+
# add addresses to non-empty allowlist
89+
allowlist = {'addresses': ["2.3.4.5"]}
9090
addresses.extend(["2.3.4.5"])
9191
response = self.client.post(
92-
'/v2/apps/{app_id}/whitelist'.format(**locals()),
93-
whitelist)
92+
'/v2/apps/{app_id}/allowlist'.format(**locals()),
93+
allowlist)
9494
self.assertEqual(response.status_code, 201, response.data)
9595
self.assertEqual(set(response.data['addresses']),
96-
set(app.appsettings_set.latest().whitelist), response.data)
96+
set(app.appsettings_set.latest().allowlist), response.data)
9797
self.assertEqual(set(response.data['addresses']), set(addresses), response.data)
9898

99-
# add exisitng addresses to whitelist
99+
# add exisitng addresses to allowlist
100100
response = self.client.post(
101-
'/v2/apps/{app_id}/whitelist'.format(**locals()),
102-
whitelist)
101+
'/v2/apps/{app_id}/allowlist'.format(**locals()),
102+
allowlist)
103103
self.assertEqual(response.status_code, 409, response.data)
104-
# delete non-exisitng address from whitelist
105-
whitelist = {'addresses': ["2.3.4.6"]}
104+
# delete non-exisitng address from allowlist
105+
allowlist = {'addresses': ["2.3.4.6"]}
106106
response = self.client.delete(
107-
'/v2/apps/{app_id}/whitelist'.format(**locals()),
108-
whitelist)
107+
'/v2/apps/{app_id}/allowlist'.format(**locals()),
108+
allowlist)
109109
self.assertEqual(response.status_code, 422)
110110
# pass invalid address
111-
whitelist = {'addresses': ["2.3.4.6.7"]}
111+
allowlist = {'addresses': ["2.3.4.6.7"]}
112112
response = self.client.post(
113-
'/v2/apps/{app_id}/whitelist'.format(**locals()),
114-
whitelist)
113+
'/v2/apps/{app_id}/allowlist'.format(**locals()),
114+
allowlist)
115115
self.assertEqual(response.status_code, 400, response.data)
116-
# update other appsettings and whitelist should be retained
116+
# update other appsettings and allowlist should be retained
117117
settings = {'routable': False}
118118
response = self.client.post(
119119
'/v2/apps/{app.id}/settings'.format(**locals()),
120120
settings)
121121
self.assertEqual(response.status_code, 201, response.data)
122-
self.assertEqual(set(addresses), set(app.appsettings_set.latest().whitelist))
122+
self.assertEqual(set(addresses), set(app.appsettings_set.latest().allowlist))
123123

124124
def test_kubernetes_service_failure(self, mock_requests):
125125
"""
@@ -131,7 +131,7 @@ def test_kubernetes_service_failure(self, mock_requests):
131131
with mock.patch('scheduler.resources.service.Service.update') as mock_kube:
132132
mock_kube.side_effect = KubeException('Boom!')
133133
addresses = ["2.3.4.5"]
134-
url = '/v2/apps/{}/whitelist'.format(app_id)
134+
url = '/v2/apps/{}/allowlist'.format(app_id)
135135
response = self.client.post(url, {'addresses': addresses})
136136
self.assertEqual(response.status_code, 201, response.data)
137137

rootfs/api/urls.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@
6868
# application settings
6969
url(r"^apps/(?P<id>{})/settings/?$".format(settings.APP_URL_REGEX),
7070
views.AppSettingsViewSet.as_view({'get': 'retrieve', 'post': 'create'})),
71-
# application ip whitelist
72-
url(r"^apps/(?P<id>{})/whitelist/?$".format(settings.APP_URL_REGEX),
73-
views.WhitelistViewSet.as_view({'post': 'create', 'get': 'list', 'delete': 'delete'})),
71+
# application ip allowlist
72+
url(r"^apps/(?P<id>{})/allowlist/?$".format(settings.APP_URL_REGEX),
73+
views.AllowlistViewSet.as_view({'post': 'create', 'get': 'list', 'delete': 'delete'})),
7474
# application TLS settings
7575
url(r"^apps/(?P<id>{})/tls/?$".format(settings.APP_URL_REGEX),
7676
views.TLSViewSet.as_view({'get': 'retrieve', 'post': 'create'})),

rootfs/api/views.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -374,31 +374,31 @@ class AppSettingsViewSet(AppResourceViewSet):
374374
serializer_class = serializers.AppSettingsSerializer
375375

376376

377-
class WhitelistViewSet(AppResourceViewSet):
377+
class AllowlistViewSet(AppResourceViewSet):
378378
model = models.AppSettings
379379
serializer_class = serializers.AppSettingsSerializer
380380

381381
def list(self, *args, **kwargs):
382382
appSettings = self.get_app().appsettings_set.latest()
383-
data = {"addresses": appSettings.whitelist}
383+
data = {"addresses": appSettings.allowlist}
384384
return Response(data, status=status.HTTP_200_OK)
385385

386386
def create(self, request, **kwargs):
387387
appSettings = self.get_app().appsettings_set.latest()
388-
addresses = self.get_serializer().validate_whitelist(request.data.get('addresses'))
389-
addresses = list(set(appSettings.whitelist) | set(addresses))
390-
new_appsettings = appSettings.new(self.request.user, whitelist=addresses)
391-
return Response({"addresses": new_appsettings.whitelist}, status=status.HTTP_201_CREATED)
388+
addresses = self.get_serializer().validate_allowlist(request.data.get('addresses'))
389+
addresses = list(set(appSettings.allowlist) | set(addresses))
390+
new_appsettings = appSettings.new(self.request.user, allowlist=addresses)
391+
return Response({"addresses": new_appsettings.allowlist}, status=status.HTTP_201_CREATED)
392392

393393
def delete(self, request, **kwargs):
394394
appSettings = self.get_app().appsettings_set.latest()
395-
addresses = self.get_serializer().validate_whitelist(request.data.get('addresses'))
395+
addresses = self.get_serializer().validate_allowlist(request.data.get('addresses'))
396396

397-
unfound_addresses = set(addresses) - set(appSettings.whitelist)
397+
unfound_addresses = set(addresses) - set(appSettings.allowlist)
398398
if len(unfound_addresses) != 0:
399-
raise UnprocessableEntity('addresses {} does not exist in whitelist'.format(unfound_addresses)) # noqa
400-
addresses = list(set(appSettings.whitelist) - set(addresses))
401-
appSettings.new(self.request.user, whitelist=addresses)
399+
raise UnprocessableEntity('addresses {} does not exist in allowlist'.format(unfound_addresses)) # noqa
400+
addresses = list(set(appSettings.allowlist) - set(addresses))
401+
appSettings.new(self.request.user, allowlist=addresses)
402402
return Response(status=status.HTTP_204_NO_CONTENT)
403403

404404

@@ -764,7 +764,6 @@ def deploy(self, volume, pre_mount_path):
764764
for container_type, path in volume.path.items():
765765
summary += "{container_type} mount path {path} with volume {name}.".\
766766
format(container_type=container_type, path=path, name=volume.name) # noqa
767-
print(summary)
768767
self.release = latest_release.new(
769768
self.request.user,
770769
config=latest_release.config,

rootfs/drycc/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""
22
URL routing patterns for the Drycc project.
33
4-
This is the "master" urls.py which then includes the urls.py files of
4+
This is the "main" urls.py which then includes the urls.py files of
55
installed apps.
66
"""
77

0 commit comments

Comments
 (0)