-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
exec command #27
exec command #27
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package cmd | ||
|
||
import ( | ||
"context" | ||
"os" | ||
|
||
"github.com/fromanirh/pack8s/internal/pkg/podman" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
type execOptions struct { | ||
commands []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: execCommand, | ||
Args: cobra.MinimumNArgs(2), | ||
} | ||
|
||
return exec | ||
} | ||
|
||
func execCommand(cmd *cobra.Command, args []string) error { | ||
containerID := args[0] | ||
command := args[1:] | ||
|
||
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, command, os.Stdout) | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,6 +35,7 @@ type okdRunOptions struct { | |
sshWorkerPort uint | ||
background bool | ||
randomPorts bool | ||
volume string | ||
} | ||
|
||
var okdRunOpts okdRunOptions | ||
|
@@ -64,6 +65,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") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will be the volume automatically unbound? Do we need some cleanup? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is still relevant There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. According to this: https://github.com/fromanirh/pack8s/blob/master/cmd/rm.go#L87 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is fine. But does this also mean that the more There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The volume is bind during start of container and persist till stop of container. It will not add or remove any volume during exec. I agree pack8s should handle cleanup and as i mentioned in previous comment, it removes all binded volumes with rm command There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not 100% sure it's a good idea to have this volume bound between host and container, but since this is strictly for development and we are in the early stage of development, I'm incline to try it out and see how it looks. |
||
return run | ||
} | ||
|
||
|
@@ -157,6 +159,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 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd use