/*############################################################################## Copyright (C) 2011 HPCC Systems. All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . ############################################################################## */ #include "jexcept.hpp" #include "jfile.hpp" #include "jptree.hpp" #include "xslprocessor.hpp" #include "thorconfiggenengine.hpp" //--------------------------------------------------------------------------- // CThorConfigGenEngine //--------------------------------------------------------------------------- CThorConfigGenEngine::CThorConfigGenEngine(IEnvDeploymentEngine& envDepEngine, IDeploymentCallback& callback, IPropertyTree& process, const char* inputDir, const char* outputDir) : CConfigGenEngine(envDepEngine, callback, process, inputDir, outputDir) { } //--------------------------------------------------------------------------- // checkInstance //--------------------------------------------------------------------------- void CThorConfigGenEngine::check() { m_instanceCheck = false; CDeploymentEngine::check(); const char* dali = m_process.queryProp("@daliServers"); if (!dali || !*dali ) throw MakeStringException(0, "No dali server is defined for thor %s", m_process.queryProp("@name")); } //--------------------------------------------------------------------------- // copyInstallFiles //--------------------------------------------------------------------------- void CThorConfigGenEngine::copyInstallFiles(IPropertyTree& instanceNode, const char* destPath) { // Copy install files CDeploymentEngine::copyInstallFiles(instanceNode, destPath); EnvMachineOS os = m_envDepEngine.lookupMachineOS(instanceNode); if (!m_compare) ensurePath(destPath); StringBuffer sbDestDir(StringBuffer(destPath).append(m_process.queryProp("@name")).append(PATHSEPCHAR)); // Create slaves and spares files writeComputerFile("./ThorSlaveProcess", StringBuffer(sbDestDir).append("slaves").str(), os); writeComputerFile("./ThorSpareProcess", StringBuffer(sbDestDir).append("spares").str(), os); } //--------------------------------------------------------------------------- // writeComputerFile //--------------------------------------------------------------------------- void CThorConfigGenEngine::writeComputerFile(const char* type, const char* filename, EnvMachineOS os/*=MachineOsUnknown*/) { StringBuffer str; Owned iter = m_process.getElements(type); for(iter->first(); iter->isValid(); iter->next()) { StringAttr netAddress; if (m_envDepEngine.lookupNetAddress(netAddress, iter->query().queryProp("@computer")).length() > 0) str.appendf("%s\n", netAddress.get()); } writeFile(filename, str.str(), os); }