1
0
mirror of https://github.com/rancher/steve.git synced 2025-07-15 23:46:34 +00:00
Commit Graph

645 Commits

Author SHA1 Message Date
renovate-rancher[bot]
cbe3f4d25f
chore(deps): update module golang.org/x/sync to v0.16.0 2025-07-10 04:43:45 +00:00
Eric Promislow
3692666375
Index the secrets annotation "management.cattle.io/project-scoped-secret-copy" (#706)
Tests will be in the rancher integration tests.
2025-07-09 13:13:53 -07:00
Eric Promislow
76477e98df
Hard-wire external associations: 6 and 7/7: unit tests for updating A=>B links when instances of A and B change (#702)
* Implement hard-wired external associations:

* The table is in sqlproxy.proxy_store
  - externalGVKDependencies - a map of GVKs to dependencies.
    When the key GVK is updated, it triggers the updates in the database for the dependent GVKs,
    replacing fields as specified in the table.

* This is done in an afterUpsert handler, but it's done after the transaction for the core
  GVK update is finished, because most likely the dependent GVK updates will depend on the
  final database values for the GVK being updated, and if we do it as part of the transaction
  the new values won't be committed to the database.

* Wrote unit tests for external associations.

* When an object is modified/created, check for external deps that need updating.

* Stop emitting errors when joining tables if one of the tables doesn't exist.

* Finish rebasing manually.

* Fix external association unit-tests after rebasing.
2025-07-09 13:11:42 -07:00
renovate-rancher[bot]
883d2f805a
chore(deps): update module github.com/rancher/wrangler/v3 to v3.2.2 (#710)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-07-09 14:50:04 -04:00
Eric Promislow
a3cd651c75
Revert part of steve PR 633 (#708)
Specifically, recomment a test that was uncommented in this PR,
and revert the underlying code that made this test pass.  That
code change causes user-based integration tests to fail, so something
is not correct in that code.

This was actually unrelated to the reason for PR 633, to fix
a problem when sorting on a label that dropped objects that
didn't have that label.  That part remains untouched.
2025-07-09 11:12:47 -07:00
Eric Promislow
2a86733c64
Use SQL WITH statements to sort unbound labels. (#663)
* Use SQL `WITH` statements to sort unbound labels.

These are labels whose names are never positively referenced in a filter,
so they don't need to exist on the row that we still want to display.

Here I create a virtual table of all the rows, substituting a null
value for each label that isn't associated on the row, and then sort on that.

* Just always select-distinct for now.

* Add more tests for filtering/sorting

- Assign more values to the cattle and horses labels
- Move the sortfield value to a number in the 100s -- keep in mind
  these values are sorted by ascii value of underlying chars, not numerically
- Rename the var names to better reflect the values they contain

* Remove mentions of the prepared SQL statement in the test descriptions.

We care either about the items we get back from the query, or in some
cases the SQL that gets generated by the AST interpreter.

* Simplify the use of WITH stmts in SQL (thx Tom)

* Fix the comment about an unexpected situation.

* Fix post-rebase tests.
2025-07-08 10:07:05 -07:00
renovate-rancher[bot]
7aea36c8bd
chore(deps): update module modernc.org/sqlite to v1.38.0 (#551)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-07-04 16:37:31 -07:00
renovate-rancher[bot]
b483d62b28
chore(deps): update github actions (#544)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-07-04 15:45:41 -07:00
renovate-rancher[bot]
d7ebf18596
chore(deps): update module golang.org/x/sync to v0.15.0 (#534)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-07-04 15:39:30 -07:00
renovate-rancher[bot]
e143845323
chore(deps): update module github.com/urfave/cli/v2 to v2.27.7 (#533)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-07-04 15:38:03 -07:00
renovate-rancher[bot]
8e9406302d
chore(deps): update dependency go to v1.24.4 (#517)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-07-04 15:22:11 -07:00
Sakala Venkata Krishna Rohit
8cd7bd0a8f
Revert "Make view link related to GET RBAC permission. (#699)" (#703)
This reverts commit 542c471584.
2025-07-04 14:27:43 -07:00
Sakala Venkata Krishna Rohit
542c471584
Make view link related to GET RBAC permission. (#699)
* Add view link based on GET RBAC permission

* Add tests for view link
2025-07-04 14:06:24 -07:00
Eric Promislow
3be82a28d1
Hard-wire external associations: 5/7: update A=>B links when instances of A change (#646)
* Continue rebasing.

* Wrote unit tests for external associations.

* Fix the generated SQL.

Some syntactic sugar (capitalizing the keywords), but use the 'ON' syntax on JOINs.

* We want "management.cattle.io.projects:spec.displayName" not "...spec.clusterName"

* Implement hard-wired external associations:

* The table is in sqlproxy.proxy_store
  - externalGVKDependencies - a map of GVKs to dependencies.
    When the key GVK is updated, it triggers the updates in the database for the dependent GVKs,
    replacing fields as specified in the table.

* This is done in an afterUpsert handler, but it's done after the transaction for the core
  GVK update is finished, because most likely the dependent GVK updates will depend on the
  final database values for the GVK being updated, and if we do it as part of the transaction
  the new values won't be committed to the database.

* When an object is modified/created, check for external deps that need updating.

* Stop emitting errors when joining tables if one of the tables doesn't exist.

* Update unit test syntax for SQL queries.

* And an override check

This ensures we don't overwrite good data when
pulling data from one table to another.

* Drop labels, and use mgmt.cattle.io/spec.displayName

There's no need to hardwire labels in proxy_store:typeSpecificIndexedFields
because all labels are indexed in the shadow labels table.

* Keep clusterName, add displayName for mgmt.cattle.io

* Fix rebase/merge breakage.

* Finish the merge: add the 'selfUpdateInfo' param where it didn't get inserted during merge.

* Patch up rebase failures.

* Now gomock generates named args. I give up.
2025-07-03 14:35:09 -07:00
Alejandro Ruiz
61173104af
Fix parsing of metadata.fields when age is already a duration (#700)
* Fix parsing of metadata.fields when age is already a duration

* Fix frozen "now"

* Use ParseTimestampOrHumanReadableDuration instead
2025-07-01 13:53:51 -03:00
Eric Promislow
c782fea615
Update the READMEs to cover SQL-based caching. (#693) 2025-06-26 09:29:51 -07:00
Peter Matseykanets
952305e096
vai: Rework events garbage collection delete query (#682) 2025-06-26 09:22:40 -07:00
Alejandro Ruiz
6495e7879c
Make waiting for ExtensionAPIServer configurable (#694) 2025-06-26 17:04:49 +02:00
renovate-rancher[bot]
3086ba4bd0
chore(deps): update module github.com/rancher/remotedialer to v0.4.5-rc.3 (#674)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-06-26 06:57:32 -04:00
Eric Promislow
496a6f8968
Hard-wire external associations: 3 sections in, this one is 4/7 (#645)
* Continue rebasing.

* Wrote unit tests for external associations.

* Fix the generated SQL.

Some syntactic sugar (capitalizing the keywords), but use the 'ON' syntax on JOINs.

* whitespace fix post rebase

* We want "management.cattle.io.projects:spec.displayName" not "...spec.clusterName"

* Fix the database calls: drop the key

* Fix breakage during automatic rebase merging gone wrong.

* ws fix - NFC

* Post rebase-merge fixes

* Fix rebase-driven merge.

* Fix rebase breakage.

* go-uber v0.5.2 prefers real arg names to '<argN>'
2025-06-25 16:10:48 -07:00
renovate-rancher[bot]
ad064a8f8a
chore(deps): update registry.suse.com/bci/bci-micro docker tag to v15.7 (#685)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-06-25 07:29:33 -04:00
renovate-rancher[bot]
94228c486d
chore(deps): update module github.com/rancher/dynamiclistener to v0.7.0 (#690)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-06-25 07:25:58 -04:00
renovate-rancher[bot]
17511791e1
chore(deps): update module github.com/rancher/wrangler/v3 to v3.2.2-rc.3 (#692)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2025-06-24 09:08:15 -04:00
Swastik Gour
e17ca28461
Bumped dependencies to be compatible with k8s-v1.33 (#681)
Signed-off-by: swastik959 <Sswastik959@gmail.com>
2025-06-20 17:53:42 +05:30
Eric Promislow
c32995dba4
Log and ignore transform errors. (#683) 2025-06-18 11:02:46 -07:00
Felipe Gehrke
4212386e13
changing ParseHumanDuration to support timestamp values too (#684) 2025-06-18 10:57:49 -07:00
Felipe Gehrke
b3539616e0
#48673 - Added Timestamp Cache Handling to metadata.fields (#648)
* added timestamp convertion to metadata.fields

* fixed duration parsing

* fixed tests

* removed tags file

* added comments

* added better error handling

* changed ParseHumanDuration to use Fscanf

* added builtins handling

* adding mock updates

* fixing tests

* another try

* added timestamp convertion to metadata.fields

* addressing comments from @ericpromislow

* converting error to warning

* added template options
2025-06-16 15:33:28 -07:00
Eric Promislow
2e8a0f2851
Support indexing on array-like fields (#673)
* Run tests using sqlite DB in a temp directory.

I was running into write-file errors which happens when two sqlite processes try to update the DB at the same time.

* Implement and test the extractBarredValue custom SQL function.

* Explain the DB path constants better.
2025-06-16 15:06:07 -07:00
Eric Promislow
2cd7997e6b
Fix non-vai sorting involving string arrays, add tests. (#618)
- Bump wrangler to get fix for 'GetValueFromAny'.
  This adds string arrays to the types it supports.

- Use a newer go library sort function to maintain a stable sort

- Use the map-sort-map pattern to avoid repeatedly calculating the
  same underlying value for `object[arg1][arg2][...]`
2025-06-13 10:18:48 -07:00
Chad Roberts
5de54d6a4a
Handle int64 field type when adding index fields (#671)
* Handle int64 field type when adding index fields

* add support for float64
2025-06-13 13:04:55 -04:00
Chad Roberts
58f15a4349
check err after client.List call when creating informer (#672) 2025-06-12 17:03:52 -04:00
Josh Meranda
c67ddf2de4
[main] block UI until we receive requests from kube-apiserver (#668)
* block UI until we receive requests from kube-apiserver

* satisfy CI

* undo test code

---------

Co-authored-by: joshmeranda <joshua.meranda@gmail.com>
2025-06-11 14:58:36 -04:00
Tom Lebreux
1157865ea3
Fix panic due to concurrent map writes (#669)
The same object is given to many HTTP request and they proceed to modify
that object.
2025-06-11 11:57:48 -04:00
Tom Lebreux
cf97607be5
Return resourceversion too old error to UI instead of logging (#667)
* Return watch error instead of logging it

The UI needs to know about watch error like `resourceversion too old` so
we need to return it.

* Sort by resourceVersion as number

The UI makes some assumption on resourceVersion. It assumes they are a
number and they are ordered by the number value. We'll want to fix this
at some point most likely but for now let's give something in a way that
UI wants.

* Remove -d suffix

After much testing, a delete of an object seems to have its own
resourceVersion so we don't need the -d suffix, we can simply use the
new resourceVersion.
2025-06-10 17:29:42 -04:00
Eric Promislow
7db113a1fd
Add vai access-control for ext Tokens and Kubeconfigs (#651)
* Add vai access-control for tokens.

* Check for both Token and Kubeconfig resources

* Add a unit test for verifying the generated filters for restricted resources.

* Remove a TODO comment as Tom points out we no longer need it.

* Return error if we can't get userinfo from apiOp.Request.Context

* Stop using camelCase for the user ID label.

* Add a test for the admin user.

* And fold the two user-access tests into a single parameterized test.

* Address reviewer comments.

* post-rebase merge fixes

* WIP - add a comment about determining admin users.

---------

Co-authored-by: Peter Matseykanets <peter.matseykanets@suse.com>
2025-06-10 14:28:49 -07:00
Tom Lebreux
f258ebcf31
Add garbage collection for events table (#664)
* Add ListOptionIndexerOptions to create ListOptionIndexer

* Remove unused function

* Implement configurable garbage collection on ListOptionIndexer

* Propagate Steve options from Server
2025-06-10 12:02:55 -04:00
Tom Lebreux
39fed09b2e
Bump apiserver to v0.6.2 (#665) 2025-06-10 08:18:23 -04:00
Tom Lebreux
b4db257cdb
Handle transaction failure due to canceled context.Context (#662)
* Re-order SQL event hooks so events are last

* Add QueryRowContext for single line queries

* Add test case for unknown resource version

* Properly check rows and close it

* More accurate error message when context.Context is canceled

* Re-order test check
2025-06-09 15:39:09 -04:00
Tom Lebreux
b695567794
Keep track of events for SQL cache watches (#661)
* Keep track of past events

* Clarify RV acronym

* Fix comment typo

* Rename listEvents variables

* Improve filter readability

* Move defer
2025-06-05 18:40:19 -04:00
Tom Lebreux
b0aa90cd22
Add watch filtering support for vai (#654)
* Add support for watch filtering

* Remove debug Println

* Validate watch selector
2025-06-03 18:10:36 -04:00
Tom Lebreux
e3f207ddc2
Add basic watch functionality for SQL cache (#653)
* Remove unused method

* Add basic watch functionality

* Remove TestWatchNamesErrReceive test
2025-06-03 18:07:18 -04:00
Tom Lebreux
2672969496
Add object to RegisterAfterDelete and introduce RegisterAfterDeleteAll (#649)
* Add object to AfterDelete callbacks

* Add RegisterAfterDeleteAll
2025-06-03 17:32:43 -04:00
Tom Lebreux
a8f3ce48d6
Convert tests to real SQL store (#652) 2025-06-02 16:01:45 -06:00
Tom Lebreux
97f07399d6
Bump apiserver to v0.6.1 (#650) 2025-05-30 15:16:29 -04:00
Alejandro Ruiz
06fe9c3ef4
Calculate AccessSets once per request instead of per resource (#647) 2025-05-30 16:32:56 +02:00
Tom Lebreux
55a1b940a0
Split RegisterAfterUpsert into RegisterAfterAdd and RegisterAfterUpdate (#644)
* Split RegisterAfterUpsert into two

We're going to need to be able to differentiate between Add and Update
for storing events in the _events table.

* Update mocks
2025-05-30 08:25:12 -04:00
Tom Lebreux
cb0d9d6d54
Remove limit and continue param for SQL cache (#643) 2025-05-27 09:53:10 -04:00
Tom Lebreux
1e5018e31a
Fix returning error for empty ingresses.spec.rules.host (#642)
* Fix returning error for empty ingresses.spec.rules.host

* Fix error format

* Use require instead of assert
2025-05-20 16:14:19 -04:00
Eric Promislow
18ac23afe7
Support quoting values in queries. (#601)
* Support quoting values in queries.

* Correct test: 'informer' => 'sqltypes', and update description.

* Enable backslash-escaping of quoted strings.
2025-05-13 11:40:54 -07:00
Chad Roberts
27ed443fff
[main] Use Wrangler defined field for resourcePermissions, bump wrangler (#637)
* Remove custom addition of resourcePermissions in favor of wrangler defined type, bump wrangler
2025-05-13 13:30:27 -04:00