Skip to content

Commit c1c7ee7

Browse files
Matthew Fishercarmstrong
authored andcommitted
feat(controller): hook up domains to router
1 parent 23df4ab commit c1c7ee7

4 files changed

Lines changed: 19 additions & 4 deletions

File tree

controller/api/models.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ def scale(self, **kwargs): # noqa
209209
if to_remove:
210210
subtasks.append(tasks.stop_containers.s(to_remove))
211211
group(*subtasks).apply_async().join()
212+
_publish_domains(app=str(self), domains=list(self.domain_set.all()))
212213
log_event(self, msg)
213214
return changed
214215

@@ -540,7 +541,7 @@ class Domain(AuditedModel):
540541
domain = models.TextField(blank=False, null=False, unique=True)
541542

542543
def __str__(self):
543-
return "{0} -> {1}".format(self.domain, self.app.id)
544+
return self.domain
544545

545546

546547
@python_2_unicode_compatible
@@ -562,6 +563,12 @@ def __str__(self):
562563
# define update/delete callbacks for synchronizing
563564
# models with the configuration management backend
564565

566+
def _publish_domains(**kwargs):
567+
app = kwargs['app']
568+
domains = kwargs['domains']
569+
_etcd_client.write(
570+
'/deis/domains/{}'.format(app),
571+
' '.join(str(i) for i in domains))
565572

566573
def _log_build_created(**kwargs):
567574
if kwargs.get('created'):

controller/api/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,11 +472,18 @@ def create(self, request, *args, **kwargs):
472472
request.DATA['app'] = app
473473
return super(DomainViewSet, self).create(request, *args, **kwargs)
474474

475+
def post_save(self, domain, created=False):
476+
if created:
477+
release = domain.app.release_set.latest()
478+
self.release = release.new(self.request.user)
479+
domain.app.deploy(self.release)
480+
475481
def destroy(self, request, **kwargs):
476482
domain = self.model.objects.get(domain=self.kwargs['id'])
477483
domain.delete()
478484
release = domain.app.release_set.latest()
479-
release.new(request.user)
485+
self.release = release.new(self.request.user)
486+
domain.app.deploy(self.release)
480487
return Response(status=status.HTTP_204_NO_CONTENT)
481488

482489
def get_queryset(self, **kwargs):

router/conf.d/nginx.conf.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ gid = 0
66
mode = "0644"
77
keys = [
88
"/deis/services",
9-
"/deis/router"
9+
"/deis/router",
10+
"/deis/domains",
1011
]
1112
#check_cmd = "/usr/sbin/nginx -t -c {{ .src }}"
1213
reload_cmd = "/usr/sbin/nginx -s reload"

router/templates/nginx.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ http {
5151
}
5252

5353
server {
54-
server_name ~^{{ Base $service.Key }}\.(?<domain>.+)$;
54+
server_name ~^{{ Base $service.Key }}\.(?<domain>.+)${{ range $domains := .deis_domains }}{{range $app_domains := $domains.Nodes }}{{ if eq (Base $service.Key) (Base $app_domains) }} {{ $app_domains.Value }}{{ end }}{{ end }}{{ end }};
5555

5656
server_name_in_redirect off;
5757
port_in_redirect off;

0 commit comments

Comments
 (0)