Skip to content

Commit 1fdcdaf

Browse files
authored
Merge pull request #835 from signal18/provision
Fix failed provision in opensvc for proxies
2 parents 4495117 + cf62bb5 commit 1fdcdaf

File tree

6 files changed

+73
-43
lines changed

6 files changed

+73
-43
lines changed

cluster/cluster.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ func (cluster *Cluster) InitFromConf() {
465465
cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral, config.LvlErr, "Could not set proxy list %s", err)
466466
}
467467
//Loading configuration compliances
468-
err = cluster.Configurator.Init(cluster.Conf)
468+
err = cluster.Configurator.Init(cluster.Conf, cluster.Logrus)
469469
if err != nil {
470470
cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral, config.LvlErr, "Could not initialize configurator %s", err)
471471
log.Fatal("missing important file, giving up")

cluster/cluster_set.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,8 @@ func (cluster *Cluster) SetClusterCredentialsFromConfig() {
684684
cluster.SetClusterMonitorCredentialsFromConfig()
685685
cluster.SetClusterReplicationCredentialsFromConfig()
686686
cluster.SetClusterProxyCredentialsFromConfig()
687-
cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModConfigLoad, config.LvlDbg, "Reveal Secrets %v", cluster.Conf.Secrets)
687+
// This is not needed! Only for debug!
688+
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModConfigLoad, config.LvlDbg, "Reveal Secrets %v", cluster.Conf.Secrets)
688689
}
689690

