def response(self): '''add ''' if self.id: # 修改记录 tb_inst = ZdZookeeper.one(id=self.id) else: # 新增记录 zookeeper = ZdZookeeper.one(cluster_name=self.cluster_name, deleted='0') # 检验集群名称是否重复 if zookeeper: return self.ajax_popup(code=300, msg="zookeeper集群名称重复!") else: tb_inst = ZdZookeeper() if self.id: tb_inst.id = self.id if self.cluster_name: tb_inst.cluster_name = self.cluster_name if self.hosts: tb_inst.hosts = self.hosts if self.business: tb_inst.business = self.business tb_inst.save() return self.ajax_ok(forward="/config/zookeeper/index")
def response(self): '''delete ''' if self.info_ids: id_li = self.info_ids.split(',') for user_id in id_li: ZdZookeeper.one(id=user_id).delete_instance() return self.ajax_ok(close_current=False)
def get_zoo_client(cluster_name="qconf"): """get zoo client by cluster_name """ global ZOO_CLIENTS if cluster_name not in ZOO_CLIENTS: # get zookeeper hosts info zookeeper = ZdZookeeper.one(cluster_name=cluster_name, deleted="0") if not zookeeper: raise ZookeeperConfError("Zookeeper not configured for cluster: {}!".format(cluster_name)) # connect to zookeeper try: username = ZK_AUTH.get('user') pwd = ZK_AUTH.get('pwd') client = KazooClient(hosts=zookeeper.hosts, connection_retry={"max_tries": 3, "backoff": 2}, default_acl=make_digest_acl(username, pwd, read=True, write=True, create=True, delete=True, admin=True), auth_data=[("digest", '%s:%s' % (username, pwd))] ) client.start(timeout=3) ZOO_CLIENTS[cluster_name] = client except KazooTimeoutError as exc: log.error('Failed to connnect zookeeper, %s', str(exc)) return # check connection's state, if not connected, reconect zoo_client = ZOO_CLIENTS[cluster_name] if not zoo_client.connected: zoo_client.start() return zoo_client
def response(self): '''index ''' zk_clusters = ZdZookeeper.select().where( ZdZookeeper.deleted == "0") self.render('config/zookeeper/stat.html', zk_clusters=zk_clusters)
def get_zoo_client(cluster_name="qconf"): """get zoo client by cluster_name """ global ZOO_CLIENTS if cluster_name not in ZOO_CLIENTS: # get zookeeper hosts info zookeeper = ZdZookeeper.one(cluster_name=cluster_name, deleted="0") if not zookeeper: raise ZookeeperConfError("Zookeeper not configured for cluster: {}!".format(cluster_name)) # connect to zookeeper try: client = KazooClient(hosts=zookeeper.hosts, connection_retry={"max_tries": 3, "backoff": 2}) client.start(3) ZOO_CLIENTS[cluster_name] = client except KazooTimeoutError as exc: log.error('Failed to connnect zookeeper, %s', str(exc)) return # check connection's state, if not connected, reconect zoo_client = ZOO_CLIENTS[cluster_name] if not zoo_client.connected: zoo_client.restart() return zoo_client
def response(self): '''watch ''' clusters = ZdZookeeper.select().where(ZdZookeeper.deleted == "0") self.render('config/agent/watch.html', clusters=clusters, agent_register_prefix=self.agent_register_prefix)
def get_zoo_client(cluster_name="qconf"): """get zoo client by cluster_name """ global ZOO_CLIENTS if cluster_name not in ZOO_CLIENTS: # get zookeeper hosts info zookeeper = ZdZookeeper.one(cluster_name=cluster_name, deleted="0") if not zookeeper: raise ZookeeperConfError( "Zookeeper not configured for cluster: {}!".format( cluster_name)) # connect to zookeeper try: client = KazooClient(hosts=zookeeper.hosts, connection_retry={ "max_tries": 3, "backoff": 2 }) client.start(3) ZOO_CLIENTS[cluster_name] = client except KazooTimeoutError as exc: log.error('Failed to connnect zookeeper, %s', str(exc)) return # check connection's state, if not connected, reconect zoo_client = ZOO_CLIENTS[cluster_name] if not zoo_client.connected: zoo_client.start() return zoo_client
def response(self): '''add ''' clusters = ZdZookeeper.select().where(ZdZookeeper.deleted == "0") return self.render('config/agent/add.html', action='config/agent/save', clusters=clusters)
def response(self): '''edit ''' if self.info_ids: id_li = self.info_ids.split(',') if len(id_li) != 1: return self.ajax_popup(close_current=False, code=300, msg="请选择单条记录进行修改") else: user = ZdUser.one(id=id_li[0], deleted='0') result = dict() zookeepers = ZdZookeeper.select().where( ZdZookeeper.deleted == '0') for zookeeper in zookeepers: services = ZdService.select().where( (ZdService.zookeeper == zookeeper.id) & (ZdService.deleted == '0')) result[zookeeper] = services return self.render('config/user/edit.html', action='config/user/save', user=user, result=result) else: return self.ajax_popup(close_current=False, code=300, msg="请选择某条记录进行修改")
def response(self): """watch """ clusters = ZdZookeeper.select().where( (ZdZookeeper.deleted == "0") & (ZdZookeeper.cluster_name.startswith("qconf")) ) self.render("config/agent/watch.html", clusters=clusters, agent_register_prefix=self.agent_register_prefix)
def response(self): """add """ clusters = ZdZookeeper.select().where( (ZdZookeeper.deleted == "0") & (ZdZookeeper.cluster_name.startswith("qconf")) ) return self.render("config/agent/add.html", action="config/agent/save", clusters=clusters)
def response(self): '''导出选中数据到excel中 ''' id_li = self.info_ids.split(',') sheet_text = ZdZookeeper.select().where(ZdZookeeper.id << id_li) sheet_title = [ { 'name': '集群名称' }, { 'name': '集群配置' }, { 'name': '集群业务' }, ] bind_attr = ( 'cluster_name', 'hosts', 'business', ) ewb = ExcelWorkBook() sheet_name = ZdZookeeper._meta.db_table ewb.add_sheet(sheet_name) ewb.add_title(sheet_name, sheet_title) ewb.add_text(sheet_name, sheet_text, bind=bind_attr) filename = '{}.xls'.format(sheet_name) filename = urllib.urlencode({'filename': filename}) self.set_header('Content-Disposition', 'attachment;{}'.format(filename)) self.finish(ewb.get_stream())
def response(self): '''index ''' # zookeeper clusters clusters = ZdZookeeper.select().where(ZdZookeeper.deleted == "0") if clusters.count() < 1: return self.ajax_popup(code=300, msg="请先到zookeeper管理菜单下设置集群信息!") return self.render('config/znode/index.html', clusters=clusters)
def response(self): """index """ # zookeeper clusters clusters = ZdZookeeper.select().where(ZdZookeeper.deleted == "0") if clusters.count() < 1: return self.ajax_popup(code=300, msg="请先到zookeeper管理菜单下设置集群信息!") return self.render("config/znode/index.html", clusters=clusters)
def response(self): '''watch ''' clusters = ZdZookeeper.select().where( (ZdZookeeper.deleted == "0") & (ZdZookeeper.cluster_name.startswith('qconf')) ) self.render('config/agent/watch.html', clusters=clusters, agent_register_prefix=self.agent_register_prefix)
def response(self): '''add ''' result = dict() zookeepers = ZdZookeeper.select().where(ZdZookeeper.deleted == '0') for zookeeper in zookeepers: services = ZdService.select().where((ZdService.zookeeper == zookeeper.id) & (ZdService.deleted == '0')) result[zookeeper] = services return self.render('config/user/add.html', action='config/user/save', result=result)
def response(self): '''edit ''' if self.info_ids: id_li = self.info_ids.split(',') if len(id_li) != 1: return self.ajax_popup(close_current=False, code=300, msg="请选择单条记录进行修改") record = ZdZookeeper.one(id=id_li[0]) return self.render('config/zookeeper/edit.html', action='/config/zookeeper/save', record=record) else: return self.ajax_popup(close_current=False, code=300, msg="请选择某条记录进行修改")
def response(self): '''search ''' clauses = self.parse_query(ZdZookeeper) order = getattr(ZdZookeeper, self.order_field) records = ZdZookeeper.select().order_by( getattr(order, self.order_direction)() ).where(reduce(operator.and_, clauses)) self.render('config/zookeeper/datagrid.html', total=records.count(), current_page=self.current_page, page_size=self.page_size, records=records.paginate(self.current_page, self.page_size))
def response(self): '''delete ''' if not self.info_ids: return self.ajax_popup(close_current=False, code=300, msg="请选择某条记录进行删除") id_list = self.info_ids.split(',') try: del_query = ZdZookeeper.delete().where(ZdZookeeper.id << id_list) del_query.execute() except OperationalError as exc: log.error("error occurred while delete zookeepers, ids: %s\n%s", id_list, str(exc)) return self.ajax_popup(close_current=False, code=300, msg="删除失败!") return self.ajax_ok(close_current=False)
def response(self): """edit """ if self.info_ids: id_li = self.info_ids.split(",") if len(id_li) != 1: return self.ajax_popup(close_current=False, code=300, msg="请选择单条记录进行修改") clusters = ZdZookeeper.select().where( (ZdZookeeper.deleted == "0") & (ZdZookeeper.cluster_name.startswith("qconf")) ) record = ZdQconfAgent.one(id=id_li[0]) return self.render("config/agent/edit.html", action="/config/agent/save", clusters=clusters, record=record) else: return self.ajax_popup(close_current=False, code=300, msg="请选择某条记录进行修改")
def response(self): '''edit ''' if self.info_ids: id_li = self.info_ids.split(',') if len(id_li) != 1: return self.ajax_popup(close_current=False, code=300, msg="请选择单条记录进行修改") clusters = ZdZookeeper.select().where(ZdZookeeper.deleted == "0") record = ZdQconfAgent.one(id=id_li[0]) return self.render('config/agent/edit.html', action='/config/agent/save', clusters=clusters, record=record) else: return self.ajax_popup(close_current=False, code=300, msg="请选择某条记录进行修改")
def response(self): '''delete ''' if not self.info_ids: return self.ajax_popup(close_current=False, code=300, msg="请选择某条记录进行删除") id_list = self.info_ids.split(',') for zookeeper_id in id_list: zookeeper = ZdZookeeper.one(id=zookeeper_id) zookeeper.deleted = '1' zookeeper.save() services = ZdService.select().where(ZdService.zookeeper == zookeeper.id and ZdService.deleted == '0') for service in services: service.deleted = '1' service.save() return self.ajax_ok(close_current=False)
def response(self): '''index ''' # zookeeper clusters clusters = ZdZookeeper.select().where(ZdZookeeper.deleted == "0") if clusters.count() < 1: return self.ajax_popup(code=300, msg="请先到zookeeper管理菜单下设置集群信息!") clauses = self.parse_query(ZdService) order = getattr(ZdService, self.order_field) records = ZdService.select().order_by( getattr(order, self.order_direction)() ).where(reduce(operator.and_, clauses) & (ZdService.deleted == "0")) self.render('config/service/index.html', action='/config/service/index', total=records.count(), current_page=self.current_page, page_size=self.page_size, records=records.paginate(self.current_page, self.page_size))
def get_zoo_client(cluster_name="qconf"): """get zoo client by cluster_name """ global ZOO_CLIENTS zookeeper = ZdZookeeper.one(cluster_name=cluster_name, deleted="0") if not zookeeper: raise ZookeeperConfError("Zookeeper not configured for cluster {}!".format(cluster_name)) if cluster_name not in ZOO_CLIENTS: try: client = KazooClient(hosts=zookeeper.hosts, connection_retry={"max_tries": 1, "backoff": 1}) client.start(timeout=3) ZOO_CLIENTS[cluster_name] = client except KazooTimeoutError as exc: log.error('Failed to connnect zookeeper, %s', str(exc)) return return ZOO_CLIENTS[cluster_name]
def response(self): zookeeper = ZdZookeeper.one(cluster_name=self.cluster, deleted='0') #self.set_header('Content-Type', 'application/json; charset=UTF-8') #self.write(json.dumps({'message': 'ok'})) #self.finish() if zookeeper is not None: services = ZdService.select().where((ZdService.zookeeper == zookeeper.id) & (ZdService.deleted == '0')) if services.count() >= 1: json_data = '{"service_names":[' for service in services: json_data += '"' json_data += service.service_name json_data += '",' json_data = json_data[0:len(json_data)-1] json_data += "]}" return json_data else: json_data = '' self.finish() else: self.finish()
def response(self): '''add ''' if self.id: # 修改记录 tb_inst = ZdService.one(id=self.id) else: zookeeper = ZdZookeeper.one(cluster_name=self.cluster_name, deleted='0') if zookeeper is None: return self.ajax_popup(code=300, msg="zookeeper集群不存在!") else: # 新增记录 service = ZdService.one(zookeeper=zookeeper.id, service_name=self.service_name, deleted='0') # 检验集群下是否已经有该服务 if service: return self.ajax_popup(code=300, msg="service名称重复!") else: tb_inst = ZdService() if self.id: tb_inst.id = self.id if self.service_name: tb_inst.service_name = self.service_name tb_inst.zookeeper = zookeeper tb_inst.save() # 更新在zookeeper和mysql上存储的配置信息, 同时进行快照备份 # 当一个节点的父节点存在时才会保存快照 ZnodeService.set_znode(cluster_name=self.cluster_name, path='/', data='', znode_type='0', description='') ZnodeService.set_znode(cluster_name=self.cluster_name, path='/' + self.service_name, data='', znode_type='0', description='') return self.ajax_ok(forward="/config/service/index")
def response(self): '''导出选中数据到excel中 ''' id_li = self.info_ids.split(',') sheet_text = ZdZookeeper.select().where(ZdZookeeper.id << id_li) sheet_title = [ {'name': '集群名称'}, {'name': '集群配置'}, {'name': '集群业务'}, ] bind_attr = ( 'cluster_name', 'hosts', 'business', ) ewb = ExcelWorkBook() sheet_name = ZdZookeeper._meta.db_table ewb.add_sheet(sheet_name) ewb.add_title(sheet_name, sheet_title) ewb.add_text(sheet_name, sheet_text, bind=bind_attr) filename = '{}.xls'.format(sheet_name) filename = urllib.urlencode({'filename': filename}) self.set_header('Content-Disposition', 'attachment;{}'.format(filename)) self.finish(ewb.get_stream())