Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.

Commit 6203d98

Browse files
author
Andres
committed
Adapt to Kubeless 0.5
1 parent d8ccca5 commit 6203d98

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+3705
-1100
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ node-dependencies-*
99
ksonnet-lib
1010
kubeless_linux-amd64.zip
1111
test/kubeless.jsonnet
12+
test/kafka-zookeeper.jsonnet

.travis.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
language: node_js
22
node_js:
3-
- "8"
4-
- "6"
3+
- "9"
54
script:
65
- npm run lint
76
- npm test
@@ -11,7 +10,7 @@ services:
1110
- docker
1211
env:
1312
global:
14-
- KUBELESS_VERSION: 0.4.0
13+
- KUBELESS_VERSION: 0.5.0
1514
- REPO_DOMAIN: serverless
1615
- REPO_NAME: serverless-kubeless
1716
- secure: "s+L8ndj0uMNwqbLvbHePHeMJw2LI8DdEdcq1vJ98hNwHOWQc2mHVB4utG9EZFkaL+RAZYduldSJqr443d2BugxrkmzhLUlM5vDks+zHeKecwTah2uuaMUXVT/y/cWDDTVp3phqSqWbHBMG6u0ImvTVWHpnkux55S3QJTHevvhdodpO6VDTsJCEB3e1d2hHxi0L9tJrFXzQRpooV8IUuODwKBJyhK4CD7rvu0D1gBgHaUNnNLrCy4YTaFl19q5NdZUtrQDC7rpSPOhFI9CBFX8GiFq6nY3XzFASwq/JtKc3K7OLIC7Wqb6JpuvFhG6S1yhBzp73pnoE9U0Bi+YMa3L+nPoh58dCB2ldNCCCMbx7R6PWq/TwYzLvgZZ7queC2kbvCTrtU6JJfmb0CxmX1fnUIpCsNeyXaPuo4Ly6WJeAID32z79CwMo9NH0uOVTLy3LTrLcEfELhBRL5+WkMvKmXUt8yN/jEIa/H38pQN5Y/AnJ0KznO8RZ2nLhi1cR+xUkxfPVZ22Wr2XkbzJDZih/mZR+5GQBfUHWgpUChK+e8dOhplk+4PZJEO6Myja7ykXBPYtL9CV/Xi+1nQqLmfhyChiES201KusJr1IrFklslzCzgrSH8Dv2yaYUTe/Ub/I3gWIhKOXY66gkpmB6MSBJUfMK3uR4/wYfCvbtBTugsY="

deploy/kubelessDeploy.js

+1-7
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,6 @@ class KubelessDeploy {
5555
this.options,
5656
this.serverless.cli.log.bind(this.serverless.cli)
5757
);
58-
// Check that functions don't have more than one event source
59-
// since it is not supported yet
60-
_.each(this.serverless.service.functions, f => {
61-
if (f.events && f.events.length > 1) {
62-
throw new Error('It is not supported to have more than one event source yet');
63-
}
64-
});
6558
return BbPromise.resolve();
6659
}
6760

