美文网首页
配置文件细节处理思路

配置文件细节处理思路

作者: 两点半的杂货铺 | 来源:发表于2018-03-20 14:42 被阅读4次

    一、conf 文件

    • 在conf文件夹创建settings.py 的配置文件

    例如这次的运维管理系统,我们将主要会用的模块做好配置封装

    MODE = "Agent" #Salt,SSH
    

    二、在src业务逻辑

    • 在src文件夹创建script.py 的脚本文件

    (1) 考虑用户配置时,会出现在settings.py 限定的MODE变量中输入空,或者出现拼写错误和超出预期配置,解决方法在脚本文件中,__init__做好判断
        def __init__(self):
            #创建一个限定的集合
            mode_list = ['SSH','Salt','Agent']
            # 判断用户输入的是否在我们的限定集合中
            if setting.MODE in mode_list:
                self.mode = setting.MODE
            else:
                raise Exception('配置文件错误')
    
    (2) 分析,首先判断配置文件执行的对应方法 ,通过方法返回值判断平台,接受平台返回的内容
        # 只有这三种方式
        def ssh(self,cmd):
            pass
    
        def salt(self,cmd):
            pass
    
        def agent(self,cmd):
            pass
    

    shell_cmd 方法通过判断用户配置文件设置的属性,来执行对应方法,并返回对应cmd查回的指令

        def shell_cmd(self,cmd):
            # 执行判断平台
            if self.mode == "SSH":
                ret = self.ssh(cmd)
            elif self.mode == "Salt":
                ret = self.salt(cmd)
            else:
                ret = self.agent(cmd)
    
            return  ret
    

    execute,判断指令的系统,然后到对应的方法中去处理,因为处理是多方面的,可以通过指令来处理内存硬盘多方面的方法,所以通过写继承类,来额外执行构成插拔的模式

        def execute(self):
            ret = self.shell_cmd("查看 命令的犯法")
            if ret == 'win':
               return self.windows()
            elif ret == "linux":
                return self.linux()
    
            else:
                raise  Exception('只支持linux,windows')
    
    

    撰写继承类,用来查硬盘信息,继承时要记住,父类的self,对应的是创建子类对象,子类中没有去父类查找,父类中,子类重写父类对应方法

    class DiskPlugin(BasePlugin):
        def windows(self):
            return '硬盘'
        def linux(self):
            return '硬盘'
    

    三、整体代码

    from  conf import setting
    class BasePlugin(object):
        def __init__(self):
            mode_list = ['SSH','Salt','Agent']
            if setting.MODE in mode_list:
                self.mode = setting.MODE
            else:
                raise Exception('配置文件错误')
    
        def ssh(self,cmd):
            pass
    
        def salt(self,cmd):
            pass
    
        def agent(self,cmd):
            pass
    
    
        def shell_cmd(self,cmd):
    
            # 执行判断平台
            if self.mode == "SSH":
                ret = self.ssh(cmd)
            elif self.mode == "Salt":
                ret = self.salt(cmd)
            else:
                ret = self.agent(cmd)
    
            return  ret
    
        def execute(self):
            ret = self.shell_cmd("查看 命令的犯法")
            if ret == 'win':
               return self.windows()
            elif ret == "linux":
                return self.linux()
    
            else:
                raise  Exception('只支持linux,windows')
    
    
        def linux(self):
            raise Exception('....')
    
        def windows(self):
            raise Exception('....')
    
    
    class DiskPlugin(BasePlugin):
        
        def windows(self):
            output = self.shell_cmd('as')
            return output
        
        def linux(self):
            output = self.shell_cmd('as')
            return output
    
    
    

    相关文章

      网友评论

          本文标题:配置文件细节处理思路

          本文链接:https://www.haomeiwen.com/subject/zhceqftx.html