Exemple #1
0
    def response(self):
        '''save
        '''
        keys = self.get_arguments("key")
        values = self.get_arguments("value")

        batch_data = []
        for node_name, node_value in zip(keys, values):
            # 过滤掉所有key为空字符串的项
            if node_name == '':
                continue
            # 检验node_name中是否包含`/`特殊字符
            if not ZnodeService.is_node_name_ok(node_name):
                return self.ajax_popup(code=300, msg="节点名不允许包含特殊字符'/'!")
            batch_data.append((node_name, node_value))

        # 更新字典,需要删除旧字典与新字典的差集项
        ZnodeService.delete_znodes_diff_with_keys(self.cluster_name, self.parent_path, keys)
        # 更新在zookeeper和mysql上存储的配置信息, 同时进行快照备份
        ZnodeService.set_batch_znodes(cluster_name=self.cluster_name,
                                      parent_path=self.parent_path,
                                      batch_data=batch_data,
                                      business=self.business)

        return self.ajax_ok(close_current=True)
Exemple #2
0
    def response(self):
        '''save
        '''
        # node_name中不可包含`/`特殊字符
        if self.node_name and not ZnodeService.is_node_name_ok(self.node_name):
            return self.ajax_popup(code=300, msg="节点名不允许包含特殊字符'/'!")

        zk_path = ""
        if not self.path:
            # 新增节点需要进行存在检验
            zk_path = os.path.join(self.parent_path, self.node_name)
            if ZookeeperService.exists(self.cluster_name, zk_path):
                return self.ajax_popup(code=300, msg="节点已经存在!")
        else:
            zk_path = self.path

        # znode_type, 0代表普通节点, 1代表文件节点
        zk_data = ""
        if self.znode_type == "1":
            if 'uploadfile' not in self.request.files:
                return self.ajax_popup(code=300, msg="请选择上传文件!")
            upload_file = self.request.files['uploadfile'][0]
            zk_data = upload_file['body']
        else:
            zk_data = self.data

        # 更新在zookeeper和mysql上存储的配置信息, 同时进行快照备份
        ZnodeService.set_znode(cluster_name=self.cluster_name,
                               path=zk_path,
                               data=zk_data,
                               znode_type=self.znode_type,
                               business=self.business)

        return self.ajax_ok(close_current=True)
Exemple #3
0
    def response(self):
        '''save
        '''
        # node_name中不可包含`/`特殊字符
        if self.node_name and not ZnodeService.is_node_name_ok(self.node_name):
            return self.ajax_popup(code=300, msg="节点名不允许包含特殊字符'/'!")

        zk_path = ""
        if not self.path:
            # 新增节点需要进行存在检验
            zk_path = os.path.join(self.parent_path, self.node_name)
            if ZookeeperService.exists(self.cluster_name, zk_path):
                return self.ajax_popup(code=300, msg="节点已经存在!")
        else:
            zk_path = self.path

        # znode_type, 0代表普通节点, 1代表文件节点
        zk_data = ""
        if self.znode_type == "1":
            if 'uploadfile' not in self.request.files:
                return self.ajax_popup(code=300, msg="请选择上传文件!")
            upload_file = self.request.files['uploadfile'][0]
            zk_data = upload_file['body']
        else:
            zk_data = self.data

        # 更新在zookeeper和mysql上存储的配置信息, 同时进行快照备份
        ZnodeService.set_znode(cluster_name=self.cluster_name,
                               path=zk_path,
                               data=zk_data,
                               znode_type=self.znode_type,
                               business=self.business)

        return self.ajax_ok(close_current=True)
Exemple #4
0
    def response(self):
        '''save
        '''
        keys = self.get_arguments("key")
        values = self.get_arguments("value")

        batch_data = []
        for node_name, node_value in zip(keys, values):
            # 过滤掉所有key为空字符串的项
            if node_name == '':
                continue
            # 检验node_name中是否包含`/`特殊字符
            if not ZnodeService.is_node_name_ok(node_name):
                return self.ajax_popup(code=300, msg="节点名不允许包含特殊字符'/'!")
            batch_data.append((node_name, node_value))

        # 更新字典,需要删除旧字典与新字典的差集项
        ZnodeService.delete_znodes_diff_with_keys(self.cluster_name,
                                                  self.parent_path, keys)
        # 更新在zookeeper和mysql上存储的配置信息, 同时进行快照备份
        ZnodeService.set_batch_znodes(cluster_name=self.cluster_name,
                                      parent_path=self.parent_path,
                                      batch_data=batch_data,
                                      business=self.business)

        return self.ajax_ok(close_current=True)
Exemple #5
0
    def response(self):
        '''savecopy
        '''
        # node_name中不可包含`/`特殊字符
        if self.path and not ZnodeService.is_node_name_ok(self.path):
            return self.ajax_popup(code=300, msg="节点名不允许包含特殊字符'/'!")

        zk_path = ""
        if not self.path:
            # 新增节点需要进行存在检验
            return self.ajax_popup(code=300, msg="节点名称不能为空!")
        else:
            zk_path = os.path.join(self.parent_path, self.path)
            if ZookeeperService.exists(self.cluster_name, zk_path):
                return self.ajax_popup(code=300, msg="节点已经存在!")

        normalized_path = normalize_path(self.old_path)
        nodes = []

        if USE_QCONF:
            ZnodeService.get_znode_tree_from_qconf(self.cluster_name, normalized_path, nodes)
        else:
            zoo_client = ZookeeperService.get_zoo_client(self.cluster_name)
            if not zoo_client:
                return self.ajax_popup(code=300, msg="连接zookeeper出错!")
            ZnodeService.get_znode_tree(zoo_client, normalized_path, nodes)

        path = full_path(self.path,self.parent_path)
        #ZnodeService.save_znode_tree(self.cluster_name , normalized_path , path)

        index = self.old_path.rfind('/')
        old_node_name = self.old_path[index+1:]

        for node in nodes:
            new_path = node['path'].replace(old_node_name,self.path,1)
            ZnodeService.save_znode_tree(self.cluster_name , node['path'] ,new_path)
        #ret = ZnodeService.save_znode_tree(self.cluster_name ,self.parent_path,self.old_path,self.path)

        #if not ret:
        #    return self.ajax_popup(code=300,msg='添加失败')
        return self.ajax_ok(close_current=True)