Commit Graph

79 Commits

Author SHA1 Message Date
Christopher Kolstad d1d271bb41 Add db-error code file 2021-02-09 10:19:35 +01:00
Christopher Kolstad 063d3f0e4a Make feature-toggle-store return 409
- After seeing frontend behaviour where the user could add the same
tag multiple times, and not get errors or be stopped doing so, we'll
change the backend to return a 409 if you tag a feature with a tag it
already has.

- Previous to this commit, the setup was to do `onConflict().ignore()`
  which caused the frontend to not get any help from the backend as to
  whether or not the operation was allowed

- This fix adds a custom error and adds a branch to the handleError util
  method for handling just that error type with a 409.

- This caused a couple of tests to receive 409, probably due to
  insufficient cleanup between tests. Adding faker as a dev-dependency and randomising
  toggle names and tag values for each test reduces the chance that
  we'll run into duplicate issues in the future for the tests that
  touches this problem

fixes: #711
2021-02-08 16:22:15 +01:00
Christopher Kolstad e952ae20a8 Added explicit pool settings in options.db object
- Also adds metrics for min and max pool size
- Metrics for free/used connections.
- Metrics for pending and current acquires

fixes: #705
2021-02-08 10:54:20 +01:00
Ivar Conradi Østhus 17c8fe7710 feat: Introduce addon framework
fixes: #587

Co-authored-by: Christopher Kolstad <chriswk@getunleash.ai>
2021-02-05 15:20:00 +01:00
Ivar Conradi Østhus 3a983d291c fix: even-store should not block on emit 2021-02-02 13:27:24 +01:00
Christopher Kolstad bd94f358c3 feat: Added tags to events table and emitted events
fixes: #695
2021-01-29 09:53:27 +01:00
Christopher Kolstad e555118cb1 feat: Add filterquery support for toggles
- For now supports
   - tag
   - project
   - namePrefix

