Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: olexii4 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
/retest |
...-common/src/main/java/org/eclipse/che/api/factory/server/gitlab/AbstractGitlabUrlParser.java
Outdated
Show resolved
Hide resolved
...vops/src/main/java/org/eclipse/che/api/factory/server/azure/devops/AzureDevOpsURLParser.java
Outdated
Show resolved
Hide resolved
...vops/src/main/java/org/eclipse/che/api/factory/server/azure/devops/AzureDevOpsURLParser.java
Outdated
Show resolved
Hide resolved
|
@olexii4 Please update the related tests with ip v6 examples. |
31df750 to
164262d
Compare
...est/java/org/eclipse/che/api/core/util/lineconsumer/ConcurrentCompositeLineConsumerTest.java
Outdated
Show resolved
Hide resolved
...infrastructure/kubernetes/docker/auth/UserSpecificDockerRegistryCredentialsProviderTest.java
Outdated
Show resolved
Hide resolved
| KubernetesClient client = spy(kubernetesClient); | ||
| when(cheServerKubernetesClientFactory.create()).thenReturn(client); | ||
| kubernetesClient = kubernetesMockServer.createClient(); | ||
| when(cheServerKubernetesClientFactory.create()).thenReturn(kubernetesClient); |
There was a problem hiding this comment.
These changes were required because Mockito 5 doesn't allow spy() on mock objects. This is a breaking change from Mockito 3.x:
Changes made:
- Removed import static org.mockito.Mockito.spy;
- Changed setup from:
kubernetesClient = spy(kubernetesMockServer.createClient());
KubernetesClient client = spy(kubernetesClient);
when(cheServerKubernetesClientFactory.create()).thenReturn(client);To:
kubernetesClient = kubernetesMockServer.createClient();
when(cheServerKubernetesClientFactory.create()).thenReturn(kubernetesClient);| }) | ||
| .when(subject) | ||
| .checkPermission(anyObject(), anyObject(), anyObject()); | ||
| .checkPermission(any(), any(), any()); |
There was a problem hiding this comment.
This change was required for Mockito 5 compatibility due to the removal of the deprecated anyObject() matcher:
Change made:
- Import: ArgumentMatchers.anyObject() → ArgumentMatchers.any()
- Usage: checkPermission(anyObject(), anyObject(), anyObject()) → checkPermission(any(), any(), any())
d93322a to
05ab89c
Compare
...ver/src/main/java/org/eclipse/che/api/factory/server/bitbucket/BitbucketServerURLParser.java
Fixed
Show fixed
Hide fixed
...ver/src/main/java/org/eclipse/che/api/factory/server/bitbucket/BitbucketServerURLParser.java
Fixed
Show fixed
Hide fixed
b556135 to
aee02e0
Compare
Fix IPv6 bracket handling and SSH URL parsing issues: - GitLab: Fix double-bracketing bug in getPatternMatcherByUrl() where IPv6 addresses were wrapped in additional brackets - GitHub: Add sshToUri() helper to correctly handle IPv6 addresses in SSH URLs - GitLab: Add sshToUri() helper to correctly handle IPv6 addresses in SSH URLs - Azure DevOps: Fix SSH URL parsing to handle IPv6 bracket notation Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com> Signed-off-by: Oleksii Orel <oorel@redhat.com>
Add complete IPv6 address support to BitbucketServerURLParser: - Add IPv6 bracket handling in getUrlPatterns(), isUserTokenPresent(), and getPatternMatcherByUrl() - Fix SSH URL parsing to correctly handle IPv6 addresses with bracket notation - Escape scheme parameter in regex patterns to prevent regular expression injection (fixes CodeQL security warnings) Security: Use Pattern.quote() on user-controlled scheme values before inserting into regex patterns to prevent regex injection attacks. Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com> Signed-off-by: Oleksii Orel <oorel@redhat.com>
Add 39 new IPv6 test cases across all parsers (from 4 to 43 total): - Azure DevOps: 8 new IPv6 tests covering branches, tags, loopback, credentials, dynamic pattern matching - GitHub: 8 new IPv6 tests covering branches, pull requests, dynamic patterns, loopback, .git suffix - GitLab: 11 new IPv6 tests covering subgroups, validation, branches with slashes, loopback - Bitbucket Server: 12 new IPv6 tests (from zero coverage) covering HTTPS, SSH, user repos, branches, validation Test scenarios include: - IPv6 with branches and tags - IPv6 with pull request IDs - IPv6 loopback addresses (::1) - IPv6 full-form addresses - IPv6 with ports - IPv6 with credentials - IPv6 SSH URLs - IPv6 URL validation via isValid() - Dynamic pattern matching for unconfigured hosts Also update license headers to 2026 in affected test files. All 238 tests passing across all parsers. Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com> Signed-off-by: Oleksii Orel <oorel@redhat.com>
@vinokurig I have fixed it |
|
/retest |
|
/retest |
|
@olexii4: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
What does this PR do?
This change adds IPv6 support in Eclipse Che Server to enable operation in IPv6-only network environments. As Kubernetes platforms (particularly OpenShift Container Platform 4.20) migrate to IPv6, the factory resolver must handle IPv6 addresses correctly in URLs and API calls.
The implementation involved minimal, focused changes to URL validation patterns and server URL extraction, enabling full IPv6 support while maintaining complete backward compatibility with IPv4-only and dual-stack environments.
Background:
The Eclipse Che factory resolver previously failed to operate with IPv6 git server URLs due to:
http://[::1]:8080)IPv6 Bracket Notation:
IPv6 addresses in URLs require square brackets to distinguish the address from port numbers:
http://[2001:db8::1]:8080/repo.githttp://2001:db8::1:8080/repo.git(ambiguous)Changes:
AbstractGitlabUrlParser:
AbstractGithubURLParser:
AzureDevOpsURLParser:
Technical Details:
Java's URI.getHost() returns IPv6 addresses WITH brackets (e.g., "[2001:db8::1]"). When constructing regex patterns, these brackets must be escaped as
\[and\]because they are special regex characters. The fix uses:Screenshot/screencast of this PR
What issues does this PR fix or reference?
fixes: eclipse-che/che#23674
How to test this PR?
PR Checklist
As the author of this Pull Request I made sure that:
What issues does this PR fix or referenceandHow to test this PRcompletedRelease Notes
Reviewers
Reviewers, please comment how you tested the PR when approving it.