storj/satellite/metainfo
Márton Elek 98921f9faa satellite/overlay: fix placement selection config parsing
When we do `satellite run api --placement '...'`, the placement rules are not parsed well.

The problem is based on `viper.AllSettings()`, and the main logic is sg. like this (from a new unit test):

```
		r := ConfigurablePlacementRule{}
		err := r.Set(p)
		require.NoError(t, err)
		serialized := r.String()

		r2 := ConfigurablePlacementRule{}
		err = r2.Set(serialized)
		require.NoError(t, err)

		require.Equal(t, p, r2.String())
```

All settings evaluates the placement rules in `ConfigurablePlacementRules` and stores the string representation.

The problem is that we don't have proper `String()` implementation (it prints out the structs instead of the original definition.

There are two main solutions for this problem:

 1. We can fix the `String()`. When we parse a placement rule, the `String()` method should print out the original definition
 2. We can switch to use pure string as configuration parameter, and parse the rules only when required.

I feel that 1 is error prone, we can do it (and in this patch I added a lot of `String()` implementations, but it's hard to be sure that our `String()` logic is inline with the parsing logic.

Therefore I decided to make the configuration value of the placements a string (or a wrapper around string).

That's the main reason why this patch seems to be big, as I updated all the usages.

But the main part is in beginning of the `placement.go` (configuration parsing is not a pflag.Value implementation any more, but a separated step).

And `filter.go`, (a few more String implementation for filters.

https://github.com/storj/storj/issues/6248

Change-Id: I47c762d3514342b76a2e85683b1c891502a0756a
2023-09-21 14:31:41 +00:00
..
expireddeletion satellite/{metainfo,metabase}: optimize expired/zombie objects deletion 2023-06-09 11:22:46 +00:00
pointerverification satellite/metabase: add piece size calculation to segment 2023-02-22 11:04:02 +00:00
attribution_test.go satellite/metainfo: set user_agent in bucket_metainfos on bucket recreation 2023-07-12 21:48:05 +00:00
attribution.go satellite/metainfo: prevent internal DB errors in Public API 2023-09-12 15:12:44 +00:00
batch_test.go satellite/metainfo: add missing metadata validation 2022-08-23 16:56:45 +02:00
batch.go satellite: implement metainfo.GetBucketLocation endpoint 2023-08-28 13:48:07 +02:00
config_test.go satellite/metainfo: flag to rollout pending_objects table support 2023-09-13 10:33:23 +00:00
config.go satellite/metainfo: flag to rollout pending_objects table support 2023-09-13 10:33:23 +00:00
endpoint_bucket_test.go satellite/overlay: fix placement selection config parsing 2023-09-21 14:31:41 +00:00
endpoint_bucket.go satellite/metainfo: prevent internal DB errors in Public API 2023-09-12 15:12:44 +00:00
endpoint_internal_test.go satellite/metainfo: hardcode the prefix 2023-05-04 17:06:51 +03:00
endpoint_object_test.go satellite/metabase: commit object is not respecting expiration time 2023-09-14 16:25:28 +02:00
endpoint_object.go satellite/metabase: use constant for pending version 2023-09-12 18:01:12 +00:00
endpoint_segment_test.go satellite/metainfo: prevent internal DB errors in Public API 2023-09-12 15:12:44 +00:00
endpoint_segment.go satellite/metainfo: prevent internal DB errors in Public API 2023-09-12 15:12:44 +00:00
endpoint_test.go satellite/metainfo: tests for new GetBucketLocation method 2023-08-28 11:49:23 +00:00
endpoint.go satellite/metabase: custom error for commit object 2023-09-15 09:52:42 +00:00
signing.go satellite/metainfo: use deterministic signing for satStreamID 2021-01-19 15:56:29 +00:00
validation_test.go satellite: use evenkit instead of evenstat/top endpoint 2022-10-24 11:45:12 +02:00
validation.go satellite/metainfo: do full bucket validation only on create 2023-07-17 16:15:33 +02:00
version_collector_test.go all: fix deprecated ioutil commands 2022-10-11 15:27:29 +00:00
version_collector.go satellite/metainfo: add storj-downloader as a known user agent 2022-11-17 16:03:54 +00:00