fixes: #690
2021-01-26 14:14:07 +01:00
Ivar Conradi Østhus f5aa5b577c fix: remove fields from /api/client/features respnse (#692) 2021-01-22 13:09:26 +01:00
Christopher Kolstad ef19dfa7cb Support deprecating and reactivating strategies
fixes: #682
2021-01-21 15:53:24 +01:00
Christopher Kolstad c17a1980a2 Add service layer
This simplifies stores to just be storage interaction, they no longer react to events.

Controllers now call services and awaits the result from the call.

When the service calls are returned the database is updated.
This simplifies testing dramatically, cause you know that your state is
updated when returned from a call, rather than hoping the store has
picked up the event (which really was a command) and reacted to it.

Events are still emitted from eventStore, so other parts of the app can
react to events as they're being sent out.

As part of the move to services, we now also emit an application-created
event when we see a new client application.

Fixes: #685
Fixes: #595
2021-01-21 10:59:19 +01:00
Christopher Kolstad 43801f1f13 Add Tags and tag types
- First iteration of api for tags and tag-types
- Documentation in place
- Adds three new tables
   - tag_types
   - tags
   - feature_tag
- Tagging a feature is adding a row in the feature_tag
  join table

* #665

Co-authored-by: Simen Bekkhus <sbekkhus91@gmail.com>
Co-authored-by: Ivar Conradi Østhus <ivarconr@gmail.com>
2021-01-14 13:09:05 +01:00
Ivar Conradi Østhus a1ac0249a9 fix: cleanup test console output 2021-01-06 18:06:56 +01:00
Ivar Conradi Østhus cdfba8f7b1 feat: Adds last-seen dat on toggles
When an application updates metrics for a toggle we now
stores the timestamp on the toggle when it was last seen
used by an application. This will make it much easier to
detect toggles not in use anymore.

closes #642
2020-12-22 11:05:00 +01:00
Ivar Conradi Østhus 71eb88c847 fix: this.timer merge conflict 2020-12-16 14:56:48 +01:00
Laurent Dezitter 5857f0e58d feat: add stop() method to gracefully terminate unleash (#665) 2020-12-16 14:49:11 +01:00
Ivar Conradi Østhus b644071a34 feat: Add technical support for projects 2020-11-23 21:47:51 +01:00
Mathias Åhsberg 144e832cdc feat: Add support for explicitly set database version. (#654)
Co-authored-by: Mathias Åhsberg <mathias.ahsberg@resurs.se>
2020-11-20 11:37:56 +01:00
Ivar Conradi Østhus 4a3c136167 feat: Remove applications (#635) 2020-09-25 09:39:12 +02:00
Ivar Conradi Østhus 8ac4a243b2 Fix/upgrade knex (#630) 2020-09-18 09:05:09 +02:00
Ivar Conradi Østhus 83dda55172 feat: add stale property on toggle (#619) 2020-08-07 10:46:35 +02:00
Ivar Conradi Østhus 6568457ed8 feat: Add support for toggle types (#618) 2020-08-06 11:18:52 +02:00
Ivar Conradi Østhus 5675f99e78 fix: add user-store (#590) 2020-05-12 23:05:26 +02:00
Ivar Conradi Østhus bf7a246707 fix: user should not crash if email is missing 2020-04-28 08:17:04 +02:00
Ivar Conradi Østhus 2c90d3fbff chore: reduce log-level for metrics 2020-04-19 20:57:54 +02:00
Ivar Conradi Østhus d01c9d2dac fix: use airbnb lint rules directly (#583)
This drops usage of finn-eslint rules as they are no
longer maintained.
2020-04-14 22:29:11 +02:00
Ivar Conradi Østhus b912768923 feat: move secrets to settings (#577)
* feat: move secrets to settings

* feat: Add better support for detailed db options.

Added db field in options to allow better control of
db-options. Especially important to allow special chars
in database password which might lead to an invaid url
when defined as a database-url.

* fix: integrate logger with knex logger

* fix: remove secret option from all examples

* fix: more options.js unit tests

* fix: added settings-store e2e tests
2020-04-13 22:38:46 +02:00
Ivar Conradi Østhus aac12fbee8 fix: metrics for toggle count and version (#565) 2020-02-28 14:50:32 +01:00
Ivar Conradi Østhus 7a410508cb feat: api supports context fields (#564)
* feat: api supports context fields

* fix: typo for cotnext group in event-differ
2020-02-27 21:26:18 +01:00
ivaosthu 704c3afc15 Revert "debug: test not destroying db in test-setup"
This reverts commit 9fe70f84dc.
2020-02-20 08:34:29 +01:00
ivaosthu 96d5413b70 debug: test not destroying db in test-setup 2020-02-20 08:34:29 +01:00
ivaosthu 4ce23e4f7f chore: move metrics-helper.js 2020-02-20 08:34:27 +01:00
Moritz Johner d0f57a68b2 feat: add db query latency metrics (#473)
* feat: add db metrics
Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>

* fix: use base unit

Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>
2020-02-20 08:34:27 +01:00
ivaosthu ccaab0c47b fix: LogProvider as option injected to unleash.
Instead of instructing users to do static calls
in to Unleash, she should instead be allwed to
specify the log provider as an option to Unleash.

This commit introduces the "getLogger" option,
a function responsible for creating a logger.
2020-02-20 08:34:24 +01:00
Benjamin Ludewig a06d2c04bb Refactored state-service, schemas, added e2e tests #395 2020-02-20 08:34:22 +01:00
Benjamin Ludewig 9065c5ee88 feat: Added import & export through stateService #395 2020-02-20 08:34:22 +01:00
ivaosthu f5d4f618ae fix: Application list should be alphabetically sorted
closes #403
2020-02-20 08:34:21 +01:00
ivaosthu 227c6c2e7a fix: Metrics poller should start even if inital fetch fails.
Currently if the intial metrics-fetch fails unleash will not
setup a metrics-poller. This fix ensures that the metrics
poller will start regardless of whether the inital fetch
fails or succeeds.

closes #396
2020-02-20 08:34:21 +01:00
Juan Hoyos 3623052c36 feat: Added feature toggle variants 2020-02-20 08:34:20 +01:00
ivaosthu cdf623e70f chore: Upgrade ava to 1.0.1 2020-02-20 08:34:18 +01:00
Ivar Conradi Østhus 67ec4b58fe fix(store): DB should not override createdAt if set. 2020-02-20 08:34:08 +01:00
ivaosthu c544f81fba Bugfix: more informative name validation errors
Will know tell the user if the toggle name is already
in use by an active feature toggle or an archived toggle.

Also brings lates unleash-frontend fix, which prevents an
invalid form from submitting.

closes: #290, #291
2020-02-20 08:34:07 +01:00
ivaosthu 4999bb93cf Should not be allow creation of archived toggle
closes #284
2020-02-20 08:34:05 +01:00
Simen Bekkhus 3aa871ca97 Update prettier and fix lint 2020-02-20 08:34:03 +01:00
Ivar e679d5d975 Fix formatting 2020-02-20 08:34:00 +01:00
Ivar eb346756d2 Clean up intervals.
We use intervals in three places and we could probably organise them
better in the future. As long as they all do unref they do not form
any issues for us and I will just let them be as is for now.

This closes #186
2020-02-20 08:33:46 +01:00
Simen Bekkhus 3b260abbfe Replace sinon with lolex 2020-02-20 08:33:46 +01:00
ivaosthu f5e9ca3bbe Implement support for logger provider.
This allows the users of 'unleash-server' to programatically
change the logger implemnentation. #175
2020-02-20 08:33:33 +01:00
sveisvei ae245293f4 protection against edit on built in strategies 2020-02-20 08:30:52 +01:00
Ivar 915158212c Add support for sdkVersion in client registration 2020-02-20 08:30:52 +01:00
sveisvei 1131440535 auto disable, and do not serve archived toggle 2020-02-20 08:30:52 +01:00