Archived
1
This commit is contained in:
2024-12-19 23:43:01 +03:00
parent a6211a7b5d
commit d5d27c1037
5 changed files with 164 additions and 11 deletions

View File

@@ -67,7 +67,7 @@ func (app *SpaceWorker) CreateRole(name string) error {
{ // tasks dir
app.log.Trace("generate main task")
if err := generateMainTask(name, rolePath); err != nil {
if err := generateMainTask(name, rolePath, false); err != nil {
return err
}
@@ -100,17 +100,42 @@ func (app *SpaceWorker) CreateRole(name string) error {
return nil
}
func generateMainTask(name string, path string) error {
buffer := &bytes.Buffer{}
func generateMainTask(name string, path string, withBackup bool) error {
var mainTask []types.MainTask
buffer.WriteString(utils.YamlHeader())
buffer.WriteString(`- include_tasks: install.yml
when: >
(dd_install is defined and dd_install)
`)
buffer.WriteString(fmt.Sprintf(" or (dd_install_%s is defined and dd_install_%s)\n", name, name))
if withBackup {
mainTask = make([]types.MainTask, 4)
} else {
mainTask = make([]types.MainTask, 1)
}
return os.WriteFile(filepath.Join(path, "tasks", "main.yml"), buffer.Bytes(), 0644)
mainTask[0] = types.MainTask{
IncludeTasks: "install.yml",
When: fmt.Sprintf("(dd_install is defined and dd_install) "+
"or (dd_install_%s is defined and dd_install_%s)", name, name),
}
if withBackup {
mainTask[1] = types.MainTask{
IncludeTasks: "backup.yml",
When: fmt.Sprintf("(dd_backup is defined and dd_backup) "+
"or (dd_backup_%s is defined and dd_backup_%s)", name, name),
}
mainTask[2] = types.MainTask{
IncludeTasks: "pre-restore.yml",
When: fmt.Sprintf("(dd_prerestore is defined and dd_prerestore) "+
"or (dd_prerestore_%s is defined and dd_prerestore_%s)", name, name),
}
mainTask[3] = types.MainTask{
IncludeTasks: "restore.yml",
When: fmt.Sprintf("(dd_restore is defined and dd_restore) "+
"or (dd_restore_%s is defined and dd_restore_%s)", name, name),
}
}
return types.WriteMainTask(path, &mainTask)
}
func generateReadme(name string, path string) error {
@@ -174,6 +199,38 @@ func (app *SpaceWorker) ListRoles() error {
return nil
}
func (app *SpaceWorker) ModifyRoleBackupAdd(name string) error {
app.log.Debug(fmt.Sprintf("workDir: %s", app.workDir))
app.log.Debug(fmt.Sprintf("role name: %s", name))
rolePath := filepath.Join(app.workDir, "roles", name)
app.log.Debug(fmt.Sprintf("rolePath: %s", rolePath))
for _, file := range []string{"backup.yml", "pre-restore.yml", "restore.yml"} {
app.log.Trace(fmt.Sprintf("try create %s", file))
if err := utils.WriteEmptyYaml(filepath.Join(rolePath, "tasks", file)); err != nil {
return err
}
}
app.log.Trace("re-generate main task")
if err := generateMainTask(name, rolePath, true); err != nil {
return err
}
app.log.Trace("try create backups dir")
if err := utils.CreateDirIfNotExists(filepath.Join(rolePath, "backups")); err != nil {
return err
}
app.log.Trace("create .gitignore")
if err := utils.WriteStringFile(filepath.Join(rolePath, ".gitignore"), "backups/"); err != nil {
return err
}
return nil
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
func (app *SpaceWorker) Install(generateOnly bool, targetHost string, roles ...string) error {