Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mesheryctl for openSUSE:Factory checked in at 2025-06-20 16:53:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mesheryctl (Old) and /work/SRC/openSUSE:Factory/.mesheryctl.new.31170 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mesheryctl" Fri Jun 20 16:53:58 2025 rev:117 rq:1287150 version:0.8.107 Changes: -------- --- /work/SRC/openSUSE:Factory/mesheryctl/mesheryctl.changes 2025-06-18 16:03:37.346721836 +0200 +++ /work/SRC/openSUSE:Factory/.mesheryctl.new.31170/mesheryctl.changes 2025-06-20 16:54:17.724394144 +0200 @@ -1,0 +2,24 @@ +Fri Jun 20 04:33:04 UTC 2025 - Johannes Kastl <opensuse_buildserv...@ojkastl.de> + +- update to 0.8.107: + * General + - fix: add missing go.sum entry for meshsync dependency + @leecalcote (#15142) +- update to 0.8.106: + * General + - [meshery] feature: meshsync as a library @n2h9 (#14799) + - chore: update @sistent/sistent to version 0.14.201 + @leecalcote (#15141) + - update: layer5io/meshsync to meshery/meshsync @n2h9 (#15140) + - Add regex support to relationship match @CodeAhmedJamil + (#15137) + * Meshery CLI + - Revert "Merge pull request #15134 from + n2h9/update-meshsync-and-operator-deps" @n2h9 (#15139) + - [meshery] update: layer5io/meshsync and + layer5io/meshery-operator to meshery/meshsync and + meshery/meshery-operator @n2h9 (#15134) + * Maintenance + - Fix: k8 and Setting Icon Fix @vr-varad (#15110) + +------------------------------------------------------------------- Old: ---- mesheryctl-0.8.105.obscpio New: ---- mesheryctl-0.8.107.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mesheryctl.spec ++++++ --- /var/tmp/diff_new_pack.LCSJRd/_old 2025-06-20 16:54:20.768520054 +0200 +++ /var/tmp/diff_new_pack.LCSJRd/_new 2025-06-20 16:54:20.772520220 +0200 @@ -17,7 +17,7 @@ Name: mesheryctl -Version: 0.8.105 +Version: 0.8.107 Release: 0 Summary: CLI for the meshery cloud native management plane License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.LCSJRd/_old 2025-06-20 16:54:20.816522040 +0200 +++ /var/tmp/diff_new_pack.LCSJRd/_new 2025-06-20 16:54:20.816522040 +0200 @@ -5,7 +5,7 @@ <param name="exclude">.git</param> <param name="exclude">docs/*</param> <param name="exclude">server/meshmodel/*</param> - <param name="revision">v0.8.105</param> + <param name="revision">v0.8.107</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">disable</param> ++++++ mesheryctl-0.8.105.obscpio -> mesheryctl-0.8.107.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/go.mod new/mesheryctl-0.8.107/go.mod --- old/mesheryctl-0.8.105/go.mod 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/go.mod 2025-06-20 07:57:54.000000000 +0200 @@ -41,12 +41,12 @@ github.com/jinzhu/copier v0.4.0 github.com/layer5io/gowrk2 v0.6.1 github.com/layer5io/meshery-operator v0.8.3 - github.com/layer5io/meshsync v0.8.6 github.com/layer5io/nighthawk-go v1.0.6 github.com/layer5io/service-mesh-performance v0.6.1 github.com/lib/pq v1.10.9 github.com/manifoldco/promptui v0.9.0 github.com/meshery/meshkit v0.8.33 + github.com/meshery/meshsync v0.8.15 github.com/meshery/schemas v0.8.22 github.com/nsf/termbox-go v1.1.1 github.com/olekukonko/tablewriter v0.0.5 @@ -240,6 +240,7 @@ github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mattn/go-shellwords v1.0.12 // indirect github.com/mattn/go-sqlite3 v1.14.24 // indirect + github.com/meshery/meshery-operator v0.8.7 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect @@ -260,6 +261,7 @@ github.com/morikuni/aec v1.0.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect + github.com/myntra/pipeline v0.0.0-20180618182531-2babf4864ce8 // indirect github.com/nats-io/nats.go v1.38.0 // indirect github.com/nats-io/nkeys v0.4.9 // indirect github.com/nats-io/nuid v1.0.1 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/go.sum new/mesheryctl-0.8.107/go.sum --- old/mesheryctl-0.8.105/go.sum 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/go.sum 2025-06-20 07:57:54.000000000 +0200 @@ -1323,8 +1323,6 @@ github.com/layer5io/meshery-operator v0.8.3/go.mod h1:Wi9ODHppoq8ODtzdfiplWYJXYpqsHOJfkJyTMQeNXk4= github.com/layer5io/meshkit v0.8.29 h1:9Mtl6Z7KcvFZCO6CMzqlUDaEzbMdIPu98NaY4q7/PMw= github.com/layer5io/meshkit v0.8.29/go.mod h1:lMeuC99MrbP5WIBNdzDOKokCfUOW/5a/hERcCl9YSFs= -github.com/layer5io/meshsync v0.8.6 h1:rioO1LH2Ue/ZsYmszSe9DOOr2BDr6vnDraX4QIPDPLA= -github.com/layer5io/meshsync v0.8.6/go.mod h1:FsAfvQ+9HOjbOeAutrzoHDzAohmmnWpcaDEE0ygfGyg= github.com/layer5io/nighthawk-go v1.0.6 h1:YMCw65FvwpbByX+M7McdNYRNDW9oOw3GQaXJ1RMDdGw= github.com/layer5io/nighthawk-go v1.0.6/go.mod h1:n3WTr9nTRXe+30+O4FL/bsEOhinKV6++yrgyOP3rBHU= github.com/layer5io/service-mesh-performance v0.6.1 h1:Q1k6E96UEwcmNIirbMpRY7Odost1eOdrCh6R8IbTOXs= @@ -1364,8 +1362,12 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/maxatome/go-testdeep v1.14.0 h1:rRlLv1+kI8eOI3OaBXZwb3O7xY3exRzdW5QyX48g9wI= github.com/maxatome/go-testdeep v1.14.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= +github.com/meshery/meshery-operator v0.8.7 h1:SsiyDiPEcibYtoHlYyziwvCcBVfZOCJxq4HgMPLZKMM= +github.com/meshery/meshery-operator v0.8.7/go.mod h1:hQEtFKKa5Fr/Mskk6bV5ip3bQ0+3F0u1voYS3XisBp4= github.com/meshery/meshkit v0.8.33 h1:OowG1gn3nsN0RPfgmoPj1Kota9TXP/TUppmZ80kYXmU= github.com/meshery/meshkit v0.8.33/go.mod h1:Ym2z/5oSQn1jDQr+Qjmm9pBW7jv+8oXqp5+RYr9NXQI= +github.com/meshery/meshsync v0.8.15 h1:E0O+p6MtcKWsLPG8WSBXjUlIipg96hmwuk74Pbk6qbg= +github.com/meshery/meshsync v0.8.15/go.mod h1:Ys92h4ZPpVct8g5njMi3NpFAjm6OTZls30p3/DmgS90= github.com/meshery/schemas v0.8.22 h1:JQ7PoEheiXdkIG/h965L+DB7p/JdGEgs3i5r0EniSt4= github.com/meshery/schemas v0.8.22/go.mod h1:tuAmsG9WJRjZ0Iv12HIAhKZbWpfpkTRjfPNThKbr7HA= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= @@ -1424,6 +1426,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/myntra/pipeline v0.0.0-20180618182531-2babf4864ce8 h1:b2uniQevKsIAdAgonACj+tW6eTotNBI30zvPQSVOWwQ= +github.com/myntra/pipeline v0.0.0-20180618182531-2babf4864ce8/go.mod h1:9Viqaf1D6mzC977KNzp496RvO4I819iz5Q6gjbXY7Ow= github.com/nats-io/nats.go v1.38.0 h1:A7P+g7Wjp4/NWqDOOP/K6hfhr54DvdDQUznt5JFg9XA= github.com/nats-io/nats.go v1.38.0/go.mod h1:IGUM++TwokGnXPs82/wCuiHS02/aKrdYUQkU8If6yjw= github.com/nats-io/nkeys v0.4.9 h1:qe9Faq2Gxwi6RZnZMXfmGMZkg3afLLOtrU+gDZJ35b0= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/install/docker-extension/ui/package-lock.json new/mesheryctl-0.8.107/install/docker-extension/ui/package-lock.json --- old/mesheryctl-0.8.105/install/docker-extension/ui/package-lock.json 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/install/docker-extension/ui/package-lock.json 2025-06-20 07:57:54.000000000 +0200 @@ -18,7 +18,7 @@ "@mui/material": "^5.5.3", "@mui/styled-engine-sc": "^5.5.2", "@mui/styles": "^5.5.3", - "@sistent/sistent": "0.14.199", + "@sistent/sistent": "0.14.201", "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.4", "@testing-library/user-event": "^13.5.0", @@ -3579,9 +3579,9 @@ } }, "node_modules/@sistent/sistent": { - "version": "0.14.199", - "resolved": "https://registry.npmjs.org/@sistent/sistent/-/sistent-0.14.199.tgz", - "integrity": "sha512-ApztureUJ9eEY598vX5tfj4CBJLfbXHDe9m1u8z/WxiJa1HAOnOM3xyK/xbHH9syK6xiDVIwEnF4BPSnwMzq3g==", + "version": "0.14.201", + "resolved": "https://registry.npmjs.org/@sistent/sistent/-/sistent-0.14.201.tgz", + "integrity": "sha512-Pg7uiu/QhkR2i9mNUGneAeOtsPp6ygeGKdvseUjZ1EnGQONzzOhFrhI7g6arhhNh7UVLfkK/lZppLGrb60BKOw==", "dependencies": { "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", @@ -21170,9 +21170,9 @@ } }, "@sistent/sistent": { - "version": "0.14.199", - "resolved": "https://registry.npmjs.org/@sistent/sistent/-/sistent-0.14.199.tgz", - "integrity": "sha512-ApztureUJ9eEY598vX5tfj4CBJLfbXHDe9m1u8z/WxiJa1HAOnOM3xyK/xbHH9syK6xiDVIwEnF4BPSnwMzq3g==", + "version": "0.14.201", + "resolved": "https://registry.npmjs.org/@sistent/sistent/-/sistent-0.14.201.tgz", + "integrity": "sha512-Pg7uiu/QhkR2i9mNUGneAeOtsPp6ygeGKdvseUjZ1EnGQONzzOhFrhI7g6arhhNh7UVLfkK/lZppLGrb60BKOw==", "requires": { "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/install/docker-extension/ui/package.json new/mesheryctl-0.8.107/install/docker-extension/ui/package.json --- old/mesheryctl-0.8.105/install/docker-extension/ui/package.json 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/install/docker-extension/ui/package.json 2025-06-20 07:57:54.000000000 +0200 @@ -11,7 +11,7 @@ "@fortawesome/fontawesome-svg-core": "^6.1.1", "@fortawesome/free-solid-svg-icons": "^6.1.1", "@fortawesome/react-fontawesome": "^0.1.18", - "@sistent/sistent": "0.14.199", + "@sistent/sistent": "0.14.201", "@mui/icons-material": "^5.5.1", "@mui/material": "^5.5.3", "@mui/styled-engine-sc": "^5.5.2", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/cmd/main.go new/mesheryctl-0.8.107/server/cmd/main.go --- old/mesheryctl-0.8.105/server/cmd/main.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/cmd/main.go 2025-06-20 07:57:54.000000000 +0200 @@ -12,7 +12,6 @@ "github.com/fsnotify/fsnotify" "github.com/gofrs/uuid" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" "github.com/meshery/meshery/mesheryctl/pkg/constants" "github.com/meshery/meshery/server/handlers" "github.com/meshery/meshery/server/helpers" @@ -32,6 +31,7 @@ meshmodel "github.com/meshery/meshkit/models/meshmodel/registry" "github.com/meshery/meshkit/utils/broadcast" "github.com/meshery/meshkit/utils/events" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" "github.com/spf13/viper" "github.com/meshery/schemas/models/v1beta1/environment" @@ -114,6 +114,7 @@ viper.SetDefault("SKIP_DOWNLOAD_CONTENT", false) viper.SetDefault("SKIP_COMP_GEN", false) viper.SetDefault("PLAYGROUND", false) + viper.SetDefault("TMP_MESHSYNC_AS_A_LIBRARY_MODE", false) store.Initialize() log.Info("Local Provider capabilities are: ", version) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/handlers/database_handlers.go new/mesheryctl-0.8.107/server/handlers/database_handlers.go --- old/mesheryctl-0.8.105/server/handlers/database_handlers.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/handlers/database_handlers.go 2025-06-20 07:57:54.000000000 +0200 @@ -9,10 +9,10 @@ "path" "time" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" "github.com/meshery/meshery/server/models" "github.com/meshery/meshkit/models/meshmodel/registry" "github.com/meshery/meshkit/utils" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" "github.com/spf13/viper" "gorm.io/gorm/clause" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/handlers/meshsync_handler.go new/mesheryctl-0.8.107/server/handlers/meshsync_handler.go --- old/mesheryctl-0.8.105/server/handlers/meshsync_handler.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/handlers/meshsync_handler.go 2025-06-20 07:57:54.000000000 +0200 @@ -8,8 +8,8 @@ "github.com/gofrs/uuid" "github.com/gorilla/mux" - "github.com/layer5io/meshsync/pkg/model" "github.com/meshery/meshery/server/models" + "github.com/meshery/meshsync/pkg/model" "github.com/meshery/schemas/models/v1alpha3/relationship" "github.com/meshery/schemas/models/v1beta1/component" "github.com/meshery/schemas/models/v1beta1/pattern" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/handlers/middlewares.go new/mesheryctl-0.8.107/server/handlers/middlewares.go --- old/mesheryctl-0.8.105/server/handlers/middlewares.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/handlers/middlewares.go 2025-06-20 07:57:54.000000000 +0200 @@ -9,12 +9,12 @@ "net/url" "github.com/gofrs/uuid" - "github.com/layer5io/meshsync/pkg/model" "github.com/meshery/meshery/server/machines" mhelpers "github.com/meshery/meshery/server/machines/helpers" "github.com/meshery/meshery/server/machines/kubernetes" "github.com/meshery/meshery/server/models" "github.com/meshery/meshkit/utils" + "github.com/meshery/meshsync/pkg/model" "github.com/spf13/viper" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/helpers/component_info.json new/mesheryctl-0.8.107/server/helpers/component_info.json --- old/mesheryctl-0.8.105/server/helpers/component_info.json 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/helpers/component_info.json 2025-06-20 07:57:54.000000000 +0200 @@ -1,5 +1,5 @@ { "name": "meshery-server", "type": "component", - "next_error_code": 1373 + "next_error_code": 1375 } \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/helpers/swagger.yaml new/mesheryctl-0.8.107/server/helpers/swagger.yaml --- old/mesheryctl-0.8.105/server/helpers/swagger.yaml 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/helpers/swagger.yaml 2025-06-20 07:57:54.000000000 +0200 @@ -2069,7 +2069,7 @@ type: string x-go-name: Value type: object - x-go-package: github.com/layer5io/meshsync/pkg/model + x-go-package: github.com/meshery/meshsync/pkg/model KubernetesResource: properties: apiVersion: @@ -2118,7 +2118,7 @@ type: string x-go-name: Type type: object - x-go-package: github.com/layer5io/meshsync/pkg/model + x-go-package: github.com/meshery/meshsync/pkg/model KubernetesResourceObjectMeta: properties: annotations: @@ -2182,7 +2182,7 @@ type: string x-go-name: UID type: object - x-go-package: github.com/layer5io/meshsync/pkg/model + x-go-package: github.com/meshery/meshsync/pkg/model KubernetesResourceSpec: properties: attribute: @@ -2192,7 +2192,7 @@ type: string x-go-name: ID type: object - x-go-package: github.com/layer5io/meshsync/pkg/model + x-go-package: github.com/meshery/meshsync/pkg/model KubernetesResourceStatus: properties: attribute: @@ -2202,7 +2202,7 @@ type: string x-go-name: ID type: object - x-go-package: github.com/layer5io/meshsync/pkg/model + x-go-package: github.com/meshery/meshsync/pkg/model LatenciesMs: description: LatenciesMs - represents a collection of important latencies properties: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/internal/graphql/model/addons_helper.go new/mesheryctl-0.8.107/server/internal/graphql/model/addons_helper.go --- old/mesheryctl-0.8.105/server/internal/graphql/model/addons_helper.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/internal/graphql/model/addons_helper.go 2025-06-20 07:57:54.000000000 +0200 @@ -5,7 +5,7 @@ "github.com/meshery/meshery/server/models" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" ) func GetAddonsState(ctx context.Context, selectors []MeshType, provider models.Provider, cid []string) ([]*AddonList, error) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/internal/graphql/model/control_plane_helper.go new/mesheryctl-0.8.107/server/internal/graphql/model/control_plane_helper.go --- old/mesheryctl-0.8.105/server/internal/graphql/model/control_plane_helper.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/internal/graphql/model/control_plane_helper.go 2025-06-20 07:57:54.000000000 +0200 @@ -7,7 +7,7 @@ "github.com/meshery/meshery/server/models" "github.com/meshery/meshkit/encoding" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" corev1 "k8s.io/api/core/v1" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/internal/graphql/model/data_plane_helper.go new/mesheryctl-0.8.107/server/internal/graphql/model/data_plane_helper.go --- old/mesheryctl-0.8.105/server/internal/graphql/model/data_plane_helper.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/internal/graphql/model/data_plane_helper.go 2025-06-20 07:57:54.000000000 +0200 @@ -8,7 +8,7 @@ "github.com/meshery/meshery/server/models" "github.com/meshery/meshkit/encoding" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" corev1 "k8s.io/api/core/v1" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/internal/graphql/resolver/meshsync.go new/mesheryctl-0.8.107/server/internal/graphql/resolver/meshsync.go --- old/mesheryctl-0.8.105/server/internal/graphql/resolver/meshsync.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/internal/graphql/resolver/meshsync.go 2025-06-20 07:57:54.000000000 +0200 @@ -9,13 +9,13 @@ "path" "github.com/gofrs/uuid" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" "github.com/meshery/meshery/server/handlers" "github.com/meshery/meshery/server/internal/graphql/model" mhelpers "github.com/meshery/meshery/server/machines/helpers" "github.com/meshery/meshery/server/models" "github.com/meshery/meshkit/models/meshmodel/registry" "github.com/meshery/meshkit/utils" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" "github.com/spf13/viper" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/machines/helpers/auto_register.go new/mesheryctl-0.8.107/server/machines/helpers/auto_register.go --- old/mesheryctl-0.8.105/server/machines/helpers/auto_register.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/machines/helpers/auto_register.go 2025-06-20 07:57:54.000000000 +0200 @@ -20,7 +20,7 @@ "github.com/meshery/meshkit/utils" "github.com/meshery/schemas/models/v1beta1/component" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" "github.com/spf13/viper" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/machines/kubernetes/connect.go new/mesheryctl-0.8.107/server/machines/kubernetes/connect.go --- old/mesheryctl-0.8.105/server/machines/kubernetes/connect.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/machines/kubernetes/connect.go 2025-06-20 07:57:54.000000000 +0200 @@ -2,6 +2,7 @@ import ( "context" + "fmt" "github.com/gofrs/uuid" "github.com/meshery/meshery/server/machines" @@ -29,10 +30,30 @@ eventBuilder.WithMetadata(map[string]interface{}{"error": err}) return machines.NoOp, eventBuilder.Build(), err } + token, ok := ctx.Value(models.TokenCtxKey).(string) + if !ok { + errToken := ErrConnectAction(fmt.Errorf("failed to retrieve user token")) + eventBuilder.WithMetadata(map[string]interface{}{"error": errToken}) + return machines.NoOp, eventBuilder.Build(), errToken + + } + connectionID := uuid.FromStringOrNil(machinectx.K8sContext.ID) + connection, _, err := provider.GetConnectionByIDAndKind( + token, + connectionID, + "kubernetes", + ) + if err != nil { + errConnection := ErrConnectAction(err) + eventBuilder.WithMetadata(map[string]interface{}{"error": errConnection}) + return machines.NoOp, eventBuilder.Build(), errConnection + + } go func() { ctrlHelper := machinectx.MesheryCtrlsHelper. AddCtxControllerHandlers(machinectx.K8sContext). + SetMeshsyncDeploymentMode(models.MeshsyncDeploymentModeFromString(connection.MeshsyncDeploymentMode)). UpdateOperatorsStatusMap(machinectx.OperatorTracker). DeployUndeployedOperators(machinectx.OperatorTracker) ctrlHelper.AddMeshsynDataHandlers(ctx, machinectx.K8sContext, userUUID, *sysID, provider) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/machines/kubernetes/error.go new/mesheryctl-0.8.107/server/machines/kubernetes/error.go --- old/mesheryctl-0.8.105/server/machines/kubernetes/error.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/machines/kubernetes/error.go 2025-06-20 07:57:54.000000000 +0200 @@ -6,8 +6,13 @@ var ( ErrResyncK8SResourcesCode = "meshery-server-1372" + ErrConnectActionCode = "meshery-server-1373" ) func ErrResyncK8SResources(err error) error { return errors.New(ErrResyncK8SResourcesCode, errors.Critical, []string{"Error resync resources"}, []string{err.Error()}, []string{"Fail to resync resources for the kubernetes machine"}, []string{"Check if machine context is assign to machine", "Check if machine context contains a reference to MesheryControllersHelper"}) } + +func ErrConnectAction(err error) error { + return errors.New(ErrConnectActionCode, errors.Critical, []string{"Error connect action"}, []string{err.Error()}, []string{"Fail to perform connect action for the kubernetes machine"}, []string{"Check if token is passed machine from golang context correctly", "Check if there is connection data stored in database for this kubernetes machine"}) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/models/connections/connections.go new/mesheryctl-0.8.107/server/models/connections/connections.go --- old/mesheryctl-0.8.105/server/models/connections/connections.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/models/connections/connections.go 2025-06-20 07:57:54.000000000 +0200 @@ -67,19 +67,20 @@ // swagger:response Connection type Connection struct { - ID uuid.UUID `json:"id,omitempty" db:"id"` - Name string `json:"name,omitempty" db:"name"` - CredentialID uuid.UUID `json:"credential_id,omitempty" db:"credential_id"` - Type string `json:"type,omitempty" db:"type"` - SubType string `json:"sub_type,omitempty" db:"sub_type"` - Kind string `json:"kind,omitempty" db:"kind"` - Metadata utils.JSONMap `json:"metadata,omitempty" db:"metadata" gorm:"type:JSONB"` - Status ConnectionStatus `json:"status,omitempty" db:"status"` - UserID *uuid.UUID `json:"user_id,omitempty" db:"user_id"` - CreatedAt time.Time `json:"created_at,omitempty" db:"created_at"` - UpdatedAt time.Time `json:"updated_at,omitempty" db:"updated_at"` - DeletedAt sql.NullTime `json:"deleted_at,omitempty" db:"deleted_at"` - Environments []environments.EnvironmentData `json:"environments,omitempty" db:"environments" gorm:"-"` + ID uuid.UUID `json:"id,omitempty" db:"id"` + Name string `json:"name,omitempty" db:"name"` + CredentialID uuid.UUID `json:"credential_id,omitempty" db:"credential_id"` + Type string `json:"type,omitempty" db:"type"` + SubType string `json:"sub_type,omitempty" db:"sub_type"` + Kind string `json:"kind,omitempty" db:"kind"` + Metadata utils.JSONMap `json:"metadata,omitempty" db:"metadata" gorm:"type:JSONB"` + Status ConnectionStatus `json:"status,omitempty" db:"status"` + UserID *uuid.UUID `json:"user_id,omitempty" db:"user_id"` + CreatedAt time.Time `json:"created_at,omitempty" db:"created_at"` + UpdatedAt time.Time `json:"updated_at,omitempty" db:"updated_at"` + DeletedAt sql.NullTime `json:"deleted_at,omitempty" db:"deleted_at"` + Environments []environments.EnvironmentData `json:"environments,omitempty" db:"environments" gorm:"-"` + MeshsyncDeploymentMode string `json:"meshsync_deployment_mode,omitempty" db:"meshsync_deployment_mode"` } var validConnectionStatusToManage = []ConnectionStatus{ @@ -130,6 +131,7 @@ CredentialID *uuid.UUID `json:"credential_id,omitempty"` Model string `json:"model,omitempty"` SkipCredentialVerification bool `json:"skip_credential_verification"` + MeshsyncDeploymentMode string `json:"meshsync_deployment_mode,omitempty"` } func BuildMesheryConnectionPayload(serverURL string, credential map[string]interface{}) *ConnectionPayload { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/models/default_local_provider.go new/mesheryctl-0.8.107/server/models/default_local_provider.go --- old/mesheryctl-0.8.105/server/models/default_local_provider.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/models/default_local_provider.go 2025-06-20 07:57:54.000000000 +0200 @@ -57,9 +57,10 @@ EnvironmentPersister *EnvironmentPersister WorkspacePersister *WorkspacePersister - GenericPersister *database.Handler - KubeClient *mesherykube.Client - Log logger.Handler + GenericPersister *database.Handler + KubeClient *mesherykube.Client + Log logger.Handler + TMPMeshsyncDeploymentMode string } // Initialize will initialize the local provider @@ -81,6 +82,10 @@ {Feature: PersistMesheryFilters}, {Feature: PersistCredentials}, } + l.TMPMeshsyncDeploymentMode = "operator" + if viper.GetBool("TMP_MESHSYNC_AS_A_LIBRARY_MODE") { + l.TMPMeshsyncDeploymentMode = "library" + } } // Name - Returns Provider's friendly name @@ -280,6 +285,8 @@ Status: connections.DISCOVERED, MetaData: metadata, CredentialSecret: cred, + // TODO: pass from above + MeshsyncDeploymentMode: l.TMPMeshsyncDeploymentMode, } connectionCreated, err := l.SaveConnection(conn, "", true) if err != nil { @@ -1084,17 +1091,18 @@ id = conn.ID } connection := &connections.Connection{ - ID: id, - Name: conn.Name, - CredentialID: uuid.Nil, - Type: conn.Type, - SubType: conn.SubType, - Kind: conn.Kind, - Metadata: conn.MetaData, - Status: conn.Status, - UserID: &uuid.Nil, - CreatedAt: time.Now(), - UpdatedAt: time.Now(), + ID: id, + Name: conn.Name, + CredentialID: uuid.Nil, + Type: conn.Type, + SubType: conn.SubType, + Kind: conn.Kind, + Metadata: conn.MetaData, + Status: conn.Status, + UserID: &uuid.Nil, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + MeshsyncDeploymentMode: conn.MeshsyncDeploymentMode, } connectionCreated, err := l.ConnectionPersister.SaveConnection(connection) if err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/models/k8s_context.go new/mesheryctl-0.8.107/server/models/k8s_context.go --- old/mesheryctl-0.8.105/server/models/k8s_context.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/models/k8s_context.go 2025-06-20 07:57:54.000000000 +0200 @@ -13,12 +13,12 @@ "time" "github.com/gofrs/uuid" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" "github.com/meshery/meshery/server/helpers/utils" "github.com/meshery/meshery/server/internal/sql" "github.com/meshery/meshkit/logger" "github.com/meshery/meshkit/models/events" "github.com/meshery/meshkit/utils/kubernetes" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" "gopkg.in/yaml.v2" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/models/meshery_controllers.go new/mesheryctl-0.8.107/server/models/meshery_controllers.go --- old/mesheryctl-0.8.105/server/models/meshery_controllers.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/models/meshery_controllers.go 2025-06-20 07:57:54.000000000 +0200 @@ -8,12 +8,15 @@ "time" "github.com/gofrs/uuid" + "github.com/meshery/meshkit/broker" "github.com/meshery/meshkit/broker/nats" "github.com/meshery/meshkit/database" "github.com/meshery/meshkit/logger" "github.com/meshery/meshkit/models/controllers" "github.com/meshery/meshkit/utils" mesherykube "github.com/meshery/meshkit/utils/kubernetes" + libmeshsync "github.com/meshery/meshsync/pkg/lib/meshsync" + channelBroker "github.com/meshery/meshsync/pkg/lib/tmp_meshkit/broker/channel" "github.com/spf13/viper" ) @@ -35,6 +38,27 @@ MesheryOperator ) +type MeshsyncDeploymentModeType string + +const ( + MeshsyncDeploymentModeUndefined MeshsyncDeploymentModeType = "undefined" + MeshsyncDeploymentModeOperator MeshsyncDeploymentModeType = "operator" + MeshsyncDeploymentModeLibrary MeshsyncDeploymentModeType = "library" +) + +func MeshsyncDeploymentModeFromString(value string) MeshsyncDeploymentModeType { + switch value { + // if empty value, default to operator mode + case "", string(MeshsyncDeploymentModeOperator): + return MeshsyncDeploymentModeOperator + case string(MeshsyncDeploymentModeLibrary): + return MeshsyncDeploymentModeLibrary + // if some random string, undefined mode + default: + return MeshsyncDeploymentModeUndefined + } +} + type MesheryControllersHelper struct { // context that is being manged by a particular controllerHelper instance contextID string @@ -51,6 +75,8 @@ log logger.Handler oprDepConfig controllers.OperatorDeploymentConfig dbHandler *database.Handler + + meshsyncDeploymentMode MeshsyncDeploymentModeType } func (mch *MesheryControllersHelper) GetControllerHandlersForEachContext() map[MesheryController]controllers.IMesheryController { @@ -76,9 +102,15 @@ // Resetting this value results in again subscribing to the Broker. ctxMeshsyncDataHandler: nil, dbHandler: dbHandler, + meshsyncDeploymentMode: MeshsyncDeploymentModeOperator, } } +func (mch *MesheryControllersHelper) SetMeshsyncDeploymentMode(value MeshsyncDeploymentModeType) *MesheryControllersHelper { + mch.meshsyncDeploymentMode = value + return mch +} + // initializes Meshsync data handler for the contexts for whom it has not been // initialized yet. Apart from updating the map, it also runs the handler after // updating the map. The presence of a handler for a context in a map indicate that @@ -89,44 +121,33 @@ ctxID := k8scontext.ID if mch.ctxMeshsyncDataHandler == nil { - controllerHandlers := mch.ctxControllerHandlers - - // brokerStatus := controllerHandlers[MesheryBroker].GetStatus() - // do something if broker is being deployed , maybe try again after sometime - brokerEndpoint, err := controllerHandlers[MesheryBroker].GetPublicEndpoint() - if brokerEndpoint == "" { - if err != nil { - mch.log.Warn(err) - } - mch.log.Info(fmt.Sprintf("Meshery Broker unreachable for Kubernetes context (%v)", ctxID)) - return mch + var brokerHandler broker.Handler + if mch.meshsyncDeploymentMode == MeshsyncDeploymentModeOperator { + brokerHandler = mch.meshsynDataHandlersNatsBroker(k8scontext) + } else if mch.meshsyncDeploymentMode == MeshsyncDeploymentModeLibrary { + brokerHandler = mch.meshsynDataHandlersChannelBroker(k8scontext) + } else { + mch.log.Warnf( + "MesheryControllersHelper unsupported meshsyncDeploymentMode %s", + mch.meshsyncDeploymentMode, + ) } - brokerHandler, err := nats.New(nats.Options{ - // URLS: []string{"localhost:4222"}, - URLS: []string{brokerEndpoint}, - ConnectionName: MesheryServerBrokerConnection, - Username: "", - Password: "", - ReconnectWait: 2 * time.Second, - MaxReconnect: 60, - }) - if err != nil { - mch.log.Warn(err) - mch.log.Info(fmt.Sprintf("MeshSync not configured for Kubernetes context (%v) due to '%v'", ctxID, err.Error())) + if brokerHandler == nil { + // all messages has been logged already return mch } - mch.log.Info(fmt.Sprintf("Connected to Meshery Broker (%v) for Kubernetes context (%v)", brokerEndpoint, ctxID)) token, _ := ctx.Value(TokenCtxKey).(string) msDataHandler := NewMeshsyncDataHandler(brokerHandler, *mch.dbHandler, mch.log, provider, userID, uuid.FromStringOrNil(k8scontext.ConnectionID), mesheryInstanceID, token) - err = msDataHandler.Run() + err := msDataHandler.Run() if err != nil { mch.log.Warn(err) mch.log.Info(fmt.Sprintf("Unable to connect MeshSync for Kubernetes context (%s) due to: %s", ctxID, err.Error())) return mch } mch.ctxMeshsyncDataHandler = msDataHandler + // TODO + // this could be misleading, if meshsync as library failed mch.log.Info(fmt.Sprintf("MeshSync connected for Kubernetes context (%s)", ctxID)) - } // }(mch) @@ -134,6 +155,78 @@ return mch } +func (mch *MesheryControllersHelper) meshsynDataHandlersNatsBroker( + k8scontext K8sContext, +) broker.Handler { + ctxID := k8scontext.ID + controllerHandlers := mch.ctxControllerHandlers + + // brokerStatus := controllerHandlers[MesheryBroker].GetStatus() + // do something if broker is being deployed , maybe try again after sometime + brokerEndpoint, err := controllerHandlers[MesheryBroker].GetPublicEndpoint() + if brokerEndpoint == "" { + if err != nil { + mch.log.Warn(err) + } + mch.log.Info( + fmt.Sprintf("Meshery Broker unreachable for Kubernetes context (%v)", ctxID), + ) + return nil + } + brokerHandler, err := nats.New(nats.Options{ + // URLS: []string{"localhost:4222"}, + URLS: []string{brokerEndpoint}, + ConnectionName: MesheryServerBrokerConnection, + Username: "", + Password: "", + ReconnectWait: 2 * time.Second, + MaxReconnect: 60, + }) + + if err != nil { + mch.log.Warn(err) + mch.log.Info(fmt.Sprintf("MeshSync not configured for Kubernetes context (%v) due to '%v'", ctxID, err.Error())) + return nil + } + mch.log.Info(fmt.Sprintf("Connected to Meshery Broker (%v) for Kubernetes context (%v)", brokerEndpoint, ctxID)) + return brokerHandler +} + +func (mch *MesheryControllersHelper) meshsynDataHandlersChannelBroker( + k8scontext K8sContext, +) broker.Handler { + br := channelBroker.NewChannelBrokerHandler() + // TODO + // as we will be running per connection base, + // we need to double check that the state is not shared anywhere in meshsync internally, + // otherwise we will have hard to detect errors. + go func(handler broker.Handler) { + kubeConfig, err := k8scontext.GenerateKubeConfig() + if err != nil { + mch.log.Error( + fmt.Errorf("error generating kubeconfig from context %v", err), + ) + return + } + + // TODO add option to stop meshsync run (f.e. when switch deployment modes) + if err := libmeshsync.Run( + // TODO + // provide a mechanism to distinguish server logs from meshsync logs + mch.log, + libmeshsync.WithOutputMode("broker"), + libmeshsync.WithBrokerHandler(handler), + libmeshsync.WithKubeConfig(kubeConfig), + ); err != nil { + mch.log.Error( + fmt.Errorf("error running meshsync lib %v", err), + ) + } + }(br) + + return br +} + func (mch *MesheryControllersHelper) RemoveMeshSyncDataHandler(ctx context.Context, contextID string) { mch.ctxMeshsyncDataHandler = nil @@ -181,6 +274,9 @@ // should be called after AddCtxControllerHandlers func (mch *MesheryControllersHelper) UpdateOperatorsStatusMap(ot *OperatorTracker) *MesheryControllersHelper { // go func(mch *MesheryControllersHelper) { + if mch.meshsyncDeploymentMode != MeshsyncDeploymentModeOperator { + return mch + } if ot.IsUndeployed(mch.contextID) { mch.ctxOperatorStatus = controllers.Undeployed @@ -238,6 +334,9 @@ if ot.DisableOperator { //Return true everytime so that operators stay in undeployed state across all contexts return mch } + if mch.meshsyncDeploymentMode != MeshsyncDeploymentModeOperator { + return mch + } // go func(mch *MesheryControllersHelper) { if mch.ctxOperatorStatus == controllers.NotDeployed { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/models/meshsync.go new/mesheryctl-0.8.107/server/models/meshsync.go --- old/mesheryctl-0.8.105/server/models/meshsync.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/models/meshsync.go 2025-06-20 07:57:54.000000000 +0200 @@ -1,7 +1,7 @@ package models import ( - "github.com/layer5io/meshsync/pkg/model" + "github.com/meshery/meshsync/pkg/model" "github.com/meshery/schemas/models/v1beta1/pattern" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/models/meshsync_events.go new/mesheryctl-0.8.107/server/models/meshsync_events.go --- old/mesheryctl-0.8.105/server/models/meshsync_events.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/models/meshsync_events.go 2025-06-20 07:57:54.000000000 +0200 @@ -8,7 +8,7 @@ "github.com/meshery/meshkit/logger" "github.com/meshery/meshkit/utils" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" "github.com/meshery/schemas/models/v1beta1/component" "gorm.io/gorm" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/server/models/meshsync_register_queue.go new/mesheryctl-0.8.107/server/models/meshsync_register_queue.go --- old/mesheryctl-0.8.105/server/models/meshsync_register_queue.go 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/server/models/meshsync_register_queue.go 2025-06-20 07:57:54.000000000 +0200 @@ -3,7 +3,7 @@ import ( "sync" - meshsyncmodel "github.com/layer5io/meshsync/pkg/model" + meshsyncmodel "github.com/meshery/meshsync/pkg/model" ) var ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/ui/components/Header.js new/mesheryctl-0.8.107/ui/components/Header.js --- old/mesheryctl-0.8.105/ui/components/Header.js 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/ui/components/Header.js 2025-06-20 07:57:54.000000000 +0200 @@ -30,13 +30,10 @@ Grid2, Hidden, NoSsr, - useTheme, - useMediaQuery, } from '@sistent/sistent'; import { CanShow } from '@/utils/can'; import { keys } from '@/utils/permission_constants'; import OrganizationAndWorkSpaceSwitcher from './SpacesSwitcher/SpaceSwitcher'; -import Router from 'next/router'; import HeaderMenu from './HeaderMenu'; import ConnectionModal from './General/Modals/ConnectionModal'; import MesherySettingsEnvButtons from './MesherySettingsEnvButtons'; @@ -52,7 +49,6 @@ CBadge, StyledToolbar, UserInfoContainer, - SettingsWrapper, } from './Header.styles'; import { getUserAccessToken, @@ -388,11 +384,12 @@ const Header = ({ onDrawerToggle, onDrawerCollapse, - abilityUpdated, contexts, activeContexts, setActiveContexts, searchContexts, + // eslint-disable-next-line no-unused-vars + abilityUpdated, }) => { const { notify } = useNotification; @@ -414,8 +411,6 @@ const collaboratorExtensionUri = providerCapabilities?.extensions?.collaborator?.[0]?.component; const loaderType = 'circular'; - const theme = useTheme(); - const isDesktop = useMediaQuery(theme.breakpoints.up('sm')); return ( <NoSsr> <> @@ -465,37 +460,19 @@ )} </ErrorBoundary> <UserInfoContainer> - <CustomTooltip title="Kubernetes Connections"> - <UserSpan style={{ position: 'relative' }}> - <K8sContextMenu - contexts={contexts} - activeContexts={activeContexts} - setActiveContexts={setActiveContexts} - searchContexts={searchContexts} - /> - </UserSpan> - </CustomTooltip> - <SettingsWrapper - isDesktop={isDesktop} - data-testid="settings-button" - aria-describedby={abilityUpdated} - > - <CanShow Key={keys.VIEW_SETTINGS}> - <CustomTooltip title="Settings"> - <IconButton onClick={() => Router.push('/settings')}> - <SettingsIcon - style={{ ...iconMedium, fill: theme.palette.common.white }} - /> - </IconButton> - </CustomTooltip> - </CanShow> - </SettingsWrapper> + <UserSpan style={{ position: 'relative' }}> + <K8sContextMenu + contexts={contexts} + activeContexts={activeContexts} + setActiveContexts={setActiveContexts} + searchContexts={searchContexts} + /> + </UserSpan> <CustomTooltip title="Notifications"> <div data-testid="notification-button"> <NotificationDrawerButton /> </div> </CustomTooltip> - <CustomTooltip title={'User Profile'}> <UserSpan> <User /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/ui/components/HeaderMenu.js new/mesheryctl-0.8.107/ui/components/HeaderMenu.js --- old/mesheryctl-0.8.105/ui/components/HeaderMenu.js 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/ui/components/HeaderMenu.js 2025-06-20 07:57:54.000000000 +0200 @@ -131,7 +131,6 @@ id: 'settings', title: 'Settings', onClick: handleSettings, - showOnWeb: false, }, { id: 'preferences', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/ui/tests/e2e/indexui.spec.js new/mesheryctl-0.8.107/ui/tests/e2e/indexui.spec.js --- old/mesheryctl-0.8.105/ui/tests/e2e/indexui.spec.js 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/ui/tests/e2e/indexui.spec.js 2025-06-20 07:57:54.000000000 +0200 @@ -10,10 +10,6 @@ await expect(page.getByTestId('navigation')).toBeVisible(); }); - test('Test if Settings button is displayed', async ({ page }) => { - await expect(page.getByTestId('settings-button')).toBeVisible(); - }); - test('Test if Notification button is displayed', async ({ page }) => { await expect(page.getByTestId('notification-button')).toBeVisible(); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/ui/tests/e2e/models.spec.js new/mesheryctl-0.8.107/ui/tests/e2e/models.spec.js --- old/mesheryctl-0.8.105/ui/tests/e2e/models.spec.js 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/ui/tests/e2e/models.spec.js 2025-06-20 07:57:54.000000000 +0200 @@ -22,8 +22,7 @@ test.describe.serial('Model Workflow Tests', () => { test.beforeEach(async ({ page }) => { - await page.goto('/'); - await page.getByTestId('settings-button').click(); + await page.goto('/settings'); await page.getByTestId('settings-tab-registry').click(); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mesheryctl-0.8.105/ui/tests/e2e/performance.spec.js new/mesheryctl-0.8.107/ui/tests/e2e/performance.spec.js --- old/mesheryctl-0.8.105/ui/tests/e2e/performance.spec.js 2025-06-18 07:47:25.000000000 +0200 +++ new/mesheryctl-0.8.107/ui/tests/e2e/performance.spec.js 2025-06-20 07:57:54.000000000 +0200 @@ -16,13 +16,7 @@ const GRAFANA_ELEMENTS = ['grafana-api-key']; -const COMMON_UI_ELEMENTS = [ - 'navigation', - 'settings-button', - 'notification-button', - 'profile-button', - 'header-menu', -]; +const COMMON_UI_ELEMENTS = ['navigation', 'notification-button', 'profile-button', 'header-menu']; test.describe('Performance Section Tests', () => { test.beforeEach(async ({ page }) => { ++++++ mesheryctl.obsinfo ++++++ --- /var/tmp/diff_new_pack.LCSJRd/_old 2025-06-20 16:54:23.476632068 +0200 +++ /var/tmp/diff_new_pack.LCSJRd/_new 2025-06-20 16:54:23.480632233 +0200 @@ -1,5 +1,5 @@ name: mesheryctl -version: 0.8.105 -mtime: 1750225645 -commit: fbf611ca5f51734b970498dfd7c75d558e750dad +version: 0.8.107 +mtime: 1750399074 +commit: bbca057d598a71330b5dacd34795d42097d2d3f4 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/mesheryctl/vendor.tar.gz /work/SRC/openSUSE:Factory/.mesheryctl.new.31170/vendor.tar.gz differ: char 15, line 1