Skip to content

Commit

Permalink
Merge pull request #569 from navidys/container_create_secret
Browse files Browse the repository at this point in the history
Container create dialog secret option
  • Loading branch information
navidys authored Mar 2, 2025
2 parents 47b1d1f + 9e6388a commit 84cc728
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 4 deletions.
6 changes: 6 additions & 0 deletions pdcs/containers/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ type CreateOptions struct {
Remove bool
Privileged bool
Timeout string
Secret []string
WorkDir string
EnvVars []string
EnvFile []string
Expand Down Expand Up @@ -211,6 +212,11 @@ func Create(opts CreateOptions) ([]string, error) { //nolint:cyclop,gocognit,goc
createOptions.GroupEntry = opts.GroupEntry
}

// add secrets
if len(opts.Secret) > 0 {
createOptions.Secrets = opts.Secret
}

// add healthcheck options
if err := containerHealthOptions(&createOptions, opts); err != nil {
return warningResponse, err
Expand Down
6 changes: 3 additions & 3 deletions test/005-container.bats
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ load helpers_tui
podman_tui_select_item $image_index
podman_tui_send_inputs "Enter" "Tab" "Tab" "Tab"
podman_tui_send_inputs "Space" "Tab" "Space" "Tab" "$TEST_CONTAINER_TIMEOUT"
podman_tui_send_inputs "Tab" "Tab"
podman_tui_send_inputs "Tab" "Tab" "Tab"
sleep 2
podman_tui_send_inputs "Enter"
sleep 3
Expand Down Expand Up @@ -65,7 +65,7 @@ load helpers_tui
podman_tui_send_inputs $TEST_CONTAINER_NAME "Tab"
podman_tui_send_inputs "Down"
podman_tui_select_item $image_index
podman_tui_send_inputs "Enter" "Tab" "Tab" "Tab" "Tab" "Tab" "Tab" "Tab" "Tab"
podman_tui_send_inputs "Enter" "Tab" "Tab" "Tab" "Tab" "Tab" "Tab" "Tab" "Tab" "Tab"
sleep 2

# switch to environmen page
Expand Down Expand Up @@ -130,7 +130,7 @@ load helpers_tui
podman_tui_send_inputs "Down"
podman_tui_select_item $pod_index
podman_tui_send_inputs "Enter" "Tab"
podman_tui_send_inputs $TEST_LABEL "Tab" "Tab" "Tab" "Tab" "Tab"
podman_tui_send_inputs $TEST_LABEL "Tab" "Tab" "Tab" "Tab" "Tab" "Tab"
sleep 1
podman_tui_send_inputs "Tab"
sleep 1
Expand Down
32 changes: 31 additions & 1 deletion ui/containers/cntdialogs/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ const (
createContainerRemoveFieldFocus
createContainerPrivilegedFieldFocus
createContainerTimeoutFieldFocus
createContainerSecretFieldFocus
createContainerEnvHostFieldFocus
createContainerEnvVarsFieldFocus
createContainerEnvFileFieldFocus
Expand Down Expand Up @@ -119,6 +120,7 @@ type ContainerCreateDialog struct {
containerRemoveField *tview.Checkbox
containerPrivilegedField *tview.Checkbox
containerTimeoutField *tview.InputField
containerSecretField *tview.InputField
containerWorkDirField *tview.InputField
containerEnvHostField *tview.Checkbox
containerEnvVarsField *tview.InputField
Expand Down Expand Up @@ -202,6 +204,7 @@ func NewContainerCreateDialog() *ContainerCreateDialog {
containerRemoveField: tview.NewCheckbox(),
containerPrivilegedField: tview.NewCheckbox(),
containerTimeoutField: tview.NewInputField(),
containerSecretField: tview.NewInputField(),
containerWorkDirField: tview.NewInputField(),
containerEnvHostField: tview.NewCheckbox(),
containerEnvVarsField: tview.NewInputField(),
Expand Down Expand Up @@ -375,6 +378,13 @@ func (d *ContainerCreateDialog) setupContainerInfoPageUI() {
d.containerTimeoutField.SetLabelColor(style.DialogFgColor)
d.containerTimeoutField.SetFieldBackgroundColor(inputFieldBgColor)

// secrets
d.containerSecretField.SetLabel("secret:")
d.containerSecretField.SetLabelWidth(cntInfoPageLabelWidth)
d.containerSecretField.SetBackgroundColor(bgColor)
d.containerSecretField.SetLabelColor(style.DialogFgColor)
d.containerSecretField.SetFieldBackgroundColor(inputFieldBgColor)

// layout
labelPaddings := 4
checkBoxLayout := tview.NewFlex().SetDirection(tview.FlexColumn)
Expand All @@ -395,6 +405,8 @@ func (d *ContainerCreateDialog) setupContainerInfoPageUI() {
d.containerInfoPage.AddItem(d.containerLabelsField, 1, 0, true)
d.containerInfoPage.AddItem(utils.EmptyBoxSpace(bgColor), 1, 0, true)
d.containerInfoPage.AddItem(checkBoxLayout, 1, 0, true)
d.containerInfoPage.AddItem(utils.EmptyBoxSpace(bgColor), 1, 0, true)
d.containerInfoPage.AddItem(d.containerSecretField, 1, 0, true)
d.containerInfoPage.SetBackgroundColor(bgColor)
}

Expand Down Expand Up @@ -997,6 +1009,8 @@ func (d *ContainerCreateDialog) Focus(delegate func(p tview.Primitive)) { //noli
delegate(d.containerPrivilegedField)
case createContainerTimeoutFieldFocus:
delegate(d.containerTimeoutField)
case createContainerSecretFieldFocus:
delegate(d.containerSecretField)
// environment options page
case createContainerWorkDirFieldFocus:
delegate(d.containerWorkDirField)
Expand Down Expand Up @@ -1431,6 +1445,7 @@ func (d *ContainerCreateDialog) initData() {
d.containerRemoveField.SetChecked(false)
d.containerPrivilegedField.SetChecked(false)
d.containerTimeoutField.SetText("")
d.containerSecretField.SetText("")

// environment category
d.containerWorkDirField.SetText("")
Expand Down Expand Up @@ -1546,6 +1561,12 @@ func (d *ContainerCreateDialog) setContainerInfoPageNextFocus() {
return
}

if d.containerTimeoutField.HasFocus() {
d.focusElement = createContainerSecretFieldFocus

return
}

d.focusElement = createContainerFormFocus
}

Expand Down Expand Up @@ -1770,7 +1791,7 @@ func (d *ContainerCreateDialog) setVolumeSettingsPageNextFocus() {
}

// ContainerCreateOptions returns new network options.
func (d *ContainerCreateDialog) ContainerCreateOptions() containers.CreateOptions { //nolint:cyclop,gocognit
func (d *ContainerCreateDialog) ContainerCreateOptions() containers.CreateOptions { //nolint:cyclop,gocognit,gocyclo
var (
labels []string
imageID string
Expand All @@ -1787,6 +1808,7 @@ func (d *ContainerCreateDialog) ContainerCreateOptions() containers.CreateOption
envMerge []string
unsetEnv []string
hostUsers []string
secret []string
)

for _, label := range strings.Split(d.containerLabelsField.GetText(), " ") {
Expand Down Expand Up @@ -1884,6 +1906,13 @@ func (d *ContainerCreateDialog) ContainerCreateOptions() containers.CreateOption
}
}

// secret
for _, sec := range strings.Split(d.containerSecretField.GetText(), " ") {
if sec != "" {
secret = append(secret, sec)
}
}

_, network := d.containerNetworkField.GetCurrentOption()
opts := containers.CreateOptions{
Name: d.containerNameField.GetText(),
Expand All @@ -1893,6 +1922,7 @@ func (d *ContainerCreateDialog) ContainerCreateOptions() containers.CreateOption
Remove: d.containerRemoveField.IsChecked(),
Privileged: d.containerPrivilegedField.IsChecked(),
Timeout: d.containerTimeoutField.GetText(),
Secret: secret,
WorkDir: d.containerWorkDirField.GetText(),
EnvVars: envVars,
EnvFile: envFile,
Expand Down
5 changes: 5 additions & 0 deletions ui/containers/cntdialogs/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,11 @@ var _ = Describe("container create", Ordered, func() {
createDialog.setContainerInfoPageNextFocus()
Expect(createDialog.focusElement).To(Equal(createContainerTimeoutFieldFocus))

createDialogApp.SetFocus(createDialog)
createDialogApp.Draw()
createDialog.setContainerInfoPageNextFocus()
Expect(createDialog.focusElement).To(Equal(createContainerSecretFieldFocus))

createDialogApp.SetFocus(createDialog)
createDialogApp.Draw()
createDialog.setContainerInfoPageNextFocus()
Expand Down

0 comments on commit 84cc728

Please sign in to comment.