def __init__(self, ctrl, id, master_config): from ploy.config import ConfigSection # avoid circular import self.id = id self.ctrl = ctrl assert self.ctrl.__class__.__name__ == 'Controller' self.main_config = self.ctrl.config if not isinstance(master_config, ConfigSection): master_config = ConfigSection(master_config) self.master_config = master_config self.known_hosts = self.ctrl.known_hosts self.instances = {} if getattr(self, 'section_info', None) is None: self.section_info = { None: self.instance_class, self.sectiongroupname: self.instance_class } for sectiongroupname, instance_class in self.section_info.items(): for sid, config in self.main_config.get(sectiongroupname, {}).items(): masters = config.get('master', self.id).split() if self.id not in masters: continue self.instances[sid] = instance_class(self, sid, config) self.instances[sid].sectiongroupname = sectiongroupname
def __delitem__(self, name): ConfigSection.__delitem__(self, name) if not hasattr(self, '_proxied'): return del self._proxied[name]
def __setitem__(self, name, value): ConfigSection.__setitem__(self, name, value) if not hasattr(self, '_proxied'): return self._proxied[name] = value