Skip to content

Commit

Permalink
feat(controller): hook up domains to router
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Fisher authored and carmstrong committed May 19, 2014
1 parent 23df4ab commit c1c7ee7
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 4 deletions.
9 changes: 8 additions & 1 deletion controller/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ def scale(self, **kwargs): # noqa
if to_remove:
subtasks.append(tasks.stop_containers.s(to_remove))
group(*subtasks).apply_async().join()
_publish_domains(app=str(self), domains=list(self.domain_set.all()))
log_event(self, msg)
return changed

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

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


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

def _publish_domains(**kwargs):
app = kwargs['app']
domains = kwargs['domains']
_etcd_client.write(
'/deis/domains/{}'.format(app),
' '.join(str(i) for i in domains))

def _log_build_created(**kwargs):
if kwargs.get('created'):
Expand Down
9 changes: 8 additions & 1 deletion controller/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -472,11 +472,18 @@ def create(self, request, *args, **kwargs):
request.DATA['app'] = app
return super(DomainViewSet, self).create(request, *args, **kwargs)

def post_save(self, domain, created=False):
if created:
release = domain.app.release_set.latest()
self.release = release.new(self.request.user)
domain.app.deploy(self.release)

def destroy(self, request, **kwargs):
domain = self.model.objects.get(domain=self.kwargs['id'])
domain.delete()
release = domain.app.release_set.latest()
release.new(request.user)
self.release = release.new(self.request.user)
domain.app.deploy(self.release)
return Response(status=status.HTTP_204_NO_CONTENT)

def get_queryset(self, **kwargs):
Expand Down
3 changes: 2 additions & 1 deletion router/conf.d/nginx.conf.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ gid = 0
mode = "0644"
keys = [
"/deis/services",
"/deis/router"
"/deis/router",
"/deis/domains",
]
#check_cmd = "/usr/sbin/nginx -t -c {{ .src }}"
reload_cmd = "/usr/sbin/nginx -s reload"
2 changes: 1 addition & 1 deletion router/templates/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ http {
}

server {
server_name ~^{{ Base $service.Key }}\.(?<domain>.+)$;
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 }};

server_name_in_redirect off;
port_in_redirect off;
Expand Down

0 comments on commit c1c7ee7

Please sign in to comment.