Skip to content

Commit a1a3fe4

Browse files
authored
Moved demo to IBM Cloud Functions (#5)
1 parent 4b0d2fc commit a1a3fe4

31 files changed

+1783
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM centos:6
2+
MAINTAINER Arjun Guha <[email protected]>
3+
4+
RUN yum -y install yum-utils wget
5+
RUN wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
6+
RUN rpm -ivh epel-release-6-8.noarch.rpm
7+
RUN curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
8+
RUN yum -y install nodejs
9+
COPY action /action
10+
11+
ENTRYPOINT ["/usr/bin/node", "/action/js/index.js"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
1. Install Node packages: `cd action && yarn install`
2+
2. Create the action: `bx wsk action create rehearsal-centos-6-package-list --docker=arjunguha/rehearsal-centos-6-package-list`
3+
3. To update the action: `./update.sh`
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/node_modules
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// This is based on:
2+
//
3+
// https://github.com/apache/incubator-openwhisk-runtime-docker/blob/master/core/actionProxy/actionproxy.py
4+
var express = require('express');
5+
var bodyParser = require('body-parser');
6+
var cp = require('child_process');
7+
8+
var app = express();
9+
var jsonParser = bodyParser.json()
10+
11+
var LOG_SENTINEL = 'XXX_THE_END_OF_A_WHISK_ACTIVATION_XXX\n';
12+
13+
function complete() {
14+
process.stdout.write(LOG_SENTINEL);
15+
process.stderr.write(LOG_SENTINEL);
16+
}
17+
18+
// This handler receives executable source code if an action is a ZIP file
19+
// based on this image. But, we are never going to do that.
20+
app.post('/init', function(req, resp) {
21+
resp.status(200).send();
22+
});
23+
24+
app.post('/run', jsonParser, function(req, resp) {
25+
var packageName = req.body.value.package;
26+
if (typeof packageName !== 'string') {
27+
resp.status(404).send(JSON.stringify({
28+
error: 'expected "package" parameter'
29+
}));
30+
complete();
31+
return;
32+
}
33+
34+
var cmd = `repoquery -l ${packageName}`;
35+
cp.exec(cmd,
36+
{ encoding: 'utf8' },
37+
function(err, stdout, stderr) {
38+
if (err !== null) {
39+
resp.status(404).send(JSON.stringify({
40+
error: {
41+
message: `error from ${cmd}`,
42+
stdout: stdout,
43+
stderr: stderr
44+
}
45+
}));
46+
complete();
47+
return;
48+
}
49+
50+
var files = stdout.slice(0, stdout.length - 1) // drop trailing newline
51+
.split('\n'); // one file per line
52+
resp.status(200).send(JSON.stringify({
53+
files: files
54+
}));
55+
complete();
56+
});
57+
});
58+
59+
app.listen(8080);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"name": "rehearsal-ubuntu-trusty-package-list",
3+
"version": "1.0.0",
4+
"main": "index.js",
5+
"license": "MIT",
6+
"dependencies": {
7+
"body-parser": "^1.18.2",
8+
"express": "^4.16.2"
9+
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
accepts@~1.3.4:
6+
version "1.3.4"
7+
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
8+
dependencies:
9+
mime-types "~2.1.16"
10+
negotiator "0.6.1"
11+
12+
13+
version "1.1.1"
14+
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
15+
16+
[email protected], body-parser@^1.18.2:
17+
version "1.18.2"
18+
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
19+
dependencies:
20+
bytes "3.0.0"
21+
content-type "~1.0.4"
22+
debug "2.6.9"
23+
depd "~1.1.1"
24+
http-errors "~1.6.2"
25+
iconv-lite "0.4.19"
26+
on-finished "~2.3.0"
27+
qs "6.5.1"
28+
raw-body "2.3.2"
29+
type-is "~1.6.15"
30+
31+
32+
version "3.0.0"
33+
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
34+
35+
36+
version "0.5.2"
37+
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
38+
39+
content-type@~1.0.4:
40+
version "1.0.4"
41+
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
42+
43+
44+
version "1.0.6"
45+
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
46+
47+
48+
version "0.3.1"
49+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
50+
51+
52+
version "2.6.9"
53+
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
54+
dependencies:
55+
ms "2.0.0"
56+
57+
[email protected], depd@~1.1.1:
58+
version "1.1.1"
59+
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
60+
61+
destroy@~1.0.4:
62+
version "1.0.4"
63+
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
64+
65+
66+
version "1.1.1"
67+
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
68+
69+
encodeurl@~1.0.1:
70+
version "1.0.1"
71+
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
72+
73+
escape-html@~1.0.3:
74+
version "1.0.3"
75+
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
76+
77+
etag@~1.8.1:
78+
version "1.8.1"
79+
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
80+
81+
express@^4.16.2:
82+
version "4.16.2"
83+
resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
84+
dependencies:
85+
accepts "~1.3.4"
86+
array-flatten "1.1.1"
87+
body-parser "1.18.2"
88+
content-disposition "0.5.2"
89+
content-type "~1.0.4"
90+
cookie "0.3.1"
91+
cookie-signature "1.0.6"
92+
debug "2.6.9"
93+
depd "~1.1.1"
94+
encodeurl "~1.0.1"
95+
escape-html "~1.0.3"
96+
etag "~1.8.1"
97+
finalhandler "1.1.0"
98+
fresh "0.5.2"
99+
merge-descriptors "1.0.1"
100+
methods "~1.1.2"
101+
on-finished "~2.3.0"
102+
parseurl "~1.3.2"
103+
path-to-regexp "0.1.7"
104+
proxy-addr "~2.0.2"
105+
qs "6.5.1"
106+
range-parser "~1.2.0"
107+
safe-buffer "5.1.1"
108+
send "0.16.1"
109+
serve-static "1.13.1"
110+
setprototypeof "1.1.0"
111+
statuses "~1.3.1"
112+
type-is "~1.6.15"
113+
utils-merge "1.0.1"
114+
vary "~1.1.2"
115+
116+
117+
version "1.1.0"
118+
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
119+
dependencies:
120+
debug "2.6.9"
121+
encodeurl "~1.0.1"
122+
escape-html "~1.0.3"
123+
on-finished "~2.3.0"
124+
parseurl "~1.3.2"
125+
statuses "~1.3.1"
126+
unpipe "~1.0.0"
127+
128+
forwarded@~0.1.2:
129+
version "0.1.2"
130+
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
131+
132+
133+
version "0.5.2"
134+
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
135+
136+
[email protected], http-errors@~1.6.2:
137+
version "1.6.2"
138+
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
139+
dependencies:
140+
depd "1.1.1"
141+
inherits "2.0.3"
142+
setprototypeof "1.0.3"
143+
statuses ">= 1.3.1 < 2"
144+
145+
146+
version "0.4.19"
147+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
148+
149+
150+
version "2.0.3"
151+
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
152+
153+
154+
version "1.5.2"
155+
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
156+
157+
158+
version "0.3.0"
159+
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
160+
161+
162+
version "1.0.1"
163+
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
164+
165+
methods@~1.1.2:
166+
version "1.1.2"
167+
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
168+
169+
mime-db@~1.30.0:
170+
version "1.30.0"
171+
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
172+
173+
mime-types@~2.1.15, mime-types@~2.1.16:
174+
version "2.1.17"
175+
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
176+
dependencies:
177+
mime-db "~1.30.0"
178+
179+
180+
version "1.4.1"
181+
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
182+
183+
184+
version "2.0.0"
185+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
186+
187+
188+
version "0.6.1"
189+
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
190+
191+
on-finished@~2.3.0:
192+
version "2.3.0"
193+
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
194+
dependencies:
195+
ee-first "1.1.1"
196+
197+
parseurl@~1.3.2:
198+
version "1.3.2"
199+
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
200+
201+
202+
version "0.1.7"
203+
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
204+
205+
proxy-addr@~2.0.2:
206+
version "2.0.2"
207+
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
208+
dependencies:
209+
forwarded "~0.1.2"
210+
ipaddr.js "1.5.2"
211+
212+
213+
version "6.5.1"
214+
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
215+
216+
range-parser@~1.2.0:
217+
version "1.2.0"
218+
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
219+
220+
221+
version "2.3.2"
222+
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
223+
dependencies:
224+
bytes "3.0.0"
225+
http-errors "1.6.2"
226+
iconv-lite "0.4.19"
227+
unpipe "1.0.0"
228+
229+
230+
version "5.1.1"
231+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
232+
233+
234+
version "0.16.1"
235+
resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
236+
dependencies:
237+
debug "2.6.9"
238+
depd "~1.1.1"
239+
destroy "~1.0.4"
240+
encodeurl "~1.0.1"
241+
escape-html "~1.0.3"
242+
etag "~1.8.1"
243+
fresh "0.5.2"
244+
http-errors "~1.6.2"
245+
mime "1.4.1"
246+
ms "2.0.0"
247+
on-finished "~2.3.0"
248+
range-parser "~1.2.0"
249+
statuses "~1.3.1"
250+
251+
252+
version "1.13.1"
253+
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
254+
dependencies:
255+
encodeurl "~1.0.1"
256+
escape-html "~1.0.3"
257+
parseurl "~1.3.2"
258+
send "0.16.1"
259+
260+
261+
version "1.0.3"
262+
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
263+
264+
265+
version "1.1.0"
266+
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
267+
268+
"statuses@>= 1.3.1 < 2":
269+
version "1.4.0"
270+
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
271+
272+
statuses@~1.3.1:
273+
version "1.3.1"
274+
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
275+
276+
type-is@~1.6.15:
277+
version "1.6.15"
278+
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
279+
dependencies:
280+
media-typer "0.3.0"
281+
mime-types "~2.1.15"
282+
283+
[email protected], unpipe@~1.0.0:
284+
version "1.0.0"
285+
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
286+
287+
288+
version "1.0.1"
289+
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
290+
291+
vary@~1.1.2:
292+
version "1.1.2"
293+
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
set -e
3+
set -x
4+
ACTION_NAME=rehearsal-centos-6-package-list
5+
IMAGE_NAME=arjunguha/$ACTION_NAME
6+
docker build -t $IMAGE_NAME .
7+
docker push $IMAGE_NAME
8+
bx wsk action update $ACTION_NAME
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/node_modules
2+
/dist
3+
/rehearsal-package-server.zip

0 commit comments

Comments
 (0)