def __init__(self, args): """ Class constructor. """ self.catalog_version = '2.0.5' self.upgradable_version = '1.7' self.lst_yes = ['yes', 'Yes', 'y', 'Y'] python_lib = get_python_lib() cham_dir = "%s/.pg_chameleon" % os.path.expanduser('~') local_conf = "%s/configuration/" % cham_dir self.global_conf_example = '%s/pg_chameleon/configuration/config-example.yml' % python_lib self.local_conf_example = '%s/config-example.yml' % local_conf local_logs = "%s/logs/" % cham_dir local_pid = "%s/pid/" % cham_dir self.conf_dirs = [ cham_dir, local_conf, local_logs, local_pid, ] self.args = args self.source = self.args.source if self.args.command == 'set_configuration_files': self.set_configuration_files() sys.exit() self.__set_conf_permissions(cham_dir) self.load_config() log_list = self.__init_logger("global") self.logger = log_list[0] self.logger_fds = log_list[1] #notifier configuration self.notifier = rollbar_notifier(self.config["rollbar_key"], self.config["rollbar_env"], self.args.rollbar_level, self.logger) #pg_engine instance initialisation self.pg_engine = pg_engine() self.pg_engine.dest_conn = self.config["pg_conn"] self.pg_engine.logger = self.logger self.pg_engine.source = self.args.source self.pg_engine.full = self.args.full self.pg_engine.type_override = self.config["type_override"] self.pg_engine.sources = self.config["sources"] self.pg_engine.notifier = self.notifier #mysql_source instance initialisation self.mysql_source = mysql_source() self.mysql_source.source = self.args.source self.mysql_source.tables = self.args.tables self.mysql_source.schema = self.args.schema.strip() self.mysql_source.pg_engine = self.pg_engine self.mysql_source.logger = self.logger self.mysql_source.sources = self.config["sources"] self.mysql_source.type_override = self.config["type_override"] self.mysql_source.notifier = self.notifier #pgsql_source instance initialisation self.pgsql_source = pgsql_source() self.pgsql_source.source = self.args.source self.pgsql_source.tables = self.args.tables self.pgsql_source.schema = self.args.schema.strip() self.pgsql_source.pg_engine = self.pg_engine self.pgsql_source.logger = self.logger self.pgsql_source.sources = self.config["sources"] self.pgsql_source.type_override = self.config["type_override"] self.pgsql_source.notifier = self.notifier catalog_version = self.pg_engine.get_catalog_version() #safety checks if self.args.command == 'upgrade_replica_schema': self.pg_engine.sources = self.config["sources"] print( "WARNING, entering upgrade mode. Disabling the catalogue version's check. Expected version %s, installed version %s" % (self.catalog_version, catalog_version)) elif self.args.command == 'enable_replica' and self.catalog_version != catalog_version: print( "WARNING, catalogue mismatch. Expected version %s, installed version %s" % (self.catalog_version, catalog_version)) else: if catalog_version: if self.catalog_version != catalog_version: print( "FATAL, replica catalogue version mismatch. Expected %s, got %s" % (self.catalog_version, catalog_version)) sys.exit() if self.args.source != '*' and self.args.command != 'add_source': self.pg_engine.connect_db() source_count = self.pg_engine.check_source() self.pg_engine.disconnect_db() if source_count == 0: print( "FATAL, The source %s is not registered. Please add it add_source" % (self.args.source)) sys.exit()
def __init__(self, args): """ Class constructor. """ self.catalog_version = '2.0.6' self.upgradable_version = '1.7' self.lst_yes= ['yes', 'Yes', 'y', 'Y'] python_lib=get_python_lib() cham_dir = "%s/.pg_chameleon" % os.path.expanduser('~') local_conf = "%s/configuration/" % cham_dir self.global_conf_example = '%s/pg_chameleon/configuration/config-example.yml' % python_lib self.local_conf_example = '%s/config-example.yml' % local_conf local_logs = "%s/logs/" % cham_dir local_pid = "%s/pid/" % cham_dir self.conf_dirs=[ cham_dir, local_conf, local_logs, local_pid, ] self.args = args self.source = self.args.source if self.args.command == 'set_configuration_files': self.set_configuration_files() sys.exit() self.__set_conf_permissions(cham_dir) self.load_config() log_list = self.__init_logger("global") self.logger = log_list[0] self.logger_fds = log_list[1] #notifier configuration self.notifier = rollbar_notifier(self.config["rollbar_key"],self.config["rollbar_env"] , self.args.rollbar_level , self.logger ) #pg_engine instance initialisation self.pg_engine = pg_engine() self.pg_engine.dest_conn = self.config["pg_conn"] self.pg_engine.logger = self.logger self.pg_engine.source = self.args.source self.pg_engine.full = self.args.full self.pg_engine.type_override = self.config["type_override"] self.pg_engine.sources = self.config["sources"] self.pg_engine.notifier = self.notifier #mysql_source instance initialisation self.mysql_source = mysql_source() self.mysql_source.source = self.args.source self.mysql_source.tables = self.args.tables self.mysql_source.schema = self.args.schema.strip() self.mysql_source.pg_engine = self.pg_engine self.mysql_source.logger = self.logger self.mysql_source.sources = self.config["sources"] self.mysql_source.type_override = self.config["type_override"] self.mysql_source.notifier = self.notifier #pgsql_source instance initialisation self.pgsql_source = pgsql_source() self.pgsql_source.source = self.args.source self.pgsql_source.tables = self.args.tables self.pgsql_source.schema = self.args.schema.strip() self.pgsql_source.pg_engine = self.pg_engine self.pgsql_source.logger = self.logger self.pgsql_source.sources = self.config["sources"] self.pgsql_source.type_override = self.config["type_override"] self.pgsql_source.notifier = self.notifier catalog_version = self.pg_engine.get_catalog_version() #safety checks if self.args.command == 'upgrade_replica_schema': self.pg_engine.sources = self.config["sources"] print("WARNING, entering upgrade mode. Disabling the catalogue version's check. Expected version %s, installed version %s" % (self.catalog_version, catalog_version)) elif self.args.command == 'enable_replica' and self.catalog_version != catalog_version: print("WARNING, catalogue mismatch. Expected version %s, installed version %s" % (self.catalog_version, catalog_version)) else: if catalog_version: if self.catalog_version != catalog_version: print("FATAL, replica catalogue version mismatch. Expected %s, got %s" % (self.catalog_version, catalog_version)) sys.exit() if self.args.source != '*' and self.args.command != 'add_source': self.pg_engine.connect_db() source_count = self.pg_engine.check_source() self.pg_engine.disconnect_db() if source_count == 0: print("FATAL, The source %s is not registered. Please add it add_source" % (self.args.source)) sys.exit()