@@ -1159,6 +1159,34 @@ def _etcd_purge_cert(**kwargs):
11591159 pass
11601160
11611161
1162+ def _etcd_publish_config (** kwargs ):
1163+ config = kwargs ['instance' ]
1164+ # we purge all existing config when adding the newest instance. This is because
1165+ # deis config:unset would remove an existing value, but not delete the
1166+ # old config object
1167+ try :
1168+ _etcd_client .delete ('/deis/config/{}' .format (config .app ),
1169+ prevExist = True , dir = True , recursive = True )
1170+ except KeyError :
1171+ pass
1172+ if kwargs ['created' ]:
1173+ for k , v in config .values .iteritems ():
1174+ _etcd_client .write (
1175+ '/deis/config/{}/{}' .format (
1176+ config .app ,
1177+ unicode (k ).encode ('utf-8' ).lower ()),
1178+ unicode (v ).encode ('utf-8' ))
1179+
1180+
1181+ def _etcd_purge_config (** kwargs ):
1182+ config = kwargs ['instance' ]
1183+ try :
1184+ _etcd_client .delete ('/deis/config/{}' .format (config .app ),
1185+ prevExist = True , dir = True , recursive = True )
1186+ except KeyError :
1187+ pass
1188+
1189+
11621190def _etcd_publish_domains (** kwargs ):
11631191 domain = kwargs ['instance' ]
11641192 if kwargs ['created' ]:
@@ -1204,3 +1232,5 @@ def create_auth_token(sender, instance=None, created=False, **kwargs):
12041232 post_delete .connect (_etcd_purge_app , sender = App , dispatch_uid = 'api.models' )
12051233 post_save .connect (_etcd_publish_cert , sender = Certificate , dispatch_uid = 'api.models' )
12061234 post_delete .connect (_etcd_purge_cert , sender = Certificate , dispatch_uid = 'api.models' )
1235+ post_save .connect (_etcd_publish_config , sender = Config , dispatch_uid = 'api.models' )
1236+ post_delete .connect (_etcd_purge_config , sender = Config , dispatch_uid = 'api.models' )
0 commit comments