def find_all_executables(executable_name): # create a list of all available executables found and then return the best # match if applicable executables_found = [] ####### Look in $PATH path_executable = which(executable_name) if path_executable is not None: add_to_executables_found(executables_found, path_executable) #### Look in $MONGO_HOME if set mongo_home = os.getenv(MONGO_HOME_ENV_VAR) if mongo_home is not None: mongo_home = resolve_path(mongo_home) mongo_home_exe = get_mongo_home_exe(mongo_home, executable_name) add_to_executables_found(executables_found, mongo_home_exe) # Look in mongod_installs_dir if set mongo_installs_dir = config.get_mongodb_installs_dir() if mongo_installs_dir is not None: if os.path.exists(mongo_installs_dir): for mongo_installation in os.listdir(mongo_installs_dir): child_mongo_home = os.path.join(mongo_installs_dir, mongo_installation) child_mongo_exe = get_mongo_home_exe(child_mongo_home, executable_name) add_to_executables_found(executables_found, child_mongo_exe) return get_exe_version_tuples(executables_found)
def export_cmd_options(self, options_override=None): """ Override! :return: """ cmd_options = super( MongodServer, self).export_cmd_options(options_override=options_override) # reset some props to exporting vals cmd_options['dbpath'] = self.get_db_path() if 'repairpath' in cmd_options: cmd_options['repairpath'] = resolve_path(cmd_options['repairpath']) # Add ReplicaSet args if a cluster is configured repl_cluster = self.get_replicaset_cluster() if repl_cluster is not None: if "replSet" not in cmd_options: cmd_options["replSet"] = repl_cluster.id # add configsvr as needed if self.is_config_server(): cmd_options["configsvr"] = True # add shardsvr as needed if self.is_shard_server(): cmd_options["shardsvr"] = True return cmd_options
def restore_command(parsed_options): # get and validate source/destination source = parsed_options.source destination = parsed_options.destination is_addr = is_db_address(destination) is_path = is_dbpath(destination) if is_addr and is_path: msg = ("Ambiguous destination value '%s'. Your destination matches" " both a dbpath and a db address. Use prefix 'file://'," " 'cluster://' or 'server://' to make it more specific" % destination) raise MongoctlException(msg) elif not (is_addr or is_path): raise MongoctlException( "Invalid destination value '%s'. Destination has to be" " a valid db address or dbpath." % destination) restore_options = extract_mongo_restore_options(parsed_options) if is_addr: mongo_restore_db_address(destination, source, username=parsed_options.username, password=parsed_options.password, restore_options=restore_options) else: dbpath = resolve_path(destination) mongo_restore_db_path(dbpath, source, restore_options=restore_options)
def dump_command(parsed_options): # get and validate dump target target = parsed_options.target use_best_secondary = parsed_options.useBestSecondary #max_repl_lag = parsed_options.maxReplLag is_addr = is_db_address(target) is_path = is_dbpath(target) if is_addr and is_path: msg = ("Ambiguous target value '%s'. Your target matches both a dbpath" " and a db address. Use prefix 'file://', 'cluster://' or" " 'server://' to make it more specific" % target) raise MongoctlException(msg) elif not (is_addr or is_path): raise MongoctlException("Invalid target value '%s'. Target has to be" " a valid db address or dbpath." % target) dump_options = extract_mongo_dump_options(parsed_options) if is_addr: mongo_dump_db_address(target, username=parsed_options.username, password=parsed_options.password, use_best_secondary=use_best_secondary, max_repl_lag=None, dump_options=dump_options) else: dbpath = resolve_path(target) mongo_dump_db_path(dbpath, dump_options=dump_options)
def restore_command(parsed_options): # get and validate source/destination source = parsed_options.source destination = parsed_options.destination is_addr = is_db_address(destination) is_path = is_dbpath(destination) if is_addr and is_path: msg = ("Ambiguous destination value '%s'. Your destination matches" " both a dbpath and a db address. Use prefix 'file://'," " 'cluster://' or 'server://' to make it more specific" % destination) raise MongoctlException(msg) elif not (is_addr or is_path): raise MongoctlException("Invalid destination value '%s'. Destination has to be" " a valid db address or dbpath." % destination) restore_options = extract_mongo_restore_options(parsed_options) if is_addr: mongo_restore_db_address(destination, source, username=parsed_options.username, password=parsed_options.password, restore_options=restore_options) else: dbpath = resolve_path(destination) mongo_restore_db_path(dbpath, source, restore_options=restore_options)
def export_cmd_options(self, options_override=None): """ Override! :return: """ cmd_options = super(MongodServer, self).export_cmd_options( options_override=options_override) # reset some props to exporting vals cmd_options['dbpath'] = self.get_db_path() if 'repairpath' in cmd_options: cmd_options['repairpath'] = resolve_path(cmd_options['repairpath']) # Add ReplicaSet args if a cluster is configured repl_cluster = self.get_replicaset_cluster() if repl_cluster is not None: if "replSet" not in cmd_options: cmd_options["replSet"] = repl_cluster.id # add configsvr as needed if self.is_config_server(): cmd_options["configsvr"] = True # add shardsvr as needed if self.is_shard_server(): cmd_options["shardsvr"] = True return cmd_options
def get_db_path(self): dbpath = self.get_cmd_option("dbpath") if not dbpath: dbpath = super(MongodServer, self).get_server_home() if not dbpath: dbpath = DEFAULT_DBPATH return resolve_path(dbpath)
def is_dbpath(value): """ Checks if the specified value is a dbpath. dbpath could be an absolute file path, relative path or a file uri """ value = resolve_path(value) return os.path.exists(value)
def export_cmd_options(self, options_override=None, standalone=False): """ Override! :return: """ cmd_options = super( MongodServer, self).export_cmd_options(options_override=options_override) # reset some props to exporting vals cmd_options['dbpath'] = self.get_db_path() if 'repairpath' in cmd_options: cmd_options['repairpath'] = resolve_path(cmd_options['repairpath']) # Add ReplicaSet args if a cluster is configured repl_cluster = self.get_replicaset_cluster() if repl_cluster is not None: if "replSet" not in cmd_options: cmd_options["replSet"] = repl_cluster.id # apply standalone if specified if standalone: if "replSet" in cmd_options: del cmd_options["replSet"] if "keyFile" in cmd_options: del cmd_options["keyFile"] # add configsvr as needed if self.is_config_server(): cmd_options["configsvr"] = True # add shardsvr as needed if self.is_shard_server(): cmd_options["shardsvr"] = True # remove wiredTigerCacheSizeGB if its not an int since we set it in runtime parameter # wiredTigerEngineRuntimeConfig in this case if "wiredTigerCacheSizeGB" in cmd_options and not isinstance( self.get_cmd_option("wiredTigerCacheSizeGB"), int): del cmd_options["wiredTigerCacheSizeGB"] return cmd_options
def export_cmd_options(self, options_override=None, standalone=False): """ Override! :return: """ cmd_options = super(MongodServer, self).export_cmd_options( options_override=options_override) # reset some props to exporting vals cmd_options['dbpath'] = self.get_db_path() if 'repairpath' in cmd_options: cmd_options['repairpath'] = resolve_path(cmd_options['repairpath']) # Add ReplicaSet args if a cluster is configured repl_cluster = self.get_replicaset_cluster() if repl_cluster is not None: if "replSet" not in cmd_options: cmd_options["replSet"] = repl_cluster.id # apply standalone if specified if standalone: if "replSet" in cmd_options: del cmd_options["replSet"] if "keyFile" in cmd_options: del cmd_options["keyFile"] # add configsvr as needed if self.is_config_server(): cmd_options["configsvr"] = True # add shardsvr as needed if self.is_shard_server(): cmd_options["shardsvr"] = True # remove wiredTigerCacheSizeGB if its not an int since we set it in runtime parameter # wiredTigerEngineRuntimeConfig in this case if "wiredTigerCacheSizeGB" in cmd_options and not isinstance(self.get_cmd_option("wiredTigerCacheSizeGB"), int): del cmd_options["wiredTigerCacheSizeGB"] return cmd_options
def get_server_home(self): home_dir = self.get_property("serverHome") if home_dir: return resolve_path(home_dir) else: return None
def get_db_path(self): dbpath = self.get_cmd_option("dbpath") if dbpath is None: dbpath = DEFAULT_DBPATH return resolve_path(dbpath)
def get_server_file_path(self, cmd_prop, default_file_name): file_path = self.get_cmd_option(cmd_prop) if file_path is not None: return resolve_path(file_path) else: return self.get_default_file_path(default_file_name)
def get_key_file(self): kf = self.get_cmd_option("keyFile") if kf: return resolve_path(kf)
def get_root_path(self): server_root = self.get_property("rootPath") return resolve_path(server_root)