Skip to content

Commit e4b1805

Browse files
author
Matthew Fisher
committed
feat(controller): expose app config to etcd
1 parent 3250dee commit e4b1805

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

controller/api/models.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,6 +1004,34 @@ def _etcd_purge_app(**kwargs):
10041004
pass
10051005

10061006

1007+
def _etcd_publish_config(**kwargs):
1008+
config = kwargs['instance']
1009+
# we purge all existing config when adding the newest instance. This is because
1010+
# deis config:unset would remove an existing value, but not delete the
1011+
# old config object
1012+
try:
1013+
_etcd_client.delete('/deis/services/{}/config'.format(config.app),
1014+
prevExist=True, dir=True, recursive=True)
1015+
except KeyError:
1016+
pass
1017+
if kwargs['created']:
1018+
for k, v in config.values.iteritems():
1019+
_etcd_client.write(
1020+
'/deis/services/{}/config/{}'.format(
1021+
config.app,
1022+
unicode(k).encode('utf-8').lower()),
1023+
unicode(v).encode('utf-8'))
1024+
1025+
1026+
def _etcd_purge_config(**kwargs):
1027+
config = kwargs['instance']
1028+
try:
1029+
_etcd_client.delete('/deis/services/{}/config'.format(config.app),
1030+
prevExist=True, dir=True, recursive=True)
1031+
except KeyError:
1032+
pass
1033+
1034+
10071035
def _etcd_publish_cert(**kwargs):
10081036
cert = kwargs['instance']
10091037
if kwargs['created']:
@@ -1069,3 +1097,5 @@ def create_auth_token(sender, instance=None, created=False, **kwargs):
10691097
post_delete.connect(_etcd_purge_app, sender=App, dispatch_uid='api.models')
10701098
post_save.connect(_etcd_publish_cert, sender=Certificate, dispatch_uid='api.models')
10711099
post_delete.connect(_etcd_purge_cert, sender=Certificate, dispatch_uid='api.models')
1100+
post_save.connect(_etcd_publish_config, sender=Config, dispatch_uid='api.models')
1101+
post_delete.connect(_etcd_purge_config, sender=Config, dispatch_uid='api.models')

0 commit comments

Comments
 (0)