690691
func (cluster *Cluster) SetClusterProxyCredentialsFromConfig() {

cluster/cluster_tgl.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func (cluster *Cluster) SwitchInteractive() {
159159

160160
func (cluster *Cluster) SwitchReadOnly() {
161161
cluster.Conf.ReadOnly = !cluster.Conf.ReadOnly
162-
cluster.Configurator.Init(cluster.Conf)
162+
cluster.Configurator.Init(cluster.Conf, cluster.Logrus)
163163
}
164164

165165
func (cluster *Cluster) SwitchRplChecks() {
@@ -331,12 +331,12 @@ func (cluster *Cluster) SwitchProxyServersBackendCompression() {
331331

332332
func (cluster *Cluster) SwitchProxyServersReadOnMaster() {
333333
cluster.Conf.PRXServersReadOnMaster = !cluster.Conf.PRXServersReadOnMaster
334-
cluster.Configurator.Init(cluster.Conf)
334+
cluster.Configurator.Init(cluster.Conf, cluster.Logrus)
335335
}
336336

337337
func (cluster *Cluster) SwitchProxyServersReadOnMasterNoSlave() {
338338
cluster.Conf.PRXServersReadOnMasterNoSlave = !cluster.Conf.PRXServersReadOnMasterNoSlave
339-
cluster.Configurator.Init(cluster.Conf)
339+
cluster.Configurator.Init(cluster.Conf, cluster.Logrus)
340340
}
341341

342342
func (cluster *Cluster) SwitchProxySQL() {

cluster/configurator/configurator.go

+62-36
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ import (
2222
v3 "github.com/signal18/replication-manager/repmanv3"
2323
"github.com/signal18/replication-manager/share"
2424
"github.com/signal18/replication-manager/utils/misc"
25+
"github.com/sirupsen/logrus"
2526
)
2627

2728
type Configurator struct {
2829
ClusterConfig config.Config `json:"-"`
2930
ClusterConfigDiscover config.Config `json:"-"`
3031
DBModule config.Compliance `json:"-"`
3132
ProxyModule config.Compliance `json:"-"`
33+
Logger *logrus.Logger `json:"-"`
3234
ConfigDBTags []v3.Tag `json:"configTags"` //from module
3335
ConfigPrxTags []v3.Tag `json:"configPrxTags"` //from module
3436
DBTags []string `json:"dbServersTags"` //from conf
@@ -38,8 +40,9 @@ type Configurator struct {
3840
WorkingDir string `json:"-"` // working dir is the place to generate the all cluster config
3941
}
4042

41-
func (configurator *Configurator) Init(conf config.Config) error {
43+
func (configurator *Configurator) Init(conf config.Config, logger *logrus.Logger) error {
4244
var err error
45+
configurator.SetLogger(logger)
4346
configurator.SetConfig(conf)
4447

4548
err = configurator.LoadDBModules()
@@ -472,10 +475,9 @@ func (configurator *Configurator) GenerateProxyConfig(Datadir string, ClusterDir
472475
var f Link
473476
json.Unmarshal([]byte(variable.Value), &f)
474477
fpath := strings.Replace(f.Symlink, "%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%", Datadir+"/init", -1)
475-
/* if proxy.ClusterGroup.Conf.LogLevel > 2 {
476-
cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Config symlink %s", fpath)
477-
}
478-
*/
478+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
479+
configurator.Logger.Debugf("Config symlink %s", fpath)
480+
}
479481
os.Symlink(f.Target, fpath)
480482

481483
}
@@ -538,6 +540,7 @@ func (configurator *Configurator) GenerateDatabaseConfig(Datadir string, Cluster
538540
} else {
539541
os.RemoveAll(Datadir + "/init")
540542
}
543+
541544
for _, rule := range configurator.DBModule.Rulesets {
542545
if strings.Contains(rule.Name, "mariadb.svc.mrm.db.cnf") {
543546

@@ -564,9 +567,9 @@ func (configurator *Configurator) GenerateDatabaseConfig(Datadir string, Cluster
564567
var f Link
565568
json.Unmarshal([]byte(variable.Value), &f)
566569
fpath := strings.Replace(f.Symlink, "%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%", Datadir+"/init", -1)
567-
/* if configurator.ClusterConfig.LogLevel > 2 {
568-
cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Config symlink %s", fpath)
569-
} */
570+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
571+
configurator.Logger.Debugf("Config symlink %s", fpath)
572+
}
570573
os.Symlink(f.Target, fpath)
571574
// keys := strings.Split(variable.Value, " ")
572575
}
@@ -609,18 +612,26 @@ func (configurator *Configurator) GetDatabaseDynamicConfig(filter string, cmd st
609612
for _, variable := range rule.Variables {
610613
if variable.Class == "symlink" {
611614
if configurator.IsFilterInDBTags(rule.Filter) || rule.Name == "mariadb.svc.mrm.db.cnf.generic" {
612-
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "content %s %s", filter, rule.Filter)
615+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
616+
configurator.Logger.Debugf("content %s %s", filter, rule.Filter)
617+
}
613618
if filter == "" || strings.Contains(rule.Filter, filter) {
614619
var f Link
615620
json.Unmarshal([]byte(variable.Value), &f)
616621
fpath := Datadir + "/init/etc/mysql/conf.d/"
617-
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Config symlink %s , %s", fpath, f.Target)
622+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
623+
configurator.Logger.Debugf("Config symlink %s , %s", fpath, f.Target)
624+
}
625+
618626
file, err := os.Open(fpath + f.Target)
619627
if err == nil {
620628
r, _ := regexp.Compile(cmd)
621629
scanner := bufio.NewScanner(file)
622630
for scanner.Scan() {
623-
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "content: %s", scanner.Text())
631+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
632+
configurator.Logger.Debugf("content: %s", scanner.Text())
633+
}
634+
624635
if r.MatchString(scanner.Text()) {
625636
mydynamicconf = mydynamicconf + strings.Split(scanner.Text(), ":")[1]
626637
}
@@ -651,12 +662,16 @@ func (configurator *Configurator) GetDatabaseConfig(filter string, datadir strin
651662
for _, variable := range rule.Variables {
652663
if variable.Class == "symlink" {
653664
if configurator.IsFilterInDBTags(rule.Filter) || rule.Name == "mariadb.svc.mrm.db.cnf.generic" {
654-
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "content %s %s", filter, rule.Filter)
665+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
666+
configurator.Logger.Debugf("content %s %s", filter, rule.Filter)
667+
}
655668
if filter == "" || strings.Contains(rule.Filter, filter) {
656669
var f Link
657670
json.Unmarshal([]byte(variable.Value), &f)
658671
fpath := datadir + "/init/etc/mysql/conf.d/"
659-
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Config symlink %s , %s", fpath, f.Target)
672+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
673+
configurator.Logger.Debugf("Config symlink %s , %s", fpath, f.Target)
674+
}
660675
file, err := os.Open(fpath + f.Target)
661676
if err == nil {
662677
scanner := bufio.NewScanner(file)
@@ -689,10 +704,10 @@ func (configurator *Configurator) WriteDatabaseConfigFile(Datadir string, Remote
689704
json.Unmarshal([]byte(variable.Value), &f)
690705
fpath := strings.Replace(f.Path, "%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%", Datadir+"/init", -1)
691706
dir := filepath.Dir(fpath)
692-
/* if server.ClusterGroup.Conf.LogLevel > 2 {
693-
cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Config create %s", fpath)
694-
}
695-
*/
707+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
708+
configurator.Logger.Debugf("Config create %s", fpath)
709+
}
710+
696711
// create directory
697712
if _, err := os.Stat(dir); os.IsNotExist(err) {
698713
err := os.MkdirAll(dir, os.FileMode(0775))
@@ -740,7 +755,9 @@ func (configurator *Configurator) WriteDatabaseConfigFile(Datadir string, Remote
740755
outFile.Close()
741756
return fmt.Errorf("Compliance writing file failed %q: %s", fpath, err)
742757
}
743-
//cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Variable name %s", variable.Name)
758+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
759+
configurator.Logger.Debugf("Variable name %s", variable.Name)
760+
}
744761
}
745762

746763
}
@@ -759,35 +776,44 @@ func (configurator *Configurator) WriteProxyConfigFile(Datadir string, TemplateE
759776
json.Unmarshal([]byte(variable.Value), &f)
760777
fpath := strings.Replace(f.Path, "%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%", Datadir+"/init", -1)
761778
dir := filepath.Dir(fpath)
762-
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Config create %s", fpath)
779+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
780+
configurator.Logger.Debugf("Config create %s", fpath)
781+
}
782+
763783
// create directory
764784
if _, err := os.Stat(dir); os.IsNotExist(err) {
765785
err := os.MkdirAll(dir, os.FileMode(0775))
766786
if err != nil {
767787
return fmt.Errorf("Compliance create directory %q: %s", dir, err)
768788
}
769789
}
770-
// cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "rule %s filter %s %t", rule.Name, rule.Filter, proxy.IsFilterInTags(rule.Filter))
771-
if fpath[len(fpath)-1:] != "/" && (configurator.IsFilterInProxyTags(rule.Filter) || rule.Filter == "") {
772790

791+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
792+
configurator.Logger.Debugf("rule %s filter %s %t", rule.Name, rule.Filter, configurator.IsFilterInProxyTags(rule.Filter))
773793
}
774-
content := misc.ExtractKey(f.Content, TemplateEnv)
775-
outFile, err := os.Create(fpath)
776-
if err != nil {
777-
return fmt.Errorf("Compliance create file failed %q: %s", fpath, err)
778-
} else {
779-
_, err = outFile.WriteString(fmt.Sprintf("# Generated by Signal18 replication-manager %s on %s \n", RepMgrVersion, ts))
780-
if err != nil {
781-
outFile.Close()
782-
return fmt.Errorf("Compliance writing file failed %q: %s", fpath, err)
783-
}
784-
_, err = outFile.WriteString(content)
794+
795+
if fpath[len(fpath)-1:] != "/" && (configurator.IsFilterInProxyTags(rule.Filter) || rule.Filter == "") {
796+
content := misc.ExtractKey(f.Content, TemplateEnv)
797+
outFile, err := os.Create(fpath)
785798
if err != nil {
786-
outFile.Close()
787-
return fmt.Errorf("Compliance writing file failed %q: %s", fpath, err)
788-
}
799+
return fmt.Errorf("Compliance create file failed %q: %s", fpath, err)
800+
} else {
801+
_, err = outFile.WriteString(fmt.Sprintf("# Generated by Signal18 replication-manager %s on %s \n", RepMgrVersion, ts))
802+
if err != nil {
803+
outFile.Close()
804+
return fmt.Errorf("Compliance writing file failed %q: %s", fpath, err)
805+
}
806+
_, err = outFile.WriteString(content)
807+
if err != nil {
808+
outFile.Close()
809+
return fmt.Errorf("Compliance writing file failed %q: %s", fpath, err)
810+
}
789811

790-
//cluster.LogModulePrintf(cluster.Conf.Verbose, config.ConstLogModGeneral,LvlInfo, "Variable name %s", variable.Name)
812+
if configurator.ClusterConfig.IsEligibleForPrinting(config.ConstLogModConfigLoad, config.LvlDbg) || configurator.ClusterConfig.Verbose {
813+
configurator.Logger.Debugf("Variable name %s", variable.Name)
814+
}
815+
}
791816
}
817+
792818
return nil
793819
}

cluster/configurator/configurator_set.go

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"strings"
1212

1313
"github.com/signal18/replication-manager/config"
14+
"github.com/sirupsen/logrus"
1415
)
1516

1617
func (configurator *Configurator) SetConfig(conf config.Config) {
@@ -19,6 +20,10 @@ func (configurator *Configurator) SetConfig(conf config.Config) {
1920
configurator.ProxyTags = strings.Split(conf.ProvProxTags, ",")
2021
}
2122

23+
func (configurator *Configurator) SetLogger(logger *logrus.Logger) {
24+
configurator.Logger = logger
25+
}
26+
2227
func (configurator *Configurator) SetDBTags(newtags []string) {
2328
configurator.DBTags = newtags
2429
}

share/dashboard/static/configurator/opensvc/bootstrap

-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ function help {
1515
[ -z $REPLICATION_MANAGER_HOST_NAME ] && help && exit 1
1616
[ -z $REPLICATION_MANAGER_HOST_PORT ] && help && exit 1
1717

18-
SET -x
19-
2018
GET="wget -q --no-check-certificate -O- --header Content-Type:application/json"
2119
AUTH_DATA="{\"username\": \"$REPLICATION_MANAGER_USER\", \"password\": \"$REPLICATION_MANAGER_PASSWORD\"}"
2220
TOKEN=$($GET --post-data "$AUTH_DATA" --header Accept:text/html $REPLICATION_MANAGER_URL/api/login)

0 commit comments

Comments
 (0)