def test_base(self): d1 = {'sket': { 'bossun': 'concentration', 'himeko': 2, 'switch': True }} d2 = {'gintama': { 'gin-san': 'hair', 'shimpachi': 3, 'kagura': False }} d_expecting = { 'sket': { 'bossun': 'concentration', 'himeko': 2, 'switch': True }, 'gintama': { 'gin-san': 'hair', 'shimpachi': 3, 'kagura': False } } result = merge(d1, d2) self.assertDictEqual(result, d_expecting)
def update_haproxy(args, client, services): filter_by_tags = set(args.tag) context = \ { 'haproxy': {} , 'services': [] , 'env': dict(os.environ) } for service_id, tags in services.iteritems(): if filter_by_tags and len(set(tags) & filter_by_tags) == 0: continue # Get service data index, service = client.catalog.service(service_id) service = service[0] # Get data path = 'catalog/%s/' % service_id index, data = client.kv.get(path, recurse=True) data = dict_tools.get\ ( consul_kv_to_dict(data) , 'catalog', service_id ) if data: # Here we can override any data from KV storage in Service storage service = dict_tools.merge(service, data) # service['Domain'] = (client.kv.get('catalog/%s' % service['ServiceID'])[1] or {}).get('Value') # Store in context context['services'].append(service) template = jinja_env.get_template(args.haproxy_template) result = template.render(context) if args.debug: print json.dumps(context, ensure_ascii=False, indent=2) print '\n---\n' print result sys.exit() # print '' # print '----' # print '' # # print result try: handler = open(args.haproxy_config, mode='r') old_config = handler.read() handler.close() except Exception as e: old_config = '' if old_config != result: handler = open(args.haproxy_config, mode='w') handler.write(result) handler.close() call(["/etc/haproxy/reload.sh"])
def update_haproxy(args, client, services): filter_by_tags = set(args.tag) context = \ { 'haproxy': {} , 'services': [] , 'env': dict(os.environ) } for service_id, tags in services.iteritems(): if filter_by_tags and len(set(tags) & filter_by_tags) == 0: continue # Get service data index, service = client.catalog.service(service_id) service = service[0] # Get data path = 'catalog/%s/' % service_id index, data = client.kv.get(path, recurse=True) data = dict_tools.get\ ( consul_kv_to_dict(data) , 'catalog', service_id ) if data: # Here we can override any data from KV storage in Service storage service = dict_tools.merge(service, data) # service['Domain'] = (client.kv.get('catalog/%s' % service['ServiceID'])[1] or {}).get('Value') # Store in context context['services'].append(service) template = jinja_env.get_template(args.haproxy_template) result = template.render(context) # print json.dumps(context, ensure_ascii=False, indent=2) # print '' # print '----' # print '' # # print result try: handler = open(args.haproxy_config, mode='r') old_config = handler.read() handler.close() except Exception as e: old_config = '' if old_config != result: handler = open(args.haproxy_config, mode='w') handler.write(result) handler.close() call(["/etc/haproxy/reload.sh"])