@@ -22,13 +22,15 @@ import (
22
22
v3 "github.com/signal18/replication-manager/repmanv3"
23
23
"github.com/signal18/replication-manager/share"
24
24
"github.com/signal18/replication-manager/utils/misc"
25
+ "github.com/sirupsen/logrus"
25
26
)
26
27
27
28
type Configurator struct {
28
29
ClusterConfig config.Config `json:"-"`
29
30
ClusterConfigDiscover config.Config `json:"-"`
30
31
DBModule config.Compliance `json:"-"`
31
32
ProxyModule config.Compliance `json:"-"`
33
+ Logger * logrus.Logger `json:"-"`
32
34
ConfigDBTags []v3.Tag `json:"configTags"` //from module
33
35
ConfigPrxTags []v3.Tag `json:"configPrxTags"` //from module
34
36
DBTags []string `json:"dbServersTags"` //from conf
@@ -38,8 +40,9 @@ type Configurator struct {
38
40
WorkingDir string `json:"-"` // working dir is the place to generate the all cluster config
39
41
}
40
42
41
- func (configurator * Configurator ) Init (conf config.Config ) error {
43
+ func (configurator * Configurator ) Init (conf config.Config , logger * logrus. Logger ) error {
42
44
var err error
45
+ configurator .SetLogger (logger )
43
46
configurator .SetConfig (conf )
44
47
45
48
err = configurator .LoadDBModules ()
@@ -472,10 +475,9 @@ func (configurator *Configurator) GenerateProxyConfig(Datadir string, ClusterDir
472
475
var f Link
473
476
json .Unmarshal ([]byte (variable .Value ), & f )
474
477
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
+ }
479
481
os .Symlink (f .Target , fpath )
480
482
481
483
}
@@ -538,6 +540,7 @@ func (configurator *Configurator) GenerateDatabaseConfig(Datadir string, Cluster
538
540
} else {
539
541
os .RemoveAll (Datadir + "/init" )
540
542
}
543
+
541
544
for _ , rule := range configurator .DBModule .Rulesets {
542
545
if strings .Contains (rule .Name , "mariadb.svc.mrm.db.cnf" ) {
543
546
@@ -564,9 +567,9 @@ func (configurator *Configurator) GenerateDatabaseConfig(Datadir string, Cluster
564
567
var f Link
565
568
json .Unmarshal ([]byte (variable .Value ), & f )
566
569
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
+ }
570
573
os .Symlink (f .Target , fpath )
571
574
// keys := strings.Split(variable.Value, " ")
572
575
}
@@ -609,18 +612,26 @@ func (configurator *Configurator) GetDatabaseDynamicConfig(filter string, cmd st
609
612
for _ , variable := range rule .Variables {
610
613
if variable .Class == "symlink" {
611
614
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
+ }
613
618
if filter == "" || strings .Contains (rule .Filter , filter ) {
614
619
var f Link
615
620
json .Unmarshal ([]byte (variable .Value ), & f )
616
621
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
+
618
626
file , err := os .Open (fpath + f .Target )
619
627
if err == nil {
620
628
r , _ := regexp .Compile (cmd )
621
629
scanner := bufio .NewScanner (file )
622
630
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
+
624
635
if r .MatchString (scanner .Text ()) {
625
636
mydynamicconf = mydynamicconf + strings .Split (scanner .Text (), ":" )[1 ]
626
637
}
@@ -651,12 +662,16 @@ func (configurator *Configurator) GetDatabaseConfig(filter string, datadir strin
651
662
for _ , variable := range rule .Variables {
652
663
if variable .Class == "symlink" {
653
664
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
+ }
655
668
if filter == "" || strings .Contains (rule .Filter , filter ) {
656
669
var f Link
657
670
json .Unmarshal ([]byte (variable .Value ), & f )
658
671
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
+ }
660
675
file , err := os .Open (fpath + f .Target )
661
676
if err == nil {
662
677
scanner := bufio .NewScanner (file )
@@ -689,10 +704,10 @@ func (configurator *Configurator) WriteDatabaseConfigFile(Datadir string, Remote
689
704
json .Unmarshal ([]byte (variable .Value ), & f )
690
705
fpath := strings .Replace (f .Path , "%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%" , Datadir + "/init" , - 1 )
691
706
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
+
696
711
// create directory
697
712
if _ , err := os .Stat (dir ); os .IsNotExist (err ) {
698
713
err := os .MkdirAll (dir , os .FileMode (0775 ))
@@ -740,7 +755,9 @@ func (configurator *Configurator) WriteDatabaseConfigFile(Datadir string, Remote
740
755
outFile .Close ()
741
756
return fmt .Errorf ("Compliance writing file failed %q: %s" , fpath , err )
742
757
}
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
+ }
744
761
}
745
762
746
763
}
@@ -759,35 +776,44 @@ func (configurator *Configurator) WriteProxyConfigFile(Datadir string, TemplateE
759
776
json .Unmarshal ([]byte (variable .Value ), & f )
760
777
fpath := strings .Replace (f .Path , "%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%" , Datadir + "/init" , - 1 )
761
778
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
+
763
783
// create directory
764
784
if _ , err := os .Stat (dir ); os .IsNotExist (err ) {
765
785
err := os .MkdirAll (dir , os .FileMode (0775 ))
766
786
if err != nil {
767
787
return fmt .Errorf ("Compliance create directory %q: %s" , dir , err )
768
788
}
769
789
}
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 == "" ) {
772
790
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 ))
773
793
}
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 )
785
798
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
+ }
789
811
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
+ }
791
816
}
817
+
792
818
return nil
793
819
}
0 commit comments