Skip to content

Commit 92aa1ae

Browse files
AMeceacalind
authored andcommitted
Refactor sidecar package
1 parent 6b72a73 commit 92aa1ae

File tree

9 files changed

+192
-239
lines changed

9 files changed

+192
-239
lines changed

cmd/mysql-operator-sidecar/main.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,7 @@ import (
2525
"github.com/spf13/cobra"
2626
"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
2727

28-
"github.com/presslabs/mysql-operator/pkg/sidecar/app"
29-
"github.com/presslabs/mysql-operator/pkg/sidecar/appclone"
30-
"github.com/presslabs/mysql-operator/pkg/sidecar/appconf"
31-
"github.com/presslabs/mysql-operator/pkg/sidecar/apphelper"
32-
"github.com/presslabs/mysql-operator/pkg/sidecar/apptakebackup"
28+
"github.com/presslabs/mysql-operator/pkg/sidecar"
3329
)
3430

3531
var log = logf.Log.WithName("sidecar")
@@ -61,13 +57,13 @@ func main() {
6157
logf.SetLogger(logf.ZapLogger(debug))
6258

6359
// init configs
64-
cfg := app.NewBasicConfig(stopCh)
60+
cfg := sidecar.NewConfig(stopCh)
6561

6662
confCmd := &cobra.Command{
6763
Use: "init-configs",
6864
Short: "Init subcommand, for init files.",
6965
Run: func(cmd *cobra.Command, args []string) {
70-
err := appconf.RunConfigCommand(cfg)
66+
err := sidecar.RunConfigCommand(cfg)
7167
if err != nil {
7268
log.Error(err, "init command failed")
7369
os.Exit(1)
@@ -80,7 +76,7 @@ func main() {
8076
Use: "clone",
8177
Short: "Clone data from a bucket or prior node.",
8278
Run: func(cmd *cobra.Command, args []string) {
83-
err := appclone.RunCloneCommand(cfg)
79+
err := sidecar.RunCloneCommand(cfg)
8480
if err != nil {
8581
log.Error(err, "clone command failed")
8682
os.Exit(1)
@@ -93,8 +89,7 @@ func main() {
9389
Use: "run",
9490
Short: "Configs mysql users, replication, and serve backups.",
9591
Run: func(cmd *cobra.Command, args []string) {
96-
mysqlCFG := app.NewMysqlConfig(cfg)
97-
err := apphelper.RunRunCommand(mysqlCFG)
92+
err := sidecar.RunSidecarCommand(cfg)
9893
if err != nil {
9994
log.Error(err, "run command failed")
10095
os.Exit(1)
@@ -113,7 +108,7 @@ func main() {
113108
return nil
114109
},
115110
Run: func(cmd *cobra.Command, args []string) {
116-
err := apptakebackup.RunTakeBackupCommand(cfg, args[0], args[1])
111+
err := sidecar.RunTakeBackupCommand(cfg, args[0], args[1])
117112
if err != nil {
118113
log.Error(err, "take backup command failed")
119114
os.Exit(1)
Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,22 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package appclone
17+
package sidecar
1818

1919
import (
2020
"fmt"
2121
"os"
2222
"os/exec"
2323
"strings"
24-
25-
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
26-
27-
"github.com/presslabs/mysql-operator/pkg/sidecar/app"
2824
)
2925

30-
var log = logf.Log.WithName("sidecar.appclone")
31-
3226
// RunCloneCommand clone the data from source.
3327
// nolint: gocyclo
34-
func RunCloneCommand(cfg *app.BaseConfig) error {
28+
func RunCloneCommand(cfg *Config) error {
3529
log.Info("clonning command", "host", cfg.Hostname)
3630

3731
// skip cloning if data exists.
38-
if !app.ShouldBootstrapNode() {
32+
if !shouldBootstrapNode() {
3933
log.Info("data exists and is initialized, skipping cloning.")
4034
return nil
4135
}
@@ -49,7 +43,7 @@ func RunCloneCommand(cfg *app.BaseConfig) error {
4943
return fmt.Errorf("removing lost+found: %s", err)
5044
}
5145

52-
if cfg.NodeRole() == app.MasterNode {
46+
if cfg.NodeRole() == MasterNode {
5347
if len(cfg.InitBucketURL) == 0 {
5448
log.Info("skip cloning init bucket uri is not set.")
5549
// let mysqld initialize data dir
@@ -87,15 +81,15 @@ func cloneFromBucket(initBucket string) error {
8781

8882
log.Info("cloning from bucket", "bucket", initBucket)
8983

90-
if _, err := os.Stat(app.RcloneConfigFile); os.IsNotExist(err) {
84+
if _, err := os.Stat(rcloneConfigFile); os.IsNotExist(err) {
9185
log.Error(err, "rclone config file does not exists")
9286
return err
9387
}
9488
// rclone --config={conf file} cat {bucket uri}
9589
// writes to stdout the content of the bucket uri
9690
// nolint: gosec
9791
rclone := exec.Command("rclone", "-vv",
98-
fmt.Sprintf("--config=%s", app.RcloneConfigFile), "cat", initBucket)
92+
fmt.Sprintf("--config=%s", rcloneConfigFile), "cat", initBucket)
9993

10094
// gzip reads from stdin decompress and then writes to stdout
10195
// nolint: gosec
@@ -105,7 +99,7 @@ func cloneFromBucket(initBucket string) error {
10599
// extracts files from stdin (-x) and writes them to mysql
106100
// data target dir
107101
// nolint: gosec
108-
xbstream := exec.Command("xbstream", "-x", "-C", app.DataDir)
102+
xbstream := exec.Command("xbstream", "-x", "-C", dataDir)
109103

110104
var err error
111105
// rclone | gzip | xbstream
@@ -149,10 +143,10 @@ func cloneFromBucket(initBucket string) error {
149143
return nil
150144
}
151145

152-
func cloneFromSource(cfg *app.BaseConfig, host string) error {
146+
func cloneFromSource(cfg *Config, host string) error {
153147
log.Info("cloning from node", "host", host)
154148

155-
backupBody, err := app.RequestABackup(cfg, host, app.ServerBackupEndpoint)
149+
backupBody, err := requestABackup(cfg, host, serverBackupEndpoint)
156150
if err != nil {
157151
return fmt.Errorf("fail to get backup: %s", err)
158152
}
@@ -161,7 +155,7 @@ func cloneFromSource(cfg *app.BaseConfig, host string) error {
161155
// extracts files from stdin (-x) and writes them to mysql
162156
// data target dir
163157
// nolint: gosec
164-
xbstream := exec.Command("xbstream", "-x", "-C", app.DataDir)
158+
xbstream := exec.Command("xbstream", "-x", "-C", dataDir)
165159

166160
xbstream.Stdin = backupBody
167161
xbstream.Stderr = os.Stderr
@@ -180,7 +174,7 @@ func cloneFromSource(cfg *app.BaseConfig, host string) error {
180174
func xtrabackupPreperData() error {
181175
// nolint: gosec
182176
xtbkCmd := exec.Command("xtrabackup", "--prepare",
183-
fmt.Sprintf("--target-dir=%s", app.DataDir))
177+
fmt.Sprintf("--target-dir=%s", dataDir))
184178

185179
xtbkCmd.Stderr = os.Stderr
186180

@@ -189,7 +183,7 @@ func xtrabackupPreperData() error {
189183

190184
// nolint: gosec
191185
func checkIfDataExists() bool {
192-
path := fmt.Sprintf("%s/mysql", app.DataDir)
186+
path := fmt.Sprintf("%s/mysql", dataDir)
193187
_, err := os.Open(path)
194188

195189
if os.IsNotExist(err) {
@@ -202,6 +196,6 @@ func checkIfDataExists() bool {
202196
}
203197

204198
func deleteLostFound() error {
205-
path := fmt.Sprintf("%s/lost+found", app.DataDir)
199+
path := fmt.Sprintf("%s/lost+found", dataDir)
206200
return os.RemoveAll(path)
207201
}
Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,27 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package appconf
17+
package sidecar
1818

1919
import (
2020
"fmt"
2121
"os"
2222
"strconv"
2323

2424
"github.com/go-ini/ini"
25-
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
2625

27-
"github.com/presslabs/mysql-operator/pkg/sidecar/app"
2826
pkgutil "github.com/presslabs/mysql-operator/pkg/util"
2927
)
3028

31-
var log = logf.Log.WithName("sidecar.appconf")
32-
3329
const (
3430
rStrLen = 18
3531
)
3632

3733
// RunConfigCommand generates my.cnf, client.cnf and 10-dynamic.cnf files.
38-
func RunConfigCommand(cfg *app.BaseConfig) error {
34+
func RunConfigCommand(cfg *Config) error {
3935
log.Info("configuring server", "host", cfg.Hostname, "role", cfg.NodeRole())
4036

41-
if err := app.CopyFile(app.MountConfigDir+"/my.cnf", app.ConfigDir+"/my.cnf"); err != nil {
37+
if err := copyFile(mountConfigDir+"/my.cnf", configDir+"/my.cnf"); err != nil {
4238
return fmt.Errorf("copy file my.cnf: %s", err)
4339
}
4440

@@ -52,26 +48,26 @@ func RunConfigCommand(cfg *app.BaseConfig) error {
5248
return fmt.Errorf("failed to get dynamic configs: %s", err)
5349
}
5450

55-
if err = os.Mkdir(app.ConfDPath, os.FileMode(0755)); err != nil {
51+
if err = os.Mkdir(confDPath, os.FileMode(0755)); err != nil {
5652
if !os.IsExist(err) {
57-
return fmt.Errorf("error mkdir %s/conf.d: %s", app.ConfigDir, err)
53+
return fmt.Errorf("error mkdir %s/conf.d: %s", configDir, err)
5854
}
5955
}
60-
if err = dynCFG.SaveTo(app.ConfDPath + "/10-dynamic.cnf"); err != nil {
56+
if err = dynCFG.SaveTo(confDPath + "/10-dynamic.cnf"); err != nil {
6157
return fmt.Errorf("failed to save configs: %s", err)
6258
}
63-
if utilityCFG, err = getUtilityUserConfigs(app.UtilityUser, uPass); err != nil {
59+
if utilityCFG, err = getUtilityUserConfigs(utilityUser, uPass); err != nil {
6460
return fmt.Errorf("failed to configure utility user: %s", err)
6561
}
66-
if err = utilityCFG.SaveTo(app.ConfDPath + "/10-utility-user.cnf"); err != nil {
62+
if err = utilityCFG.SaveTo(confDPath + "/10-utility-user.cnf"); err != nil {
6763
return fmt.Errorf("failed to configure utility user: %s", err)
6864
}
6965

70-
if clientCFG, err = getClientConfigs(app.UtilityUser, uPass); err != nil {
66+
if clientCFG, err = getClientConfigs(utilityUser, uPass); err != nil {
7167
return fmt.Errorf("failed to get client configs: %s", err)
7268
}
7369

74-
if err = clientCFG.SaveTo(app.ConfigDir + "/client.cnf"); err != nil {
70+
if err = clientCFG.SaveTo(configDir + "/client.cnf"); err != nil {
7571
return fmt.Errorf("failed to save configs: %s", err)
7672
}
7773

@@ -86,7 +82,7 @@ func getClientConfigs(user, pass string) (*ini.File, error) {
8682
if _, err := client.NewKey("host", "127.0.0.1"); err != nil {
8783
return nil, err
8884
}
89-
if _, err := client.NewKey("port", app.MysqlPort); err != nil {
85+
if _, err := client.NewKey("port", mysqlPort); err != nil {
9086
return nil, err
9187
}
9288
if _, err := client.NewKey("user", user); err != nil {

0 commit comments

Comments
 (0)