Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package linkerd-cli-edge for openSUSE:Factory checked in at 2025-07-06 17:05:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/linkerd-cli-edge (Old) and /work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.1903 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "linkerd-cli-edge" Sun Jul 6 17:05:57 2025 rev:36 rq:1290079 version:25.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/linkerd-cli-edge/linkerd-cli-edge.changes 2025-06-30 14:01:36.711498279 +0200 +++ /work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.1903/linkerd-cli-edge.changes 2025-07-06 17:07:58.851131697 +0200 @@ -1,0 +2,14 @@ +Thu Jul 03 05:13:09 UTC 2025 - Johannes Kastl <opensuse_buildserv...@ojkastl.de> + +- Update to version 25.7.1: + * no CLI-related changes (other than dependencies) + * Dependencies + - build(deps): bump rustc-demangle from 0.1.24 to 0.1.25 + (#14187) + - build(deps): bump bumpalo from 3.18.1 to 3.19.0 (#14189) + - build(deps-dev): bump eslint-plugin-import in /web/app + (#14190) + - build(deps-dev): bump @babel/core from 7.27.4 to 7.27.7 in + /web/app (#14191) + +------------------------------------------------------------------- Old: ---- linkerd-cli-edge-25.6.4.obscpio New: ---- linkerd-cli-edge-25.7.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ linkerd-cli-edge.spec ++++++ --- /var/tmp/diff_new_pack.V1YY9S/_old 2025-07-06 17:08:00.907216775 +0200 +++ /var/tmp/diff_new_pack.V1YY9S/_new 2025-07-06 17:08:00.907216775 +0200 @@ -19,7 +19,7 @@ %define linkerd_executable_name linkerd Name: linkerd-cli-edge -Version: 25.6.4 +Version: 25.7.1 Release: 0 Summary: CLI for the linkerd service mesh for Kubernetes License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.V1YY9S/_old 2025-07-06 17:08:00.955218762 +0200 +++ /var/tmp/diff_new_pack.V1YY9S/_new 2025-07-06 17:08:00.959218927 +0200 @@ -3,8 +3,8 @@ <param name="url">https://github.com/linkerd/linkerd2</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">edge-25.6.4</param> - <param name="match-tag">edge-25.6.4</param> + <param name="revision">edge-25.7.1</param> + <param name="match-tag">edge-25.7.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">edge-(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.V1YY9S/_old 2025-07-06 17:08:00.987220086 +0200 +++ /var/tmp/diff_new_pack.V1YY9S/_new 2025-07-06 17:08:00.991220252 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/linkerd/linkerd2</param> - <param name="changesrevision">91127be6ef8cbbd825a61ecd14ca2250a36b957e</param></service></servicedata> + <param name="changesrevision">6ebc86b2f8c60edf2aa77805493b1a07cfdc1454</param></service></servicedata> (No newline at EOF) ++++++ linkerd-cli-edge-25.6.4.obscpio -> linkerd-cli-edge-25.7.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/.proxy-version new/linkerd-cli-edge-25.7.1/.proxy-version --- old/linkerd-cli-edge-25.6.4/.proxy-version 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/.proxy-version 2025-07-02 20:00:51.000000000 +0200 @@ -1 +1 @@ -v2.304.0 +v2.306.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/Cargo.lock new/linkerd-cli-edge-25.7.1/Cargo.lock --- old/linkerd-cli-edge-25.6.4/Cargo.lock 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/Cargo.lock 2025-07-02 20:00:51.000000000 +0200 @@ -225,9 +225,9 @@ [[package]] name = "bumpalo" -version = "3.18.1" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -2059,9 +2059,9 @@ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustix" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/RELEASE.md new/linkerd-cli-edge-25.7.1/RELEASE.md --- old/linkerd-cli-edge-25.6.4/RELEASE.md 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/RELEASE.md 2025-07-02 20:00:51.000000000 +0200 @@ -4,26 +4,18 @@ ## 1. Bump the proxy version -Determine the commit SHA of the `linkerd2-proxy` repo to be included in the -release. If -[proxy-version](https://github.com/linkerd/linkerd2/blob/main/.proxy-version) -is already at the desired SHA, skip to step 2. +Determine the commit SHA or tag of the `linkerd2-proxy` repo to be included in +the release. + +The [proxy-version](https://github.com/linkerd/linkerd2/blob/main/.proxy-version) +file is kept in sync automatically by the +[`sync-proxy`](https://github.com/linkerd/linkerd2/actions/workflows/sync-proxy.yml) +workflow. If the file is already at the desired SHA or tag, skip to step 2. If updating to `linkerd-proxy` HEAD, note the commit SHA at [latest.txt](https://build.l5d.io/linkerd2-proxy/latest.txt) (Look for `linkerd2-proxy-<linkerd2-proxy-sha>.tar.gz`). -Create a new branch in the `linkerd2` repo, `username/proxy-version-bump`. - -Then run: - -```bash -bin/git-commit-proxy-version <linkerd2-proxy-sha> -``` - -The script will update the `.proxy-version` file. Submit a PR to obtain reviews -and approval. - ## 2. Bump the proxy-init or CNI plugin version If the `linkerd2/proxy-init` or `linkerd2/cni-plugin` projects have a new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/charts/linkerd-crds/templates/serviceprofile.yaml new/linkerd-cli-edge-25.7.1/charts/linkerd-crds/templates/serviceprofile.yaml --- old/linkerd-cli-edge-25.6.4/charts/linkerd-crds/templates/serviceprofile.yaml 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/charts/linkerd-crds/templates/serviceprofile.yaml 2025-07-02 20:00:51.000000000 +0200 @@ -265,7 +265,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds.golden new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds.golden --- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds.golden 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds.golden 2025-07-02 20:00:51.000000000 +0200 @@ -6755,7 +6755,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds_with_gateway_api.golden new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds_with_gateway_api.golden --- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds_with_gateway_api.golden 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds_with_gateway_api.golden 2025-07-02 20:00:51.000000000 +0200 @@ -6755,7 +6755,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output.golden new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output.golden --- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output.golden 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output.golden 2025-07-02 20:00:51.000000000 +0200 @@ -6773,7 +6773,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output_ha.golden new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output_ha.golden --- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output_ha.golden 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output_ha.golden 2025-07-02 20:00:51.000000000 +0200 @@ -6773,7 +6773,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden --- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden 2025-07-02 20:00:51.000000000 +0200 @@ -6773,7 +6773,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden --- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden 2025-07-02 20:00:51.000000000 +0200 @@ -6755,7 +6755,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden --- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden 2025-07-02 20:00:51.000000000 +0200 @@ -6755,7 +6755,6 @@ isFailure: type: boolean scope: Namespaced - preserveUnknownFields: false names: plural: serviceprofiles singular: serviceprofile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/policy-controller/core/src/outbound/target.rs new/linkerd-cli-edge-25.7.1/policy-controller/core/src/outbound/target.rs --- old/linkerd-cli-edge-25.6.4/policy-controller/core/src/outbound/target.rs 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/policy-controller/core/src/outbound/target.rs 2025-07-02 20:00:51.000000000 +0200 @@ -8,6 +8,9 @@ pub enum OutboundDiscoverTarget { Resource(ResourceTarget), External(SocketAddr), + // UndefinedPort indicates that the target is a Service on a port which is + // not defined in the Service's spec. + UndefinedPort(ResourceTarget), } #[derive(Clone, Debug)] @@ -33,3 +36,18 @@ } } } + +impl Kind { + pub fn group(&self) -> &'static str { + match self { + Kind::EgressNetwork(_) => "policy.linkerd.io", + Kind::Service => "core", + } + } + pub fn kind(&self) -> &'static str { + match self { + Kind::EgressNetwork(_) => "EgressNetwork", + Kind::Service => "Service", + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/policy-controller/grpc/src/outbound.rs new/linkerd-cli-edge-25.7.1/policy-controller/grpc/src/outbound.rs --- old/linkerd-cli-edge-25.6.4/policy-controller/grpc/src/outbound.rs 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/policy-controller/grpc/src/outbound.rs 2025-07-02 20:00:51.000000000 +0200 @@ -195,6 +195,10 @@ OutboundDiscoverTarget::External(original_dst) => { Ok(tonic::Response::new(fallback(original_dst))) } + + OutboundDiscoverTarget::UndefinedPort(resource) => { + Ok(tonic::Response::new(undefined_port(resource))) + } } } @@ -205,6 +209,7 @@ req: tonic::Request<outbound::TrafficSpec>, ) -> Result<tonic::Response<BoxWatchStream>, tonic::Status> { let metrics = self.watch_metrics.start(); + tracing::debug!(?req, "watching outbound policy"); let target = match self.lookup(req.into_inner()) { Ok(target) => target, Err(status) => { @@ -251,6 +256,9 @@ metrics, ))) } + OutboundDiscoverTarget::UndefinedPort(resource) => { + Ok(tonic::Response::new(undefined_port_stream(drain, resource))) + } } } } @@ -407,6 +415,58 @@ } } +fn undefined_port(target: ResourceTarget) -> outbound::OutboundPolicy { + let metadata = Some(Metadata { + kind: Some(metadata::Kind::Resource(Resource { + group: target.kind.group().to_string(), + kind: target.kind.kind().to_string(), + name: target.name, + namespace: target.namespace, + section: String::default(), + port: target.port.get() as u32, + })), + }); + + let opaque = outbound::proxy_protocol::Opaque { + routes: vec![outbound::OpaqueRoute { + metadata: Some(Metadata { + kind: Some(metadata::Kind::Default("undefined-port".to_string())), + }), + rules: vec![outbound::opaque_route::Rule { + backends: Some(outbound::opaque_route::Distribution { + kind: Some(outbound::opaque_route::distribution::Kind::Empty( + outbound::opaque_route::distribution::Empty {}, + )), + }), + filters: vec![outbound::opaque_route::Filter { + kind: Some(outbound::opaque_route::filter::Kind::Forbidden( + linkerd2_proxy_api::opaque_route::Forbidden {}, + )), + }], + }], + }], + }; + + outbound::OutboundPolicy { + metadata, + protocol: Some(outbound::ProxyProtocol { + kind: Some(outbound::proxy_protocol::Kind::Opaque(opaque)), + }), + } +} + +fn undefined_port_stream(drain: drain::Watch, target: ResourceTarget) -> BoxWatchStream { + Box::pin(async_stream::try_stream! { + tokio::pin! { + let shutdown = drain.signaled(); + } + + yield undefined_port(target.clone()); + + let _ = shutdown.await; + }) +} + fn to_proto( policy: OutboundPolicy, allow_l5d_request_headers: bool, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/policy-controller/k8s/index/src/outbound/index.rs new/linkerd-cli-edge-25.7.1/policy-controller/k8s/index/src/outbound/index.rs --- old/linkerd-cli-edge-25.6.4/policy-controller/k8s/index/src/outbound/index.rs 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/policy-controller/k8s/index/src/outbound/index.rs 2025-07-02 20:00:51.000000000 +0200 @@ -1,5 +1,5 @@ use crate::{ - ports::{ports_annotation, PortMap}, + ports::{ports_annotation, PortMap, PortSet}, routes::{ExplicitGKN, HttpRouteResource, ImpliedGKN}, ClusterInfo, }; @@ -9,8 +9,8 @@ use linkerd_policy_controller_core::{ outbound::{ AppProtocol, Backend, Backoff, FailureAccrual, GrpcRetryCondition, GrpcRoute, - HttpRetryCondition, HttpRoute, Kind, OutboundPolicy, ParentInfo, ResourceTarget, - RouteRetry, RouteSet, RouteTimeouts, TcpRoute, TlsRoute, TrafficPolicy, + HttpRetryCondition, HttpRoute, Kind, OutboundDiscoverTarget, OutboundPolicy, ParentInfo, + ResourceTarget, RouteRetry, RouteSet, RouteTimeouts, TcpRoute, TlsRoute, TrafficPolicy, }, routes::GroupKindNamespaceName, }; @@ -30,7 +30,7 @@ #[derive(Debug)] pub struct Index { namespaces: NamespaceIndex, - services_by_ip: HashMap<IpAddr, ResourceRef>, + services_by_ip: HashMap<IpAddr, ServicePorts>, egress_networks_by_ref: HashMap<ResourceRef, EgressNetwork>, // holds information about resources. currently EgressNetworks and Services resource_info: HashMap<ResourceRef, ResourceInfo>, @@ -67,6 +67,12 @@ pub namespace: String, } +#[derive(Debug)] +struct ServicePorts { + service: ResourceRef, + ports: PortSet, +} + /// Holds all `Pod`, `Server`, and `ServerAuthorization` indices by-namespace. #[derive(Debug)] struct NamespaceIndex { @@ -263,6 +269,12 @@ tracing::warn!(%error, service=name, namespace=ns, "Failed to parse grpc retry") }).unwrap_or_default(); + let service_ref = ResourceRef { + kind: ResourceKind::Service, + name: name.clone(), + namespace: ns.clone(), + }; + self.services_by_ip.retain(|_, v| v.service != service_ref); if let Some(cluster_ips) = service .spec .as_ref() @@ -274,12 +286,30 @@ } match cluster_ip.parse() { Ok(addr) => { - let service_ref = ResourceRef { - kind: ResourceKind::Service, - name: name.clone(), - namespace: ns.clone(), - }; - self.services_by_ip.insert(addr, service_ref); + service.spec.as_ref().and_then(|spec| { + spec.ports.as_ref().map(|ports| { + ports.iter().for_each(|port| { + let port = match port.port.try_into().ok().and_then(NonZeroU16::new) { + Some(port) => port, + None => { + tracing::warn!(%port.port, service=name, "Invalid service port"); + return; + } + }; + tracing::debug!( + %addr, + port, + service = name, + "inserting service into ip index" + ); + self.services_by_ip + .entry(addr) + .or_insert( + ServicePorts { service: service_ref.clone(), ports: Default::default() } + ).ports.insert(port); + }); + }) + }); } Err(error) => { tracing::warn!(%error, service=name, cluster_ip, "Invalid cluster ip"); @@ -334,7 +364,7 @@ namespace, }; self.resource_info.remove(&service_ref); - self.services_by_ip.retain(|_, v| *v != service_ref); + self.services_by_ip.retain(|_, v| v.service != service_ref); self.reindex_resources(); } @@ -515,11 +545,33 @@ Ok(watch.watch.subscribe()) } - pub fn lookup_service(&self, addr: IpAddr) -> Option<(String, String)> { - self.services_by_ip - .get(&addr) - .cloned() - .map(|r| (r.namespace, r.name)) + pub fn lookup_service( + &self, + addr: IpAddr, + port: NonZeroU16, + source_namespace: String, + ) -> Option<OutboundDiscoverTarget> { + tracing::debug!(?addr, "looking up service"); + + let service = self.services_by_ip.get(&addr)?; + tracing::debug!(service=?service.service, "found service"); + if service.ports.contains(&port) { + Some(OutboundDiscoverTarget::Resource(ResourceTarget { + name: service.service.name.clone(), + namespace: service.service.namespace.clone(), + port, + source_namespace, + kind: Kind::Service, + })) + } else { + Some(OutboundDiscoverTarget::UndefinedPort(ResourceTarget { + name: service.service.name.clone(), + namespace: service.service.namespace.clone(), + port, + source_namespace, + kind: Kind::Service, + })) + } } pub fn lookup_egress_network( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/policy-controller/runtime/src/lib.rs new/linkerd-cli-edge-25.7.1/policy-controller/runtime/src/lib.rs --- old/linkerd-cli-edge-25.6.4/policy-controller/runtime/src/lib.rs 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/policy-controller/runtime/src/lib.rs 2025-07-02 20:00:51.000000000 +0200 @@ -12,7 +12,7 @@ mod lease; pub use self::args::Args; -use std::num::NonZeroU16; +use std::{net::IpAddr, num::NonZeroU16}; #[derive(Clone, Debug)] struct InboundDiscover(index::inbound::SharedIndex); @@ -123,21 +123,13 @@ fn lookup_ip( &self, - addr: std::net::IpAddr, + addr: IpAddr, port: NonZeroU16, source_namespace: String, ) -> Option<core::outbound::OutboundDiscoverTarget> { let index = self.0.read(); - if let Some((namespace, name)) = index.lookup_service(addr) { - return Some(core::outbound::OutboundDiscoverTarget::Resource( - core::outbound::ResourceTarget { - name, - namespace, - port, - source_namespace, - kind: core::outbound::Kind::Service, - }, - )); + if let Some(target) = index.lookup_service(addr, port, source_namespace.clone()) { + return Some(target); } if let Some((namespace, name)) = index.lookup_egress_network(addr, source_namespace.clone()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/policy-test/src/test_route.rs new/linkerd-cli-edge-25.7.1/policy-test/src/test_route.rs --- old/linkerd-cli-edge-25.6.4/policy-test/src/test_route.rs 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/policy-test/src/test_route.rs 2025-07-02 20:00:51.000000000 +0200 @@ -782,11 +782,20 @@ ..Default::default() }, spec: Some(k8s::ServiceSpec { - ports: Some(vec![k8s::ServicePort { - port: 4191, - app_protocol, - ..Default::default() - }]), + ports: Some(vec![ + k8s::ServicePort { + name: Some("port-one".to_string()), + port: 4191, + app_protocol: app_protocol.clone(), + ..Default::default() + }, + k8s::ServicePort { + name: Some("port-two".to_string()), + port: 9999, + app_protocol, + ..Default::default() + }, + ]), ..Default::default() }), ..k8s::Service::default() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/web/app/package.json new/linkerd-cli-edge-25.7.1/web/app/package.json --- old/linkerd-cli-edge-25.6.4/web/app/package.json 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/web/app/package.json 2025-07-02 20:00:51.000000000 +0200 @@ -41,7 +41,7 @@ "whatwg-fetch": "3.6.20" }, "devDependencies": { - "@babel/core": "^7.27.4", + "@babel/core": "^7.27.7", "@babel/eslint-parser": "^7.27.5", "@babel/plugin-proposal-class-properties": "^7.17.12", "@babel/preset-env": "^7.27.2", @@ -61,7 +61,7 @@ "enzyme-adapter-react-16": "^1.15.8", "eslint": "^8.57.1", "eslint-config-airbnb": "^19.0.4", - "eslint-plugin-import": "^2.31.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-promise": "^7.2.1", "eslint-plugin-react": "^7.37.5", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/web/app/yarn.lock new/linkerd-cli-edge-25.7.1/web/app/yarn.lock --- old/linkerd-cli-edge-25.6.4/web/app/yarn.lock 2025-06-26 20:07:02.000000000 +0200 +++ new/linkerd-cli-edge-25.7.1/web/app/yarn.lock 2025-07-02 20:00:51.000000000 +0200 @@ -40,21 +40,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== -"@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.27.4": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" - integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== +"@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.27.4", "@babel/core@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.7.tgz#0ddeab1e7b17317dad8c3c3a887716f66b5c4428" + integrity sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.3" + "@babel/generator" "^7.27.5" "@babel/helper-compilation-targets" "^7.27.2" "@babel/helper-module-transforms" "^7.27.3" - "@babel/helpers" "^7.27.4" - "@babel/parser" "^7.27.4" + "@babel/helpers" "^7.27.6" + "@babel/parser" "^7.27.7" "@babel/template" "^7.27.2" - "@babel/traverse" "^7.27.4" - "@babel/types" "^7.27.3" + "@babel/traverse" "^7.27.7" + "@babel/types" "^7.27.7" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -77,18 +77,7 @@ dependencies: eslint-rule-composer "^0.3.0" -"@babel/generator@^7.20.14", "@babel/generator@^7.27.3": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.3.tgz#ef1c0f7cfe3b5fc8cbb9f6cc69f93441a68edefc" - integrity sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q== - dependencies: - "@babel/parser" "^7.27.3" - "@babel/types" "^7.27.3" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/generator@^7.27.5": +"@babel/generator@^7.20.14", "@babel/generator@^7.27.5": version "7.27.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== @@ -328,27 +317,20 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/helpers@^7.27.4": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.4.tgz#c79050c6a0e41e095bfc96d469c85431e9ed7fe7" - integrity sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ== +"@babel/helpers@^7.27.6": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== dependencies: "@babel/template" "^7.27.2" - "@babel/types" "^7.27.3" + "@babel/types" "^7.27.6" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.15", "@babel/parser@^7.27.2", "@babel/parser@^7.27.3", "@babel/parser@^7.27.4": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.4.tgz#f92e89e4f51847be05427285836fc88341c956df" - integrity sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g== - dependencies: - "@babel/types" "^7.27.3" - -"@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.5": - version "7.27.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" - integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.27.5", "@babel/parser@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.7.tgz#1687f5294b45039c159730e3b9c1f1b242e425e9" + integrity sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q== dependencies: - "@babel/types" "^7.27.3" + "@babel/types" "^7.27.7" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": version "7.27.1" @@ -1073,23 +1055,23 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" -"@babel/traverse@^7.18.6", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" - integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== +"@babel/traverse@^7.18.6", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.7.tgz#8355c39be6818362eace058cf7f3e25ac2ec3b55" + integrity sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw== dependencies: "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.3" - "@babel/parser" "^7.27.4" + "@babel/generator" "^7.27.5" + "@babel/parser" "^7.27.7" "@babel/template" "^7.27.2" - "@babel/types" "^7.27.3" + "@babel/types" "^7.27.7" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.3.0", "@babel/types@^7.4.4": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.3.tgz#c0257bedf33aad6aad1f406d35c44758321eb3ec" - integrity sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw== +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.27.7", "@babel/types@^7.3.0", "@babel/types@^7.4.4": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.7.tgz#40eabd562049b2ee1a205fa589e629f945dce20f" + integrity sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" @@ -2683,17 +2665,19 @@ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-includes@^3.1.6, array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== +array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" array-union@^1.0.1: version "1.0.2" @@ -2738,27 +2722,28 @@ es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" -array.prototype.findlastindex@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== +array.prototype.findlastindex@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" + es-abstract "^1.23.9" es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" -array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== +array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" array.prototype.flatmap@^1.3.2, array.prototype.flatmap@^1.3.3: version "1.3.3" @@ -3796,12 +3781,12 @@ dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: - ms "2.1.2" + ms "^2.1.3" debug@^3.2.7: version "3.2.7" @@ -3810,13 +3795,6 @@ dependencies: ms "^2.1.1" -debug@^4.3.4: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - decimal.js@^10.5.0: version "10.5.0" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" @@ -4426,6 +4404,66 @@ unbox-primitive "^1.1.0" which-typed-array "^1.1.18" +es-abstract@^1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-negative-zero "^2.0.3" + is-regex "^1.2.1" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -4517,13 +4555,6 @@ has-tostringtag "^1.0.2" hasown "^2.0.2" -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" @@ -4531,6 +4562,13 @@ dependencies: hasown "^2.0.0" +es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -4607,36 +4645,36 @@ is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" - integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.31.0: - version "2.31.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" - integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== +eslint-plugin-import@^2.32.0: + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.0" + eslint-module-utils "^2.12.1" hasown "^2.0.2" - is-core-module "^2.15.1" + is-core-module "^2.16.1" is-glob "^4.0.3" minimatch "^3.1.2" object.fromentries "^2.0.8" object.groupby "^1.0.3" - object.values "^1.2.0" + object.values "^1.2.1" semver "^6.3.1" - string.prototype.trimend "^1.0.8" + string.prototype.trimend "^1.0.9" tsconfig-paths "^3.15.0" eslint-plugin-jsx-a11y@^6.10.2: @@ -5064,6 +5102,13 @@ dependencies: is-callable "^1.1.3" +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + foreground-child@^3.1.0: version "3.3.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" @@ -5925,10 +5970,10 @@ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== -is-core-module@^2.13.0, is-core-module@^2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" - integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== +is-core-module@^2.13.0, is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: hasown "^2.0.2" @@ -6253,6 +6298,13 @@ dependencies: call-bound "^1.0.2" +is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + is-weakset@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" @@ -7150,13 +7202,6 @@ dependencies: yallist "^3.0.2" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -7323,11 +7368,6 @@ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" @@ -7460,6 +7500,11 @@ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== +object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -7524,7 +7569,7 @@ define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.1.1, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0, object.values@^1.2.1: +object.values@^1.1.1, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== @@ -8341,7 +8386,7 @@ es-errors "^1.3.0" set-function-name "^2.0.1" -regexp.prototype.flags@^1.5.3: +regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== @@ -8675,14 +8720,7 @@ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.7.2: +semver@^7.5.4, semver@^7.7.2: version "7.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== @@ -9014,6 +9052,14 @@ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -9140,16 +9186,7 @@ es-abstract "^1.23.0" es-object-atoms "^1.0.0" -string.prototype.trimend@^1.0.4, string.prototype.trimend@^1.0.7, string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.9: +string.prototype.trimend@^1.0.4, string.prototype.trimend@^1.0.7, string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== @@ -10102,6 +10139,19 @@ gopd "^1.2.0" has-tostringtag "^1.0.2" +which-typed-array@^1.1.19: + version "1.1.19" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -10184,11 +10234,6 @@ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" ++++++ linkerd-cli-edge.obsinfo ++++++ --- /var/tmp/diff_new_pack.V1YY9S/_old 2025-07-06 17:08:01.859256169 +0200 +++ /var/tmp/diff_new_pack.V1YY9S/_new 2025-07-06 17:08:01.863256335 +0200 @@ -1,5 +1,5 @@ name: linkerd-cli-edge -version: 25.6.4 -mtime: 1750961222 -commit: 91127be6ef8cbbd825a61ecd14ca2250a36b957e +version: 25.7.1 +mtime: 1751479251 +commit: 6ebc86b2f8c60edf2aa77805493b1a07cfdc1454 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/linkerd-cli-edge/vendor.tar.gz /work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.1903/vendor.tar.gz differ: char 14, line 1