From 8e9a91ccb05f9b138cfb32394a02961a6dce3cea Mon Sep 17 00:00:00 2001 From: Radek Smid Date: Mon, 12 Jan 2026 16:58:34 +0100 Subject: [PATCH 1/6] hotfix: add access IP to project info --- cmd/cloudcredential/openstack/check/check.go | 5 +++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cmd/cloudcredential/openstack/check/check.go b/cmd/cloudcredential/openstack/check/check.go index 6fb9858d..b2859e21 100644 --- a/cmd/cloudcredential/openstack/check/check.go +++ b/cmd/cloudcredential/openstack/check/check.go @@ -3,13 +3,14 @@ package check import ( "context" "fmt" + "strings" + "github.com/itera-io/taikun-cli/cmd/cmderr" "github.com/itera-io/taikun-cli/cmd/cmdutils" "github.com/itera-io/taikun-cli/utils/out" tk "github.com/itera-io/taikungoclient" taikuncore "github.com/itera-io/taikungoclient/client" "github.com/spf13/cobra" - "strings" ) type CheckOptions struct { @@ -74,7 +75,7 @@ func checkRun(opts *CheckOptions) (err error) { // Execute a query into the API + graceful exit myRequest := myApiClient.Client.CheckerAPI.CheckerOpenstack(context.TODO()).CheckOpenstackCommand(body) - response, err := myRequest.Execute() + _, response, err := myRequest.Execute() if err == nil { out.PrintCheckSuccess("OpenStack cloud credential") diff --git a/go.mod b/go.mod index bb1d2cd8..9a196fcb 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/go-openapi/strfmt v0.24.0 - github.com/itera-io/taikungoclient v0.0.0-20251014100817-e7578ebb929f + github.com/itera-io/taikungoclient v0.0.0-20260112000444-b9190ac168e4 github.com/jedib0t/go-pretty/v6 v6.6.8 github.com/spf13/cobra v1.10.1 ) diff --git a/go.sum b/go.sum index c390d790..8ef78e32 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/itera-io/taikungoclient v0.0.0-20251014100817-e7578ebb929f h1:Uvg6hvkj1RjqY53++YEbwHFZEk3nESmOQmzLlL966oY= -github.com/itera-io/taikungoclient v0.0.0-20251014100817-e7578ebb929f/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= +github.com/itera-io/taikungoclient v0.0.0-20260112000444-b9190ac168e4 h1:V9d2C71RFAorRqcHLtTgfY/5HBPNV3UUsS0iszT4ouo= +github.com/itera-io/taikungoclient v0.0.0-20260112000444-b9190ac168e4/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= github.com/jedib0t/go-pretty/v6 v6.6.8 h1:JnnzQeRz2bACBobIaa/r+nqjvws4yEhcmaZ4n1QzsEc= github.com/jedib0t/go-pretty/v6 v6.6.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= From 1d6ed3c3941b504576df6668fbdd0baa8d7b0231 Mon Sep 17 00:00:00 2001 From: Radek Smid Date: Fri, 19 Dec 2025 09:23:44 +0100 Subject: [PATCH 2/6] hotfix: add access IP to project info (cherry picked from commit 6be0dceee20dd16006ff6701d0376be1b1c59082) --- cmd/project/info/info.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmd/project/info/info.go b/cmd/project/info/info.go index 1651e1ee..5c2cdf4b 100644 --- a/cmd/project/info/info.go +++ b/cmd/project/info/info.go @@ -2,6 +2,7 @@ package info import ( "context" + "github.com/itera-io/taikun-cli/cmd/cmderr" "github.com/itera-io/taikun-cli/cmd/cmdutils" "github.com/itera-io/taikun-cli/utils/out" @@ -38,6 +39,9 @@ var infoFields = fields.New( field.NewVisible( "ACCESS-PROFILE-ID", "accessProfileId", ), + field.NewVisible( + "ACCESS-IP", "accessIp", + ), field.NewVisibleWithToStringFunc( "CLOUD", "cloudType", out.FormatCloudType, ), From 464a07d0471f3d40e2339bc76cc2f71a83404be9 Mon Sep 17 00:00:00 2001 From: Radek Smid Date: Tue, 13 Jan 2026 14:31:47 +0100 Subject: [PATCH 3/6] fix: Client switched back to swagger --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9a196fcb..e376acac 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/go-openapi/strfmt v0.24.0 - github.com/itera-io/taikungoclient v0.0.0-20260112000444-b9190ac168e4 + github.com/itera-io/taikungoclient v0.0.0-20260113125548-4e87647cc356 github.com/jedib0t/go-pretty/v6 v6.6.8 github.com/spf13/cobra v1.10.1 ) diff --git a/go.sum b/go.sum index 8ef78e32..b4229e57 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/itera-io/taikungoclient v0.0.0-20260112000444-b9190ac168e4 h1:V9d2C71RFAorRqcHLtTgfY/5HBPNV3UUsS0iszT4ouo= -github.com/itera-io/taikungoclient v0.0.0-20260112000444-b9190ac168e4/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= +github.com/itera-io/taikungoclient v0.0.0-20260113125548-4e87647cc356 h1:TFYs3p+0ZzeEOoIvAYbMQCSxMrNV8fzI8JOdFZe+8us= +github.com/itera-io/taikungoclient v0.0.0-20260113125548-4e87647cc356/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= github.com/jedib0t/go-pretty/v6 v6.6.8 h1:JnnzQeRz2bACBobIaa/r+nqjvws4yEhcmaZ4n1QzsEc= github.com/jedib0t/go-pretty/v6 v6.6.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= From ea7528fe25846390f01735e1883471d8ef2d87fe Mon Sep 17 00:00:00 2001 From: Radek Smid Date: Wed, 28 Jan 2026 16:34:16 +0100 Subject: [PATCH 4/6] hotfix: synch with newest version of Taikun Go Client --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e376acac..9021ed15 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/go-openapi/strfmt v0.24.0 - github.com/itera-io/taikungoclient v0.0.0-20260113125548-4e87647cc356 + github.com/itera-io/taikungoclient v0.0.0-20260127000512-bb56158359f0 github.com/jedib0t/go-pretty/v6 v6.6.8 github.com/spf13/cobra v1.10.1 ) diff --git a/go.sum b/go.sum index b4229e57..ae53f077 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/itera-io/taikungoclient v0.0.0-20260113125548-4e87647cc356 h1:TFYs3p+0ZzeEOoIvAYbMQCSxMrNV8fzI8JOdFZe+8us= -github.com/itera-io/taikungoclient v0.0.0-20260113125548-4e87647cc356/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= +github.com/itera-io/taikungoclient v0.0.0-20260127000512-bb56158359f0 h1:aJLy+G7Wae01jcUC7791BpLoQVr/lbNQrMHd/lMyKeU= +github.com/itera-io/taikungoclient v0.0.0-20260127000512-bb56158359f0/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= github.com/jedib0t/go-pretty/v6 v6.6.8 h1:JnnzQeRz2bACBobIaa/r+nqjvws4yEhcmaZ4n1QzsEc= github.com/jedib0t/go-pretty/v6 v6.6.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= From 691c80f7e70ef181062b9b8efaca73c3aa33371a Mon Sep 17 00:00:00 2001 From: Radek Smid Date: Mon, 2 Feb 2026 14:22:21 +0100 Subject: [PATCH 5/6] feat: add user notification mode toggle command --- cmd/user/info/info.go | 12 ++++ cmd/user/notifications/notifications.go | 77 +++++++++++++++++++++++++ cmd/user/test_spec.sh | 10 ++++ cmd/user/user.go | 2 + go.mod | 2 +- go.sum | 4 +- 6 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 cmd/user/notifications/notifications.go diff --git a/cmd/user/info/info.go b/cmd/user/info/info.go index b65cdfd0..2e9dd688 100644 --- a/cmd/user/info/info.go +++ b/cmd/user/info/info.go @@ -2,10 +2,12 @@ package info import ( "context" + "github.com/itera-io/taikun-cli/cmd/cmderr" "github.com/itera-io/taikun-cli/cmd/user/complete" "github.com/itera-io/taikun-cli/cmd/user/list" "github.com/itera-io/taikun-cli/utils/out" + "github.com/itera-io/taikun-cli/utils/out/fields" tk "github.com/itera-io/taikungoclient" "github.com/spf13/cobra" ) @@ -38,6 +40,7 @@ func NewCmdInfo() *cobra.Command { // myInfoRun calls the API and gets the info about the current user func myInfoRun() (err error) { + showNotificationField(infoFields) myApiClient := tk.NewClient() data, response, err := myApiClient.Client.UsersAPI.UsersUserInfo(context.TODO()).Execute() if err != nil { @@ -62,3 +65,12 @@ func listRun(userID string) (err error) { return out.PrintResult(data.Data[0], infoFields) } + +func showNotificationField(infoFields fields.Fields) { + for _, infoField := range infoFields.AllFields() { + if infoField.NameMatches("EMAIL-NOTIFICATIONS") { + infoField.Show() + return + } + } +} diff --git a/cmd/user/notifications/notifications.go b/cmd/user/notifications/notifications.go new file mode 100644 index 00000000..67becde7 --- /dev/null +++ b/cmd/user/notifications/notifications.go @@ -0,0 +1,77 @@ +package notifications + +import ( + "context" + "fmt" + "strings" + + "github.com/itera-io/taikun-cli/cmd/cmdutils" + "github.com/itera-io/taikun-cli/utils/out" + tk "github.com/itera-io/taikungoclient" + taikuncore "github.com/itera-io/taikungoclient/client" + "github.com/spf13/cobra" +) + +type NotificationsOptions struct { + Mode string +} + +func NewCmdNotifications() *cobra.Command { + var opts NotificationsOptions + + cmd := cobra.Command{ + Use: "notifications [enable|disable]", + Short: "Toggle notification mode", + Args: cobra.MaximumNArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + if len(args) == 1 { + if opts.Mode != "" { + return fmt.Errorf("provide mode either as argument or --mode, not both") + } + opts.Mode = args[0] + } + return notificationsRun(&opts) + }, + } + + cmd.Flags().StringVarP(&opts.Mode, "mode", "m", "", "Notification mode (enable|disable)") + cmdutils.SetFlagCompletionValues(&cmd, "mode", "enable", "disable") + + return &cmd +} + +func notificationsRun(opts *NotificationsOptions) (err error) { + mode, err := normalizeMode(opts.Mode) + if err != nil { + return err + } + + myApiClient := tk.NewClient() + body := taikuncore.ToggleNotificationModeCommand{} + body.SetMode(mode) + + response, err := myApiClient.Client.UsersAPI.UsersToggleNotificationMode(context.TODO()). + ToggleNotificationModeCommand(body). + Execute() + if err != nil { + return tk.CreateError(response, err) + } + + out.PrintStandardSuccess() + return +} + +func normalizeMode(mode string) (string, error) { + if mode == "" { + return "", fmt.Errorf("mode is required (enable|disable)") + } + + switch strings.ToLower(mode) { + case "enable", "enabled", "on", "true", "1": + return "enable", nil + case "disable", "disabled", "off", "false", "0": + return "disable", nil + default: + return "", fmt.Errorf("invalid mode %q (enable|disable)", mode) + } +} diff --git a/cmd/user/test_spec.sh b/cmd/user/test_spec.sh index 727d4ef2..22a5e3e5 100644 --- a/cmd/user/test_spec.sh +++ b/cmd/user/test_spec.sh @@ -47,6 +47,16 @@ Context 'user' The stderr should include "${username}@mailinator.com" End + Example 'toggle notification mode' + When call taikun user notifications enable + The status should equal 0 + The output should include 'Operation was successful.' + + When call taikun user notifications disable + The status should equal 0 + The output should include 'Operation was successful.' + End + Context bind() { taikun user project bind "$uid" --project-id "$pid" -q diff --git a/cmd/user/user.go b/cmd/user/user.go index 2f0a763c..757542fe 100644 --- a/cmd/user/user.go +++ b/cmd/user/user.go @@ -4,6 +4,7 @@ import ( "github.com/itera-io/taikun-cli/cmd/user/add" "github.com/itera-io/taikun-cli/cmd/user/info" "github.com/itera-io/taikun-cli/cmd/user/list" + "github.com/itera-io/taikun-cli/cmd/user/notifications" "github.com/itera-io/taikun-cli/cmd/user/project" "github.com/itera-io/taikun-cli/cmd/user/remove" "github.com/spf13/cobra" @@ -18,6 +19,7 @@ func NewCmdUser() *cobra.Command { cmd.AddCommand(add.NewCmdAdd()) cmd.AddCommand(info.NewCmdInfo()) cmd.AddCommand(list.NewCmdList()) + cmd.AddCommand(notifications.NewCmdNotifications()) cmd.AddCommand(project.NewCmdProject()) cmd.AddCommand(remove.NewCmdDelete()) diff --git a/go.mod b/go.mod index 9021ed15..519e7150 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/go-openapi/strfmt v0.24.0 - github.com/itera-io/taikungoclient v0.0.0-20260127000512-bb56158359f0 + github.com/itera-io/taikungoclient v0.0.0-20260202114637-2459c1a00fe3 github.com/jedib0t/go-pretty/v6 v6.6.8 github.com/spf13/cobra v1.10.1 ) diff --git a/go.sum b/go.sum index ae53f077..afa7dade 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/itera-io/taikungoclient v0.0.0-20260127000512-bb56158359f0 h1:aJLy+G7Wae01jcUC7791BpLoQVr/lbNQrMHd/lMyKeU= -github.com/itera-io/taikungoclient v0.0.0-20260127000512-bb56158359f0/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= +github.com/itera-io/taikungoclient v0.0.0-20260202114637-2459c1a00fe3 h1:4WXKs7I20c4vZ/xs69moKPTesg4C+/SmLjVQ9T9p/+g= +github.com/itera-io/taikungoclient v0.0.0-20260202114637-2459c1a00fe3/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= github.com/jedib0t/go-pretty/v6 v6.6.8 h1:JnnzQeRz2bACBobIaa/r+nqjvws4yEhcmaZ4n1QzsEc= github.com/jedib0t/go-pretty/v6 v6.6.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= From 810daf255335b8551ac5457f10cbcd572509c898 Mon Sep 17 00:00:00 2001 From: Radek Smid Date: Thu, 5 Feb 2026 17:18:23 +0100 Subject: [PATCH 6/6] hotfix: synch with newest version of Taikun Go Client --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 519e7150..6cb8d35d 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/go-openapi/strfmt v0.24.0 - github.com/itera-io/taikungoclient v0.0.0-20260202114637-2459c1a00fe3 + github.com/itera-io/taikungoclient v0.0.0-20260205161035-a02b3cbc1f7f github.com/jedib0t/go-pretty/v6 v6.6.8 github.com/spf13/cobra v1.10.1 ) diff --git a/go.sum b/go.sum index afa7dade..e08359bb 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/itera-io/taikungoclient v0.0.0-20260202114637-2459c1a00fe3 h1:4WXKs7I20c4vZ/xs69moKPTesg4C+/SmLjVQ9T9p/+g= -github.com/itera-io/taikungoclient v0.0.0-20260202114637-2459c1a00fe3/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= +github.com/itera-io/taikungoclient v0.0.0-20260205161035-a02b3cbc1f7f h1:STUedHD+owXvNm8V3I8gF82yL0NzLHgorsp/cGcL/Nk= +github.com/itera-io/taikungoclient v0.0.0-20260205161035-a02b3cbc1f7f/go.mod h1:VEIUQxLg9qNq20j4KELD2XBKak/M/d1OEdEaaCI0olo= github.com/jedib0t/go-pretty/v6 v6.6.8 h1:JnnzQeRz2bACBobIaa/r+nqjvws4yEhcmaZ4n1QzsEc= github.com/jedib0t/go-pretty/v6 v6.6.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=