def exists(self): """ check that db exists """ logging.debug("verifying that db '%s' exists" % (basedefs.DB_NAME)) # Making sure postgresql service is up - only on local installation if utils.localHost(DB_HOST): postgresql = utils.Service("postgresql") postgresql.conditionalStart() try: # We want to make check that we can connect to basedefs.DB_NAME DB logging.debug("making sure postgresql service is up") utils.retry(utils.checkIfDbIsUp, tries=5, timeout=15, sleep=3) except: # If we're here, it means something is wrong, either there is a real db error # or the db is not installed, let's check logging.debug("checking if db is already installed..") out, rc = utils.execRemoteSqlCommand(DB_ADMIN, DB_HOST, DB_PORT, basedefs.DB_NAME, "select 1") if rc != 0: if utils.verifyStringFormat( out, ".*FATAL:\s*database\s*\"%s\"\s*does not exist" % (PREFIX)): # This means that the db is not installed, so we return false return False return True
def exists(self): """ check that db exists """ logging.debug("verifying that db '%s' exists" % (basedefs.DB_NAME)) # Making sure postgresql service is up - only on local installation if utils.localHost(DB_HOST): postgresql = utils.Service("postgresql") postgresql.conditionalStart() try: # We want to make check that we can connect to basedefs.DB_NAME DB logging.debug("making sure postgresql service is up") utils.retry(utils.checkIfDbIsUp, tries=5, timeout=15, sleep=3) except: # If we're here, it means something is wrong, either there is a real db error # or the db is not installed, let's check logging.debug("checking if db is already installed..") out, rc = utils.execRemoteSqlCommand(DB_ADMIN, DB_HOST, DB_PORT, basedefs.DB_NAME, "select 1") if rc != 0: if utils.verifyStringFormat(out,".*FATAL:\s*database\s*\"%s\"\s*does not exist" % (PREFIX)): # This means that the db is not installed, so we return false return False return True
def drop(self): """ Drops db using dropdb """ logging.debug("DB Drop started") # Block New connections and disconnect active ones - only on local installation. if utils.localHost(DB_HOST): utils.clearDbConnections(basedefs.DB_NAME) # Drop DBs - including the tempoarary ones created during upgrade operations # go over all dbs in the list of temp DBs and remove them for dbname in utils.listTempDbs(): cmd = [ basedefs.EXEC_DROPDB, "-w", "-U", DB_ADMIN, "-h", DB_HOST, "-p", DB_PORT, dbname ] output, rc = utils.execCmd(cmd, None, False, MSG_ERROR_DROP_DB) if rc: logging.error( "DB drop operation failed. Check that there are no active connection to the '%s' DB." % dbname) raise Exception(MSG_ERROR_DROP_DB) self.dropped = True logging.debug("DB Drop completed successfully")
def drop(self): """ Drops db using dropdb """ logging.debug("DB Drop started") # Block New connections and disconnect active ones - only on local installation. if utils.localHost(DB_HOST): utils.clearDbConnections(basedefs.DB_NAME) # Drop DBs - including the tempoarary ones created during upgrade operations # go over all dbs in the list of temp DBs and remove them for dbname in utils.listTempDbs(): cmd = [ basedefs.EXEC_DROPDB, "-w", "-U", DB_ADMIN, "-h", DB_HOST, "-p", DB_PORT, dbname, ] output, rc = utils.execCmd(cmdList=cmd, failOnError=False, msg=MSG_ERROR_DROP_DB, envDict=self.env) if rc: logging.error(MSG_ERROR_DROP_DB % dbname) raise Exception(MSG_ERROR_DROP_DB % dbname) self.dropped = True logging.debug("DB Drop completed successfully")
def exists(self): """ check that db exists """ logging.debug("verifying that db '%s' exists" % (basedefs.DB_NAME)) # Checking whether pgpass file exists. If not, # we cannot cleanup DB, so return False. if not os.path.exists(basedefs.DB_PASS_FILE): logging.info(MSG_ERR_CANT_FIND_PGPASS_FILE) return False # Making sure postgresql service is up - only on local installation if utils.localHost(DB_HOST): postgresql = utils.Service("postgresql") postgresql.conditionalStart() try: # We want to make check that we can connect to basedefs.DB_NAME DB logging.debug("Checking that DB '%s' exists", basedefs.DB_NAME) utils.retry(utils.checkIfDbIsUp, tries=5, timeout=15, sleep=3) except: # If we're here, it means something is wrong, either there is a real db error # or the db is not installed, let's check logging.debug("checking if db is already installed..") out, rc = utils.execRemoteSqlCommand(DB_ADMIN, DB_HOST, DB_PORT, basedefs.DB_NAME, "select 1") if rc != 0: if utils.verifyStringFormat(out,".*FATAL:\s*database\s*\"%s\"\s*does not exist" % (PREFIX)): # This means that the db is not installed, so we return false return False else: raise Exception(MSG_ERROR_CONNECT_DB) return True
def validateRemoteDB(param={}, options=[]): """ Ensure, that params provided for the remote DB are working, and if not, issue the correct error. """ logging.info("Validating %s as a RemoteDb" % param["DB_HOST"]) if utils.localHost(param["DB_HOST"]): logging.info("%s is a local host, no connection checks needed" % param["DB_HOST"]) return True if "DB_ADMIN" not in param.keys(): param["DB_ADMIN"] = basedefs.DB_ADMIN param["DB_PORT"] = basedefs.DB_PORT param["DB_PASS"] = param["DB_LOCAL_PASS"] else: param["DB_PASS"] = param["DB_REMOTE_PASS"] # Create a new pgpass, store previous in backupFile backupFile = _createTempPgPass(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"], param["DB_PASS"]) # Now, let's check credentials: try: # Connection check _checkDbConnection(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # DB Create check _checkCreateDbPrivilege(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # UUID extention check. _checkUUIDExtension(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # Delete DB check _checkDropDbPrivilege(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # Everything is fine, return True return True except Exception, e: # Something failed, print the error on screen and return False print e return False
def exists(self): """ check that db exists """ logging.debug("verifying that db '%s' exists" % (basedefs.DB_NAME)) # Checking whether pgpass file exists. If not, # we cannot cleanup DB, so return False. if not os.path.exists(basedefs.DB_PASS_FILE): logging.info(MSG_ERR_CANT_FIND_PGPASS_FILE) return False # Making sure postgresql service is up - only on local installation if utils.localHost(DB_HOST): postgresql = utils.Service("postgresql") postgresql.conditionalStart() try: # We want to make check that we can connect to basedefs.DB_NAME DB logging.debug("Checking that DB '%s' exists", basedefs.DB_NAME) utils.retry(utils.checkIfDbIsUp, tries=5, timeout=15, sleep=3) except: # If we're here, it means something is wrong, either there is a real db error # or the db is not installed, let's check logging.debug("checking if db is already installed..") out, rc = utils.execRemoteSqlCommand( userName=DB_ADMIN, dbHost=DB_HOST, dbPort=DB_PORT, dbName=basedefs.DB_NAME, sqlQuery="select 1", ) if rc != 0: if utils.verifyStringFormat( out, ".*FATAL:\s*database\s*\"%s\"\s*does not exist" % (PREFIX)): # This means that the db is not installed, so we return false return False else: raise Exception(MSG_ERROR_CONNECT_DB) return True
def validateRemoteDB(param={}, options=[]): """ Ensure, that params provided for the remote DB are working, and if not, issue the correct error. """ logging.info("Validating %s as a RemoteDb" % param["DB_HOST"]) if utils.localHost(param["DB_HOST"]): logging.info("%s is a local host, no connection checks needed" % param["DB_HOST"]) return True if "DB_ADMIN" not in param.keys(): param["DB_ADMIN"] = basedefs.DB_ADMIN param["DB_PORT"] = basedefs.DB_PORT param["DB_PASS"] = param["DB_LOCAL_PASS"] else: param["DB_PASS"] = param["DB_REMOTE_PASS"] # Create a new pgpass, store previous in backupFile backupFile = _createTempPgPass(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"], param["DB_PASS"]) # Now, let's check credentials: try: # Connection check _checkDbConnection(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # DB Create check _checkCreateDbPrivilege(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # UUID extention check. _checkUUIDExtension(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # Delete DB check _checkDropDbPrivilege(param["DB_ADMIN"], param["DB_HOST"], param["DB_PORT"]) # Everything is fine, return True return True except Exception,e: # Something failed, print the error on screen and return False print e return False