Skip to content

Conversation

@muma378
Copy link
Contributor

@muma378 muma378 commented Mar 22, 2025

KEP: #17222

Closes #14947

Checklist:

  • Either (a) I've created an enhancement proposal and discussed it with the community, (b) this is a bug fix, or (c) this does not need to be in the release notes.
  • The title of the PR states what changed and the related issues number (used for the release note).
  • The title of the PR conforms to the Toolchain Guide
  • I've included "Closes [ISSUE #]" or "Fixes [ISSUE #]" in the description to automatically close the associated issue.
  • I've updated both the CLI and UI to expose my feature, or I plan to submit a second PR with them.
  • Does this PR require documentation updates?
  • I've updated documentation as required by this PR.
  • I have signed off all my commits as required by DCO
  • I have written unit and/or e2e tests for my change. PRs without these are unlikely to be merged.
  • My build is green (troubleshooting builds).
  • My new feature complies with the feature status guidelines.
  • I have added a brief description of why this PR is necessary and/or what this PR solves.
  • Optional. My organization is added to USERS.md.
  • Optional. For bug fixes, I've indicated what older releases this fix should be cherry-picked into (this may or may not happen depending on risk/complexity).

@muma378 muma378 requested a review from a team as a code owner March 22, 2025 07:29
@bunnyshell
Copy link

bunnyshell bot commented Mar 22, 2025

❌ Preview Environment undeployed from Bunnyshell

Available commands (reply to this comment):

  • 🚀 /bns:deploy to deploy the environment

@muma378 muma378 force-pushed the feat/application-pagination branch 3 times, most recently from 3a39083 to 2bf3a0c Compare March 22, 2025 16:43
@muma378 muma378 requested a review from a team as a code owner March 22, 2025 16:43
@codecov
Copy link

codecov bot commented Mar 22, 2025

Codecov Report

Attention: Patch coverage is 8.20312% with 235 lines in your changes missing coverage. Please review.

Project coverage is 59.97%. Comparing base (09b5cbd) to head (cb7d492).
Report is 2 commits behind head on master.

Files with missing lines Patch % Lines
util/argo/pagination.go 0.00% 218 Missing ⚠️
cmd/argocd/commands/app.go 35.71% 9 Missing ⚠️
pkg/apis/application/v1alpha1/types.go 0.00% 5 Missing ⚠️
server/application/application.go 88.88% 2 Missing ⚠️
cmd/argocd/commands/applicationset.go 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #22444      +/-   ##
==========================================
- Coverage   60.22%   59.97%   -0.25%     
==========================================
  Files         346      347       +1     
  Lines       59197    59397     +200     
==========================================
- Hits        35653    35626      -27     
- Misses      20686    20909     +223     
- Partials     2858     2862       +4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@muma378 muma378 force-pushed the feat/application-pagination branch from 2bf3a0c to 58e7d03 Compare March 23, 2025 02:57
@muma378 muma378 changed the title feat: add server side apps pagination(#17222) feat: add server side apps pagination(#14947) Mar 23, 2025
@muma378 muma378 force-pushed the feat/application-pagination branch from 58e7d03 to 6306337 Compare March 23, 2025 03:09
@muma378
Copy link
Contributor Author

muma378 commented Mar 23, 2025

PTAL @alexmt

@muma378 muma378 force-pushed the feat/application-pagination branch from 6306337 to 3b80d3b Compare March 23, 2025 03:24
@reggie-k reggie-k added this to the v3.1 milestone Mar 23, 2025
@muma378 muma378 force-pushed the feat/application-pagination branch 2 times, most recently from c43997a to 44322fa Compare March 27, 2025 05:49
@muma378 muma378 force-pushed the feat/application-pagination branch 2 times, most recently from 9deaaaa to 228710c Compare March 28, 2025 05:40
Copy link
Member

@linghaoSu linghaoSu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

PS: If you're not interested in making modifications in the frontend/CLI, I'm happy to take this on.

@muma378
Copy link
Contributor Author

muma378 commented Mar 28, 2025

LGTM

PS: If you're not interested in making modifications in the frontend/CLI, I'm happy to take this on.

Great! I know nothing about UI stack, please feel free to do it.

@muma378 muma378 force-pushed the feat/application-pagination branch from 228710c to 9ebb492 Compare April 1, 2025 23:51
@thandleman-r7
Copy link

@linghaoSu Any idea on when you might get around to the frontend implementation? Eagerly awaiting this feature :)

