1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
Commit Graph

342 Commits

Author SHA1 Message Date
ivaosthu
4a98d718cf chore(modernize): Spin out base class for Controllers 2020-02-20 08:34:17 +01:00
ivaosthu
be5cf15cf8 chore(modernize): Admin ArchiveController 2020-02-20 08:34:17 +01:00
ivaosthu
a7382419d5 chore(modernize): Remove unused files 2020-02-20 08:34:17 +01:00
ivaosthu
307b68a67e chore(modernize): cleanup api-def 2020-02-20 08:34:17 +01:00
ivaosthu
e4cfd54529 chore: Simplify client-controller constructor 2020-02-20 08:34:17 +01:00
ivaosthu
8ca233a722 chore(modernize): Modernize ClientRegisterController 2020-02-20 08:34:17 +01:00
ivaosthu
80a5d5c581 chore(modernize): Modernize ClientMetricsController 2020-02-20 08:34:17 +01:00
ivaosthu
8913c4fac5 chore(modernize): Modernize ClientIndexController 2020-02-20 08:34:17 +01:00
ivaosthu
461011b894 chore(modernize): Modernize FeaturesController 2020-02-20 08:34:17 +01:00
ivaosthu
2dde9c4b95 chore(modernize): Modernize IndexController 2020-02-20 08:34:17 +01:00
ivaosthu
b870e209a9 chore(modernize): Modernize BackstageController 2020-02-20 08:34:17 +01:00
ivaosthu
3903015cbb chore(modernize): Modernize HealthCheckController 2020-02-20 08:34:17 +01:00
Benjamin Ludewig
822d718a9b Add prometheus compatible feature metrics endpoint 2020-02-20 08:34:16 +01:00
Ivar Conradi Østhus
3a2771bd75 chore: fix lint 2020-02-20 08:34:15 +01:00
Ivar Conradi Østhus
c0a6ae64e0 chore: fix linting 2020-02-20 08:34:15 +01:00
ivaosthu
ddad9e27a3 fix(clientApi): Add namePrefix paramter to /api/client/features
Allows the client to limit the response to name with the given prefix.
2020-02-20 08:34:14 +01:00
Simen Bekkhus
0bf834a4f2 chore: upgrade prettier
Closes #345
2020-02-20 08:34:13 +01:00
ivaosthu
3c40cf2f2e fix(gzip): Add gzip support 2020-02-20 08:34:13 +01:00
ivaosthu
ad171e753e fix(log4js): Upgrade to log4js 3.0.3 and fix configuration 2020-02-20 08:34:12 +01:00
Ivar Conradi Østhus
054e87cf4a Include user information on revive
Closes #327
2020-02-20 08:34:11 +01:00
ivaosthu
bc359c2b82 feat(metrics): Expose toggle updates to prometheus
closes #323
2020-02-20 08:34:11 +01:00
ivaosthu
da68926086 chore(package.json): Bump all dev-dependencies 2020-02-20 08:34:11 +01:00
Ivar Conradi Østhus
4c73d279aa fix(migration): Unleash should not start if migration fails.
Closes #320
2020-02-20 08:34:10 +01:00
Ivar Conradi Østhus
e0f2866be6 Use HTTP_HOST env variable as default host address 2020-02-20 08:34:10 +01:00
Ivar Conradi Østhus
d8f8bf6fd9 Clean up using servers listening and error events 2020-02-20 08:34:10 +01:00
Ivar Conradi Østhus
d757993432 Use options object with server.listen 2020-02-20 08:34:10 +01:00
Ivar Conradi Østhus
378544f326 createApp should wait for server.listen callback 2020-02-20 08:34:10 +01:00
Ivar Conradi Østhus
4f808f13eb feat(bind): Added option to bind to http address.
Closes #318
2020-02-20 08:34:10 +01:00
Simen Bekkhus
027e2814a8 refactor: use body-parser bundled with express (#304) 2020-02-20 08:34:09 +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
d7c1360cc7 A bit of house-keeping 2020-02-20 08:34:07 +01:00
ivaosthu
b3704666bc Add sign-out route #288 2020-02-20 08:34:07 +01:00
ivaosthu
95d36b89d7 Use joi instead of assert 2020-02-20 08:34:06 +01:00
ivaosthu
77482bd7a7 Fix typo in simple-authentication.js 2020-02-20 08:34:06 +01:00
ivaosthu
f4feab89f3 Implement authentication support for Unleash UI.
Closes: #261, #233, #232, #231
2020-02-20 08:34:06 +01:00
ivaosthu
57df35f6a5 Fix pathname reporting in middlewares 2020-02-20 08:34:06 +01:00
ivaosthu
1695a35555 Add unit tests for archived toggles 2020-02-20 08:34:06 +01:00
ivaosthu
4999bb93cf Should not be allow creation of archived toggle
closes #284
2020-02-20 08:34:05 +01:00
ivaosthu
089268825f Fix typo in custom validator 2020-02-20 08:34:04 +01:00
ivaosthu
37f9ed9570 Implement cookie-session support.
Sessions will be required to solve admin-auth.

I also refactored a few middlewares into seperate
files to make the code easier to read.

closes #262
2020-02-20 08:34:04 +01:00
ivaosthu
5711c46cbf Add cookie-session dependency 2020-02-20 08:34:04 +01:00
Simen Bekkhus
e5e8f3bee9 Upgrade Log4JS (#274) 2020-02-20 08:34:03 +01:00
Simen Bekkhus
3aa871ca97 Update prettier and fix lint 2020-02-20 08:34:03 +01:00
Ivar
f093d609ae Use pkginfo to resolve unleash-server version
closes #268
2020-02-20 08:34:03 +01:00
ivaosthu
6642978fc7 Remove log-message in test 2020-02-20 08:34:03 +01:00
Ivar
5e1fd4ae8e Simplofy name validator
closes #271
2020-02-20 08:34:03 +01:00
Ivar
e679d5d975 Fix formatting 2020-02-20 08:34:00 +01:00
Martin Lehmann
c957aeba94 Fix feature name validation regex 2020-02-20 08:33:47 +01:00
ivaosthu
12ef0db1f1 Bugfix: use basUrl when logging actual request path 2020-02-20 08:33:47 +01:00
Clint Brown
3e7098578b Allow underscores in name validation 2020-02-20 08:33:47 +01:00
Ivar
d58289540c Include module version number in /api reponse 2020-02-20 08:33:46 +01:00
Ivar
6bc23f04da Added option to disable legacy routes. Closes #244 2020-02-20 08:33:46 +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
54ca4ffc77 Upgrade prom-client and add gc-stats 2020-02-20 08:33:46 +01:00
Simen Bekkhus
3b260abbfe Replace sinon with lolex 2020-02-20 08:33:46 +01:00
ivaosthu
e97a3820a2 Added validation of provided LoggerProvider 2020-02-20 08:33:33 +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
ivaosthu
f2cc426ed7 Fix assert 2020-02-20 08:33:33 +01:00
ivaosthu
f91a24eabe Add metrics validation to avoid NaN #253 2020-02-20 08:33:33 +01:00
ivaosthu
18afb520d0 Strip uknown fields in client requests. closes #245 2020-02-20 08:33:33 +01:00
ivaosthu
f826c837fd Disable x-powered-by express header 2020-02-20 08:33:33 +01:00
sveisvei
b137cf0eaa add editable tests 2020-02-20 08:33:16 +01:00
sveisvei
a9b783443b shoulda woulda 2020-02-20 08:33:16 +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
Simen Bekkhus
e1cc0b2e99 Upgrade prom-client and yargs 2020-02-20 08:30:51 +01:00
sveisvei
93bb1ac66d should expose one feature 2020-02-20 08:30:51 +01:00
sveisvei
0ae24c68e6 Refactor routes setup, move test files, cleanup legacy 2020-02-20 08:30:51 +01:00
sveisvei
71815a1320 Remove legacy data support 2020-02-20 08:30:51 +01:00
sveisvei
375a8b1d4f Prettier/lint 2020-02-20 08:30:50 +01:00
Simen Bekkhus
e85ac8a52f Log client error (#225)
* Log client error

* Log all errors
2020-02-20 08:30:50 +01:00
sveisvei
6e4a22bf54 use object.assign and pass along options 2020-02-20 08:30:50 +01:00
sveisvei
fa6c28de8f pass along hooks, add test to server impl 2020-02-20 08:30:50 +01:00
sveisvei
86ac44908d validate configures strategy shape 2020-02-20 08:30:49 +01:00
Simen Bekkhus
21e0522116 Remove uncaught exception logging
This is the responsibility of the app
2020-02-20 08:30:48 +01:00
vsandvold
743a597f42 provides a more helpful error msg when a new feature is created with an existing name 2020-02-20 08:30:46 +01:00
sveisvei
07dc23d23d use post instead of put 2020-02-20 08:30:46 +01:00
sveisvei
32a0b93096 add toggle endpoint 2020-02-20 08:30:46 +01:00
ivaosthu
8beb4b8876 Add simple API resource #191 2020-02-20 08:30:46 +01:00
ivaosthu
df7ad8c8bf Strategy name can be up to 100chars . Closes #195 2020-02-20 08:30:45 +01:00
sveisvei
925e42045f add sanity tests for metrics 2020-02-20 08:30:45 +01:00
sveisvei
ae195b5674 evict if new item directly is not eligible 2020-02-20 08:30:45 +01:00
sveisvei
efc9ae2f5d fix typ0 that broke time.now 2020-02-20 08:30:45 +01:00
sveisvei
17c58e77f2 add hook tests 2020-02-20 08:30:45 +01:00
sveisvei
2f1680d9c0 add app hooks 2020-02-20 08:30:45 +01:00
sveisvei
1d3faca238 fix lint 2020-02-20 08:30:45 +01:00
ivaosthu
744e41f9aa Strategy parameter description is allowed to be empty 2020-02-20 08:30:43 +01:00
ivaosthu
79de8fb7ed Added api for updating a strategy
relates to #184
2020-02-20 08:30:43 +01:00
ivaosthu
bc1f647f92 use fake timers for ttl test 2020-02-20 08:30:43 +01:00
sveisvei
f5578d986e check toggles and strategies in clientapps 2020-02-20 08:30:43 +01:00
ivaosthu
c8a9b39f27 Add schema validation for strategies 2020-02-20 08:30:43 +01:00
ivaosthu
ba5810506f Fix failing tests 2020-02-20 08:30:43 +01:00
ivaosthu
97f6731140 Strategy list should be sorted by name 2020-02-20 08:30:43 +01:00
sveisvei
381e7d4763 inject metadata on toplevel 2020-02-20 08:30:43 +01:00
sveisvei
d160fe933f serve with metadata 2020-02-20 08:30:43 +01:00
sveisvei
76d642069b Revert "Remove /api/client/seen-toggles as we don't need it anyway"
This reverts commit 63e6931265.
2020-02-20 08:30:42 +01:00
ivaosthu
52fcfb4a2b Remove /api/client/seen-toggles as we don't need it anyway 2020-02-20 08:30:42 +01:00
ivaosthu
51442a6cc4 Remove client_strategies table
We can just have a strategies column in the client_applications
table. This solves all our needs, and thus avoids the need
for an extra table.
2020-02-20 08:30:42 +01:00
ivaosthu
8764b952b3 A client-register should upsert client_applications table 2020-02-20 08:30:42 +01:00
sveisvei
5ad5127f81 fix lint and mock 2020-02-20 08:30:42 +01:00
sveisvei
3a6e7d02ef client applications 2020-02-20 08:30:42 +01:00
sveisvei
066fe5fdd2 recieve togglename to archive or revive via path 2020-02-20 08:30:42 +01:00
sveisvei
92111890d9 uppercase event type key constants 2020-02-20 08:30:42 +01:00
Ivar Conradi Østhus
377ad43bab Delete app.js 2020-02-20 08:30:42 +01:00
ivaosthu
9c6fad83c2 Added enpoint for fetching application implementing a strategy
`/api/client/applications?strategyName=foo` now returns list of
apps implementing that strategy!
2020-02-20 08:30:42 +01:00
sveisvei
803fc6752d send toggleName back 2020-02-20 08:30:42 +01:00
ivaosthu
b12a188faf amend prev commit 2020-02-20 08:30:42 +01:00
ivaosthu
6cdffb22d0 fix strateiges format for /client/applications 2020-02-20 08:30:42 +01:00
sveisvei
a959dc777d fetch seen apps instead 2020-02-20 08:30:42 +01:00
sveisvei
7609d0abeb add getAppsFromToggleName 2020-02-20 08:30:42 +01:00
sveisvei
d3063073b3 fix typ0 2020-02-20 08:30:42 +01:00
sveisvei
a1303f4c42 only log if num of cleaned is above 0 2020-02-20 08:30:41 +01:00
sveisvei
b5b846835b add single toggle metric endpoint 2020-02-20 08:30:41 +01:00
sveisvei
f425597640 fix lint 2020-02-20 08:30:41 +01:00
ivaosthu
d4d63af2b0 Option to disable request logging.
Because all request details are available via
prometheus there is no need to also log all requests.

This solves #164 but we should still replace log4j with something else.
2020-02-20 08:30:41 +01:00
ivaosthu
7057d11553 replace commander with yargs 2020-02-20 08:30:41 +01:00
ivaosthu
bec646d797 more tests 2020-02-20 08:30:41 +01:00
ivaosthu
35ad3aa072 cleanup bin 2020-02-20 08:30:40 +01:00
ivaosthu
f1a24be0e2 minor cleanup 2020-02-20 08:30:40 +01:00
ivaosthu
471518b41d Simplify metrics: We only need timings as it includes counts for free 2020-02-20 08:30:40 +01:00
ivaosthu
e075917136 cleanup 2020-02-20 08:30:40 +01:00
ivaosthu
8e6bcafa24 Server Metrics: add response time and status codes 2020-02-20 08:30:40 +01:00
ivaosthu
84e0810d64 Some Metrics API cleanups 2020-02-20 08:30:40 +01:00
ivaosthu
f7a89b8223 more tests 2020-02-20 08:30:40 +01:00
ivaosthu
b8014fdddf Server Metrics with Prometheus
Implementation use internal eventBus to enable loose counting in the app.

read more at https://prometheus.io/

Closes #98
2020-02-20 08:30:40 +01:00
ivaosthu
93c37b30c0 Metrics: wrte api documentation 2020-02-20 08:30:40 +01:00
sveisvei
e55378e1c4 Better client informations from the API.
Impelements:
- http://unleash.host.com/api/client/seen-toggles
- http://unleash.host.com/api/metrics/feature-toggles
- http://localhost:4242/api/client/applications
- http://localhost:4242/api/client/applications/:appName
2020-02-20 08:30:40 +01:00
ivaosthu
13a93dcf43 Should not expose legacy fields to whole system 2020-02-20 08:30:40 +01:00
Ivar
3fa930baf0 Added strategies validation when creating/updating toggles 2020-02-20 08:30:39 +01:00
sveisvei
a34ee105fe add count to app state 2020-02-20 08:30:39 +01:00
sveisvei
68ac0c71c9 fix typ0 2020-02-20 08:30:39 +01:00
sveisvei
1dab39f0f9 move app and server-impl into lib folder 2020-02-20 08:30:39 +01:00
sveisvei
067b93abfd add tests, rename folders to ava defaults for helpers/fixtures, remove migration og 2020-02-20 08:30:39 +01:00
sveisvei
e730937849 add more unit tests for metrics 2020-02-20 08:30:39 +01:00
sveisvei
cad07cc6ec use options obj 2020-02-20 08:30:39 +01:00
ivaosthu
14deebae1f options to specify different db-schema 2020-02-20 08:30:38 +01:00
ivaosthu
39b5f26f56 Add unit-test for /health route 2020-02-20 08:30:38 +01:00
ivaosthu
5735b0931a Cleanup route/metrics a bit 2020-02-20 08:30:38 +01:00
ivaosthu
a665b1b999 Started on unit test for metrics-route 2020-02-20 08:30:38 +01:00
ivaosthu
aa4140141e upgrade log4js to 1.0.1 2020-02-20 08:30:38 +01:00
ivaosthu
46bc109ff9 fix tests 2020-02-20 08:30:37 +01:00
ivaosthu
90859701c6 remove all lerna stuff 2020-02-20 08:30:37 +01:00
sveisvei
7bacad7b90 use lerna for multipackaging 2020-02-20 08:30:26 +01:00
Ivar
1c092484f7 Remove finn config #133 2020-02-20 08:30:26 +01:00
Ivar
b2e9f38965 Statefull modules should be injected from top 2020-02-20 08:30:25 +01:00
Ivar
5282ebfcc9 Move all custom-scripts to /scripts folder 2020-02-20 08:30:25 +01:00
ivaosthu
0325cd92fb Move all routes to a routes folder 2020-02-20 08:30:24 +01:00
ivaosthu
1caf2ddc53 seems like knex 0.11 is more restrict about not using undefined 2020-02-20 08:30:24 +01:00
ivaosthu
2e6f4187c5 upgrade knex 2020-02-20 08:30:24 +01:00
Anders Olsen Sandvik
a96a9f38ce #108 Add eslint-config-spt and remove jshint (#111)
* #108 Add eslint-config-spt

* #108 Ignore bundle.js file

* #108 Change eslint ignore path to a glob file

* Remove jshint and follow more of eslint rules
2020-02-20 08:30:24 +01:00
ivaosthu
94f10a3a4b upgrade node to 4.2.2. Closes #106 2020-02-20 08:30:24 +01:00
giacung
98cd0663ff Health check should verify that it can talk to the toggle-store (aka DB).
This commit fixes #103 by doing a simple select against the features table.
2020-02-20 08:30:24 +01:00
Ivar Conradi Østhus
d35666e353 Added poller to keep the store in sync with server. 2020-02-20 08:30:21 +01:00
Jari Bakken
8b9c0a6e85 Reduce logging in production. 2020-02-20 08:30:21 +01:00
andsandv
0552e588ae Check if strategy exsit before deleting it 2020-02-20 08:30:21 +01:00
andsandv
d600cdd359 #80 More renaming 2020-02-20 08:30:21 +01:00
andsandv
806da1eb44 #80 Rename event ypes 2020-02-20 08:30:20 +01:00
andsandv
de5dc7bfc6 Revert "#80 Change all event types to past tense"
This reverts commit a754fcb3a9.
Might break database so I'll send a pull request.
2020-02-20 08:30:20 +01:00
andsandv
5298b50cb7 #80 Change all event types to past tense 2020-02-20 08:30:20 +01:00
Ivar Conradi Østhus
6819b7a1e0 When the user enters his username in to the field
a username cookie is updated and will be available
in all subsequent requests.

THIS IS NOT AUTHENTICATION! it is not safe and is
only implemented as a first edition. It does how ever
solve the issue where we are not able to see who
canged what.
2020-02-20 08:30:20 +01:00
Jari Bakken
12710a6d04 log views: show event diffs by default, toggle to show the full event. 2020-02-20 08:30:20 +01:00
ivaosthu
1024493d63 Added archived toggles feature #43 2020-02-20 08:30:19 +01:00
ivaosthu
658e3ac2bc API and gui for archiving #43 2020-02-20 08:30:19 +01:00
Jari Bakken
f999388e03 Use TEST_DATABASE_URL for running test against a separate DB. 2020-02-20 08:30:19 +01:00
Jari Bakken
745de6867d Skip API and create test data in the DB directly (since the API is async) 2020-02-20 08:30:18 +01:00
Jari Bakken
642c06f6ba Begin work on running tests against the database:
* Add Travis postgresql setup.
* Replace "db mocks" with a before hook that creates the same data
  through the HTTP API.
* Reset DB and re-create all fixtures for each test. We'll need
  something  better here.
* CAVEAT: no concept of a dev vs test database. Running tests will
  clear data from the currently configured database.
2020-02-20 08:30:18 +01:00
ivaosthu
32125ca4fb Clean up strategyApi with chained-promises 2020-02-20 08:30:18 +01:00
ivaosthu
91651979d0 Syntax 2020-02-20 08:30:18 +01:00
ivaosthu
b1ccb2e999 Validation logic should probably not be in the db-code 2020-02-20 08:30:18 +01:00
ivaosthu
ae0fdce395 Cleaned up and changed promises used in the feature API 2020-02-20 08:30:18 +01:00
ivaosthu
c2a809a819 changed order for feature toggles. 2020-02-20 08:30:18 +01:00
ivaosthu
c20252d9d7 Implemented server side API for deleting strategies.
relates to #60
2020-02-20 08:30:18 +01:00
ivaosthu
03c84c086c strategies should be order after createdAt ASC 2020-02-20 08:30:17 +01:00
Jari Bakken
a169ec1352 Add ability to create custom stratgies. Closes #11. 2020-02-20 08:30:17 +01:00
Ivar Østhus
a2f486c0d4 strategies should be fetched from DB 2020-02-20 08:30:17 +01:00
Ivar Østhus
fe17b51bd9 Added the default strategies via migration 2020-02-20 08:30:16 +01:00
Gard Rimestad
c8c7f57cfb Improvements on log view 2020-02-20 08:30:16 +01:00
Jari Bakken
b4f6166afb Fix getFeature() semantics
It will always reject if the feature is not found, not resolve to null.
2020-02-20 08:30:16 +01:00
Jari Bakken
1371560840 Use knex' map() 2020-02-20 08:30:16 +01:00
Jari Bakken
412067c42f Use knex for DB access. Closes #46. 2020-02-20 08:30:16 +01:00
Jari Bakken
d2ce90b394 Replace PATCH with PUT, which enables editing multiple fields at once.
Closes #47.
2020-02-20 08:30:16 +01:00
Gard Rimestad
1777b5a510 Fix event api 2020-02-20 08:30:16 +01:00
Gard Rimestad
78434a7ca1 Adding events/:name 2020-02-20 08:30:16 +01:00
Jari Bakken
fdf324a9f5 Add features.description to db and ui 2020-02-20 08:30:15 +01:00
Jari Bakken
86e168ec84 Reduce duplication when adding a new migration. 2020-02-20 08:30:15 +01:00
Ivar Østhus
dd75e69ac6 Strategies should also have description #34 2020-02-20 08:30:14 +01:00
Jari Bakken
971559a5be Get rid of deprecation warnings. 2020-02-20 08:30:14 +01:00
ivaosthu
b1b3d408f7 Simple tab-based menu to have a contianer for strategies 2020-02-20 08:30:13 +01:00
ivaosthu
b2d4cbf5de added server side validation of feature name 2020-02-20 08:30:13 +01:00
Jari Bakken
f06a4a8a51 Move unleash-server to top level. 2020-02-20 08:30:13 +01:00