2017-09-30 Fred Gleason <fredg@paravelsystems.com>

* Added static 'RDSvc::create()' and 'RDSvc::remove()' methods.
	* Implemented 'CreateService=' and 'NewServiceTemplate=' parameters
	in the [Provisioning] section of rd.conf(5).
This commit is contained in:
Fred Gleason
2017-09-30 20:14:42 -04:00
parent f17a4ca509
commit 2992fcd5c9
12 changed files with 208 additions and 58 deletions

View File

@@ -46,6 +46,7 @@
#include <rdescape_string.h>
#include <rddebug.h>
#include <rdcmd_switch.h>
#include <rdsvc.h>
#include <rdsystem.h>
#include <cae_socket.h>
@@ -581,6 +582,9 @@ void MainObject::InitProvisioning() const
RDSqlQuery *q;
QString err_msg;
//
// Provision a Host
//
if(rd_config->provisioningCreateHost()) {
if(!rd_config->provisioningHostTemplate().isEmpty()) {
sql=QString("select NAME from STATIONS where ")+
@@ -600,6 +604,29 @@ void MainObject::InitProvisioning() const
delete q;
}
}
//
// Provision a Service
//
if(rd_config->provisioningCreateService()) {
if(!rd_config->provisioningServiceTemplate().isEmpty()) {
sql=QString("select NAME from SERVICES where ")+
"NAME=\""+RDEscapeString(rd_config->stationName())+"\"";
q=new RDSqlQuery(sql);
if(!q->first()) {
if(RDSvc::create(rd_config->stationName(),&err_msg,rd_config->provisioningServiceTemplate())) {
syslog(LOG_INFO,"created new service entry \"%s\"",
(const char *)rd_config->stationName());
}
else {
fprintf(stderr,"caed: unable to provision service [%s]\n",
(const char *)err_msg);
exit(256);
}
}
delete q;
}
}
}