@muma378 muma378 force-pushed the feat/application-pagination branch 2 times, most recently from 68bfe23 to 786d15e Compare April 20, 2025 16:30
@muma378 muma378 force-pushed the feat/application-pagination branch from 786d15e to e04eac5 Compare May 9, 2025 05:05
@DanielYWoo
Copy link

Love, it, really appreciate if you can release it, our ArgoCD home page has been stuck there for months because the browser cannot handle 5000+ apps in a single response.

metav1.ListMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"`
Items []Application `json:"items" protobuf:"bytes,2,rep,name=items"`
Items []Application `json:"items" protobuf:"bytes,2,rep,name=items"`
Stats ApplicationListStats `json:"stats,omitempty" protobuf:"bytes,3,opt,name=stats"`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The list stats should be part of an ApplicationListResponse object specific to the server/application/application.proto.

Copy link
Contributor Author

@muma378 muma378 May 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, that sounds more reasonable, but it might be a problem that a breaking change was introduced. Maybe we should add a new method instead of modifying the return type of the existing one?

Comment on lines 38 to 81
// the application name to start from (app with min name is included in response)
optional string minName = 9;
// the application name to end at (app with max name is included in response)
optional string maxName = 10;
// the repos filter, ignore if the field repo was defined
repeated string repos = 11;
// the clusters filter
repeated string clusters = 12;
// the namespaces filter
repeated string namespaces = 13;
// the auth sync filter
optional bool autoSyncEnabled = 14;
// the sync status filter
repeated string syncStatuses = 15;
// the health status filter
repeated string healthStatuses = 16;
// search
optional string search = 17;
// offset
optional int64 offset = 18;
// limit
optional int64 limit = 19;
// sort by enum=name;created-at;synchronized
optional ApplicationSortBy sortBy = 20;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should be wrapped in a ListOptions object. Since some fields are duplicated, the old fields should probably be flagged as deprecated.

return q.Repos
}

func buildFilter(q application.ApplicationQuery) argo.Filter {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move to its own utils package.

for _, project := range getProjectsFromApplicationQuery(*q) {
projects[project] = true
}
filter := buildFilter(*q)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The watch/get code is different that the list.
Perhaps they should 1) Not use the same ApplicationQuery object and 2) not have any of the listing logic.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I’m not quite sure I understand. Could you clarify the difference between watch and get in this context? From what I see, all the filters seem applicable to the watch logic as well, so that the UI only receives events related to the applications it’s interested in.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@agaudreault can you help us review this change? thanks

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@muma378 can we find another one to review this PR?

@Whisper40
Copy link

Hi @agaudreault, can you tell us when this PR will be released ?

@muma378 muma378 force-pushed the feat/application-pagination branch 2 times, most recently from cea5e12 to 9516f5f Compare July 6, 2025 07:54
@muma378 muma378 force-pushed the feat/application-pagination branch from 9516f5f to cb7d492 Compare July 6, 2025 23:39
@muma378 muma378 force-pushed the feat/application-pagination branch from cb7d492 to 8bb03f0 Compare July 8, 2025 04:33
@thandleman-r7
Copy link

thandleman-r7 commented Aug 7, 2025

@crenshaw-dev Wondering if we can get some attention here. I think many of us are eagerly awaiting this feature to be implemented. Thanks!

@thandleman-r7
Copy link

For folks awaiting this feature, I have reached out in one of the CNCF Slack channels for ArgoCD to try and get some attention

@thandleman-r7
Copy link

Unfortunately development is not ongoing. This was the response I received:

It has been discussed internally with the original contributor. There is currently no ongoing work being done in the PR.
Since this is a complex feature, it will most likely require multiple PRs, API changes and a high involvement with the community on the steps to implement the proposal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Server-side pagination to make ArgoCD UI a rocket

9 participants