Skip to content

Commit

Permalink
add exec command
Browse files Browse the repository at this point in the history
this command can run user commands inside container. This will help to e.g.
copy files inside container to special folder, which is mounted inside container
and host.

Signed-off-by: Karel Šimon <ksimon@redhat.com>
  • Loading branch information
ksimon1 committed Nov 19, 2019
1 parent 4ac13a6 commit 24aa035
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
47 changes: 47 additions & 0 deletions cmd/exec.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 execOptions struct {
command string
}

var execOpt execOptions

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

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

return exec
}

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{execOpt.command}, os.Stdout)
}
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(),
NewExecCommand(),
)

return root
Expand Down

0 comments on commit 24aa035

Please sign in to comment.