From 8eaef561216dc6f6ab99620d8a9ff4ea1e7f84ea Mon Sep 17 00:00:00 2001 From: Eoin Motherway <25342760+YuKitsune@users.noreply.github.com> Date: Thu, 15 Oct 2026 15:11:02 +1000 Subject: [PATCH 1/3] wip: Support rate limiting --- go.mod | 2 +- go.sum | 4 ++-- pkg/apiclient/client_factory.go | 5 +++-- pkg/cmd/login/login.go | 3 +++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 0b5b9682..46e2d0ff 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/MakeNowJust/heredoc/v2 v2.0.1 github.com/OctopusDeploy/go-octodiff v1.0.0 - github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.1 + github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.2-0.20261015050823-db6bf135b752 github.com/OctopusDeploy/go-octopusversioning v1.0.0 github.com/bmatcuk/doublestar/v4 v4.10.2 github.com/briandowns/spinner v1.23.2 diff --git a/go.sum b/go.sum index 24d7e943..ce37ed4d 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63n github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/OctopusDeploy/go-octodiff v1.0.0 h1:U+ORg6azniwwYo+O44giOw6TiD5USk8S4VDhOQ0Ven0= github.com/OctopusDeploy/go-octodiff v1.0.0/go.mod h1:Mze0+EkOWTgTmi8++fyUc6r0aLZT7qD9gX+31t8MmIU= -github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.1 h1:tEzyCSmtPFKNnlVpkEbV/Cf988LYMkpJkQCPGqJLHJY= -github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.1/go.mod h1:y/waaa0IIa4fYeALqKd3NDoNlwhEbMLkrDPS8D+nRxg= +github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.2-0.20261015050823-db6bf135b752 h1:FBwuQQJxS3RCW/pg185+EQZCoSagFxWbsX2JTJRa9nI= +github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.2-0.20261015050823-db6bf135b752/go.mod h1:y/waaa0IIa4fYeALqKd3NDoNlwhEbMLkrDPS8D+nRxg= github.com/OctopusDeploy/go-octopusversioning v1.0.0 h1:doAb5zfPTJ8neaOuJLtP/ZyBjTqlEQejjX+FRW5ggkw= github.com/OctopusDeploy/go-octopusversioning v1.0.0/go.mod h1:i2j1FPBKueJkWh/mk36sstqCuUPkOde8ayZeDIDIcZs= github.com/bmatcuk/doublestar/v4 v4.10.2 h1:eF7W7HWKg3z9NrWV9pTLnNeoXaqq3Tq9DNKXVMfoCnw= diff --git a/pkg/apiclient/client_factory.go b/pkg/apiclient/client_factory.go index fb622e65..d1c4e93e 100644 --- a/pkg/apiclient/client_factory.go +++ b/pkg/apiclient/client_factory.go @@ -13,6 +13,7 @@ import ( "github.com/spf13/viper" octopusApiClient "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client" + "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client/ratelimit" "github.com/OctopusDeploy/cli/pkg/constants" cliErrors "github.com/OctopusDeploy/cli/pkg/errors" @@ -126,9 +127,9 @@ func NewClientFactoryFromConfig(ask question.AskProvider) (ClientFactory, error) // The spinner is only wanted in interactive mode, but that is not settled // yet: this runs before cobra parses --no-prompt. The round-tripper decides // per request instead. - httpClient := &http.Client{ + httpClient := ratelimit.NewHttpClient(&http.Client{ Transport: NewSpinnerRoundTripper(ask), - } + }, ratelimit.DefaultOptions()) var credentials octopusApiClient.ICredential diff --git a/pkg/cmd/login/login.go b/pkg/cmd/login/login.go index 94123999..d25be2a0 100644 --- a/pkg/cmd/login/login.go +++ b/pkg/cmd/login/login.go @@ -16,6 +16,7 @@ import ( "github.com/spf13/cobra" octopusApiClient "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client" + "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client/ratelimit" "github.com/OctopusDeploy/cli/pkg/apiclient" "github.com/OctopusDeploy/cli/pkg/config" @@ -414,6 +415,8 @@ func skipTlsVerification(roundTripper http.RoundTripper) error { return nil case *apiclient.SpinnerRoundTripper: return skipTlsVerification(transport.Next) + case *ratelimit.Transport: + return skipTlsVerification(transport.Base()) default: // Better to say so than to quietly leave verification on after the // caller asked for the opposite. From ceaeb29dc33e2d470653de34c2049d5a1e5cc315 Mon Sep 17 00:00:00 2001 From: Eoin Motherway <25342760+YuKitsune@users.noreply.github.com> Date: Fri, 16 Oct 2026 13:25:50 +1000 Subject: [PATCH 2/3] chore: Update go-octopusdeploy rate limiting branch and fix tests Pin go-octopusdeploy to the newest rate limiting commit. Add "name=" to the expected environment URLs in tests. Co-Authored-By: Claude Opus 5.5 --- go.mod | 2 +- go.sum | 4 ++-- pkg/apiclient/client_factory.go | 2 +- pkg/cmd/login/login.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 46e2d0ff..880e6a3c 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/MakeNowJust/heredoc/v2 v2.0.1 github.com/OctopusDeploy/go-octodiff v1.0.0 - github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.2-0.20261015050823-db6bf135b752 + github.com/OctopusDeploy/go-octopusdeploy/v2 v2.121.1-0.20261015230706-27f2fc05196c github.com/OctopusDeploy/go-octopusversioning v1.0.0 github.com/bmatcuk/doublestar/v4 v4.10.2 github.com/briandowns/spinner v1.23.2 diff --git a/go.sum b/go.sum index ce37ed4d..c9264313 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63n github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/OctopusDeploy/go-octodiff v1.0.0 h1:U+ORg6azniwwYo+O44giOw6TiD5USk8S4VDhOQ0Ven0= github.com/OctopusDeploy/go-octodiff v1.0.0/go.mod h1:Mze0+EkOWTgTmi8++fyUc6r0aLZT7qD9gX+31t8MmIU= -github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.2-0.20261015050823-db6bf135b752 h1:FBwuQQJxS3RCW/pg185+EQZCoSagFxWbsX2JTJRa9nI= -github.com/OctopusDeploy/go-octopusdeploy/v2 v2.120.2-0.20261015050823-db6bf135b752/go.mod h1:y/waaa0IIa4fYeALqKd3NDoNlwhEbMLkrDPS8D+nRxg= +github.com/OctopusDeploy/go-octopusdeploy/v2 v2.121.1-0.20261015230706-27f2fc05196c h1:1ftvhgBLAjQWn4rZZbspGDozkg4uwIdSxQ30Fmv4L8U= +github.com/OctopusDeploy/go-octopusdeploy/v2 v2.121.1-0.20261015230706-27f2fc05196c/go.mod h1:y/waaa0IIa4fYeALqKd3NDoNlwhEbMLkrDPS8D+nRxg= github.com/OctopusDeploy/go-octopusversioning v1.0.0 h1:doAb5zfPTJ8neaOuJLtP/ZyBjTqlEQejjX+FRW5ggkw= github.com/OctopusDeploy/go-octopusversioning v1.0.0/go.mod h1:i2j1FPBKueJkWh/mk36sstqCuUPkOde8ayZeDIDIcZs= github.com/bmatcuk/doublestar/v4 v4.10.2 h1:eF7W7HWKg3z9NrWV9pTLnNeoXaqq3Tq9DNKXVMfoCnw= diff --git a/pkg/apiclient/client_factory.go b/pkg/apiclient/client_factory.go index d1c4e93e..a2ec8fc0 100644 --- a/pkg/apiclient/client_factory.go +++ b/pkg/apiclient/client_factory.go @@ -9,11 +9,11 @@ import ( "strings" "github.com/MakeNowJust/heredoc/v2" + "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client/ratelimit" "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/spaces" "github.com/spf13/viper" octopusApiClient "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client" - "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client/ratelimit" "github.com/OctopusDeploy/cli/pkg/constants" cliErrors "github.com/OctopusDeploy/cli/pkg/errors" diff --git a/pkg/cmd/login/login.go b/pkg/cmd/login/login.go index d25be2a0..5ce2c5e1 100644 --- a/pkg/cmd/login/login.go +++ b/pkg/cmd/login/login.go @@ -12,11 +12,11 @@ import ( "github.com/AlecAivazis/survey/v2" "github.com/MakeNowJust/heredoc/v2" + "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client/ratelimit" "github.com/pkg/browser" "github.com/spf13/cobra" octopusApiClient "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client" - "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client/ratelimit" "github.com/OctopusDeploy/cli/pkg/apiclient" "github.com/OctopusDeploy/cli/pkg/config" From f819559181278aaa9164c6f109ac17537664c9ed Mon Sep 17 00:00:00 2001 From: Eoin Motherway <25342760+YuKitsune@users.noreply.github.com> Date: Fri, 16 Oct 2026 13:38:18 +1000 Subject: [PATCH 3/3] Use the released version --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 880e6a3c..8948612c 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/MakeNowJust/heredoc/v2 v2.0.1 github.com/OctopusDeploy/go-octodiff v1.0.0 - github.com/OctopusDeploy/go-octopusdeploy/v2 v2.121.1-0.20261015230706-27f2fc05196c + github.com/OctopusDeploy/go-octopusdeploy/v2 v2.122.0 github.com/OctopusDeploy/go-octopusversioning v1.0.0 github.com/bmatcuk/doublestar/v4 v4.10.2 github.com/briandowns/spinner v1.23.2 diff --git a/go.sum b/go.sum index c9264313..20b63901 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63n github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/OctopusDeploy/go-octodiff v1.0.0 h1:U+ORg6azniwwYo+O44giOw6TiD5USk8S4VDhOQ0Ven0= github.com/OctopusDeploy/go-octodiff v1.0.0/go.mod h1:Mze0+EkOWTgTmi8++fyUc6r0aLZT7qD9gX+31t8MmIU= -github.com/OctopusDeploy/go-octopusdeploy/v2 v2.121.1-0.20261015230706-27f2fc05196c h1:1ftvhgBLAjQWn4rZZbspGDozkg4uwIdSxQ30Fmv4L8U= -github.com/OctopusDeploy/go-octopusdeploy/v2 v2.121.1-0.20261015230706-27f2fc05196c/go.mod h1:y/waaa0IIa4fYeALqKd3NDoNlwhEbMLkrDPS8D+nRxg= +github.com/OctopusDeploy/go-octopusdeploy/v2 v2.122.0 h1:AIxfHgUjbKMSD/VhHmZIeDZlCAhye7c3fDBrjz3M27I= +github.com/OctopusDeploy/go-octopusdeploy/v2 v2.122.0/go.mod h1:y/waaa0IIa4fYeALqKd3NDoNlwhEbMLkrDPS8D+nRxg= github.com/OctopusDeploy/go-octopusversioning v1.0.0 h1:doAb5zfPTJ8neaOuJLtP/ZyBjTqlEQejjX+FRW5ggkw= github.com/OctopusDeploy/go-octopusversioning v1.0.0/go.mod h1:i2j1FPBKueJkWh/mk36sstqCuUPkOde8ayZeDIDIcZs= github.com/bmatcuk/doublestar/v4 v4.10.2 h1:eF7W7HWKg3z9NrWV9pTLnNeoXaqq3Tq9DNKXVMfoCnw=