def post(self): data = tornado.escape.json_decode(self.request.body) handler = Model('7LayerNginxAccess') item = handler.Get7LayerNginxItemListByIdcService( data['idc'], data['service']) if item: self.write('serviceName=%s and idc=%s, existed' % (data['service'], data['idc'])) print 'serviceName=%s and idc=%s, existed in ETCD' % ( data['service'], data['idc']) else: client = buildEtcdClient(handler.config) subDomainKey = "/7/%s/%s/subDomain" % (data['idc'], data['service']) subDomainValue = data['domain'] upStreamKey = "/7/%s/%s/upStream" % (data['idc'], data['service']) vIpPortKey = "/7/%s/%s/vIpPort" % (data['idc'], data['service']) if data['vip']: vIpPortValue = data['vip'] + ':' + data['vport'] else: vIpPortValue = data['vport'] rs_list = [] for rs in data['rs']: rs_str = rs['website_ip'] + ':' + rs[ 'website_port'] + ' weight=' + rs[ 'website_weight'] + ' max_fails=' + rs[ 'healthchecker_max_fails'] + ' fail_timeout=' + rs[ 'healthchecker_fail_timeout'] rs_list.append(rs_str) upStreamValue = ",".join(rs_list) print "nginxNewServiceItem writes ETCD: %s=%s, %s=%s, %s=%s" % ( subDomainKey, subDomainValue, upStreamKey, upStreamValue, vIpPortKey, vIpPortValue) try: handler.Insert7LayerNginxItem(data) client.write(subDomainKey, subDomainValue) client.write(upStreamKey, upStreamValue) client.write(vIpPortKey, vIpPortValue) self.write('etcd new node success') print 'serviceName=%s and idc=%s, added successful in ETCD' % ( data['service'], data['idc']) except: self.write('etcd new node failure') print 'serviceName=%s and idc=%s, added failure in ETCD' % ( data['service'], data['idc'])
def get(self): idcName = self.get_argument("idc", None) serviceName = self.get_argument("service", None) handler = Model("7LayerNginxAccess") service_info = handler.Get7LayerNginxItemListByIdcService( idcName, serviceName) config = handler.config cluster = config['7nginxCluster'] self.render2('7_layer_access_edit_item.html', instance=service_info[0], idcList=cluster['idc'])
def get(self): ''' get rs list ''' idcName = self.get_argument("idc", None) serviceName = self.get_argument("service", None) handler = Model('7LayerNginxAccess') instance = handler.Get7LayerNginxItemListByIdcService( idcName, serviceName) if instance[0]: for index, rs in enumerate(instance[0]['rs']): rs['index'] = index self.write(json.dumps(instance[0]['rs']))