首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种在 IBM OpenWhisk 中配置和调用操作的简单方法(2)

一种在 IBM OpenWhisk 中配置和调用操作的简单方法(2)

测试操作
创建操作后,发出 wsk action invoke 命令来测试它:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
wsk -v action invoke /whisk.system/samples/echo -p message hello --blocking --result
{'apihost': 'openwhisk.ng.bluemix.net', 'namespace': 'user@example.com_dev', 'clibuild': '2016-
05-24T09:54:44-05:00', 'apiversion': 'v1'}
========
REQUEST:
POST
https://openwhisk.ng.bluemix.net/api/v1/namespaces/whisk.system/actions/samples/echo?
blocking=true&result=true
Headers sent:
{
     "Authorization": "Basic
S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii",
     "Content-Type": "application/json"
}
Body sent:
{"message": "hello"}
--------
RESPONSE:
Got response with code 200
Body received:
{
  "message": "hello"
}
========
{
  "message": "hello"
}




openWhiskLib.py 简介现在您已学会手动发出所有命令,可尝试使用新 Python 脚本简化命令的发出。
迄今为止,已开发和测试了以下函数:
  • createAction(filename, action)
  • deleteAction(action)
  • invokeAction(action)
  • invokeEcho(message)
  • listActions()
  • listNamespaces()
  已在                GitHub 上公开。
要在您的机器上使用 openWhiskLib,首先定义 3 个环境变量:
OPENWHISK_APIHOST从您的 .wskprops 文件获取此值OPENWHISK_NAMESPACE从您的 .wskprops 文件获取此值OPENWHISK_TOKEN通过发出任何详细的 wsk 命令来获取此值,比如:
wsk -v action invoke /whisk.system/samples/echo -p message hello --blocking --result




例如,在您的 Linux 笔记本电脑上,可以设置我所设置的值(为了保护隐私,我的个人数据已模糊化):
1
2
3
4
5
export OPENWHISK_APIHOST="openwhisk.ng.bluemix.net"
export OPENWHISK_NAMESPACE="username@example.com_dev"
export
OPENWHISK_TOKEN="S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3j
Es7Ii"




为了方便,您可以在 bash 脚本中定义这些值。可以在                  中复制和编辑此示例:bin/setenv.sh
5

使用 openWhiskLib.py 创建操作

要创建操作,首先要在您的机器上创建一个文件,其中包含您希望上传和执行的 JavaScript                代码段。例如,您可以使用与我上面列出的示例类似的代码:goodday.js:
1
2
3
function main() {
     return {payload: 'good day'};
}




然后从 Python 解释器调用 openWhiskLib 函数 createAction()。例如:
定义环境变量(使用一个点):
. setenv.sh
调用 Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
python

Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> from openwhisklib import *
>>> createAction( 'goodday.js', 'goodday')
Issuing put request:
url=https://openwhisk.ng.bluemix.net/api/v1/namespaces/user@example.com_dev/actions/goodday
payload: {'exec': {'kind': 'nodejs', 'code': "function main() {\n return {payload: 'good day'};\n}\n"}}
headers={'content-type': 'application/json', 'Authorization': 'Basic
S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii'}
Response status_code=200
{
  "name": "goodday",
  "publish": false,
  "annotations": [],
  "version": "0.0.1",
  "exec": {
    "kind": "nodejs",
    "code": "function main() {\n return {payload: 'good day'};\n}\n"
},
"parameters": [],
limits": {
  "timeout": 60000,
  "memory": 256
},
"namespace": "user@example.com_dev"
}
<Response [200]>
>>>




6

使用 openWhiskLib.py 调用操作

最后,使用 openWhiskLib.py 从 Bluemix 上的 OpenWhisk 调用该代码段:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
>>>
>>> invokeAction('goodday')
Issuing request:
url=https://openwhisk.ng.bluemix.net/api/v1/namespaces/user@example.com_dev/actions/goodday?
blocking=true&result=false payload={} headers={'content-type': 'application/json', 'Authorization':
'Basic S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii'}
Response status_code=200
{
"name": "goodday",
  "subject": "user@example.com",
  "activationId": "f81398a389734d018f4c92fbf59e2dbe",
  "publish": false,
  "annotations": [],
  "version": "0.0.1",
  "response": {
     "result": {
       "payload": "good day"
      },
      "success": true,
      "status": "success"
  },
  "end": 1466083636776,
  "logs": [],
  "start": 1466083636724,
  "namespace": "user@example.com"
}
<Response [200]>
>>>
>>>




测试案例和示例代码  中的简单测试案例 (tests/openwhisklib.tests.py) 演示了 openWhiskLib.py                中的每个函数,显示了输入和输出。可以使用他们和您的凭证来确认 OpenWhisk 能够工作正常。
返回列表