初次学习python,啃完半本python基础教程后还是稀里糊涂,只好用啃代码这种笨办法继续学习加深印象。
下面的代码是公司大牛写的自动化运维部份的python脚本,配合saltstack,实现自动搭建mysql集群。
-----------------
# -*- coding: utf-8 -*-
'''
Build MySQL cluster API
'''
import time
import logging
import collections
#import 用于加载time、logging、collections模块
try:
import MySQLdb
HAS_MYSQLDB = True
except ImportError:
# MySQLdb import failed, try to import PyMySQL
HAS_MYSQLDB = False
# 尝试加载 MySQLdb模块,如存在则返回true给MYSQLDB,不存在则返回false
log = logging.getLogger(__name__)
# 创建一个log,默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET)
#python自定义日志log类,记录不同级别的错误信息和行号,自定义的log类继承自logging.Logger,使用时可以记录具体日志出现的代码行号
def __virtual__():
'''
Only load this module if the mysql libraries exist
'''
log.error("MySQLdb is available :{0}".format(HAS_MYSQLDB))
if HAS_MYSQLDB:
return True
return (False, 'The mysql execution module cannot be loaded: no MySQLdb is available.')
def rsync_data(**kwargs):
'''
Rsync backups/demo instance from source to destination. Return {"status":False/True, "error":"something"}
These parameters are required : src/dst/buffer/mysql_version/port
'''
log.error(kwargs)
if "test" in kwargs and kwargs["test"] : return {"status":True}
param = ["src", "dst", "buffer", "mysql_version", "port", "cnf_src"]
is_legal = _check_parameter(kwargs, param)
if "error" in is_legal:
return is_legal
未完待续