From 83af581ba2b9a6a03c95b355e4fd7ea4c5e374e0f03804174a30e3d6aab1ac86 Mon Sep 17 00:00:00 2001 From: Johannes Kastl Date: Tue, 17 Dec 2024 09:56:12 +0000 Subject: [PATCH] Accepting request 1231655 from home:ojkastl_buildservice:Branch_devel_kubic backport patch to fix login problems OBS-URL: https://build.opensuse.org/request/show/1231655 OBS-URL: https://build.opensuse.org/package/show/devel:kubic/perses-cli?expand=0&rev=9 --- .gitattributes | 23 ++++ .gitignore | 1 + _service | 23 ++++ _servicedata | 4 + ...61023c941d879460d81e6e4c6019621dbc16.patch | 121 +++++++++++++++++ perses-cli-0.47.1.obscpio | 3 + perses-cli-0.49.0.obscpio | 3 + perses-cli.changes | 30 +++++ perses-cli.obsinfo | 4 + perses-cli.spec | 122 ++++++++++++++++++ vendor.tar.gz | 3 + 11 files changed, 337 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 _service create mode 100644 _servicedata create mode 100644 b04061023c941d879460d81e6e4c6019621dbc16.patch create mode 100644 perses-cli-0.47.1.obscpio create mode 100644 perses-cli-0.49.0.obscpio create mode 100644 perses-cli.changes create mode 100644 perses-cli.obsinfo create mode 100644 perses-cli.spec create mode 100644 vendor.tar.gz diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_service b/_service new file mode 100644 index 0000000..c41932a --- /dev/null +++ b/_service @@ -0,0 +1,23 @@ + + + https://github.com/perses/perses/ + git + .git + v0.49.0 + @PARENT_TAG@ + enable + v(.*) + perses-cli + + + + + + + + + + *.tar + gz + + diff --git a/_servicedata b/_servicedata new file mode 100644 index 0000000..29fe6af --- /dev/null +++ b/_servicedata @@ -0,0 +1,4 @@ + + + https://github.com/perses/perses/ + 49fb6056c41c2f49a849ebb01d751be0400f1286 \ No newline at end of file diff --git a/b04061023c941d879460d81e6e4c6019621dbc16.patch b/b04061023c941d879460d81e6e4c6019621dbc16.patch new file mode 100644 index 0000000..3e429de --- /dev/null +++ b/b04061023c941d879460d81e6e4c6019621dbc16.patch @@ -0,0 +1,121 @@ +From b04061023c941d879460d81e6e4c6019621dbc16 Mon Sep 17 00:00:00 2001 +From: Augustin Husson +Date: Tue, 12 Nov 2024 10:42:49 +0100 +Subject: [PATCH] =?UTF-8?q?[BUGFIX]=C2=A0Fix=20login=20command=20avoiding?= + =?UTF-8?q?=20reusing=20previous=20config?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Augustin Husson +--- + .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- + internal/cli/cmd/login/login.go | 29 +++++++++++++++------------ + internal/cli/config/config.go | 23 +++++++++++++++++++++ + 3 files changed, 40 insertions(+), 14 deletions(-) + +diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml +index f7fbce82d1..f27470fe29 100644 +--- a/.github/ISSUE_TEMPLATE/bug_report.yml ++++ b/.github/ISSUE_TEMPLATE/bug_report.yml +@@ -42,7 +42,7 @@ body: + - type: textarea + attributes: + label: Perses configuration file +- description: Insert relevant configuration here. Don't forget to remove secrets. ++ description: Insert relevant configuration here. Don't forget to remove secrets. You can use the CLI to get it (all secret will be hidden). percli config --online + render: yaml + - type: textarea + attributes: +diff --git a/internal/cli/cmd/login/login.go b/internal/cli/cmd/login/login.go +index b09b7a42b6..831daf2c6e 100644 +--- a/internal/cli/cmd/login/login.go ++++ b/internal/cli/cmd/login/login.go +@@ -90,20 +90,22 @@ func (o *option) Complete(args []string) error { + return fmt.Errorf("no URL has been provided neither found in the previous configuration") + } + +- // create a new apiClient +- o.restConfig = config.Global.RestClientConfig +- o.restConfig.URL = o.url +- if o.restConfig.TLSConfig == nil { +- o.restConfig.TLSConfig = &secret.TLSConfig{} ++ // Create a new apiClient from scratch. ++ // We shouldn't use the previous context as for the moment we have a single config. ++ // So, switching from a Perses instance to another one without restarting from scratch the context/ the Perses client doesn't make sense. ++ o.restConfig = clientConfig.RestConfigClient{ ++ URL: o.url, ++ TLSConfig: &secret.TLSConfig{ ++ InsecureSkipVerify: o.insecureTLS, ++ }, + } +- o.restConfig.TLSConfig.InsecureSkipVerify = o.insecureTLS + restClient, err := clientConfig.NewRESTClient(o.restConfig) + if err != nil { + return err + } + o.apiClient = api.NewWithClient(restClient) + +- // Finally get the API config, we will need for later ++ // Finally, get the API config; we will need it for later + cfg, err := o.apiClient.Config() + if err != nil { + return err +@@ -173,9 +175,10 @@ func (o *option) Execute() error { + o.accessToken = token.AccessToken + o.refreshToken = token.RefreshToken + } +- +- o.restConfig.Authorization = secret.NewBearerToken(o.accessToken) +- if writeErr := config.Write(&config.Config{ ++ if len(o.accessToken) > 0 { ++ o.restConfig.Authorization = secret.NewBearerToken(o.accessToken) ++ } ++ if writeErr := config.WriteFromScratch(&config.Config{ + RestClientConfig: o.restConfig, + RefreshToken: o.refreshToken, + }); writeErr != nil { +@@ -224,9 +227,9 @@ func (o *option) newLoginOption() (loginOption, error) { + + func (o *option) selectAndSetProvider() error { + providers := o.remoteConfig.Security.Authentication.Providers +- // The first step is to collect the different providers and store it into items + modifiers. +- // items will be the selection items to display to users. +- // modifiers will be the action to save the different user input into option struct. ++ // The first step is to collect the different providers and store it into options and modifiers. ++ // Options will be the selection items to display to users. ++ // Modifiers will be the action to save the different user input into option struct. + modifiers := map[string]func(){} + var options []huh.Option[string] + +diff --git a/internal/cli/config/config.go b/internal/cli/config/config.go +index e301642c79..645ce90a20 100644 +--- a/internal/cli/config/config.go ++++ b/internal/cli/config/config.go +@@ -220,3 +220,26 @@ func Write(cfg *Config) error { + + return os.WriteFile(filePath, data, 0600) + } ++ ++func WriteFromScratch(cfg *Config) error { ++ // this value has been set by the root command, and that will be the path where the config must be saved ++ filePath := Global.filePath ++ directory := filepath.Dir(filePath) ++ ++ if _, err := os.Stat(directory); os.IsNotExist(err) { ++ mkdirError := os.Mkdir(directory, 0700) ++ if mkdirError != nil { ++ return err ++ } ++ } else if err != nil { ++ return err ++ } ++ ++ data, err := json.Marshal(cfg) ++ ++ if err != nil { ++ return err ++ } ++ ++ return os.WriteFile(filePath, data, 0600) ++} diff --git a/perses-cli-0.47.1.obscpio b/perses-cli-0.47.1.obscpio new file mode 100644 index 0000000..472f51e --- /dev/null +++ b/perses-cli-0.47.1.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e27334cec41c04e791321c636a74667c2fb9de662f8bff841d1f776b490833b8 +size 10247181 diff --git a/perses-cli-0.49.0.obscpio b/perses-cli-0.49.0.obscpio new file mode 100644 index 0000000..db94544 --- /dev/null +++ b/perses-cli-0.49.0.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3eeeaf3e117145da6ee895d71e4adabe94bd988c11b64cd15a2ec452f10c9ac6 +size 10706445 diff --git a/perses-cli.changes b/perses-cli.changes new file mode 100644 index 0000000..042a1bf --- /dev/null +++ b/perses-cli.changes @@ -0,0 +1,30 @@ +------------------------------------------------------------------- +Tue Dec 17 09:32:55 UTC 2024 - Johannes Kastl + +- backport patch b04061023c941d879460d81e6e4c6019621dbc16.patch to + fix failing logins + https://github.com/perses/perses/pull/2416 + +------------------------------------------------------------------- +Tue Nov 12 06:52:05 UTC 2024 - opensuse_buildservice@ojkastl.de + +- Update to version 0.49.0: + CLI-related changes: + * [DOC] better wording for `percli dac`'s commands helpers + (#2350) + +------------------------------------------------------------------- +Fri Oct 11 07:27:36 UTC 2024 - opensuse_buildservice@ojkastl.de + +- Update to version 0.48.0: + https://github.com/perses/perses/releases/tag/v0.48.0 + CLI-related changes: + * [DOC] Add links in the CLI doc (#2276) + * [ENHANCEMENT] Ignore Not Found errors in percli delete command + (#2184) + +------------------------------------------------------------------- +Tue Sep 10 06:52:18 UTC 2024 - Johannes Kastl + +- new package perses-cli: CLI for the Perses observability + visualisation project diff --git a/perses-cli.obsinfo b/perses-cli.obsinfo new file mode 100644 index 0000000..0a919ea --- /dev/null +++ b/perses-cli.obsinfo @@ -0,0 +1,4 @@ +name: perses-cli +version: 0.49.0 +mtime: 1730801076 +commit: 49fb6056c41c2f49a849ebb01d751be0400f1286 diff --git a/perses-cli.spec b/perses-cli.spec new file mode 100644 index 0000000..a66d57b --- /dev/null +++ b/perses-cli.spec @@ -0,0 +1,122 @@ +# +# spec file for package perses-cli +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define executable_name percli + +Name: perses-cli +Version: 0.49.0 +Release: 0 +Summary: CLI for the Perses observability visualisation project +License: Apache-2.0 +URL: https://github.com/perses/perses +Source: %{name}-%{version}.tar.gz +Source1: vendor.tar.gz +# PATCH-FIX-UPSTREAM https://github.com/perses/perses/pull/2416 +Patch1: https://github.com/perses/perses/commit/b04061023c941d879460d81e6e4c6019621dbc16.patch +BuildRequires: bash-completion +BuildRequires: fish +BuildRequires: go1.22 >= 1.22.5 +BuildRequires: zsh +Provides: percli = %{version} + +%description +Perses, a Cloud Native Computing Foundation sandbox project, is a dashboard +tool to visualize observability data from Prometheus/Thanos/Jaeger. + +This package contains the CLI. + +%package -n %{name}-bash-completion +Summary: Bash Completion for %{name} +Group: System/Shells +Requires: %{name} = %{version} +Requires: bash-completion +Supplements: (%{name} and bash-completion) +BuildArch: noarch + +%description -n %{name}-bash-completion +Bash command line completion support for %{name}. + +%package -n %{name}-fish-completion +Summary: Fish Completion for %{name} +Group: System/Shells +Requires: %{name} = %{version} +Supplements: (%{name} and fish) +BuildArch: noarch + +%description -n %{name}-fish-completion +Fish command line completion support for %{name}. + +%package -n %{name}-zsh-completion +Summary: Zsh Completion for %{name} +Group: System/Shells +Requires: %{name} = %{version} +Supplements: (%{name} and zsh) +BuildArch: noarch + +%description -n %{name}-zsh-completion +zsh command line completion support for %{name}. + +%prep +%autosetup -p 1 -a 1 + +%build +COMMIT_HASH="$(sed -n 's/commit: \(.*\)/\1/p' %_sourcedir/%{name}.obsinfo)" + +DATE_FMT="+%%Y-%%m-%%dT%%H:%%M:%%SZ" +BUILD_DATE=$(date -u -d "@${SOURCE_DATE_EPOCH}" "${DATE_FMT}" 2>/dev/null || date -u -r "${SOURCE_DATE_EPOCH}" "${DATE_FMT}" 2>/dev/null || date -u "${DATE_FMT}") +go build \ + -mod=vendor \ + -buildmode=pie \ + -ldflags=" \ + -X github.com/prometheus/common/version.Version=%{version} \ + -X github.com/prometheus/common/version.Commit=${COMMIT_HASH} \ + -X github.com/prometheus/common/version.Branch=main \ + -X github.com/prometheus/common/version.BuildDate=${BUILD_DATE}" \ + -o bin/%{executable_name} ./cmd/%{executable_name} + +%install +# Install the binary. +install -D -m 0755 bin/%{executable_name} %{buildroot}/%{_bindir}/%{executable_name} + +# create the bash completion file +mkdir -p %{buildroot}%{_datarootdir}/bash-completion/completions/ +%{buildroot}/%{_bindir}/%{executable_name} completion bash > %{buildroot}%{_datarootdir}/bash-completion/completions/%{executable_name} + +# create the fish completion file +mkdir -p %{buildroot}%{_datarootdir}/fish/vendor_completions.d/ +%{buildroot}/%{_bindir}/%{executable_name} completion fish > %{buildroot}%{_datarootdir}/fish/vendor_completions.d/%{executable_name}.fish + +# create the zsh completion file +mkdir -p %{buildroot}%{_datarootdir}/zsh/site-functions/ +%{buildroot}/%{_bindir}/%{executable_name} completion zsh > %{buildroot}%{_datarootdir}/zsh/site-functions/_%{executable_name} + +%files +%doc README.md +%license LICENSE +%{_bindir}/%{executable_name} + +%files -n %{name}-bash-completion +%{_datarootdir}/bash-completion/completions/%{executable_name} + +%files -n %{name}-fish-completion +%{_datarootdir}/fish/vendor_completions.d/%{executable_name}.fish + +%files -n %{name}-zsh-completion +%{_datarootdir}/zsh/site-functions/_%{executable_name} + +%changelog diff --git a/vendor.tar.gz b/vendor.tar.gz new file mode 100644 index 0000000..b449d63 --- /dev/null +++ b/vendor.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a713a978bddcffa0d5e479eb2f79bcb8a57e7ff3218cc28974979cf333d21996 +size 11539421