routines

package
v1.3.1-0...-3e602c1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2023 License: GPL-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CollectResourcesTask = func(projectDefinition *project.Project) Task {
	return Task{
		Name: fmt.Sprintf("Collecting resources"),
		Run: func(r *Task) error {
			// Collect exposed services
			var exposedServices []project.DomainExpose
			for _, domain := range projectDefinition.Domains {
				exposedServices = append(exposedServices, domain.Expose...)
			}
			for _, module := range system.Context.GetModulesInOrder() {
				if module.GetConfig().Type == "plugin" {
					continue
				}
				moduleSettings := system.GetModuleSettings(module.GetConfig().Name)
				if err := module.Deploy(moduleSettings); err != nil {
					return err
				}
			}
			return nil
		},
	}
}
View Source
var CreateResources = Task{
	Name: "Creating resources",
	Run: func(r *Task) error {
		var errors []error
		var uncompletedSpinners []*ysmrr.Spinner

		for _, resourceGroup := range system.Context.Resources {
			for _, resource := range resourceGroup.Resources {
				spinner := r.TaskRunner.GetNewSubtaskSpinner(resource.ToString(false))
				processed, err := system.ApplyResourceOperation(resource)
				if err != nil {
					rollback = true
					errors = append(errors, err)
					if spinner != nil {
						spinner.UpdateMessage(err.Error())
						spinner.Error()
					}
					return err
				}

				if spinner != nil {
					if processed {
						spinner.Complete()
					} else {

						uncompletedSpinners = append(uncompletedSpinners, spinner)
					}
				}
			}
			resourceRollbackOrder = append([]system.ResourceGroup{resourceGroup}, resourceRollbackOrder...)
			if resourceGroup.ApplyResourceFunc != nil {
				if err := resourceGroup.ApplyResourceFunc(); err != nil {
					for _, spinner := range uncompletedSpinners {
						spinner.Error()
					}
					rollback = true
					errors = append(errors, fmt.Errorf("Unable to complete resource creation: %s", err))
				}
			}
			if !rollback {
				for _, spinner := range uncompletedSpinners {
					spinner.Complete()
				}
			}
		}
		if !rollback {
			RollbackResources.Disabled = true
			return nil
		}
		if len(errors) == 0 {
			return nil
		}
		errorMessages := []string{"The following errors occurred:"}
		for _, err2 := range errors {
			errorMessages = append(errorMessages, "- "+err2.Error())
		}
		return fmt.Errorf(strings.Join(errorMessages, "\n"))
	},
}
View Source
var PrepareProjectTask = func(projectDefinition *project.Project) Task {
	return Task{
		Name: fmt.Sprintf("Preparing project structure"),
		Run: func(r *Task) error {
			r.PrintLn("Create project directory if not exists")
			if err := xfs.CreateFolder("ssh://" + projectDefinition.GetDirectoryPath()); err != nil {
				return err
			}
			return nil
		},
		ErrorAsErrorMessage: true,
	}
}
View Source
var RollbackResources = Task{
	Name: "Rollback resources",
	Run: func(r *Task) error {
		if !rollback {
			return nil
		}
		var errors []error
		for _, resourceGroup := range resourceRollbackOrder {
			if resourceGroup.RollbackResourceFunc != nil {
				if err := resourceGroup.RollbackResourceFunc(); err != nil {
					errors = append(errors, fmt.Errorf("Unable to completely rollback resources: %s", err))
				}
			}
			for _, resource := range resourceGroup.Resources {
				spinner := r.TaskRunner.GetNewSubtaskSpinner(resource.ToString(true))
				matched, err := system.RollbackResourceOperation(resource)
				if !matched || err == nil {
					spinner.Complete()
				} else if err != nil {
					errors = append(errors, fmt.Errorf("Rollback error: %s", err))
					spinner.Error()
				}
			}
		}
		if len(errors) == 0 {
			return nil
		}
		errorMessages := []string{"The following errors occurred:"}
		for _, err2 := range errors {
			errorMessages = append(errorMessages, "- "+err2.Error())
		}
		return fmt.Errorf(strings.Join(errorMessages, "\n"))
	},
}
View Source
var ValidateStackHeadVersionTask = Task{
	Name: fmt.Sprintf("Validating StackHead version"),
	Run: func(r *Task) error {
		isValid, infoText, err := system.ValidateVersion()
		r.SetSuccessMessage(infoText)
		if err != nil {
			logger.Debugln(err)
			err = fmt.Errorf("unable to validate StackHead version.")
		}
		if !isValid {
			err = fmt.Errorf("Trying to deploy with a newer version of StackHead than used for server setup. Please run a server setup again.")
		}

		if err != nil {
			r.SetFailMessage(err.Error())
		}
		return err
	},
}

Functions

func CobraValidationBase

func CobraValidationBase(localSchemas embed.FS, schemaFile string, version string, branch string, ignoreSslCertificate bool) func(cmd *cobra.Command, args []string)

func Exec

func Exec(name string, arg []string) error

Exec is a wrapper function around exec.Command with additional settings for this CLI

func Validate

func Validate(localSchemas embed.FS, filePath string, schemaFile string, source string)

func WalkSchemaDir

func WalkSchemaDir(localSchemas embed.FS, currentDir string, tempDirName string) error

Types

type Task

type Task struct {
	Name                string
	Run                 func(r *Task) error
	ErrorAsErrorMessage bool
	Spinner             *ysmrr.Spinner
	TaskRunner          *TaskRunner

	// disabled tasks are skipped silently
	Disabled bool

	SubTasks                   []Task
	IgnoreSubtaskErrors        bool
	RunAllSubTasksDespiteError bool

	IsSubtask bool
}

func (*Task) PrintLn

func (r *Task) PrintLn(text string)

func (*Task) SetFailMessage

func (r *Task) SetFailMessage(text string)

func (*Task) SetSuccessMessage

func (r *Task) SetSuccessMessage(text string)

type TaskRunner

type TaskRunner struct {
	// contains filtered or unexported fields
}

func (*TaskRunner) GetNewSubtaskSpinner

func (t *TaskRunner) GetNewSubtaskSpinner(name string) *ysmrr.Spinner

func (*TaskRunner) RunSubTasks

func (t *TaskRunner) RunSubTasks(task Task) error

func (*TaskRunner) RunTask

func (t *TaskRunner) RunTask(task Task) error

type ValidationSource

type ValidationSource string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL