def clear_crm_res(self, node): if node: for ssh, n in zip(self.conn.list_ssh, self.conn.cluster['node']): if node == n['hostname']: pacemaker = action.Pacemaker(ssh) else: pacemaker = action.Pacemaker() pacemaker.clear_crm_res()
def get_version(self, *args): """ 参数输入要获取版本信息的软件,支持sysos,syskernel,drbd,linstor,targetcli,pacemaker,corosync 返回数据的顺序与参数顺序一致 :param args: :return: """ result = [] for ssh in self.conn.list_ssh: host = action.Host(ssh) result.append(host.get_hostname()) for soft in args: if soft == 'sysos': result.append(host.get_sys_version()) elif soft == 'syskernel': result.append(host.get_kernel_version()) elif soft == 'drbd': drbd = action.DRBD(ssh) result.append(drbd.get_version()) elif soft == 'linstor': linstor = action.Linstor(ssh) result.append(linstor.get_version()) elif soft == 'targetcli': targetcli = action.TargetCLI(ssh) result.append(targetcli.get_version()) elif soft == 'pacemaker': pacemaker = action.Pacemaker(ssh) result.append(pacemaker.get_version()) elif soft == 'corosync': corosync = action.Corosync(ssh) result.append(corosync.get_version()) for i in range(0, len(result), len(args) + 1): yield result[i:i + len(args) + 1]
def check_packmaker(self): # cluster_name = self.conn.cluster['cluster'] // cluster name 缺少日期,不进行判断 packmaker = action.Pacemaker() if packmaker.check_crm_conf(): return [True] * len(self.conn.list_ssh) else: return [False] * len(self.conn.list_ssh)
def packmaker_conf_change(self): cluster_name = self.conn.conf_file.get_cluster_name() packmaker = action.Pacemaker() packmaker.modify_cluster_name(cluster_name) packmaker.modify_policy() packmaker.modify_stickiness() packmaker.modify_stonith_enabled()
def check_packmaker(self): cluster_name = self.cluster['cluster'] packmaker = action.Pacemaker() if packmaker.check_crm_conf(cluster_name): return [True] * len(self.list_ssh) else: return [False] * len(self.list_ssh)
def clear_crm_node(self): for ssh, local_node in zip(self.conn.list_ssh, self.conn.cluster['node']): pacemaker = action.Pacemaker(ssh) pacemaker.restart() time.sleep(2) for node in self.conn.cluster['node']: if local_node['hostname'] != node['hostname']: pacemaker.clear_crm_node(node['hostname'])
def packmaker_conf_change(self): cluster_name = self.conf_file.get_cluster_name() packmaker = action.Pacemaker() lst = [] lst.append(gevent.spawn(packmaker.modify_cluster_name, cluster_name)) lst.append(gevent.spawn(packmaker.modify_policy)) lst.append(gevent.spawn(packmaker.modify_stickiness)) lst.append(gevent.spawn(packmaker.modify_stonith_enabled)) gevent.joinall(lst) self.conf_file.cluster['cluster'] = cluster_name self.conf_file.update_yaml()
def build_drbd_attr(self, args): print('*start*') pcm = action.Pacemaker() pcm.config_drbd_attr() print('*success*')
def uninstall_pacemaker(self): for ssh in self.conn.list_ssh: handler = action.Pacemaker(ssh) handler.uninstall()
def pacmaker_conf_change(self): pacemaker = action.Pacemaker() pacemaker.modify_policy() pacemaker.modify_stickiness() pacemaker.modify_stonith_enabled()
def modify_cluster_name(self, name=None): if not name: name = self.conn.conf_file.get_cluster_name() pacemaker = action.Pacemaker() pacemaker.modify_cluster_name(name)