120 lines
2.9 KiB
Go
120 lines
2.9 KiB
Go
package space_worker
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
"playbookctl/internal/types"
|
|
"playbookctl/internal/utils"
|
|
)
|
|
|
|
func (app *SpaceWorker) ListHosts() error {
|
|
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
|
|
|
|
app.log.Trace("try read hosts.yml")
|
|
hosts, err := types.ReadHosts(app.workDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Trace("try read default.host.txt")
|
|
defaultHost, err := utils.ReadStringFile(filepath.Join(app.workDir, "default.host.txt"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Println("Хосты:")
|
|
for serverName, props := range *hosts {
|
|
defaultMarker := ""
|
|
if serverName == defaultHost {
|
|
defaultMarker = " *"
|
|
}
|
|
fmt.Printf(" - %s [%s:%d] (%s)%s\n", serverName, props.Host, props.Port, props.User, defaultMarker)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (app *SpaceWorker) HostsAdd(name string, host string, port uint16, user string) error {
|
|
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
|
|
|
|
app.log.Trace("try read hosts.yml")
|
|
hosts, err := types.ReadHosts(app.workDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Trace("append new host to hosts.yml")
|
|
(*hosts)[name] = types.THostProps{
|
|
Host: host,
|
|
Port: port,
|
|
User: user,
|
|
Interpreter: types.DefaultInterpreter,
|
|
}
|
|
|
|
app.log.Trace("write hosts.yml")
|
|
if err := types.WriteHosts(app.workDir, hosts); err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Trace(fmt.Sprintf("create vars/%s.vars.yml", name))
|
|
err = utils.WriteEmptyYaml(filepath.Join(app.workDir, "vars", fmt.Sprintf("%s.vars.yml", name)))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Info("Новый хост добавлен")
|
|
return nil
|
|
}
|
|
|
|
func (app *SpaceWorker) HostRemove(name string) error {
|
|
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
|
|
|
|
app.log.Trace("try read hosts.yml")
|
|
hosts, err := types.ReadHosts(app.workDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Trace("remove host from hosts.yml")
|
|
delete(*hosts, name)
|
|
|
|
app.log.Trace("write hosts.yml")
|
|
if err := types.WriteHosts(app.workDir, hosts); err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Trace(fmt.Sprintf("remove vars/%s.vars.yml", name))
|
|
err = utils.RemoveFile(filepath.Join(app.workDir, "vars", fmt.Sprintf("%s.vars.yml", name)))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Info("Хост удалён")
|
|
return nil
|
|
}
|
|
|
|
func (app *SpaceWorker) SetDefaultHost(name string) error {
|
|
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
|
|
|
|
app.log.Trace("try write default.host.txt")
|
|
err := utils.WriteStringFile(filepath.Join(app.workDir, "default.host.txt"), name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
app.log.Info(fmt.Sprintf("Хост '%s' установлен по-умолчанию", name))
|
|
return nil
|
|
}
|
|
|
|
func (app *SpaceWorker) GetDefaultHost() (string, error) {
|
|
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
|
|
|
|
app.log.Trace("try read default.host.txt")
|
|
value, err := utils.ReadStringFile(filepath.Join(app.workDir, "default.host.txt"))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return value, nil
|
|
}
|