1
1
package main
2
2
3
3
import (
4
- "../src/pyraconv"
4
+ "../src/pyraconv"
5
5
)
6
6
7
7
var Data map [string ]interface {}
8
8
9
9
type prepare string
10
10
11
11
func compareHostsData (data map [string ]interface {}) {
12
- hosts := pyraconv .ToInterfaceMap (data ["hosts" ])
13
- master := pyraconv .ToString (hosts ["master" ])
14
- replicas := pyraconv .ToStringArray (hosts ["replicas" ])
15
- diffData := make (map [string ]interface {})
16
-
17
- results := pyraconv .ToInterfaceMap (data ["results" ])
18
- masterData := pyraconv .ToInterfaceMap (results [master ])
19
- masterData = pyraconv .ToInterfaceMap (masterData ["data" ])
20
-
21
- pgSettingsData := pyraconv .ToInterfaceMap (masterData ["pg_settings" ])
22
- diffSettings := make (map [string ]interface {})
23
- for settingName , value := range pgSettingsData {
24
- valueData := pyraconv .ToInterfaceMap (value );
25
- settingValue := pyraconv .ToString (valueData ["setting" ])
26
- settingUnit := pyraconv .ToString (valueData ["unit" ])
27
- diffSetting := make (map [string ]interface {})
28
- masterSetting := make (map [string ]interface {})
29
- masterSetting ["value" ] = settingValue
30
- masterSetting ["unit" ] = settingUnit
31
- diffSetting ["master" ] = masterSetting
32
- diff := false
33
- for _ , replica := range replicas {
34
- rSettingValue , rSettingUnit := getReplicaSettingValue (data , replica , settingName )
35
- hostSetting := make (map [string ]interface {})
36
- hostSetting ["value" ] = rSettingValue
37
- hostSetting ["unit" ] = rSettingUnit
38
- diffSetting [replica ] = hostSetting
39
- if (settingValue != rSettingValue ) || (settingUnit != rSettingUnit ) {
40
- diff = true
41
- }
42
- }
43
- if diff {
44
- diffSettings [settingName ] = diffSetting
45
- }
46
- }
47
- diffData ["pg_settings" ] = diffSettings
48
-
49
- pgConfigData := pyraconv .ToInterfaceMap (masterData ["pg_config" ])
50
- diffConfigs := make (map [string ]interface {})
51
- for configName , value := range pgConfigData {
52
- valueData := pyraconv .ToInterfaceMap (value );
53
- settingValue := pyraconv .ToString (valueData ["setting" ])
54
- settingUnit := pyraconv .ToString (valueData ["unit" ])
55
- diffConfig := make (map [string ]interface {})
56
- masterSetting := make (map [string ]interface {})
57
- masterSetting ["value" ] = settingValue
58
- diffConfig ["master" ] = masterSetting
59
- diff := false
60
- for _ , replica := range replicas {
61
- rSettingValue , rSettingUnit := getReplicaConfigValue (data , replica , configName )
62
- hostSetting := make (map [string ]interface {})
63
- hostSetting ["value" ] = rSettingValue
64
- hostSetting ["unit" ] = rSettingUnit
65
- diffConfig [replica ] = hostSetting
66
- if (settingValue != rSettingValue ) || (settingUnit != rSettingUnit ) {
67
- diff = true
68
- }
69
- }
70
- if diff {
71
- diffConfigs [configName ] = diffConfig
72
- }
73
- }
74
- diffData ["pg_configs" ] = diffConfigs
75
-
76
- data ["diffData" ] = diffData
12
+ hosts := pyraconv .ToInterfaceMap (data ["hosts" ])
13
+ master := pyraconv .ToString (hosts ["master" ])
14
+ replicas := pyraconv .ToStringArray (hosts ["replicas" ])
15
+ diffData := make (map [string ]interface {})
16
+
17
+ results := pyraconv .ToInterfaceMap (data ["results" ])
18
+ masterData := pyraconv .ToInterfaceMap (results [master ])
19
+ masterData = pyraconv .ToInterfaceMap (masterData ["data" ])
20
+
21
+ pgSettingsData := pyraconv .ToInterfaceMap (masterData ["pg_settings" ])
22
+ diffSettings := make (map [string ]interface {})
23
+ for settingName , value := range pgSettingsData {
24
+ valueData := pyraconv .ToInterfaceMap (value )
25
+ settingValue := pyraconv .ToString (valueData ["setting" ])
26
+ settingUnit := pyraconv .ToString (valueData ["unit" ])
27
+ diffSetting := make (map [string ]interface {})
28
+ masterSetting := make (map [string ]interface {})
29
+ masterSetting ["value" ] = settingValue
30
+ masterSetting ["unit" ] = settingUnit
31
+ diffSetting ["master" ] = masterSetting
32
+ diff := false
33
+ for _ , replica := range replicas {
34
+ rSettingValue , rSettingUnit := getReplicaSettingValue (data , replica , settingName )
35
+ if rSettingValue != "null" && rSettingUnit != "null" {
36
+ // Process only hosts which have data
37
+ hostSetting := make (map [string ]interface {})
38
+ hostSetting ["value" ] = rSettingValue
39
+ hostSetting ["unit" ] = rSettingUnit
40
+ diffSetting [replica ] = hostSetting
41
+ if (settingValue != rSettingValue ) || (settingUnit != rSettingUnit ) {
42
+ diff = true
43
+ }
44
+ }
45
+ }
46
+ if diff {
47
+ diffSettings [settingName ] = diffSetting
48
+ }
49
+ }
50
+ diffData ["pg_settings" ] = diffSettings
51
+
52
+ pgConfigData := pyraconv .ToInterfaceMap (masterData ["pg_config" ])
53
+ diffConfigs := make (map [string ]interface {})
54
+ for configName , value := range pgConfigData {
55
+ valueData := pyraconv .ToInterfaceMap (value )
56
+ settingValue := pyraconv .ToString (valueData ["setting" ])
57
+ settingUnit := pyraconv .ToString (valueData ["unit" ])
58
+ diffConfig := make (map [string ]interface {})
59
+ masterSetting := make (map [string ]interface {})
60
+ masterSetting ["value" ] = settingValue
61
+ diffConfig ["master" ] = masterSetting
62
+ diff := false
63
+ for _ , replica := range replicas {
64
+ rSettingValue , rSettingUnit := getReplicaConfigValue (data , replica , configName )
65
+ if rSettingValue != "null" && rSettingUnit != "null" {
66
+ hostSetting := make (map [string ]interface {})
67
+ hostSetting ["value" ] = rSettingValue
68
+ hostSetting ["unit" ] = rSettingUnit
69
+ diffConfig [replica ] = hostSetting
70
+ if (settingValue != rSettingValue ) || (settingUnit != rSettingUnit ) {
71
+ diff = true
72
+ }
73
+ }
74
+ }
75
+ if diff {
76
+ diffConfigs [configName ] = diffConfig
77
+ }
78
+ }
79
+ diffData ["pg_configs" ] = diffConfigs
80
+
81
+ data ["diffData" ] = diffData
77
82
}
78
83
79
84
func getReplicaSettingValue (data map [string ]interface {}, replica string , settingName string ) (string , string ) {
80
- results := pyraconv .ToInterfaceMap (data ["results" ])
81
- hostData := pyraconv .ToInterfaceMap (results [replica ])
82
- hostData = pyraconv .ToInterfaceMap (hostData ["data" ])
83
- pgSettingsData := pyraconv .ToInterfaceMap (hostData ["pg_settings" ])
84
- pgSettingData := pyraconv .ToInterfaceMap (pgSettingsData [settingName ])
85
- return pyraconv .ToString (pgSettingData ["setting" ]), pyraconv .ToString (pgSettingData ["unit" ])
85
+ results := pyraconv .ToInterfaceMap (data ["results" ])
86
+ if results [replica ] != nil {
87
+ hostData := pyraconv .ToInterfaceMap (results [replica ])
88
+ hostData = pyraconv .ToInterfaceMap (hostData ["data" ])
89
+ pgSettingsData := pyraconv .ToInterfaceMap (hostData ["pg_settings" ])
90
+ pgSettingData := pyraconv .ToInterfaceMap (pgSettingsData [settingName ])
91
+ return pyraconv .ToString (pgSettingData ["setting" ]), pyraconv .ToString (pgSettingData ["unit" ])
92
+ }
93
+ return "null" , "null"
86
94
}
87
95
88
96
func getReplicaConfigValue (data map [string ]interface {}, replica string , settingName string ) (string , string ) {
89
- results := pyraconv .ToInterfaceMap (data ["results" ])
90
- hostData := pyraconv .ToInterfaceMap (results [replica ])
91
- hostData = pyraconv .ToInterfaceMap (hostData ["data" ])
92
- pgConfigsData := pyraconv .ToInterfaceMap (hostData ["pg_config" ])
93
- pgСonfigData := pyraconv .ToInterfaceMap (pgConfigsData [settingName ])
94
- return pyraconv .ToString (pgСonfigData ["setting" ]), pyraconv .ToString (pgСonfigData ["unit" ])
97
+ results := pyraconv .ToInterfaceMap (data ["results" ])
98
+ if results [replica ] != nil {
99
+ hostData := pyraconv .ToInterfaceMap (results [replica ])
100
+ hostData = pyraconv .ToInterfaceMap (hostData ["data" ])
101
+ pgConfigsData := pyraconv .ToInterfaceMap (hostData ["pg_config" ])
102
+ pgСonfigData := pyraconv .ToInterfaceMap (pgConfigsData [settingName ])
103
+ return pyraconv .ToString (pgСonfigData ["setting" ]), pyraconv .ToString (pgСonfigData ["unit" ])
104
+ }
105
+ return "null" , "null"
95
106
}
96
107
97
108
func (g prepare ) Prepare (data map [string ]interface {}) map [string ]interface {} {
98
- compareHostsData (data )
99
- return data
109
+ compareHostsData (data )
110
+ return data
100
111
}
101
112
102
- var Preparer prepare
113
+ var Preparer prepare
0 commit comments