@@ -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+
10071035def _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