public int backupRHEV(string sqlServerName, string destDir, bool quitFlag, string inetpubStr, string rhevpath)
{
fileOperations fop = new fileOperations();
string PATH_BACKUP_DIR = destDir;
DirectoryInfo DirRhevPath = new DirectoryInfo(rhevpath);
if (DirRhevPath.Exists == false)
{
Console.WriteLine("Cannot proceed, RHEV Path " + rhevpath + " doesn't exist!");
Environment.Exit(-1);
}
DirectoryInfo DirInetPub = new DirectoryInfo(inetpubStr);
if (DirInetPub.Exists == false)
{
Console.WriteLine("Cannot proceed, inetpub path " + inetpubStr + " doesn't exist!");
Environment.Exit(-1);
}
/* Check if the backup directory already exists, if yes add to the path Date */
DirectoryInfo DirInfo = new DirectoryInfo(PATH_BACKUP_DIR);
if (DirInfo.Exists == true)
{
DateTime datenow = DateTime.Now;
PATH_BACKUP_DIR += datenow.ToString("yyyy-MM-dd_HHmmss");
}
string PATH_BACKUP_DB = PATH_BACKUP_DIR + @"\sqlBackup";
// service
string PATH_BACKUP_SERVICE = PATH_BACKUP_DIR + @"\Service\";
string PATH_BACKUP_SERVICE_CA = PATH_BACKUP_DIR + @"\Service\ca\";
// inetpub
string PATH_INETPUB = inetpubStr;
string PATH_BACKUP_INETPUB = PATH_BACKUP_DIR + @"\inetpub";
// certs
string PATH_BACKUP_CERTS_AUTH = PATH_BACKUP_DIR + @"\Certificates\TrustedRootCertificatesAuthorities\";
string PATH_BACKUP_CERTS_PUB = PATH_BACKUP_DIR + @"\Certificates\TrustedPublishers\";
string PATH_BACKUP_CERTS_PERSONAL = PATH_BACKUP_DIR + @"\Certificates\Personal\";
string PATH_SERVICE_CA_PROGRAM_FILES = "";
string PATH_SERVICE_PROGRAM_FILES = "";
int ret;
PATH_SERVICE_CA_PROGRAM_FILES = rhevpath + @"\Service\ca\";
DirectoryInfo DirCA = new DirectoryInfo(rhevpath);
if (DirCA.Exists == false)
{
Console.WriteLine("Cannot locate path: " + PATH_SERVICE_CA_PROGRAM_FILES + ", aborting..");
Environment.Exit(-1);
}
PATH_SERVICE_PROGRAM_FILES = rhevpath + @"\Service\";
DirectoryInfo DirPFILES = new DirectoryInfo(rhevpath);
if (DirPFILES.Exists == false)
{
Console.WriteLine("Cannot locate path: " + PATH_SERVICE_PROGRAM_FILES + ", aborting..");
Environment.Exit(-1);
}
Console.WriteLine("========================================");
Console.WriteLine("RHEVUP - " + VERSION_RHEV_UPDATE);
Console.WriteLine("========================================\n");
/* Creating initial dirs */
fop.createDir(PATH_BACKUP_DIR);
fop.createDir(PATH_BACKUP_DB);
fop.createDir(PATH_BACKUP_SERVICE_CA);
fop.createDir(PATH_BACKUP_CERTS_AUTH);
fop.createDir(PATH_BACKUP_CERTS_PUB);
fop.createDir(PATH_BACKUP_CERTS_PERSONAL);
fop.createDir(PATH_BACKUP_INETPUB);
///////////////////////////////// STEP 1 /////////////////////////////////////////////
//////////////////////// SHUTDOWN WINDOWS SERVICES ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
/* Shutdown all RHEV Windows Services */
Console.WriteLine("Phase 1: Stopping services");
serviceOperations services = new serviceOperations();
services.StopService("RHEV Manager", 15000);
services.StopService("RHEVM History Service", 15000);
services.StopService("RHEVM Net Console", 15000);
services.StopService("RHEVM Notification Service", 15000);
Console.WriteLine("Phase 1: Done\n");
///////////////////////////////// STEP 2 /////////////////////////////////////////////
//////////////////////// BACKUP DATABASES ////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
/* backup rhevm databases */
Console.WriteLine("Phase 2: backup rhevm databases");
SqlOperations sql = new SqlOperations();
ret = sql.backupDatabases(PATH_BACKUP_DB, sqlServerName);
if (ret == -1)
{
Console.WriteLine("Phase 2: Failed\n");
Environment.Exit(-1);
}
Console.WriteLine("Phase 2: Done\n");
///////////////////////////////// STEP 3 /////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
/* STEP 3 */
/* backup service - CA - directory */
Console.WriteLine("Phase 3: backup service CA directory");
DirectoryInfo src = new DirectoryInfo(PATH_SERVICE_CA_PROGRAM_FILES);
DirectoryInfo dest = new DirectoryInfo(PATH_BACKUP_SERVICE_CA);
ret = fop.backupServiceCA_DIR(src, dest);
if (ret == -1)
{
Console.WriteLine("Phase 3: Failed\n");
Environment.Exit(-1);
}
Console.WriteLine("Phase 3: Done\n");
///////////////////////////////// STEP 4 /////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
/* backup - rhevm.pfx and rhevm.ssh.key files*/
Console.WriteLine("Phase 4: backup rhevm.pfx and rhevm.ssh.key");
ret = fop.copyFile(PATH_SERVICE_PROGRAM_FILES + @"rhevm.pfx", PATH_BACKUP_SERVICE + @"rhevm.pfx");
if (ret == -1)
{
Console.WriteLine("From:" + PATH_SERVICE_PROGRAM_FILES + @"rhevm.pfx");
Console.WriteLine("To:" + PATH_BACKUP_SERVICE + @"rhevm.pfx");
Console.WriteLine("Phase 4: Failed\n");
Environment.Exit(-1);
}
Console.WriteLine("Copied rhevm.pfx");
/* rhevm.ssh.key */
ret = fop.copyFile(PATH_SERVICE_PROGRAM_FILES + @"rhevm.ssh.key", PATH_BACKUP_SERVICE + @"rhevm.ssh.key");
if (ret == -1)
{
Console.WriteLine("From:" + PATH_SERVICE_PROGRAM_FILES + @"rhevm.ssh.key");
Console.WriteLine("To:" + PATH_BACKUP_SERVICE + @"rhevm.ssh.key");
Console.WriteLine("Phase 4: Failed\n");
Environment.Exit(-1);
}
Console.WriteLine("Copied rhevm.ssh.key");
Console.WriteLine("Phase 4: Done\n");
///////////////////////////////// STEP 5 /////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
/* backup - RHEVManager.exe.config RHEVMHistoryService.exe.config RHEVMNotificationService.exe.config*/
Console.WriteLine("Phase 5: backup RHEVM*.config files");
ret = fop.copyFile(PATH_SERVICE_PROGRAM_FILES + @"RHEVManager.exe.config", PATH_BACKUP_SERVICE + @"RHEVManager.exe.config");
if (ret == -1)
{
Console.WriteLine("Phase 5: Failed - File: RHEVManager.exe.config\n");
Environment.Exit(-1);
}
Console.WriteLine("Copied RHEVManager.exe.config");
// Backup FieldsInVDCConfig.xml file
ret = fop.copyFile(PATH_SERVICE_PROGRAM_FILES + @"FieldsInVDCConfig.xml", PATH_BACKUP_SERVICE + @"FieldsInVDCConfig.xml");
if (ret == -1)
{
Console.WriteLine("Phase 5: Failed - File: FieldsInVDCConfig.xml\n");
Environment.Exit(-1);
}
Console.WriteLine("Copied FieldsInVDCConfig.xml");
ret = fop.copyFile(PATH_SERVICE_PROGRAM_FILES + @"RHEVMHistoryService.exe.config", PATH_BACKUP_SERVICE + @"RHEVMHistoryService.exe.config");
if (ret == -1)
{
Console.WriteLine("Phase 5: Failed - File: RHEVMHistoryService.exe.config\n");
Environment.Exit(-1);
}
Console.WriteLine("Copied RHEVMHistoryService.exe.config");
ret = fop.copyFile(PATH_SERVICE_PROGRAM_FILES + @"RHEVMNotificationService.exe.config", PATH_BACKUP_SERVICE + @"RHEVMNotificationService.exe.config");
if (ret == -1)
{
Console.WriteLine("Phase 5: Failed - File: RHEVMNotificationService.exe.config\n");
Environment.Exit(-1);
}
Console.WriteLine("Copied RHEVMNotificationService.exe.config");
Console.WriteLine("Phase 5: Done\n");
///////////////////////////////// STEP 6 /////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
/* backup inetpub files */
Console.WriteLine("Phase 6: backup inetpub files");
ret = fop.copyFile(PATH_INETPUB + @"\ca.crt", PATH_BACKUP_INETPUB + @"\ca.crt");
if (ret == -1)
{
Console.WriteLine("Phase 6: Failed - cannot copy ca.crt from" + PATH_INETPUB + "\n");
Environment.Exit(-1);
}
ret = fop.copyFile(PATH_INETPUB + @"\rhevm.ssh.key.txt", PATH_BACKUP_INETPUB + @"\rhevm.ssh.key.txt");
if (ret == -1)
{
Console.WriteLine("Phase 6: Failed - cannot copy rhevm.ssh.key.txt from" + PATH_INETPUB + "\n");
Environment.Exit(-1);
}
Console.WriteLine("Copied ca.crt rhevm.ssh.key.txt from inetpub");
Console.WriteLine("Phase 6: Done\n");
///////////////////////////////// STEP 7 /////////////////////////////////////////////
/* Copy .certs from Red Hat */
Console.WriteLine("Phase 7: Getting certificates");
certOperations cert = new certOperations();
cert.get_Trusted_Root_Certificate_Authorities(PATH_BACKUP_CERTS_AUTH);
cert.get_Trusted_Publishers(PATH_BACKUP_CERTS_PUB);
cert.get_Personal_certs(PATH_BACKUP_CERTS_PERSONAL);
Console.WriteLine("Phase 7: Done\n");
///////////////////////////////// STEP 7 /////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
/* shutdown the system */
systemOperations sys = new systemOperations();
serviceOperations serv = new serviceOperations();
if (quitFlag == false)
{
Console.WriteLine("Please copy the path " + PATH_BACKUP_DIR + " to a CDROM/USB device to move to the new RHEV Server.");
Console.WriteLine("\nAfter that, we need to *HALT* THIS COMPUTER to avoid any conflicts like DNS.");
Console.WriteLine("Press y when you get ready to TURN OFF the entire system");
char character = (char)Console.Read();
if (character.Equals('y'))
{
sys.Shutdown();
}
else
{
Console.WriteLine("\nOk, I will *NOT* halt this machine now, aborting halt..");
Console.WriteLine("SUCCESS!");
return(0);
}
}
serv.StartService("RHEV Manager");
serv.StartService("RHEVM History Service");
serv.StartService("RHEVM Net Console");
serv.StartService("RHEVM Notification Service");
Console.WriteLine("SUCCESS!");
return(0);
}