Web门户应用集成#
Web门户中用户可以使用的应用,有模板生成。模板是一个YAML文件,里面含有提交页面的参数、应用图表、和作业提交命令等。

应用模板文件名为:应用名.yaml ,存放在/var/www/html/up/apps里。 用户登录后会自动扫描该目录中所有的.yaml文件,在桌面上生成相应的应用图标。
YAML模板文件制作步骤#
应用模板的YAML文件分两类:
需要用户输入集群参数的,如队列名,CPU核数等。
直接跳转到一个URL的,比如php/terminal.php。
不管是哪一类,里面一个必要项,是应用图标参数:icon。
第一步:制作应用图标#
应用的图标需要用图形工具制作一个64x64的PNG图形文件。运行base64命令获得图表的代码:
base64 python.png > Python程序.yaml
以上的例子是把base64转换后的图表放到名为“Python程序”的模板文件中。
然后编辑这个YAML文件,插入第一行 icon: "image/png;base64,
如下:
icon: "image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAEAAAABGCAYAAAB8MJLDAAAAw3pUWHRSYXcgcHJvZmlsZSB0eXBl
IGV4aWYAAHjabVBbDgMhCPz3FD2CMujicdyuTXqDHr8obLO2nYThZUYg9NfzEW4DlDhw3qTUUqKC
在最后一行的尾部加上双引号,如下:
JgAAAABJRU5ErkJggg=="
这样模板中就有了应用图标的数据。
icon参数是必须要的参数。
后面步骤中增加的所有参数都可放在icon参数的前面,以方便编辑YAML文件。
第二步:标识交互式应用#
添加参数gui。如果是交互式应用,如图形,web等应用,则为 gui: true
。例子:
gui: false
gui参数是必须要的参数。
备注
gui参数会影响作业提交后的跳转。gui: true
作业提交后跳转到作业详情,否则跳转到作业列表。
第三步:添加集群参数#
集群参数名字为:cluster_params。这个参数定义作业提交命令(csub)里的部分选项。
cluster_params是可选参数。
cluster_params中可以有以下的可选参数:
queue
取值为:
auto_list
(程序列出AIP中所有队列供选择)或者队列名列。例子1:
cluster_params: queue: auto_list
例子2:
cluster_params: queue: - medium - high
这个参数的值会转换成 csub 的-q参数。
distribution
取值为:
smp
,即单主机作业,或dmp
,即多主机作业。例子:
cluster_params: distribution: smp
参数值为smp时,程序转换成 csub 的
-R span[hosts=1]
,值为dmp时,则不加csub的span参数,有调度决定分配单机或多机。mincpu
让用户选择CPU核数:1、2、4、6、8、10、12、16、20、24、28、32、40、48、64、128、256。这个列表是固定的,若不能 满足需求,请不要添加这个参数,而用params(见下)来配置。
参数的值为:
1,
。这个值是固定的,不能修改。程序把这个参数转换成 csub 的-n参数。
cwd
让用户选择作业运行时的工作目录,取值为可选的最高层目录路径。值若为
$HOME
表示用户只能选择其HOME以下的任何目录, 若让用户选择其他的目录,如项目存储区的一个目录,则把项目存储区的做高层路径作为参数的值。例子:
cluster_params: cwd: $HOME
以上例子中,用户看到的应用参数如下图所示:
点击工作路径参数值,用户可以浏览并选择目录:
程序把这个参数转换成 csub 的-cwd参数。
runlimit
让用户填入作业运行最长时间,单位为分钟。程序把这个参数转换成 csub 的-W参数。时限到后作业或被自动停止。
第三步B:应用直接跳转URL#
如果应用不适用常规的作业提交,而是有其他程序来处理,或者跳转到另外的URL,则可以放置参数url,而不需要上面的第三步、和下面 的第四、五步的操作。
备注
指定url参数,务必指定gui: true。
例子:
url: https://192.168.10.10:5601
url里的内容会以iframe的方式显示在页面上。
备注
Web门户使用NGINX的HTTPS提供服务的,如果过嵌入的页面不是HTTPS,或者在其他域名下,则需要配置NGINX做转发,URL为NGINX的转发URL。 嵌入受限于浏览器、所嵌网页和iframe等的规范。
第四步:应用参数#
应用参数有两部分。第一部分为参数类别params_category,第二部分是参数列表params。
参数类别用于把参数在页面上按类别分开排列。params_category的每一项有两个参数:name(类别名),和id(类别号)。 例子:
params_category:
- name: 应用参数
id: 1
- name: 运行参数
id: 2
每个params里的参数必须有以下的子参数:
category_id
参数的值对应于params_category中参数类别的id的值。例子:
category_id: 1
。id
参数号,这个号在第五步里会用到。例子:
id: 11
。filed_label
参数说明。这是任意的字串,会在应用页面上显示,如下:
filed_type
参数类别。可取的值为:
input: 输入文字。
select_single: 从多个选项中选一个,与参数value_range配合使用。
value_range: 多个可选值用逗号隔开,如“1,4,8”。与select_single配合使用,这个例子中,用户可以选择1,4,或8中的一个值。
check_box: 勾选,即该参数的值会被使用。与参数value配合使用,只有用户勾选这个参数后,其value的值会被命令行用上。
file-remote: 让用户选择服务器上的文件。用户点击后会弹出服务器文件浏览窗供用户选择。与参数value配合使用。
value定义最高路径,用户只能选择该路径以下(包含子目录)的文件。若最高目录为用户的HOME,则
value: $HOME
。如果让用户选择目录,而不是文件,则需要增加参数
value_range: /dir/*
。value: 缺省的参数值。如果过与file-remote配合使用,则为最高可浏览的目录。
app_cli: 定义参数怎样放到csub命令行中。有两个选项:“arg”或“var”。
arg:把转换后的参数值(见下面的app_cli_convert)放到命令行的最后。多个参数值按序排放。
var:命令行中使用“@参数号”来指定参数值在命令行中的位置。
详见第五步里的例子。
app_cli_convert: 对用户输入值的转换。转换可以使用bash命令行语法。用保留词“$value”代替用户输入的参数值。
备注
参数value_type已经不再使用,可以忽略。
required
是否必填参数。若值为“true”, 表示若用户不填,作业不能提交。
第五步:命令行#
下面两个参数配合使用。
command_path
作业提交命令,一般为csub、vncsub、或dcvsub。
common_params
作业提交参数。这里可以应用上面参数的值。
如果参数的app_cli是arg,则无需在此引用,程序会自动把参数的值添加到 命令行尾部。
如果参数的app_cli是var,则可以用“@参数号”来指定参数值在命令行中的位置。如:
common_params: -o %J.out @12
, 这里@12指把参数号为12的经过转换后的用户输入的值填放在命令行的这个位置。警告
如果过是作业提交参数,则必须定义为var,因为这些参数不能放到作业应用的命令行后面。
例子1:
params_category:
- name: 应用参数 # 用户点击应用图标后的页面中会有一个名为“应用参数”的区列出下面定义的参数
id: 1 # 参数类别号
params:
- category_id: 1 # 这个参数放到“应用参数”区里
id: 11 # 参数号为11
filed_label: 应用命令行 # 参数显示的标签
filed_type: input # 参数值由用户自由填入
value_type: 字串行 # 忽略
required: true # 必填参数
app_cli: arg # 参数值放到命令行最后
app_cli_convert: $value # 直接使用用户输入的参数值,不做任何转换
- category_id: 1 # 这个参数放到“应用参数”区里
id: 12 # 参数号为12
filed_label: 工作目录 # 参数显示的标签
filed_type: file-remote # 用户可以浏览服务器文件系统
value_range: /dir/* # 用户远程浏览服务器只能选择目录
value_type: 字串行 # 忽略
value: $HOME # 从用户HOME开始浏览
required: true # 必填参数
app_cli: var # 放到命令行中的某个位置
app_cli_convert: -cwd $value # 插入命令时的值为 “-cwd 用户输入的值”
command_path: csub # 用csub提交作业
common_params: -o %J.out @12 # 最后的提交命令行为:
# csub -o %J.out -cwd <工作目录的值> <应用命令行的值>
以上例子在页面上的效果如下图所示。

小技巧
在开发应用模板式,可参考已安装的/var/www/html/up/apps中的yaml文件,并对照页面上的效果。