mirror of
https://github.com/portainer/portainer.git
synced 2025-07-19 05:19:39 +02:00
feat(system): upgrade on swarm [EE-5848] (#11728)
Co-authored-by: Chaim Lev-Ari <chaim.levi-ari@portainer.io> Co-authored-by: LP B <xAt0mZ@users.noreply.github.com>
This commit is contained in:
parent
3cb484f06a
commit
6f84317e7a
22 changed files with 362 additions and 158 deletions
|
@ -158,11 +158,12 @@ func (wrapper *PluginWrapper) command(command composeCommand, options libstack.O
|
|||
|
||||
cmd.Env = append(cmd.Env, options.Env...)
|
||||
|
||||
executedCommand := cmd.String()
|
||||
|
||||
log.Debug().
|
||||
Str("command", program).
|
||||
Strs("args", args).
|
||||
Str("command", executedCommand).
|
||||
Interface("env", cmd.Env).
|
||||
Msg("run command")
|
||||
Msg("execute command")
|
||||
|
||||
cmd.Stderr = &stderr
|
||||
|
||||
|
|
53
pkg/libstack/compose/internal/composeplugin/run_cmd.go
Normal file
53
pkg/libstack/compose/internal/composeplugin/run_cmd.go
Normal file
|
@ -0,0 +1,53 @@
|
|||
package composeplugin
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/portainer/portainer/pkg/libstack"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
func (wrapper *PluginWrapper) Run(ctx context.Context, filePaths []string, serviceName string, options libstack.RunOptions) error {
|
||||
|
||||
output, err := wrapper.command(newRunCommand(filePaths, serviceName, runOptions{
|
||||
remove: options.Remove,
|
||||
args: options.Args,
|
||||
detached: options.Detached,
|
||||
}), options.Options)
|
||||
if len(output) != 0 {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Info().Msg("Stack run successful")
|
||||
|
||||
log.Debug().
|
||||
Str("output", string(output)).
|
||||
Msg("docker compose")
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
type runOptions struct {
|
||||
remove bool
|
||||
args []string
|
||||
detached bool
|
||||
}
|
||||
|
||||
func newRunCommand(filePaths []string, serviceName string, options runOptions) composeCommand {
|
||||
args := []string{"run"}
|
||||
|
||||
if options.remove {
|
||||
args = append(args, "--rm")
|
||||
}
|
||||
|
||||
if options.detached {
|
||||
args = append(args, "-d")
|
||||
}
|
||||
|
||||
args = append(args, serviceName)
|
||||
args = append(args, options.args...)
|
||||
|
||||
return newCommand(args, filePaths)
|
||||
}
|
|
@ -12,6 +12,7 @@ type Deployer interface {
|
|||
// if projectName is supplied filePaths will be ignored
|
||||
Remove(ctx context.Context, projectName string, filePaths []string, options Options) error
|
||||
Pull(ctx context.Context, filePaths []string, options Options) error
|
||||
Run(ctx context.Context, filePaths []string, serviceName string, options RunOptions) error
|
||||
Validate(ctx context.Context, filePaths []string, options Options) error
|
||||
WaitForStatus(ctx context.Context, name string, status Status) <-chan WaitResult
|
||||
Config(ctx context.Context, filePaths []string, options Options) ([]byte, error)
|
||||
|
@ -61,3 +62,13 @@ type DeployOptions struct {
|
|||
// When this is set, docker compose will output its logs to stdout
|
||||
AbortOnContainerExit bool ``
|
||||
}
|
||||
|
||||
type RunOptions struct {
|
||||
Options
|
||||
// Automatically remove the container when it exits
|
||||
Remove bool
|
||||
// A list of arguments to pass to the container
|
||||
Args []string
|
||||
// Run the container in detached mode
|
||||
Detached bool
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue