You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
Merge pull request #872 from mariadb-corporation/kill-distributed
MCOL-3515 Remove distributed install
This commit is contained in:
@ -472,7 +472,6 @@
|
|||||||
<CoreFileFlag>n</CoreFileFlag>
|
<CoreFileFlag>n</CoreFileFlag>
|
||||||
<MySQLPort>3306</MySQLPort>
|
<MySQLPort>3306</MySQLPort>
|
||||||
<AmazonDeviceName>/dev/xvd</AmazonDeviceName>
|
<AmazonDeviceName>/dev/xvd</AmazonDeviceName>
|
||||||
<DistributedInstall>n</DistributedInstall>
|
|
||||||
<LockFileDirectory>/var/lock/subsys</LockFileDirectory>
|
<LockFileDirectory>/var/lock/subsys</LockFileDirectory>
|
||||||
<ProfileFile>unassigned</ProfileFile>
|
<ProfileFile>unassigned</ProfileFile>
|
||||||
</Installation>
|
</Installation>
|
||||||
|
@ -464,7 +464,6 @@
|
|||||||
<JavaHome>unassigned</JavaHome>
|
<JavaHome>unassigned</JavaHome>
|
||||||
<JavaPath>unassigned</JavaPath>
|
<JavaPath>unassigned</JavaPath>
|
||||||
<MySQLPort>3306</MySQLPort>
|
<MySQLPort>3306</MySQLPort>
|
||||||
<DistributedInstall>y</DistributedInstall>
|
|
||||||
<LockFileDirectory>/var/lock/subsys</LockFileDirectory>
|
<LockFileDirectory>/var/lock/subsys</LockFileDirectory>
|
||||||
</Installation>
|
</Installation>
|
||||||
<ExtentMap>
|
<ExtentMap>
|
||||||
|
@ -5670,7 +5670,6 @@ int processCommand(string* arguments)
|
|||||||
int DataRedundancyNetworkType;
|
int DataRedundancyNetworkType;
|
||||||
int DataRedundancyStorageType;
|
int DataRedundancyStorageType;
|
||||||
string AmazonVPCNextPrivateIP;
|
string AmazonVPCNextPrivateIP;
|
||||||
string DistributedInstall = "n";
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -5680,7 +5679,6 @@ int processCommand(string* arguments)
|
|||||||
oam.getSystemConfig("DataRedundancyCopies", DataRedundancyCopies);
|
oam.getSystemConfig("DataRedundancyCopies", DataRedundancyCopies);
|
||||||
oam.getSystemConfig("DataRedundancyNetworkType", DataRedundancyNetworkType);
|
oam.getSystemConfig("DataRedundancyNetworkType", DataRedundancyNetworkType);
|
||||||
oam.getSystemConfig("DataRedundancyStorageType", DataRedundancyStorageType);
|
oam.getSystemConfig("DataRedundancyStorageType", DataRedundancyStorageType);
|
||||||
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
|
||||||
}
|
}
|
||||||
catch (...) {}
|
catch (...) {}
|
||||||
|
|
||||||
@ -5722,17 +5720,13 @@ int processCommand(string* arguments)
|
|||||||
if (arguments[3] != "" && (arguments[3][0] == 'y' || arguments[3][0] == 'Y'))
|
if (arguments[3] != "" && (arguments[3][0] == 'y' || arguments[3][0] == 'Y'))
|
||||||
storeHostnames = true;
|
storeHostnames = true;
|
||||||
|
|
||||||
//check for a non-distrubuted install setup, dont need password
|
if (arguments[5] != "")
|
||||||
if ( DistributedInstall != "y" )
|
password = arguments[5];
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (arguments[5] != "")
|
cout << endl;
|
||||||
password = arguments[5];
|
string prompt = "Enter the 'User' Password or 'ssh' if configured with ssh-keys";
|
||||||
else
|
password = dataPrompt(prompt);
|
||||||
{
|
|
||||||
cout << endl;
|
|
||||||
string prompt = "Enter the 'User' Password or 'ssh' if configured with ssh-keys";
|
|
||||||
password = dataPrompt(prompt);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arguments[6] != "")
|
if (arguments[6] != "")
|
||||||
@ -5757,17 +5751,13 @@ int processCommand(string* arguments)
|
|||||||
if (arguments[2] != "" && (arguments[2][0] == 'y' || arguments[2][0] == 'Y'))
|
if (arguments[2] != "" && (arguments[2][0] == 'y' || arguments[2][0] == 'Y'))
|
||||||
storeHostnames = true;
|
storeHostnames = true;
|
||||||
|
|
||||||
//check for a non-distrubuted install setup, dont need password
|
if (arguments[4] != "")
|
||||||
if ( DistributedInstall != "y" )
|
password = arguments[4];
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (arguments[4] != "")
|
cout << endl;
|
||||||
password = arguments[4];
|
string prompt = "Enter the 'User' Password or 'ssh' if configured with ssh-keys";
|
||||||
else
|
password = dataPrompt(prompt);
|
||||||
{
|
|
||||||
cout << endl;
|
|
||||||
string prompt = "Enter the 'User' Password or 'ssh' if configured with ssh-keys";
|
|
||||||
password = dataPrompt(prompt);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arguments[5] != "")
|
if (arguments[5] != "")
|
||||||
@ -9239,24 +9229,6 @@ void printSystemStatus()
|
|||||||
if ( MySQLRep == "y" )
|
if ( MySQLRep == "y" )
|
||||||
cout << "MariaDB ColumnStore Replication Feature is enabled" << endl;
|
cout << "MariaDB ColumnStore Replication Feature is enabled" << endl;
|
||||||
|
|
||||||
//display Distributed Install feature
|
|
||||||
if ( SingleServerInstall == "n" )
|
|
||||||
{
|
|
||||||
string DistributedInstall;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
|
||||||
|
|
||||||
if ( DistributedInstall == "y" )
|
|
||||||
cout << "MariaDB ColumnStore set for Distributed Install" << endl;
|
|
||||||
else
|
|
||||||
cout << "MariaDB ColumnStore set for Non-Distributed Install" << endl;
|
|
||||||
}
|
|
||||||
catch (...) {}
|
|
||||||
|
|
||||||
cout << endl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (exception& e)
|
catch (exception& e)
|
||||||
{
|
{
|
||||||
|
@ -175,7 +175,6 @@ string glusterInstalled = "n";
|
|||||||
string hadoopInstalled = "n";
|
string hadoopInstalled = "n";
|
||||||
string mysqlPort = oam::UnassignedName;
|
string mysqlPort = oam::UnassignedName;
|
||||||
string systemName;
|
string systemName;
|
||||||
string DistributedInstall = "n";
|
|
||||||
|
|
||||||
bool noPrompting = false;
|
bool noPrompting = false;
|
||||||
bool rootUser = true;
|
bool rootUser = true;
|
||||||
@ -187,8 +186,6 @@ bool mysqlRep = false;
|
|||||||
string MySQLRep = "y";
|
string MySQLRep = "y";
|
||||||
string PMwithUM = "n";
|
string PMwithUM = "n";
|
||||||
bool amazonInstall = false;
|
bool amazonInstall = false;
|
||||||
bool nonDistribute = false;
|
|
||||||
bool nonDistributeFlag = false;
|
|
||||||
bool single_server_quick_install = false;
|
bool single_server_quick_install = false;
|
||||||
bool multi_server_quick_install = false;
|
bool multi_server_quick_install = false;
|
||||||
bool amazon_quick_install = false;
|
bool amazon_quick_install = false;
|
||||||
@ -330,8 +327,6 @@ int main(int argc, char* argv[])
|
|||||||
cout << " -qm Quick Install - Multi Server" << endl;
|
cout << " -qm Quick Install - Multi Server" << endl;
|
||||||
cout << " -port MariaDB ColumnStore Port Address" << endl;
|
cout << " -port MariaDB ColumnStore Port Address" << endl;
|
||||||
cout << " -i Non-root Install directory, Only use for non-root installs" << endl;
|
cout << " -i Non-root Install directory, Only use for non-root installs" << endl;
|
||||||
cout << " -n Non-distributed install, meaning postConfigure will not install packages on remote nodes" << endl;
|
|
||||||
cout << " -d Distributed install, meaning postConfigure will install packages on remote nodes" << endl;
|
|
||||||
cout << " -sn System Name" << endl;
|
cout << " -sn System Name" << endl;
|
||||||
cout << " -pm-ip-addrs Performance Module IP Addresses xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" << endl;
|
cout << " -pm-ip-addrs Performance Module IP Addresses xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" << endl;
|
||||||
cout << " -um-ip-addrs User Module IP Addresses xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" << endl;
|
cout << " -um-ip-addrs User Module IP Addresses xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" << endl;
|
||||||
@ -405,16 +400,6 @@ int main(int argc, char* argv[])
|
|||||||
else if ( string("-u") == argv[i] )
|
else if ( string("-u") == argv[i] )
|
||||||
noPrompting = true;
|
noPrompting = true;
|
||||||
// for backward compatibility
|
// for backward compatibility
|
||||||
else if ( string("-n") == argv[i] )
|
|
||||||
{
|
|
||||||
nonDistribute = true;
|
|
||||||
nonDistributeFlag = true;
|
|
||||||
}
|
|
||||||
else if( string("-d") == argv[i] )
|
|
||||||
{
|
|
||||||
nonDistribute = false;
|
|
||||||
nonDistributeFlag = true;
|
|
||||||
}
|
|
||||||
else if( string("-port") == argv[i] )
|
else if( string("-port") == argv[i] )
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
@ -813,38 +798,6 @@ int main(int argc, char* argv[])
|
|||||||
{}
|
{}
|
||||||
}
|
}
|
||||||
|
|
||||||
//check for non-Distributed Install
|
|
||||||
if ( nonDistributeFlag )
|
|
||||||
{
|
|
||||||
if ( nonDistribute )
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
oam.setSystemConfig("DistributedInstall", "n");
|
|
||||||
}
|
|
||||||
catch(...) {}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
oam.setSystemConfig("DistributedInstall", "y");
|
|
||||||
}
|
|
||||||
catch(...) {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//get Distributed Install
|
|
||||||
try
|
|
||||||
{
|
|
||||||
DistributedInstall = sysConfig->getConfig(InstallSection, "DistributedInstall");
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{}
|
|
||||||
|
|
||||||
if ( DistributedInstall == "n" )
|
|
||||||
nonDistribute = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
|
||||||
if (single_server_quick_install)
|
if (single_server_quick_install)
|
||||||
@ -1555,9 +1508,6 @@ int main(int argc, char* argv[])
|
|||||||
if ( mysqlRep )
|
if ( mysqlRep )
|
||||||
cout << endl << "NOTE: MariaDB ColumnStore Replication Feature is enabled" << endl;
|
cout << endl << "NOTE: MariaDB ColumnStore Replication Feature is enabled" << endl;
|
||||||
|
|
||||||
if ( nonDistribute )
|
|
||||||
cout << endl << "NOTE: MariaDB ColumnStore Non-Distributed Install Feature is enabled" << endl;
|
|
||||||
|
|
||||||
//Write out Updated System Configuration File
|
//Write out Updated System Configuration File
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -3701,272 +3651,6 @@ int main(int argc, char* argv[])
|
|||||||
pmNumber > 1 )
|
pmNumber > 1 )
|
||||||
{
|
{
|
||||||
|
|
||||||
//skip interface with remote servers and perform install
|
|
||||||
if ( !nonDistribute )
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// perform remote install of other servers in the system
|
|
||||||
//
|
|
||||||
cout << endl << "===== System Installation =====" << endl << endl;
|
|
||||||
|
|
||||||
cout << "System Configuration is complete." << endl;
|
|
||||||
cout << "Performing System Installation." << endl;
|
|
||||||
|
|
||||||
SystemSoftware systemsoftware;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemSoftware(systemsoftware);
|
|
||||||
}
|
|
||||||
catch (exception& e)
|
|
||||||
{
|
|
||||||
cout << " ERROR: reading getSystemSoftware API" << endl;
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
string version = systemsoftware.Version + "-" + systemsoftware.Release;
|
|
||||||
|
|
||||||
string installType = "initial";
|
|
||||||
|
|
||||||
if ( EEPackageType == "rpm" )
|
|
||||||
{
|
|
||||||
cout << "Performing a MariaDB ColumnStore System install using RPM packages" << endl;
|
|
||||||
cout << "located in the " + HOME + " directory." << endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( EEPackageType == "binary" )
|
|
||||||
{
|
|
||||||
cout << "Performing a MariaDB ColumnStore System install using a Binary package" << endl;
|
|
||||||
cout << "located in the " + HOME + " directory." << endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cout << "Performing a MariaDB ColumnStore System install using using DEB packages" << endl;
|
|
||||||
cout << "located in the " + HOME + " directory." << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if pkgs are located in $HOME directory
|
|
||||||
if ( EEPackageType == "rpm")
|
|
||||||
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.rpm";
|
|
||||||
else if ( EEPackageType == "deb")
|
|
||||||
columnstorePackage = HOME + "/" + "mariadb-columnstore-*" + systemsoftware.Version + "*.deb";
|
|
||||||
else
|
|
||||||
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.bin.tar.gz";
|
|
||||||
|
|
||||||
if ( !pkgCheck(columnstorePackage) )
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
checkSystemMySQLPort(mysqlPort, sysConfig, USER, password, childmodulelist, IserverTypeInstall, pmwithum);
|
|
||||||
|
|
||||||
string AmazonInstall = "0";
|
|
||||||
|
|
||||||
if ( amazonInstall )
|
|
||||||
AmazonInstall = "1";
|
|
||||||
|
|
||||||
ChildModuleList::iterator list1 = childmodulelist.begin();
|
|
||||||
|
|
||||||
for (; list1 != childmodulelist.end() ; list1++)
|
|
||||||
{
|
|
||||||
string remoteModuleName = (*list1).moduleName;
|
|
||||||
string remoteModuleIP = (*list1).moduleIP;
|
|
||||||
string remoteHostName = (*list1).hostName;
|
|
||||||
string remoteModuleType = remoteModuleName.substr(0, MAX_MODULE_TYPE_SIZE);
|
|
||||||
|
|
||||||
string debug_logfile;
|
|
||||||
string logfile;
|
|
||||||
|
|
||||||
if ( remote_installer_debug == "1" )
|
|
||||||
{
|
|
||||||
logfile = tmpDir + "/";
|
|
||||||
logfile += remoteModuleName + "_" + EEPackageType + "_install.log";
|
|
||||||
debug_logfile = " > " + logfile;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( remoteModuleType == "um" ||
|
|
||||||
(remoteModuleType == "pm" && IserverTypeInstall == oam::INSTALL_COMBINE_DM_UM_PM) ||
|
|
||||||
(remoteModuleType == "pm" && pmwithum) )
|
|
||||||
{
|
|
||||||
cout << endl << "----- Performing Install on '" + remoteModuleName + " / " + remoteHostName + "' -----" << endl << endl;
|
|
||||||
|
|
||||||
if ( remote_installer_debug == "1" )
|
|
||||||
cout << "Install log file is located here: " + logfile << endl << endl;
|
|
||||||
|
|
||||||
if ( EEPackageType != "binary" )
|
|
||||||
{
|
|
||||||
string temppwprompt = pwprompt;
|
|
||||||
|
|
||||||
if ( pwprompt == " " )
|
|
||||||
temppwprompt = "none";
|
|
||||||
|
|
||||||
//run remote installer script
|
|
||||||
cmd = installDir + "/bin/package_installer.sh " + remoteModuleName + " " + remoteModuleIP + " " + password + " " + version + " initial " + AmazonInstall + " " + EEPackageType + " " + nodeps + " " + remote_installer_debug + " " + debug_logfile;
|
|
||||||
|
|
||||||
if ( thread_remote_installer )
|
|
||||||
{
|
|
||||||
thr_data[thread_id].command = cmd;
|
|
||||||
|
|
||||||
int status = pthread_create (&thr[thread_id], NULL, (void* (*)(void*)) &remoteInstallThread, &thr_data[thread_id]);
|
|
||||||
|
|
||||||
if ( status != 0 )
|
|
||||||
{
|
|
||||||
cout << "remoteInstallThread failed for " << remoteModuleName << ", exiting" << endl;
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
thread_id++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
cout << endl << "Error returned from package_installer.sh" << endl;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// do a binary package install
|
|
||||||
string binservertype = serverTypeInstall;
|
|
||||||
|
|
||||||
if ( pmwithum )
|
|
||||||
binservertype = "pmwithum";
|
|
||||||
|
|
||||||
cmd = installDir + "/bin/binary_installer.sh " + remoteModuleName + " " +
|
|
||||||
remoteModuleIP + " " + password + " " + columnstorePackage + " " + installType + " " + AmazonInstall + " " + remote_installer_debug +
|
|
||||||
" " + installDir + " " + debug_logfile;
|
|
||||||
|
|
||||||
if ( thread_remote_installer )
|
|
||||||
{
|
|
||||||
thr_data[thread_id].command = cmd;
|
|
||||||
|
|
||||||
int status = pthread_create (&thr[thread_id], NULL, (void* (*)(void*)) &remoteInstallThread, &thr_data[thread_id]);
|
|
||||||
|
|
||||||
if ( status != 0 )
|
|
||||||
{
|
|
||||||
cout << "remoteInstallThread failed for " << remoteModuleName << ", exiting" << endl;
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
thread_id++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
cout << endl << "Error returned from package_installer.sh" << endl;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( (remoteModuleType == "pm" && IserverTypeInstall != oam::INSTALL_COMBINE_DM_UM_PM) ||
|
|
||||||
(remoteModuleType == "pm" && !pmwithum ) )
|
|
||||||
{
|
|
||||||
cout << endl << "----- Performing Install on '" + remoteModuleName + " / " + remoteHostName + "' -----" << endl << endl;
|
|
||||||
|
|
||||||
if ( remote_installer_debug == "1" )
|
|
||||||
cout << "Install log file is located here: " + logfile << endl << endl;
|
|
||||||
|
|
||||||
if ( EEPackageType != "binary" )
|
|
||||||
{
|
|
||||||
//run remote installer script
|
|
||||||
cmd = installDir + "/bin/package_installer.sh " + remoteModuleName + " " + remoteModuleIP + " " + password + " " + version + " initial " + AmazonInstall + " " + EEPackageType + " " + nodeps + " " + remote_installer_debug + " " + debug_logfile;
|
|
||||||
|
|
||||||
if ( thread_remote_installer )
|
|
||||||
{
|
|
||||||
thr_data[thread_id].command = cmd;
|
|
||||||
|
|
||||||
int status = pthread_create (&thr[thread_id], NULL, (void* (*)(void*)) &remoteInstallThread, &thr_data[thread_id]);
|
|
||||||
|
|
||||||
if ( status != 0 )
|
|
||||||
{
|
|
||||||
cout << "remoteInstallThread failed for " << remoteModuleName << ", exiting" << endl;
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
thread_id++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
cout << endl << "Error returned from package_installer.sh" << endl;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// do a binary package install
|
|
||||||
string binservertype = serverTypeInstall;
|
|
||||||
|
|
||||||
if ( pmwithum )
|
|
||||||
binservertype = "pmwithum";
|
|
||||||
|
|
||||||
cmd = installDir + "/bin/binary_installer.sh " + remoteModuleName + " " + remoteModuleIP +
|
|
||||||
" " + password + " " + columnstorePackage + " " + installType + " " + AmazonInstall + " " +
|
|
||||||
remote_installer_debug + " " + installDir + " " +
|
|
||||||
debug_logfile;
|
|
||||||
|
|
||||||
if ( thread_remote_installer )
|
|
||||||
{
|
|
||||||
thr_data[thread_id].command = cmd;
|
|
||||||
|
|
||||||
int status = pthread_create (&thr[thread_id], NULL, (void* (*)(void*)) &remoteInstallThread, &thr_data[thread_id]);
|
|
||||||
|
|
||||||
if ( status != 0 )
|
|
||||||
{
|
|
||||||
cout << "remoteInstallThread failed for " << remoteModuleName << ", exiting" << endl;
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
thread_id++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
cout << endl << "Error returned from package_installer.sh" << endl;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( thread_remote_installer )
|
|
||||||
{
|
|
||||||
|
|
||||||
//wait until remove install Thread Count is at zero or hit timeout
|
|
||||||
cout << endl << "MariaDB ColumnStore Package being installed, please wait ...";
|
|
||||||
cout.flush();
|
|
||||||
|
|
||||||
/* block until all threads complete */
|
|
||||||
for (thread_id = 0; thread_id < (int) childmodulelist.size(); ++thread_id)
|
|
||||||
{
|
|
||||||
pthread_join(thr[thread_id], NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
cout << " DONE" << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//configure data redundancy
|
//configure data redundancy
|
||||||
if (DataRedundancy)
|
if (DataRedundancy)
|
||||||
{
|
{
|
||||||
@ -4070,8 +3754,7 @@ int main(int argc, char* argv[])
|
|||||||
else
|
else
|
||||||
cout << "The MariaDB ColumnStore system logging is setup and working on local server" << endl;
|
cout << "The MariaDB ColumnStore system logging is setup and working on local server" << endl;
|
||||||
|
|
||||||
if ( nonDistribute )
|
cout << endl << "MariaDB ColumnStore System Configuration and Installation is Completed" << endl;
|
||||||
cout << endl << "MariaDB ColumnStore System Configuration and Installation is Completed" << endl;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// startup MariaDB ColumnStore
|
// startup MariaDB ColumnStore
|
||||||
@ -4088,21 +3771,6 @@ int main(int argc, char* argv[])
|
|||||||
cout << "System Configuration is complete." << endl;
|
cout << "System Configuration is complete." << endl;
|
||||||
cout << "Performing System Installation." << endl;
|
cout << "Performing System Installation." << endl;
|
||||||
|
|
||||||
if (hdfs && !nonDistribute )
|
|
||||||
{
|
|
||||||
string postConfigurePsdhLog = tmpDir + "/postConfigure.pdsh.log";
|
|
||||||
|
|
||||||
cout << endl << "----- Starting MariaDB ColumnStore Service on all Modules -----" << endl << endl;
|
|
||||||
string cmd = "pdsh -a '" + installDir + "/bin/columnstore restart' > " + postConfigurePsdhLog + " 2>&1";
|
|
||||||
system(cmd.c_str());
|
|
||||||
|
|
||||||
if (oam.checkLogStatus(postConfigurePsdhLog, "exit") )
|
|
||||||
{
|
|
||||||
cout << endl << "ERROR: Starting MariaDB ColumnStore Service failue, check " + postConfigurePsdhLog + ". exit..." << endl;
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
//start MariaDB ColumnStore on local server
|
//start MariaDB ColumnStore on local server
|
||||||
cout << endl << "----- Starting MariaDB ColumnStore on local server -----" << endl << endl;
|
cout << endl << "----- Starting MariaDB ColumnStore on local server -----" << endl << endl;
|
||||||
|
@ -747,18 +747,6 @@ static void startMgrProcessThread()
|
|||||||
log.writeLog(__LINE__, "EXCEPTION ERROR on getSystemConfig: Caught unknown exception!", LOG_TYPE_ERROR);
|
log.writeLog(__LINE__, "EXCEPTION ERROR on getSystemConfig: Caught unknown exception!", LOG_TYPE_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
//get Distributed Install
|
|
||||||
string DistributedInstall = "n";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "ERROR: get DistributedInstall", LOG_TYPE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Send out a start service just to make sure Columnstore is runing on remote nodes
|
//Send out a start service just to make sure Columnstore is runing on remote nodes
|
||||||
//note this only works for systems with ssh-keys
|
//note this only works for systems with ssh-keys
|
||||||
/* for( unsigned int i = 0 ; i < systemmoduletypeconfig.moduletypeconfig.size(); i++)
|
/* for( unsigned int i = 0 ; i < systemmoduletypeconfig.moduletypeconfig.size(); i++)
|
||||||
|
@ -4889,18 +4889,6 @@ int ProcessManager::addModule(oam::DeviceNetworkList devicenetworklist, std::str
|
|||||||
|
|
||||||
pthread_mutex_lock(&THREAD_LOCK);
|
pthread_mutex_lock(&THREAD_LOCK);
|
||||||
|
|
||||||
//get Distributed Install
|
|
||||||
string DistributedInstall = "n";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: get DistributedInstall", LOG_TYPE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
int AddModuleCount = devicenetworklist.size();
|
int AddModuleCount = devicenetworklist.size();
|
||||||
DeviceNetworkList::iterator listPT = devicenetworklist.begin();
|
DeviceNetworkList::iterator listPT = devicenetworklist.begin();
|
||||||
string moduleType = (*listPT).DeviceName.substr(0, MAX_MODULE_TYPE_SIZE);
|
string moduleType = (*listPT).DeviceName.substr(0, MAX_MODULE_TYPE_SIZE);
|
||||||
@ -5020,51 +5008,6 @@ int ProcessManager::addModule(oam::DeviceNetworkList devicenetworklist, std::str
|
|||||||
else
|
else
|
||||||
calpontPackage = homedir + "/mariadb-columnstore*" + columnstore_version + "-" + columnstore_release + "*.bin.tar.gz";
|
calpontPackage = homedir + "/mariadb-columnstore*" + columnstore_version + "-" + columnstore_release + "*.bin.tar.gz";
|
||||||
|
|
||||||
if ( DistributedInstall == "y" )
|
|
||||||
{
|
|
||||||
//check if pkgs are located in /root directory
|
|
||||||
string cmd = "ls " + calpontPackage + " > /dev/null 2>&1";
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: Package not found: " + calpontPackage, LOG_TYPE_ERROR);
|
|
||||||
pthread_mutex_unlock(&THREAD_LOCK);
|
|
||||||
return API_FILE_OPEN_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - ColumnStore Package found:" + calpontPackage, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Verify Host IP and Password
|
|
||||||
//
|
|
||||||
|
|
||||||
listPT = devicenetworklist.begin();
|
|
||||||
|
|
||||||
for ( ; listPT != devicenetworklist.end() ; listPT++)
|
|
||||||
{
|
|
||||||
HostConfigList::iterator pt1 = (*listPT).hostConfigList.begin();
|
|
||||||
string newHostName = (*pt1).HostName;
|
|
||||||
|
|
||||||
if ( newHostName == oam::UnassignedName )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
string newIPAddr = (*pt1).IPAddr;
|
|
||||||
string cmd = installDir + "/bin/remote_command.sh " + newIPAddr + " " + password + " ls";
|
|
||||||
log.writeLog(__LINE__, cmd, LOG_TYPE_DEBUG);
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: Remote login test failed, Invalid IP / Password " + newIPAddr, LOG_TYPE_ERROR);
|
|
||||||
pthread_mutex_unlock(&THREAD_LOCK);
|
|
||||||
return API_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - Remote login test successful: " + newIPAddr, LOG_TYPE_DEBUG);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
//Get System Configuration file
|
//Get System Configuration file
|
||||||
//
|
//
|
||||||
@ -5518,481 +5461,13 @@ int ProcessManager::addModule(oam::DeviceNetworkList devicenetworklist, std::str
|
|||||||
string cmd = "rm -f " + homedir + "/.ssh/known_hosts > /dev/null 2>&1";
|
string cmd = "rm -f " + homedir + "/.ssh/known_hosts > /dev/null 2>&1";
|
||||||
system(cmd.c_str());
|
system(cmd.c_str());
|
||||||
|
|
||||||
if ( DistributedInstall == "y" )
|
listPT = devicenetworklist.begin();
|
||||||
|
|
||||||
|
for ( ; listPT != devicenetworklist.end() ; listPT++)
|
||||||
{
|
{
|
||||||
|
string moduleName = (*listPT).DeviceName;
|
||||||
|
|
||||||
//PMwithUM config
|
processManager.configureModule(moduleName);
|
||||||
string PMwithUM = "n";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig( "PMwithUM", PMwithUM);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
PMwithUM = "n";
|
|
||||||
}
|
|
||||||
|
|
||||||
string version = systemsoftware.Version + "-" + systemsoftware.Release;
|
|
||||||
|
|
||||||
string AmazonInstall = "0";
|
|
||||||
|
|
||||||
if ( amazon )
|
|
||||||
AmazonInstall = "1";
|
|
||||||
|
|
||||||
//setup and push custom OS files
|
|
||||||
listPT = devicenetworklist.begin();
|
|
||||||
|
|
||||||
for ( ; listPT != devicenetworklist.end() ; listPT++)
|
|
||||||
{
|
|
||||||
string remoteModuleName = (*listPT).DeviceName;
|
|
||||||
string remoteModuleType = remoteModuleName.substr(0, MAX_MODULE_TYPE_SIZE);
|
|
||||||
HostConfigList::iterator pt1 = (*listPT).hostConfigList.begin();
|
|
||||||
string remoteModuleIP = (*pt1).IPAddr;
|
|
||||||
string remoteHostName = (*pt1).HostName;
|
|
||||||
|
|
||||||
//create and copy custom OS
|
|
||||||
//run remote installer script
|
|
||||||
string dir = installDir + "/local/etc/" + remoteModuleName;
|
|
||||||
|
|
||||||
string cmd = "mkdir " + dir + " > /dev/null 2>&1";
|
|
||||||
system(cmd.c_str());
|
|
||||||
|
|
||||||
if ( remoteModuleType == "um" )
|
|
||||||
{
|
|
||||||
cmd = "cp " + installDir + "/local/etc/um1/* " + dir + "/.";
|
|
||||||
system(cmd.c_str());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( remoteModuleType == "pm")
|
|
||||||
{
|
|
||||||
cmd = "cp " + installDir + "/local/etc/pm1/* " + dir + "/.";
|
|
||||||
system(cmd.c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - created directory and custom OS files for " + remoteModuleName, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
//create module file
|
|
||||||
if ( !createModuleFile(remoteModuleName) )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: createModuleFile failed", LOG_TYPE_ERROR);
|
|
||||||
pthread_mutex_unlock(&THREAD_LOCK);
|
|
||||||
return API_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - create module file for " + remoteModuleName, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
if ( remoteModuleType == "pm" )
|
|
||||||
{
|
|
||||||
//setup Standby OAM Parent, if needed
|
|
||||||
if ( config.OAMStandbyName() == oam::UnassignedName )
|
|
||||||
setStandbyModule(remoteModuleName, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//default
|
|
||||||
string binaryInstallDir = installDir;
|
|
||||||
|
|
||||||
//run installer on remote module
|
|
||||||
if ( remoteModuleType == "um" ||
|
|
||||||
( remoteModuleType == "pm" && config.ServerInstallType() == oam::INSTALL_COMBINE_DM_UM_PM ) ||
|
|
||||||
( remoteModuleType == "pm" && PMwithUM == "y" ) )
|
|
||||||
{
|
|
||||||
//run remote installer script
|
|
||||||
if ( packageType != "binary" )
|
|
||||||
{
|
|
||||||
string logFile = tmpLogDir + "/" + remoteModuleName + "_user_installer.log";
|
|
||||||
log.writeLog(__LINE__, "addModule - user_installer run for " + remoteModuleName, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
string cmd = installDir + "/bin/package_installer.sh " + remoteModuleName + " " + remoteModuleIP + " " + password + " " + version + " initial " + AmazonInstall + " " + packageType + " --nodeps 1 > " + logFile;
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule cmd: " + cmd, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
bool passed = false;
|
|
||||||
|
|
||||||
for ( int retry = 0 ; retry < 5 ; retry++ )
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
// if log file size is zero, retry
|
|
||||||
ifstream in(logFile.c_str());
|
|
||||||
in.seekg(0, std::ios::end);
|
|
||||||
int size = in.tellg();
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed, retry", LOG_TYPE_DEBUG);
|
|
||||||
sleep(5);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
passed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !passed )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed", LOG_TYPE_ERROR);
|
|
||||||
|
|
||||||
DeviceNetworkList devicenetworklistR;
|
|
||||||
DeviceNetworkConfig devicenetworkconfigR;
|
|
||||||
HostConfig hostconfig;
|
|
||||||
|
|
||||||
devicenetworkconfigR.DeviceName = remoteModuleName;
|
|
||||||
|
|
||||||
if (cloud == "amazon-vpc")
|
|
||||||
hostconfig.IPAddr = remoteModuleIP;
|
|
||||||
else
|
|
||||||
hostconfig.IPAddr = oam::UnassignedName;
|
|
||||||
|
|
||||||
hostconfig.HostName = oam::UnassignedName;
|
|
||||||
hostconfig.NicID = 1;
|
|
||||||
devicenetworkconfigR.hostConfigList.push_back(hostconfig);
|
|
||||||
|
|
||||||
devicenetworklistR.push_back(devicenetworkconfigR);
|
|
||||||
|
|
||||||
processManager.removeModule(devicenetworklistR, false);
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - Remove Module Completed", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&THREAD_LOCK);
|
|
||||||
cmd = "/bin/cp -f " + logFile + " " + logFile + "failed";
|
|
||||||
system(cmd.c_str());
|
|
||||||
processManager.setModuleState(remoteModuleName, oam::FAILED);
|
|
||||||
return API_FAILURE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// do a binary package install
|
|
||||||
string logFile = tmpLogDir + "/" + remoteModuleName + "_binary_installer.log";
|
|
||||||
log.writeLog(__LINE__, "addModule - binary_installer run for " + remoteModuleName, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
string binservertype = oam.itoa(config.ServerInstallType());
|
|
||||||
|
|
||||||
if ( PMwithUM == "y" )
|
|
||||||
binservertype = "pmwithum";
|
|
||||||
|
|
||||||
string cmd = installDir + "/bin/binary_installer.sh " + remoteModuleName + " " + remoteModuleIP + " " + password + " " + calpontPackage + " initial " + AmazonInstall + " 1 " + binaryInstallDir + " > " + logFile;
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - " + cmd, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
bool passed = false;
|
|
||||||
|
|
||||||
for ( int retry = 0 ; retry < 5 ; retry++ )
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
// if log file size is zero, retry
|
|
||||||
ifstream in(logFile.c_str());
|
|
||||||
in.seekg(0, std::ios::end);
|
|
||||||
int size = in.tellg();
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed, retry", LOG_TYPE_DEBUG);
|
|
||||||
sleep(5);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
passed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !passed )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed, retry", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
DeviceNetworkList devicenetworklistR;
|
|
||||||
DeviceNetworkConfig devicenetworkconfigR;
|
|
||||||
HostConfig hostconfig;
|
|
||||||
|
|
||||||
devicenetworkconfigR.DeviceName = remoteModuleName;
|
|
||||||
|
|
||||||
if (cloud == "amazon-vpc")
|
|
||||||
hostconfig.IPAddr = remoteModuleIP;
|
|
||||||
else
|
|
||||||
hostconfig.IPAddr = oam::UnassignedName;
|
|
||||||
|
|
||||||
hostconfig.HostName = oam::UnassignedName;
|
|
||||||
hostconfig.NicID = 1;
|
|
||||||
devicenetworkconfigR.hostConfigList.push_back(hostconfig);
|
|
||||||
|
|
||||||
devicenetworklistR.push_back(devicenetworkconfigR);
|
|
||||||
|
|
||||||
processManager.removeModule(devicenetworklistR, false);
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - Remove Module Completed", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&THREAD_LOCK);
|
|
||||||
cmd = "/bin/cp -f " + logFile + " " + logFile + "failed";
|
|
||||||
system(cmd.c_str());
|
|
||||||
processManager.setModuleState(remoteModuleName, oam::FAILED);
|
|
||||||
return API_FAILURE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( remoteModuleType == "pm" )
|
|
||||||
{
|
|
||||||
if ( packageType != "binary" )
|
|
||||||
{
|
|
||||||
string logFile = tmpLogDir + "/" + remoteModuleName + "_package_installer.log";
|
|
||||||
log.writeLog(__LINE__, "addModule - package_installer run for " + remoteModuleName, LOG_TYPE_DEBUG);
|
|
||||||
string cmd = installDir + "/bin/package_installer.sh " + remoteModuleName + " " + remoteModuleIP + " " + password + " " + version + " initial " + AmazonInstall + " " + packageType + + " --nodeps 1 > " + logFile;
|
|
||||||
log.writeLog(__LINE__, "addModule cmd: " + cmd, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
bool passed = false;
|
|
||||||
|
|
||||||
for ( int retry = 0 ; retry < 5 ; retry++ )
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
// if log file size is zero, retry
|
|
||||||
ifstream in(logFile.c_str());
|
|
||||||
in.seekg(0, std::ios::end);
|
|
||||||
int size = in.tellg();
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed, retry", LOG_TYPE_DEBUG);
|
|
||||||
sleep(5);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
passed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !passed )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed, retry", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
DeviceNetworkList devicenetworklistR;
|
|
||||||
DeviceNetworkConfig devicenetworkconfigR;
|
|
||||||
HostConfig hostconfig;
|
|
||||||
|
|
||||||
devicenetworkconfigR.DeviceName = remoteModuleName;
|
|
||||||
|
|
||||||
if (cloud == "amazon-vpc")
|
|
||||||
hostconfig.IPAddr = remoteModuleIP;
|
|
||||||
else
|
|
||||||
hostconfig.IPAddr = oam::UnassignedName;
|
|
||||||
|
|
||||||
hostconfig.HostName = oam::UnassignedName;
|
|
||||||
hostconfig.NicID = 1;
|
|
||||||
devicenetworkconfigR.hostConfigList.push_back(hostconfig);
|
|
||||||
|
|
||||||
devicenetworklistR.push_back(devicenetworkconfigR);
|
|
||||||
|
|
||||||
processManager.removeModule(devicenetworklistR, false);
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - Remove Module Completed", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&THREAD_LOCK);
|
|
||||||
cmd = "/bin/cp -f " + logFile + " " + logFile + "failed";
|
|
||||||
system(cmd.c_str());
|
|
||||||
processManager.setModuleState(remoteModuleName, oam::FAILED);
|
|
||||||
return API_FAILURE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// do a binary package install
|
|
||||||
string logFile = tmpLogDir + "/" + remoteModuleName + "_binary_installer.log";
|
|
||||||
log.writeLog(__LINE__, "addModule - binary_installer run for " + remoteModuleName, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
string binservertype = oam.itoa(config.ServerInstallType());
|
|
||||||
|
|
||||||
if ( PMwithUM == "y" )
|
|
||||||
binservertype = "pmwithum";
|
|
||||||
|
|
||||||
string cmd = installDir + "/bin/binary_installer.sh " + remoteModuleName + " " + remoteModuleIP + " " + password + " " + calpontPackage + " initial " + AmazonInstall + " 1 " + binaryInstallDir + " > " + logFile;
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - " + cmd, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
bool passed = false;
|
|
||||||
|
|
||||||
for ( int retry = 0 ; retry < 5 ; retry++ )
|
|
||||||
{
|
|
||||||
int rtnCode = system(cmd.c_str());
|
|
||||||
|
|
||||||
if (WEXITSTATUS(rtnCode) != 0)
|
|
||||||
{
|
|
||||||
// if log file size is zero, retry
|
|
||||||
ifstream in(logFile.c_str());
|
|
||||||
in.seekg(0, std::ios::end);
|
|
||||||
int size = in.tellg();
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed, retry", LOG_TYPE_DEBUG);
|
|
||||||
sleep(5);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
passed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !passed )
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: " + logFile + " failed, retry", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
DeviceNetworkList devicenetworklistR;
|
|
||||||
DeviceNetworkConfig devicenetworkconfigR;
|
|
||||||
HostConfig hostconfig;
|
|
||||||
|
|
||||||
devicenetworkconfigR.DeviceName = remoteModuleName;
|
|
||||||
|
|
||||||
if (cloud == "amazon-vpc")
|
|
||||||
hostconfig.IPAddr = remoteModuleIP;
|
|
||||||
else
|
|
||||||
hostconfig.IPAddr = oam::UnassignedName;
|
|
||||||
|
|
||||||
hostconfig.HostName = oam::UnassignedName;
|
|
||||||
hostconfig.NicID = 1;
|
|
||||||
devicenetworkconfigR.hostConfigList.push_back(hostconfig);
|
|
||||||
|
|
||||||
devicenetworklistR.push_back(devicenetworkconfigR);
|
|
||||||
|
|
||||||
processManager.removeModule(devicenetworklistR, false);
|
|
||||||
|
|
||||||
log.writeLog(__LINE__, "addModule - Remove Module Completed", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&THREAD_LOCK);
|
|
||||||
cmd = "/bin/cp -f " + logFile + " " + logFile + "failed";
|
|
||||||
system(cmd.c_str());
|
|
||||||
processManager.setModuleState(remoteModuleName, oam::FAILED);
|
|
||||||
return API_FAILURE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//distribute config file
|
|
||||||
distributeConfigFile("system");
|
|
||||||
distributeConfigFile("system", "ProcessConfig.xml");
|
|
||||||
|
|
||||||
//Start new modules by starting up local Process-Monitor
|
|
||||||
listPT = devicenetworklist.begin();
|
|
||||||
|
|
||||||
for ( ; listPT != devicenetworklist.end() ; listPT++)
|
|
||||||
{
|
|
||||||
string remoteModuleName = (*listPT).DeviceName;
|
|
||||||
|
|
||||||
if (manualFlag)
|
|
||||||
//set new module to disable state if manual add
|
|
||||||
disableModule(remoteModuleName, true);
|
|
||||||
|
|
||||||
HostConfigList::iterator pt1 = (*listPT).hostConfigList.begin();
|
|
||||||
string remoteModuleIP = (*pt1).IPAddr;
|
|
||||||
string remoteHostName = (*pt1).HostName;
|
|
||||||
|
|
||||||
// add to monitor list
|
|
||||||
moduleInfoList.insert(moduleList::value_type(remoteModuleName, 0));
|
|
||||||
|
|
||||||
if (amazon)
|
|
||||||
{
|
|
||||||
//check and assign Elastic IP Address
|
|
||||||
int AmazonElasticIPCount = 0;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig("AmazonElasticIPCount", AmazonElasticIPCount);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
AmazonElasticIPCount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( int id = 1 ; id < AmazonElasticIPCount + 1 ; id++ )
|
|
||||||
{
|
|
||||||
string AmazonElasticModule = "AmazonElasticModule" + oam.itoa(id);
|
|
||||||
string ELmoduleName;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig(AmazonElasticModule, ELmoduleName);
|
|
||||||
}
|
|
||||||
catch (...) {}
|
|
||||||
|
|
||||||
if ( ELmoduleName == remoteModuleName )
|
|
||||||
{
|
|
||||||
//match found assign Elastic IP Address
|
|
||||||
string AmazonElasticIPAddr = "AmazonElasticIPAddr" + oam.itoa(id);
|
|
||||||
string ELIPaddress;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig(AmazonElasticIPAddr, ELIPaddress);
|
|
||||||
}
|
|
||||||
catch (...) {}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.assignElasticIP(remoteHostName, ELIPaddress);
|
|
||||||
log.writeLog(__LINE__, "addModule - Set Elastic IP Address: " + remoteModuleName + "/" + ELIPaddress, LOG_TYPE_DEBUG);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - Failed to Set Elastic IP Address: " + remoteModuleName + "/" + ELIPaddress, LOG_TYPE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
listPT = devicenetworklist.begin();
|
|
||||||
|
|
||||||
for ( ; listPT != devicenetworklist.end() ; listPT++)
|
|
||||||
{
|
|
||||||
string moduleName = (*listPT).DeviceName;
|
|
||||||
|
|
||||||
processManager.configureModule(moduleName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
listPT = devicenetworklist.begin();
|
|
||||||
|
|
||||||
for ( ; listPT != devicenetworklist.end() ; listPT++)
|
|
||||||
{
|
|
||||||
string moduleName = (*listPT).DeviceName;
|
|
||||||
|
|
||||||
processManager.configureModule(moduleName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//delay to give time for ProcMon to start after the config is sent and procmon restarts
|
//delay to give time for ProcMon to start after the config is sent and procmon restarts
|
||||||
|
@ -1026,59 +1026,6 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO
|
|||||||
|
|
||||||
log.writeLog(__LINE__, "STOPALL: ACK back to ProcMgr, return status = " + oam.itoa((int) requestStatus));
|
log.writeLog(__LINE__, "STOPALL: ACK back to ProcMgr, return status = " + oam.itoa((int) requestStatus));
|
||||||
|
|
||||||
//Remove MariaDB ColumnStore PGK on REMOVE option if distubuted install
|
|
||||||
string DistributedInstall = "n";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: get DistributedInstall", LOG_TYPE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( actIndicator == oam::REMOVE && ( DistributedInstall == "y" ))
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "STOPALL: uninstall MariaDB ColumnStore PGKs", LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
if ( config.moduleType() == "um" )
|
|
||||||
{
|
|
||||||
system("rpm -e --nodeps $(rpm -qa | grep '^mariadb-columnstore')");
|
|
||||||
system("dpkg -P $(dpkg --get-selections | grep '^mariadb-columnstore')");
|
|
||||||
}
|
|
||||||
else // pm
|
|
||||||
{
|
|
||||||
//Flush the cache
|
|
||||||
cacheutils::flushPrimProcCache();
|
|
||||||
cacheutils::dropPrimProcFdCache();
|
|
||||||
flushInodeCache();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string DBRootStorageType = "internal";
|
|
||||||
oam.getSystemConfig("DBRootStorageType", DBRootStorageType);
|
|
||||||
|
|
||||||
if ( DBRootStorageType == "external" )
|
|
||||||
{
|
|
||||||
string cmd = SUDO + "umount " + startup::StartUp::installDir() + "/data* -l > /dev/null 2>&1";
|
|
||||||
|
|
||||||
system(cmd.c_str());
|
|
||||||
sleep(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...) {}
|
|
||||||
|
|
||||||
system("rpm -e --nodeps $(rpm -qa | grep '^mariadb-columnstore')");
|
|
||||||
system("dpkg -P $(dpkg --get-selections | grep '^mariadb-columnstore')");
|
|
||||||
}
|
|
||||||
|
|
||||||
// should get here is packages get removed correctly
|
|
||||||
string cmd = startup::StartUp::installDir() + "/bin/columnstore stop > /dev/null 2>&1";
|
|
||||||
system(cmd.c_str());
|
|
||||||
exit (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2149,26 +2149,6 @@ int main(int argc, char* argv[])
|
|||||||
catch (...)
|
catch (...)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string DistributedInstall = sysConfigOld->getConfig("Installation", "DistributedInstall");
|
|
||||||
|
|
||||||
if ( !DistributedInstall.empty() )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
sysConfigNew->setConfig("Installation", "DistributedInstall", DistributedInstall);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
cout << "ERROR: Problem setting DistributedInstall in the Calpont System Configuration file" << endl;
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
// add entries from tuning guide
|
// add entries from tuning guide
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user