CMDB开发指北——数据采集之兼容配置(一)

全部文章

CMDB开发指北——设计概要
CMDB开发指北——数据采集之兼容配置(一)
CMDB开发指北——API之(一)
CMDB开发指北——后台管理之(一)

概要

有这么一个场景,某些配置需要用户定义,某些配置需要预先设置,用户的配置可以覆盖默认配置,要想实现这个功能,就要引入反射机制。

一、创建相关文件
CMDB开发指北——数据采集之兼容配置(一)_第1张图片
  1. 程序运行文件
  2. 用户配置文件
  3. 配置整合文件
  4. 预配置文件

备注:3负责整合2和4中的配置

二、start.py主程序设计
# -*- coding: utf-8 -*-
__date__ = '2018/1/14 下午4:33'
import os
os.environ['USER_SETTINGS'] = 'config.settings'
from lib.conf.config import settings
print(settings.EMAIL)
print(settings.USER)
三、整合配置文件config.py程序设计
# -*- coding: utf-8 -*-
from lib.conf import global_settings
import importlib
import os
class Settings(object):
    def __init__(self):
        #默认的配置
        for key in dir(global_settings):
            if key.isupper():
                value = getattr(global_settings, key)
                setattr(self, key, value)
        #用户的配置
        user_settings = os.environ.get("USER_SETTINGS")
        if not user_settings:
            return
        m = importlib.import_module(user_settings)
        for key in dir(m):
            if key.isupper():
                value = getattr(m, key)
                setattr(self, key, value)
settings = Settings()
其中settings.py
四、配置文件内容示例
其中settings.py
# -*- coding: utf-8 -*-
__date__ = '2018/1/14 下午4:32'
USER = "Mangood"
PASSWD = "abc123"
PASSwd = "123456"

其中global_settings.py
# -*- coding: utf-8 -*-
EMAIL = "[email protected]"

你可能感兴趣的:(CMDB开发指北——数据采集之兼容配置(一))