Skip to content

Commit

Permalink
add run-command command
Browse files Browse the repository at this point in the history
this command can run user commands inside container.

Signed-off-by: Karel Šimon <ksimon@redhat.com>
  • Loading branch information
ksimon1 committed Nov 19, 2019
1 parent 4ac13a6 commit 7b07899
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
3 changes: 3 additions & 0 deletions cmd/okd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ type okdRunOptions struct {
sshWorkerPort uint
background bool
randomPorts bool
volume string
}

var okdRunOpts okdRunOptions
Expand Down Expand Up @@ -62,6 +63,7 @@ func NewRunCommand() *cobra.Command {
run.Flags().UintVar(&okdRunOpts.sshWorkerPort, "ssh-worker-port", 0, "port on localhost to ssh to worker node")
run.Flags().BoolVar(&okdRunOpts.background, "background", false, "go to background after nodes are up")
run.Flags().BoolVar(&okdRunOpts.randomPorts, "random-ports", true, "expose all ports on random localhost ports")
run.Flags().StringVar(&okdRunOpts.volume, "volume", "", "Bind mount a volume into the container")
return run
}

Expand Down Expand Up @@ -154,6 +156,7 @@ func run(cmd *cobra.Command, args []string) (err error) {
Privileged: &okdRunOpts.privileged,
Publish: &clusterPorts,
PublishAll: &okdRunOpts.randomPorts,
Volume: &[]string{okdRunOpts.volume},
})
if err != nil {
return err
Expand Down
1 change: 1 addition & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ func NewRootCommand() *cobra.Command {
NewSSHCommand(),
NewShowCommand(),
NewPruneVolumesCommand(),
NewRunCommandCommand(),
)

return root
Expand Down
47 changes: 47 additions & 0 deletions cmd/run-command.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package cmd

import (
"context"
"os"

"github.com/fromanirh/pack8s/internal/pkg/podman"
"github.com/spf13/cobra"
)

type runCommandOptions struct {
command string
}

var runCommandOpt runCommandOptions

// NewRunCommandCommand runs given command inside container
func NewRunCommandCommand() *cobra.Command {
runCMD := &cobra.Command{
Use: "run-command",
Short: "run-command runs given command in container",
RunE: runCommand,
Args: cobra.ExactArgs(1),
}

runCMD.Flags().StringVarP(&runCommandOpt.command, "command", "x", "", "command which will be executed in container")

return runCMD
}

func runCommand(cmd *cobra.Command, args []string) error {
containerID := args[0]

podmanSocket, err := cmd.Flags().GetString("podman-socket")
if err != nil {
return err
}

ctx := context.Background()

hnd, err := podman.NewHandle(ctx, podmanSocket)
if err != nil {
return err
}

return hnd.Exec(containerID, []string{runCommandOpt.command}, os.Stdout)
}

0 comments on commit 7b07899

Please sign in to comment.