def copy(self): """ Creates a copy of this ConfigStore. All configuration data is copied over except for SQL connections. """ config_store = ConfigStore() # Grab all ConfigDicts - even if they're actually ZATO_NONE - and make their copies for attr_name in dir(self): attr = getattr(self, attr_name) if isinstance(attr, ConfigDict): copy_func = getattr(attr, 'copy') setattr(config_store, attr_name, copy_func()) elif attr is ZATO_NONE: setattr(config_store, attr_name, ZATO_NONE) http_soap = MultiDict() dict_of_lists = self.http_soap.dict_of_lists() for url_path, lists in dict_of_lists.items(): _info = Bunch() for elem in lists: for soap_action, item in elem.items(): _info[soap_action] = Bunch() _info[soap_action].id = item.id _info[soap_action].name = item.name _info[soap_action].is_active = item.is_active _info[soap_action].is_internal = item.is_internal _info[soap_action].url_path = item.url_path _info[soap_action].method = item.method _info[soap_action].soap_version = item.soap_version _info[soap_action].service_id = item.service_id _info[soap_action].service_name = item.service_name _info[soap_action].impl_name = item.impl_name _info[soap_action].transport = item.transport _info[soap_action].connection = item.connection http_soap.add(url_path, _info) config_store.http_soap = http_soap config_store.url_sec = self.url_sec config_store.broker_config = self.broker_config config_store.odb_data = deepcopy(self.odb_data) return config_store
def get_config_odb_data(self, parallel_server): """ Returns configuration with regards to ODB data. """ odb_data = Bunch() odb_data.db_name = parallel_server.odb_data['db_name'] odb_data.extra = parallel_server.odb_data['extra'] odb_data.engine = parallel_server.odb_data['engine'] odb_data.token = parallel_server.fs_server_config.main.token odb_data.is_odb = True if odb_data.engine != 'sqlite': odb_data.password = parallel_server.crypto_manager.decrypt(parallel_server.odb_data['password']) odb_data.host = parallel_server.odb_data['host'] odb_data.port = parallel_server.odb_data['port'] odb_data.engine = parallel_server.odb_data['engine'] odb_data.pool_size = parallel_server.odb_data['pool_size'] odb_data.username = parallel_server.odb_data['username'] # Note that we don't read is_active off of anywhere - ODB always must # be active and it's not a regular connection pool anyway. odb_data.is_active = True return odb_data