@@ -150,6 +143,7 @@ class KubelessDeploy {
150143
}).then(() => deploy(
151144
populatedFunctions,
152145
runtime,
146+
this.serverless.service.service,
153147
{
154148
namespace: this.serverless.service.provider.namespace,
155149
hostname: this.serverless.service.provider.hostname,

deployFunction/kubelessDeployFunction.js

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ class KubelessDeployFunction extends KubelessDeploy {
2626
if (this.options.v) this.options.verbose = true;
2727
this.options.force = true;
2828
this.hooks = {
29+
'deploy:function:initialize': () => BbPromise.bind(this)
30+
.then(this.excludes),
31+
'deploy:function:packageFunction': () => this.serverless.pluginManager
32+
.spawn('package:function'),
2933
'deploy:function:deploy': () => BbPromise.bind(this)
3034
.then(this.validate)
3135
.then(this.deployFunction),
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
def events(context):
2-
return context
1+
def events(event, context):
2+
print event['data']

examples/event-trigger-python/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0"
6+
"serverless-kubeless": "^0.4.0"
77
},
88
"devDependencies": {},
99
"scripts": {

examples/get-python/handler.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
def hello():
1+
def hello(event, context):
22
return "hello world"

examples/get-python/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0"
6+
"serverless-kubeless": "^0.4.0"
77
},
88
"devDependencies": {},
99
"scripts": {

examples/get-ruby/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0"
6+
"serverless-kubeless": "^0.4.0"
77
},
88
"devDependencies": {},
99
"scripts": {

examples/get-ruby/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Obtains the latest Kubeless release published
2-
def run(request)
2+
def run(event, context)
33
require "net/https"
44
require "uri"
55
require "json"

examples/http-custom-path/handler.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
def hello():
1+
def hello(event, context):
22
return "hello world"

examples/http-custom-path/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0"
6+
"serverless-kubeless": "^0.4.0"
77
},
88
"devDependencies": {},
99
"scripts": {

examples/multi-python/handler.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
def foo(request):
2-
print str(request.json)
1+
def foo(event, context):
2+
print event['data']
33
return 'foo'
44

5-
def bar(request):
6-
print str(request.json)
5+
6+
def bar(event, context):
7+
print event['data']
78
return'bar'

examples/multi-python/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0"
6+
"serverless-kubeless": "^0.4.0"
77
},
88
"devDependencies": {},
99
"scripts": {

examples/node-chaining-functions/handler.js

+6-20
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,14 @@
22

33
const _ = require('lodash');
44

5-
function getBody(req, callback) {
6-
let body = [];
7-
req.on('data', (d) => body.push(d));
8-
req.on('end', () => {
9-
body = Buffer.concat(body).toString();
10-
callback(body);
11-
});
12-
}
135
module.exports = {
14-
capitalize(req, res) {
15-
getBody(req, (body) => {
16-
res.end(_.capitalize(body));
17-
});
6+
capitalize(event, context) {
7+
return _.capitalize(event.data);
188
},
19-
pad(req, res) {
20-
getBody(req, (body) => {
21-
res.end(_.pad(body, 20, '*'));
22-
});
9+
pad(event, context) {
10+
return _.pad(event.data, 20, '*');
2311
},
24-
reverse(req, res) {
25-
getBody(req, (body) => {
26-
res.end(body.split('').reverse().join(''));
27-
});
12+
reverse(event, context) {
13+
return event.data.split('').reverse().join('');
2814
},
2915
};

examples/node-chaining-functions/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0",
76
"lodash": "^4.1.0"
87
},
9-
"devDependencies": {},
8+
"devDependencies": {
9+
"serverless-kubeless": "^0.4.0"
10+
},
1011
"scripts": {
1112
"test": "echo \"Error: no test specified\" && exit 1"
1213
},

examples/post-nodejs/handler.js

+2-10
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,7 @@
33
const _ = require('lodash');
44

55
module.exports = {
6-
capitalize(req, res) {
7-
let body = [];
8-
req.on('error', (err) => {
9-
console.error(err);
10-
}).on('data', (chunk) => {
11-
body.push(chunk);
12-
}).on('end', () => {
13-
body = Buffer.concat(body).toString();
14-
res.end(_.capitalize(body));
15-
});
6+
capitalize(event, context) {
7+
return _.capitalize(event.data);
168
},
179
};

examples/post-nodejs/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0",
76
"lodash": "^4.1.0"
87
},
9-
"devDependencies": {},
8+
"devDependencies": {
9+
"serverless-kubeless": "^0.4.0"
10+
},
1011
"scripts": {
1112
"test": "echo \"Error: no test specified\" && exit 1"
1213
},

examples/post-php/README.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Simple Hello World function
2+
3+
This function returns the given data capitalizing the first word.
4+
5+
```console
6+
$ npm install
7+
$ serverless deploy
8+
$ serverless invoke -f php-echo -l --data 'hello!'
9+
Serverless: Calling function: php-echo...
10+
--------------------------------------------------------------------
11+
hello!
12+
$ serverless remove
13+
```

examples/post-php/handler.php

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
3+
function foo($event, $context) {
4+
return json_encode($event->data);
5+
}
6+

examples/post-php/package.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "php-echo",
3+
"version": "1.0.0",
4+
"description": "Example function for serverless kubeless",
5+
"dependencies": {
6+
"serverless-kubeless": "^0.4.0"
7+
},
8+
"devDependencies": {},
9+
"scripts": {
10+
"test": "echo \"Error: no test specified\" && exit 1"
11+
},
12+
"author": "",
13+
"license": "Apache-2.0"
14+
}

examples/post-php/serverless.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
service: php-echo
2+
3+
provider:
4+
name: kubeless
5+
runtime: php7.2
6+
7+
plugins:
8+
- serverless-kubeless
9+
10+
functions:
11+
php-echo:
12+
handler: handler.foo

examples/post-python/handler.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
def echo(request):
2-
print request.json
3-
return request.json
1+
def echo(event, context):
2+
print event
3+
return event['data']

examples/post-python/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0"
6+
"serverless-kubeless": "^0.4.0"
77
},
88
"devDependencies": {},
99
"scripts": {

examples/post-ruby/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0"
6+
"serverless-kubeless": "^0.4.0"
77
},
88
"devDependencies": {},
99
"scripts": {

examples/post-ruby/ping.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
def run(request)
2-
if request.body.read == 'ping'
1+
def run(event, context)
2+
if event[:data] == 'ping'
33
return 'pong'
44
else
55
return 'not ping pong!'

examples/scheduled-node/handler.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
const _ = require('lodash');
44

55
module.exports = {
6-
printClock(req, res) {
6+
printClock(event, context) {
77
const now = new Date().toTimeString(
88
{ hour: '2-digit', minute: '2-digit' }
99
).slice(0, 5);
1010
console.log(now);
11-
res.end(now);
11+
return now;
1212
},
1313
};

examples/scheduled-node/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
"version": "1.0.0",
44
"description": "Example function for serverless kubeless",
55
"dependencies": {
6-
"serverless-kubeless": "^0.2.0",
76
"lodash": "^4.1.0"
87
},
9-
"devDependencies": {},
8+
"devDependencies": {
9+
"serverless-kubeless": "^0.4.0"
10+
},
1011
"scripts": {
1112
"test": "echo \"Error: no test specified\" && exit 1"
1213
},

examples/todo-app/backend/package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
"dependencies": {
1111
"lodash": "^4.17.4",
1212
"mongodb": "^2.2.30",
13-
"serverless-kubeless": "^0.2.0",
1413
"uuid": "^2.0.3"
14+
},
15+
"devDependencies": {
16+
"serverless-kubeless": "^0.4.0"
1517
}
1618
}

examples/todo-app/backend/todos-create.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ const MongoClient = mongodb.MongoClient;
77
const url = 'mongodb://mongodb:27017/todo_app';
88

99
module.exports = {
10-
create: (req, res) => new Promise((resolve, reject) => {
11-
const data = req.body;
10+
create: (event, context) => new Promise((resolve, reject) => {
11+
const data = event.data;
1212
data.id = uuid.v1();
1313
data.updatedAt = new Date().getTime();
1414
MongoClient.connect(url, (cerr, db) => {
@@ -19,8 +19,7 @@ module.exports = {
1919
if (errInsert) {
2020
reject(errInsert);
2121
} else {
22-
res.end(JSON.stringify(data));
23-
resolve();
22+
resolve(JSON.stringify(data));
2423
db.close();
2524
}
2625
});

examples/todo-app/backend/todos-delete.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const MongoClient = mongodb.MongoClient;
77
const url = 'mongodb://mongodb:27017/todo_app';
88

99
module.exports = {
10-
delete: (req, res) => new Promise((resolve, reject) => {
10+
delete: (event, context) => new Promise((resolve, reject) => {
1111
MongoClient.connect(url, (err, db) => {
1212
if (err) {
1313
reject(err);
@@ -20,14 +20,13 @@ module.exports = {
2020
if (ferr) {
2121
reject(ferr);
2222
} else {
23-
const entry = _.find(docEntries, e => e.id === req.query.id);
23+
const entry = _.find(docEntries, e => e.id === event.extensions.request.query.id);
2424
doc.deleteOne(entry, (derr) => {
2525
if (derr) {
2626
reject(derr);
2727
} else {
28-
res.end(JSON.stringify(entry));
29-
resolve();
3028
db.close();
29+
resolve(JSON.stringify(entry));
3130
}
3231
});
3332
}

0 commit comments

Comments
 (0)