Files
faasd/vendor/github.com/openfaas/faas-provider
Lucas Roesler 22882e2643 Initial journald log provider attempt
**What**
- journald log provider using exec to journalctl
```
journalctl -t <namespace>:<name>  --output=json --since=<timestamp> <--follow> --output-fields=SYSLOG_IDENTIFIER,MESSAGE,_PID,_SOURCE_REALTIME_TIMESTAMP
```
- This can be tested manually using `faas-cli logs` as normal, e.g.
  `faas-cli logs nodeinfo` should tail the last 5 mins of logs.
- Very basic tests ensuring that the `journalctl` comamand is correctly
  construction and that the json log entrys are parsed correctly.
- Add simple e2e test to grep the function logs

Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
2020-03-07 10:11:09 +00:00
..
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00
2020-01-21 13:43:39 +00:00

faas-provider

This faas-provider can be used to write your own back-end for OpenFaaS. The Golang SDK can be vendored into your project so that you can provide a provider which is compliant and compatible with the OpenFaaS gateway.

Conceptual diagram

The faas-provider provides CRUD for functions and an invoke capability. If you complete the required endpoints then you will be able to use your container orchestrator or back-end system with the existing OpenFaaS ecosystem and tooling.

See also: backends guide

Recommendations

The following is used in OpenFaaS and recommended for those seeking to build their own back-ends:

  • License: MIT
  • Language: Golang

How to use this project

All the required HTTP routes are configured automatically including a HTTP server on port 8080. Your task is to implement the supplied HTTP handler functions.

For an example see the server.go file in the faas-netes Kubernetes backend.

I.e.:

	timeout := 8 * time.Second
	bootstrapHandlers := bootTypes.FaaSHandlers{
		FunctionProxy:  handlers.MakeProxy(),
		DeleteHandler:  handlers.MakeDeleteHandler(clientset),
		DeployHandler:  handlers.MakeDeployHandler(clientset),
		FunctionReader: handlers.MakeFunctionReader(clientset),
		ReplicaReader:  handlers.MakeReplicaReader(clientset),
		ReplicaUpdater: handlers.MakeReplicaUpdater(clientset),
		InfoHandler:    handlers.MakeInfoHandler(),
		LogHandler: logs.NewLogHandlerFunc(requestor,timeout),
	}

	var port int
	port = 8080
	bootstrapConfig := bootTypes.FaaSConfig{
		ReadTimeout:  timeout,
		WriteTimeout: timeout,
		TCPPort:      &port,
	}

	bootstrap.Serve(&bootstrapHandlers, &bootstrapConfig)

Need help?

Join #faas-provider on OpenFaaS Slack