Commit Graph

2103 Commits

Author SHA1 Message Date
Travis Reeder
a67d5a6290 Drop viper dependency (#550)
* Removed viper dependency.

* removed from glide files
2017-11-28 15:46:17 -08:00
Denis Makogon
81e3c4387c Docker compose file for simpler dev env (#526)
* Docker compose file for simpler dev env

* Updating readme, adding UI to compose

* Define dependencies between services

* Prometheus. Grafana

* Link Prometheus to Grafana service

* Addressing review comments

* Linking compose doc to common table of content
2017-11-28 13:31:34 -07:00
CI
84382d51d3 fnlb: 0.0.168 release [skip ci] fnlb-0.0.168 2017-11-28 18:31:11 +00:00
CI
1529dff810 fnserver: 0.3.206 release [skip ci] 0.3.206 2017-11-28 18:29:50 +00:00
Derek Schultz
e27142cb8a use kubectl JSONPath (#544)
* remove extra export

* use kubectl jsonpath

* remove http prefix. included in API_URL

* show example of fn call
2017-11-28 11:14:45 -07:00
CI
f967c8d5aa fnlb: 0.0.167 release [skip ci] fnlb-0.0.167 2017-11-28 17:39:38 +00:00
CI
3a2abbff28 fnserver: 0.3.205 release [skip ci] 0.3.205 2017-11-28 17:38:09 +00:00
Reed Allman
892c843d87 add error to call model (#539)
* add error to call model

closes #331

previously, for async this error was being masked completely even if it was
something useful like the image not existing. for sync, the error was returned
in the http request but now it's also being stored. this error itself can
cover a lot of landscape, it could be an error in getting a slot, pulling an
image, running a container, among other things. anyway, no longer being
masked. we can likely improve it in certain cases we run into in the future,
but it's open ended at the moment and not being masked like some errors in
sync http request returns (503 non-models.APIError) for now.

* tucks in callTrigger stuff to keep api clean
* adds swagger
* adds migration
* adds tests for datastore and agent to ensure behavior

* pull images before tests are ran

* gofmt migrations file
2017-11-28 11:21:39 -06:00
CI
10e17b1c4d fnlb: 0.0.166 release [skip ci] fnlb-0.0.166 2017-11-28 16:34:15 +00:00
CI
adb9872921 fnserver: 0.3.204 release [skip ci] 0.3.204 2017-11-28 16:32:54 +00:00
Nigel Deakin
954f69e74a Add appname to basic metrics (#547)
* Add app labels to queued/running/completed/failed metrics

* Add app labels to queued/running/completed/failed metrics

* Add app labels to queued/running/completed/failed metrics
2017-11-28 10:17:24 -06:00
CI
778c8b0495 fnlb: 0.0.165 release [skip ci] fnlb-0.0.165 2017-11-27 15:10:42 +00:00
CI
93ab1f0bc2 fnserver: 0.3.203 release [skip ci] 0.3.203 2017-11-27 15:09:20 +00:00
Reed Allman
c9198b8525 add per call stats field as histogram (#528)
* add per call stats field as histogram

this will add a histogram of up to 240 data points of call data, produced
every second, stored at the end of a call invocation in the db. the same
metrics are also still shipped to prometheus (prometheus has the
not-potentially-reduced version). for the API reference, see the updates to
the swagger spec, this is just added onto the get call endpoint.

this does not add any extra db calls and the field for stats in call is a json
blob, which is easily modified to add / omit future fields. this is just
tacked on to the call we're making to InsertCall, and expect this to add very
little overhead; we are bounding the set to be relatively small, planning to
clean out the db of calls periodically, functions will generally be short, and
the same code used at a previous firm did not cause a notable db size increase
with production workload that is worse, wrt histogram size (I checked). the
code changes are really small aside from changing to strfmt.DateTime,
adding a migration and implementing sql.Valuer; needed to slightly modify the
swap function so that we can safely read `call.Stats` field to upload at end.

with the full histogram in hand, we can compute max/min/average/median/growth
rate/bernoulli distributions/whatever very easily in a UI or tooling. in
particular, this data is easily chartable [for a UI], which is beneficial.

* adds swagger spec of api update to calls endpoint
* adds migration for call.stats field
* adds call.stats field to sql queries
* change swapping of hot logger to exec, so we know that call.Stats is no
longer being modified after `exec` [in call.End]
* throws out docker stats between function invocations in hot functions (no
call to store them on, we could change this later for debug; they're in prom)
* tested in tests and API

closes #19

* add format of ints to swag
2017-11-27 08:52:53 -06:00
CI
d8c41aac9d fnlb: 0.0.164 release [skip ci] fnlb-0.0.164 2017-11-24 16:50:18 +00:00
CI
3adf478530 fnserver: 0.3.202 release [skip ci] 0.3.202 2017-11-24 16:48:55 +00:00
Denis Makogon
347edea56e Use valid call type instead in protocol (#534) 2017-11-24 10:32:17 -06:00
CI
4cc2b093b0 fnlb: 0.0.163 release [skip ci] fnlb-0.0.163 2017-11-22 20:18:41 +00:00
CI
19df15bd9b fnserver: 0.3.201 release [skip ci] 0.3.201 2017-11-22 20:17:21 +00:00
Tolga Ceylan
89dc79f0b0 fn: remove redundant httprouter code (#532)
*) tree from https://github.com/julienschmidt/httprouter
is already in Gin and this only seems to be parsing
parameters from URI.
2017-11-22 13:58:10 -06:00
CI
d8a1431418 fnlb: 0.0.162 release [skip ci] fnlb-0.0.162 2017-11-22 15:44:36 +00:00
CI
c2a0f83467 fnserver: 0.3.200 release [skip ci] 0.3.200 2017-11-22 15:43:11 +00:00
Nigel Deakin
7f03c22df0 Fix for Prometheus/Grafana quickstart guide (#523)
* Fix for #520

* Addressing review comments

* Addressing review comments
2017-11-22 15:26:41 +00:00
CI
ea10f36dcc fnlb: 0.0.161 release [skip ci] fnlb-0.0.161 2017-11-21 20:58:52 +00:00
CI
7548ab44d5 fnserver: 0.3.199 release [skip ci] 0.3.199 2017-11-21 20:57:31 +00:00
Tolga Ceylan
2551be446a fn: introducing 503 responses for out of capacity case (#518)
* fn: introducing 503 responses for out of capacity case

*) Adding 503 with Retry-After header case if request failed
during waiting for slots.
*) TODO: return 503 without Retry-After if the request can
never be met by this fn server.
*) fn: runner test docker pull fixup
*) fn: MaxMemory for routes is now a variable to allow
testing and adjusting it according to fleet memory sizes.
2017-11-21 12:42:02 -08:00
CI
460e9d2dea fnlb: 0.0.160 release [skip ci] fnlb-0.0.160 2017-11-21 19:01:48 +00:00
CI
cd80ae0a3a fnserver: 0.3.198 release [skip ci] 0.3.198 2017-11-21 19:00:20 +00:00
Tolga Ceylan
104babf26d fn: fnlb: fix tests if behind http proxy (#529)
*) localhost to avoid http proxy interception
2017-11-21 10:43:45 -08:00
CI
3f19948ff8 fnlb: 0.0.159 release [skip ci] fnlb-0.0.159 2017-11-21 01:57:17 +00:00
CI
7764f99a63 fnserver: 0.3.197 release [skip ci] 0.3.197 2017-11-21 01:55:54 +00:00
Reed Allman
2d8c528b48 S3 loggyloo (#511)
* add minio-go dep, update deps

* add minio s3 client

minio has an s3 compatible api and is an open source project and, notably, is
not amazon, so it seems best to use their client (fwiw the aws-sdk-go is a
giant hair ball of things we don't need, too). it was pretty easy and seems
to work, so rolling with it. also, minio is a totally feasible option for fn
installs in prod / for demos / for local.

* adds 's3' package for s3 compatible log storage api, for use with storing
logs from calls and retrieving them.
* removes DELETE /v1/apps/:app/calls/:call/log endpoint
* removes internal log deletion api
* changes the GetLog API to use an io.Reader, which is a backwards step atm
due to the json api for logs, I have another branch lined up to make a plain
text log API and this will be much more efficient (also want to gzip)
* hooked up minio to the test suite and fixed up the test suite
* add how to run minio docs and point fn at it docs

some notes: notably we aren't cleaning up these logs. there is a ticket
already to make a Mr. Clean who wakes up periodically and nukes old stuff, so
am punting any api design around some kind of TTL deletion of logs. there are
a lot of options really for Mr. Clean, we can notably defer to him when apps
are deleted, too, so that app deletion is fast and then Mr. Clean will just
clean them up later (seems like a good option).

have not tested against BMC object store, which has an s3 compatible API. but
in theory it 'just works' (the reason for doing this). in any event, that's
part of the service land to figure out.

closes #481
closes #473

* add log not found error to minio land
2017-11-20 17:39:45 -08:00
CI
382d31c13c fnlb: 0.0.158 release [skip ci] fnlb-0.0.158 2017-11-18 16:03:50 +00:00
CI
79994d43a8 fnserver: 0.3.196 release [skip ci] 0.3.196 2017-11-18 16:02:30 +00:00
Travis Reeder
1eb7d9cbc6 Merge branch 'master' of https://github.com/fnproject/fn 2017-11-18 07:47:24 -08:00
Travis Reeder
02067bddc0 grrr, more release fixes... 2017-11-18 07:47:21 -08:00
CI
0ede3ba636 fn-lb: 0.0.157 release [skip ci] fn-lb-0.0.157 2017-11-18 15:26:46 +00:00
CI
37fb96ed0e fnserver: 0.3.195 release [skip ci] 0.3.195 2017-11-18 15:25:24 +00:00
Travis Reeder
5eb51283bf Fix release. 2017-11-18 07:09:43 -08:00
CI
228fbd559e fn-server: 0.3.194 release [skip ci] 0.3.194 2017-11-18 04:46:58 +00:00
Reed Allman
f08ea57bc0 add docker health check waiter to start (#434)
before returning the cookie in the driver, wait for health checks
https://docs.docker.com/engine/reference/builder/#healthcheck if provided.
for images that don't have health checks, this will have no affect (an added
call to inspect container, for hot it's small potatoes).

this will be useful for containers so that they can pull large files or do
setup that takes a while before accepting tasks. since this is before start,
it won't run into the idle timeout. we could likely use these for hot
containers in general and check between runs or something, but didn't do that
here.

one nascient concern is that for hot if the containers never become healthy
I don't think we will ever kill them and the slot will 'leak'. this is true
for this and for other cases (pulling image) I think, we should probably
recycle hot containers every hour or something which would also close this.
anyway, not a huge blocker I don't think, there will likely be 1 user of this
feature for a bit, it's not documented since we're not sure we want to support
it.

closes #336
2017-11-17 20:31:33 -08:00
CI
5b2b5ea201 fn-server: 0.3.193 release [skip ci] 0.3.193 2017-11-18 00:09:00 +00:00
Travis Reeder
ab18e467fa updates functions -> fnserver (#516)
* updates functions -> fn-server and fnlb -> fn-lb

* changed to fnserver and fnlb
2017-11-17 15:53:44 -08:00
CI
94607d898d fn-lb: 0.0.156 release [skip ci] fn-lb-0.0.156 2017-11-17 23:42:41 +00:00
CI
9281941bbb fn-server: 0.3.192 release [skip ci] 0.3.192 2017-11-17 23:41:14 +00:00
Travis Reeder
bafc3b2714 Merge branch 'master' of https://github.com/fnproject/fn 2017-11-17 15:27:59 -08:00
Travis Reeder
45a8cd0033 fix fn-lb release 2017-11-17 15:27:55 -08:00
Tolga Ceylan
17d4271ffb fn: move memory/token code into resource (#512)
*) bugfix: fix nil ptr access in docker registry RoundTrip
*) move async and ram token related code into resource.go
2017-11-17 15:25:53 -08:00
CI
1acb1e99b4 fn-lb: 0.0.155 release [skip ci] fn-lb-0.0.155 2017-11-17 21:03:42 +00:00
CI
f1d4387f23 fn-server: 0.3.191 release [skip ci] 0.3.191 2017-11-17 21:02:20 +00:00